<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Chrome DevTools on jyukki's Blog</title><link>https://jyukki.com/tags/chrome-devtools/</link><description>Recent content in Chrome DevTools on jyukki's Blog</description><generator>Hugo -- 0.147.0</generator><language>ko-KR</language><lastBuildDate>Fri, 28 Aug 2026 10:06:00 +0900</lastBuildDate><atom:link href="https://jyukki.com/tags/chrome-devtools/index.xml" rel="self" type="application/rss+xml"/><item><title>2026 개발 트렌드: Chrome DevTools MCP, 브라우저 자동화의 다음 병목은 조작이 아니라 검증 가능한 디버깅 증거다</title><link>https://jyukki.com/posts/2026-08-28-chrome-devtools-mcp-evidence-driven-debugging-trend/</link><pubDate>Fri, 28 Aug 2026 10:06:00 +0900</pubDate><guid>https://jyukki.com/posts/2026-08-28-chrome-devtools-mcp-evidence-driven-debugging-trend/</guid><description>Chrome 152 DevTools와 DevTools MCP 1.7의 메모리·네트워크·soft navigation 진단 기능을 바탕으로, 에이전트 브라우저 작업을 조작 자동화가 아닌 재현 가능한 디버깅 증거 파이프라인으로 운영하는 기준을 정리합니다.</description><content:encoded><![CDATA[<p>브라우저를 조작하는 코딩 에이전트는 더 이상 낯선 기능이 아닙니다. 코드 변경 뒤 localhost를 열고, 버튼을 누르고, console error를 읽고, 화면을 캡처하는 루프는 빠르게 기본 도구가 되고 있습니다. 하지만 클릭이 가능해졌다고 해서 브라우저 디버깅이 자동화된 것은 아닙니다. 실제 병목은 &ldquo;무엇을 눌렀는가&quot;가 아니라 <strong>어떤 가설을 어떤 조건에서 검증했고, 어떤 신호가 그 결론을 뒷받침하는가</strong>입니다.</p>
<p>2026년 8월 25일 안정화된 Chrome 152와 같은 날 소개된 DevTools 업데이트는 이 변화를 잘 보여 줍니다. DevTools는 request resending, binary payload inspection, soft navigation의 Core Web Vitals, 그리고 DevTools MCP server의 메모리 디버깅 기능을 강화했습니다. 특히 DevTools MCP v1.7.0은 heap snapshot에서 객체 상세·GC root retaining path·native V8 context를 질의할 수 있게 했습니다. 이는 에이전트가 브라우저를 더 많이 조작하게 하는 변화라기보다, <strong>브라우저 내부 신호를 구조화된 진단 증거로 다룰 수 있게 하는 변화</strong>에 가깝습니다.</p>
<p>이 글은 <a href="/posts/2026-07-05-ide-browser-agent-permission-plane-trend/">IDE Browser Agent Permission Plane</a>, <a href="/posts/2026-05-18-managed-browser-worker-trend/">Managed Browser Worker</a>, <a href="/learning/deep-dive/deep-dive-structured-logging/">구조화 로그 설계</a>, <a href="/learning/deep-dive/deep-dive-synthetic-monitoring-user-journey-probes-playbook/">Synthetic Monitoring User Journey Probes</a>의 다음 단계입니다. 앞선 글이 브라우저 작업의 권한과 격리를 다뤘다면, 여기서는 진단 결과를 PR·incident·회귀 테스트에서 다시 검증할 수 있는 증거로 만드는 방법을 다룹니다.</p>
<p>참고한 공식 자료:</p>
<ul>
<li><a href="https://developer.chrome.com/blog/new-in-devtools-152">What&rsquo;s new in DevTools (Chrome 152)</a></li>
<li><a href="https://developer.chrome.com/release-notes/152">Chrome 152 release notes</a></li>
<li><a href="https://github.com/ChromeDevTools/chrome-devtools-mcp">Chrome DevTools MCP repository</a></li>
</ul>
<h2 id="이-글에서-얻는-것">이 글에서 얻는 것</h2>
<ul>
<li>DevTools MCP의 console·network·heap·성능 정보를 &ldquo;에이전트가 본 화면&quot;이 아니라 재현 가능한 디버깅 증거로 구조화하는 법을 배웁니다.</li>
<li>heap snapshot과 retaining path를 언제 써야 하고, 어떤 경우에는 단순한 metrics·trace가 더 나은지 판단할 수 있습니다.</li>
<li>SPA soft navigation 성능을 route, 사용자 행동, backend 요청과 함께 해석하는 기준을 얻습니다.</li>
<li>request resend와 binary payload inspection을 production 데이터 노출이나 의도치 않은 쓰기 없이 제한하는 운영 가드를 설계할 수 있습니다.</li>
</ul>
<h2 id="핵심-개념이슈">핵심 개념/이슈</h2>
<h3 id="1-에이전트-브라우저의-산출물은-screenshot이-아니라-검증-묶음이어야-한다">1) 에이전트 브라우저의 산출물은 screenshot이 아니라 &ldquo;검증 묶음&quot;이어야 한다</h3>
<p>화면이 정상으로 보이는 screenshot 하나는 유용하지만 결론은 아닙니다. 같은 화면이 mock 응답으로 렌더링됐을 수 있고, console에는 hydration warning이 남았을 수 있으며, 클릭 뒤 네트워크 요청이 401로 실패했을 수도 있습니다. 에이전트가 &ldquo;정상입니다&quot;라고 말할 수 있는 최소 단위는 다음 다섯 요소를 가진 검증 묶음입니다.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#ff79c6">browser_debug_evidence</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">hypothesis</span>: <span style="color:#f1fa8c">&#34;상품 필터를 바꿔도 이전 요청이 화면을 덮어쓰지 않는다&#34;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">target</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">url</span>: <span style="color:#f1fa8c">&#34;https://preview.example.com/catalog&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">build_revision</span>: <span style="color:#f1fa8c">&#34;a1b2c3d&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">environment</span>: <span style="color:#f1fa8c">&#34;staging&#34;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">action</span>:
</span></span><span style="display:flex;"><span>    - <span style="color:#f1fa8c">&#34;filter=A 선택&#34;</span>
</span></span><span style="display:flex;"><span>    - <span style="color:#f1fa8c">&#34;100ms 안에 filter=B 선택&#34;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">artifacts</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">console_errors</span>: <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">network</span>: <span style="color:#f1fa8c">&#34;request-A cancelled, request-B 200&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">screenshot</span>: <span style="color:#f1fa8c">&#34;catalog-filter-race.png&#34;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">acceptance</span>: <span style="color:#f1fa8c">&#34;최종 목록은 B이며 stale response가 DOM을 갱신하지 않는다&#34;</span>
</span></span></code></pre></div><p>이 구조는 브라우저 자동화의 속도를 늦추는 문서 작업이 아닙니다. 다음 사람이 같은 preview revision에서 무엇을 다시 실행할지 알게 해 주고, 에이전트가 틀린 성공 판단을 했을 때 어느 층을 의심해야 하는지 보여 줍니다. backend request ID·trace ID도 artifact에 넣으면 <a href="/learning/deep-dive/deep-dive-structured-logging/">구조화 로그</a>와 결합해 화면 오류를 API·DB 지연까지 추적할 수 있습니다.</p>
<h3 id="2-heap-snapshot은-메모리의-원인을-보여-주는-것이-아니라-후보를-좁힌다">2) Heap snapshot은 메모리의 원인을 보여 주는 것이 아니라 후보를 좁힌다</h3>
<p>DevTools MCP의 heap snapshot 객체 상세와 retaining path는 누수 의심을 탐색하기에 강력합니다. 예를 들어 route를 열고 닫을 때마다 <code>OrderDetailComponent</code> 인스턴스 수가 늘어난다면, MCP를 통해 남은 객체의 속성과 GC root까지 따라가 볼 수 있습니다. listener registry, global cache, timer, detached DOM reference 중 어느 것이 객체를 붙잡는지 후보를 좁히는 데 효과적입니다.</p>
<p>그러나 heap snapshot 하나로 &ldquo;메모리 누수 확정&quot;을 선언하면 안 됩니다. V8의 GC 시점, 개발 모드의 instrumentation, 캐시 warm-up, 테스트 데이터 크기에 따라 객체 수는 달라집니다. 출발 기준은 아래처럼 잡는 편이 안전합니다.</p>
<table>
  <thead>
      <tr>
          <th>신호</th>
          <th>누수 가설을 강화하는 조건</th>
          <th>단독으로는 부족한 이유</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>heap size</td>
          <td>동일 시나리오 10회 뒤 GC 후에도 기준선보다 20% 이상 증가</td>
          <td>일시 cache·JIT·이미지 decode 영향 가능</td>
      </tr>
      <tr>
          <td>객체 수</td>
          <td>동일 class가 반복 실행마다 단조 증가</td>
          <td>의도된 목록 cache일 수 있음</td>
      </tr>
      <tr>
          <td>retaining path</td>
          <td>listener/global map/closure가 teardown 뒤에도 참조</td>
          <td>실제 사용자 여정에서 도달 가능한지 확인 필요</td>
      </tr>
      <tr>
          <td>process memory</td>
          <td>long-running browser에서 p95가 지속 상승</td>
          <td>tab·extension·OS 메모리 요인 혼재</td>
      </tr>
  </tbody>
