OSSCA Chromium

기여 목록 / 8503476

Migrate devtools/security/security-blocked-mixed-content.js to a unit test

DevToolstestdevtools/devtools-frontendIn Review

security-blocked-mixed-content.js의 검증을 DevTools unit test로 옮겨, 페이지 navigation 시 차단된 mixed content 설명이 제거되는지 확인했습니다.

문제 설명

기존 Chromium 웹 테스트는 navigation 전후의 DOM 출력을 기대 결과와 비교했습니다. DevTools unit test에는 차단 설명을 표시하는 검증이 있었지만, navigation 후 제거되는지는 확인하지 않았습니다.

해결 내용

  • SecurityPanel.test.ts의 기존 blocked mixed content 테스트를 확장했습니다.
  • 설명과 request 링크를 검증한 뒤 navigate(getMainFrame(target))를 호출했습니다.
  • navigation 후 .security-explanation이 비어 있는지 확인하고, 테스트 이름에 navigation 검증을 반영했습니다.

전체 코드 diff는 다음과 같습니다.

diff --git a/front_end/panels/security/SecurityPanel.test.ts b/front_end/panels/security/SecurityPanel.test.ts
index 889b29a..d2ea171 100644
--- a/front_end/panels/security/SecurityPanel.test.ts
+++ b/front_end/panels/security/SecurityPanel.test.ts
@@ -864,7 +864,7 @@
     assert.strictEqual(unknownOriginElement.textContent, 'https://does-not-resolve.test');
   });

-  it('shows an explanation for blocked mixed content', () => {
+  it('shows an explanation for blocked mixed content and clears it on navigation', () => {
     const securityPanel = Security.SecurityPanel.SecurityPanel.instance({forceNew: true});
     renderElementIntoDOM(securityPanel);
     const securityModel = target.model(Security.SecurityModel.SecurityModel);
@@ -899,6 +899,11 @@
     const requestsLink = querySelectorErrorOnMissing(explanation, 'button.security-mixed-content');
     assert.strictEqual(requestsLink.textContent, 'View 1 request in Network panel');
     assert.strictEqual(requestsLink.getAttribute('role'), 'link');
+
+    // Test that the explanations are cleared on navigation. Regression test for https://crbug.com/601944.
+    navigate(getMainFrame(target));
+
+    assert.isEmpty(securityPanel.mainView.contentElement.querySelectorAll('.security-explanation'));
   });

   it('replaces active and passive mixed content reload prompts with request links when requests are recorded', () => {

테스트 방법

기존 설명 표시 검증에 navigation 후 제거 검증을 추가했습니다. Gerrit에서 patchset 2의 CQ 실행 통과를 확인했습니다. 현재 리뷰 중입니다.

배운 점

기존 테스트와 준비 과정·검증이 겹치면 해당 테스트를 확장해 중복을 줄일 수 있습니다. navigation 전후 상태를 함께 확인해야 이전 페이지의 설명이 남는 회귀도 검증할 수 있습니다.

참고 자료