</table>
<p>권장 흐름은 <strong>재현 시나리오 고정 → baseline snapshot → 행동 N회 반복 → GC 후 snapshot 비교 → retaining path 확인 → 수정 후 동일 시나리오 재실행</strong>입니다. N은 10회부터 시작할 수 있지만, CI에서 무작정 큰 heap snapshot을 매 PR마다 보관하지는 마세요. 고비용 진단은 메모리 alert, 재현 가능한 증가, 특정 route의 long session처럼 근거가 있는 경우에만 켜는 편이 낫습니다.</p>
<h3 id="3-soft-navigation은-spa-성능을-page-load와-다른-계약으로-만든다">3) Soft navigation은 SPA 성능을 page load와 다른 계약으로 만든다</h3>
<p>전통적인 Core Web Vitals는 새 문서를 여는 page load에 익숙합니다. 하지만 SPA에서 사용자가 검색 필터를 바꾸고, 탭을 전환하고, 목록에서 상세로 들어갈 때도 체감 성능은 크게 달라집니다. Chrome 152의 Performance Live Metrics가 soft navigation에 대한 Core Web Vitals를 보강한 이유가 여기 있습니다.</p>
<p>이제 &ldquo;홈 페이지 LCP가 좋다&quot;만으로 앱이 빠르다고 말하기 어렵습니다. route 전환은 data fetch, rendering, image decode, client cache, animation, 이전 요청 취소가 겹칩니다. 지표에는 이벤트 이름과 맥락을 함께 붙여야 합니다.</p>
<table>
  <thead>
      <tr>
          <th>측정 단위</th>
          <th>함께 남길 맥락</th>
          <th>초기 경보 기준 예시</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>route transition</td>
          <td>from/to route, cache hit, network type</td>
          <td>p75가 baseline 대비 20% 악화</td>
      </tr>
      <tr>
          <td>filter/search</td>
          <td>query length bucket, cancel count, response size</td>
          <td>취소되지 않은 stale response 증가</td>
      </tr>
      <tr>
          <td>detail open</td>
          <td>image bytes, API trace ID, render commit</td>
          <td>p95가 2.5초 초과</td>
      </tr>
      <tr>
          <td>checkout step</td>
          <td>step name, validation error, third-party dependency</td>
          <td>실패율이 baseline의 2배</td>
      </tr>
  </tbody>
</table>
<p>숫자는 제품별 목표와 baseline으로 조정해야 합니다. 특히 soft navigation을 synthetic script 하나로만 보면 로그인 상태, cache warm/cold, 실제 입력 속도를 잃습니다. <a href="/learning/deep-dive/deep-dive-synthetic-monitoring-user-journey-probes-playbook/">Synthetic Monitoring User Journey Probes</a>로 대표 여정을 주기적으로 확인하되, real-user metric에서는 행동 유형별 분포를 별도로 보는 조합이 현실적입니다.</p>
<h3 id="4-request-resend는-강력한-재현-도구이면서-쓰기-권한이다">4) Request resend는 강력한 재현 도구이면서 쓰기 권한이다</h3>
<p>요청을 수정해 다시 보내는 기능은 API 오류를 빠르게 재현하고, binary payload를 살펴보는 기능은 파일 업로드·protobuf·이미지 처리 문제를 좁히는 데 도움이 됩니다. 하지만 <code>POST /orders</code>, <code>PATCH /settings</code>, 결제 callback, password reset 요청을 무심코 resend하면 디버깅이 실제 상태 변경으로 변합니다. browser agent가 이 기능을 쓰는 환경에서는 더 엄격한 경계가 필요합니다.</p>
<p>기본 정책은 다음처럼 단순하게 시작할 수 있습니다.</p>
<ul>
<li>localhost와 isolated staging에서만 resend를 자동 허용한다.</li>
<li>production은 <code>GET</code>, 명시적으로 안전한 <code>HEAD</code>, 허용된 mock endpoint만 기본 허용한다.</li>
<li>쓰기 요청 재생은 idempotency key, dry-run, 전용 test tenant, 사람 승인을 모두 갖춘 경우에만 허용한다.</li>
<li><code>Authorization</code>, <code>Cookie</code>, <code>Set-Cookie</code>, 개인정보 필드, binary body는 artifact 저장 전 마스킹하거나 보관하지 않는다.</li>
<li>HAR·heap snapshot·screenshot의 보존 기간과 접근 권한을 코드 로그와 별도로 둔다.</li>
</ul>
<p>이는 <a href="/posts/2026-07-05-ide-browser-agent-permission-plane-trend/">IDE Browser Agent Permission Plane</a>에서 다룬 탭·세션·도메인 제어를 디버깅 행동까지 확장한 것입니다. 브라우저를 열 수 있다는 권한과 상태를 바꿀 수 있다는 권한은 같은 수준이 아닙니다.</p>
<h3 id="5-에이전트의-요약은-원본-artifact를-대체하지-않는다">5) 에이전트의 요약은 원본 artifact를 대체하지 않는다</h3>
<p>에이전트는 수십 개 network request와 console line을 빠르게 요약할 수 있습니다. 하지만 &ldquo;API가 느렸다&quot;라는 문장은 어떤 request, 어떤 revision, 어떤 cache 상태, 어떤 사용자 행동을 말하는지 빠뜨리기 쉽습니다. 그래서 PR이나 incident에는 요약과 원본의 역할을 분리해야 합니다.</p>
<table>
  <thead>
      <tr>
          <th>산출물</th>
          <th>남겨야 할 내용</th>
          <th>보존 목적</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>사람이 읽는 요약</td>
          <td>가설, 결론, 남은 불확실성, 다음 행동</td>
          <td>빠른 의사결정</td>
      </tr>
      <tr>
          <td>원본 artifact</td>
          <td>console subset, sanitized HAR, trace ID, heap comparison</td>
          <td>재현·감사</td>
      </tr>
      <tr>
          <td>자동 테스트</td>
          <td>deterministic input, pass/fail assertion</td>
          <td>회귀 방지</td>
      </tr>
      <tr>
          <td>dashboard metric</td>
          <td>route·version별 p75/p95, 오류율</td>
          <td>장기 추세</td>
      </tr>
  </tbody>
</table>
<p>좋은 운영은 에이전트의 문장을 믿으라고 요구하지 않습니다. 그 문장을 뒷받침하거나 반박할 수 있는 artifact와 재실행 경로를 남깁니다. 이 점에서 DevTools MCP는 에이전트의 자율성을 키우는 도구이기도 하지만, 동시에 에이전트의 판단을 더 엄격하게 검증하게 만드는 도구이기도 합니다.</p>
<h2 id="실무-적용">실무 적용</h2>
<h3 id="1-관찰--가설--제한된-재현--회귀화-루프를-템플릿으로-고정한다">1) &ldquo;관찰 → 가설 → 제한된 재현 → 회귀화&rdquo; 루프를 템플릿으로 고정한다</h3>
<p>처음 도입할 때는 에이전트가 모든 브라우저 문제를 고치게 하지 마세요. 오류 성격이 다른 세 가지 대상으로 시작하는 편이 좋습니다.</p>
<ol>
<li><strong>console 오류</strong>: 재현 URL, action, 오류 문자열, 수정 뒤 0건 확인을 남깁니다.</li>
<li><strong>network 경쟁 조건</strong>: 두 입력의 간격, 취소 여부, 최종 DOM, 해당 API trace ID를 남깁니다.</li>
<li><strong>메모리 의심</strong>: route 반복 횟수, GC 후 heap 비교, retaining path, 수정 뒤 차이를 남깁니다.</li>
</ol>
<p>각 항목이 한 번 재현되면, 사람이 확인한 핵심 조건만 Playwright/Cypress 같은 deterministic E2E나 integration test로 옮깁니다. browser agent는 탐색과 triage에 강하고, 회귀 방지는 여전히 결정적인 테스트가 더 잘합니다.</p>
<h3 id="2-환경별-권한과-artifact-정책을-분리한다">2) 환경별 권한과 artifact 정책을 분리한다</h3>
<table>
  <thead>
      <tr>
          <th>환경</th>
          <th>브라우저 에이전트</th>
          <th>request resend</th>
          <th>artifact 정책</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>localhost</td>
          <td>기본 허용</td>
          <td>test data에 한해 허용</td>
          <td>짧은 로컬 보관</td>
      </tr>
      <tr>
          <td>preview</td>
          <td>허용 도메인만</td>
          <td>mock·idempotent 경로 우선</td>
          <td>PR에 마스킹된 요약</td>
      </tr>
      <tr>
          <td>staging</td>
          <td>역할 기반 허용</td>
          <td>test tenant + approval</td>
          <td>제한된 보존·접근 감사</td>
      </tr>
      <tr>
          <td>production</td>
          <td>read-only 조사 우선</td>
          <td>기본 차단</td>
          <td>PII 제거, incident 권한 필요</td>
      </tr>
  </tbody>
</table>
<p>여기서 핵심은 environment 이름이 아니라 실제 credentials와 데이터입니다. <code>staging</code>이라고 불러도 production 복제 데이터와 실제 외부 결제 키가 있으면 production 수준으로 다뤄야 합니다. 브라우저 agent의 session은 개인 browser profile과 분리하고, 디버깅 전용 test account·test tenant·reversible fixture를 준비하세요.</p>
<h3 id="3-성과-지표를-도구-사용량이-아닌-재현과-회귀-감소로-둔다">3) 성과 지표를 &ldquo;도구 사용량&quot;이 아닌 재현과 회귀 감소로 둔다</h3>
<p>MCP tool call 수나 screenshot 수가 많다고 품질이 좋아지지는 않습니다. 두 주 정도의 pilot에서 다음을 비교하는 편이 더 낫습니다.</p>
<ul>
<li>재현 가능한 UI 버그 비율과 평균 재현 시간</li>
<li>수정 뒤 같은 결함이 다시 열린 비율</li>
<li>browser evidence가 있는 PR의 review 재질문 수</li>
<li>sanitized artifact 누락·민감 데이터 노출 건수</li>
<li>soft navigation p75/p95와 사용자 여정 실패율의 변화</li>
</ul>
<p>예를 들어 tool call은 30% 늘었지만 재현 시간은 줄지 않고 artifact 마스킹 누락이 나온다면 자동화를 넓힐 신호가 아닙니다. 반대로 한 route에서 console/network 증거가 붙은 뒤 회귀율이 줄고 review 시간이 짧아졌다면, 그 route pattern을 표준화할 근거가 됩니다.</p>
<h2 id="트레이드오프주의점">트레이드오프/주의점</h2>
<p>DevTools MCP가 rich artifact에 접근할수록 권한도 강해집니다. heap snapshot에는 애플리케이션 상태가, network payload에는 cookie·token·개인정보가, console에는 내부 endpoint와 에러 메시지가 남을 수 있습니다. 모델이나 CI 로그에 이 데이터를 넓게 전달하면 &ldquo;디버깅 편의&quot;가 데이터 유출 경로가 됩니다. 수집보다 먼저 마스킹, 최소 보존, 접근 제어, production 기본 차단을 정해야 합니다.</p>
<p>성능 측정도 조심해야 합니다. soft navigation 수치가 나빠졌다고 바로 frontend 코드만 고치면 CDN cache miss, backend fan-out, third-party script, 실험 flag 분포를 놓칠 수 있습니다. route transition metric에는 build revision과 API trace를 붙이고, <a href="/learning/deep-dive/deep-dive-distributed-tracing-advanced/">분산 트레이싱</a>으로 서버 측 지연과 교차 검증하는 편이 낫습니다.</p>
<p>마지막으로 에이전트의 탐색은 비결정적입니다. 같은 화면을 열어도 조건을 조금 다르게 타거나, assertion 없이 &ldquo;보기에 정상&quot;이라고 결론 낼 수 있습니다. 탐색 결과는 bug report와 가설 생성에는 훌륭하지만, 배포 게이트는 명시적 assertion과 재실행 가능한 test로 옮겨야 합니다.</p>
<h2 id="체크리스트-또는-연습">체크리스트 또는 연습</h2>
<h3 id="체크리스트">체크리스트</h3>
<ul>
<li><input disabled="" type="checkbox"> browser agent 결과에 가설, build revision, action, artifact, acceptance criterion이 함께 있다.</li>
<li><input disabled="" type="checkbox"> screenshot만으로 성공을 선언하지 않고 console·network·DOM·trace 중 필요한 근거를 붙인다.</li>
<li><input disabled="" type="checkbox"> heap 분석은 고정된 시나리오, GC 후 비교, retaining path, 수정 뒤 재실행을 포함한다.</li>
<li><input disabled="" type="checkbox"> soft navigation을 route·행동·cache 상태·backend trace와 함께 측정한다.</li>
<li><input disabled="" type="checkbox"> production write request resend는 기본 차단하고, test tenant·idempotency·승인이 있는 경우만 예외로 둔다.</li>
<li><input disabled="" type="checkbox"> HAR, binary payload, heap snapshot, console 로그에서 token·cookie·PII를 마스킹한다.</li>
<li><input disabled="" type="checkbox"> 탐색형 agent 결과를 deterministic test 또는 synthetic journey로 회귀화한다.</li>
<li><input disabled="" type="checkbox"> 도구 사용량이 아니라 재현 시간, 회귀율, evidence 누락률을 pilot 성공 지표로 본다.</li>
</ul>
<h3 id="연습-필터-전환-지연을-증거로-디버깅하기">연습: 필터 전환 지연을 증거로 디버깅하기</h3>
<p>검색 목록에서 필터를 빠르게 두 번 바꾸면 첫 번째 결과가 마지막에 화면을 덮는 버그를 가정해 봅시다.</p>
<ol>
<li>preview build revision과 두 클릭의 시간 간격을 고정합니다.</li>
<li>DevTools network에서 두 request의 시작·취소·완료 순서와 response 크기를 기록합니다.</li>
<li>최종 DOM의 filter label과 결과 목록을 assertion으로 적습니다.</li>
<li>backend trace ID로 느린 첫 요청의 원인도 확인합니다.</li>
<li>abort controller 또는 response sequence guard를 적용한 뒤 같은 시나리오를 10회 실행합니다.</li>
<li>마지막으로 해당 조건을 deterministic E2E test로 옮겨, 다음 변경에서 agent가 탐색하지 않아도 회귀를 잡게 만듭니다.</li>
</ol>
<h2 id="관련-글">관련 글</h2>
<ul>
<li><a href="/posts/2026-07-05-ide-browser-agent-permission-plane-trend/">IDE Browser Agent Permission Plane</a></li>
<li><a href="/posts/2026-05-18-managed-browser-worker-trend/">Managed Browser Worker</a></li>
<li><a href="/learning/deep-dive/deep-dive-structured-logging/">구조화 로그 설계</a></li>
<li><a href="/learning/deep-dive/deep-dive-synthetic-monitoring-user-journey-probes-playbook/">Synthetic Monitoring User Journey Probes</a></li>
</ul>
]]></content:encoded></item></channel></rss>