<?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>Browser Testing on RockB</title><link>https://baeseokjae.github.io/tags/browser-testing/</link><description>Recent content in Browser Testing on RockB</description><image><title>RockB</title><url>https://baeseokjae.github.io/images/og-default.png</url><link>https://baeseokjae.github.io/images/og-default.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 03 Jul 2026 12:00:00 +0000</lastBuildDate><atom:link href="https://baeseokjae.github.io/tags/browser-testing/index.xml" rel="self" type="application/rss+xml"/><item><title>GitHub Copilot Browser Tools Guide 2026: What GA Means for VS Code Agent Workflows</title><link>https://baeseokjae.github.io/posts/github-copilot-browser-tools-guide-2026/</link><pubDate>Fri, 03 Jul 2026 12:00:00 +0000</pubDate><guid>https://baeseokjae.github.io/posts/github-copilot-browser-tools-guide-2026/</guid><description>A practical guide to GitHub Copilot browser tools in VS Code after GA, with workflows, prompts, security controls, and testing trade-offs.</description><content:encoded><![CDATA[<p>GitHub Copilot browser tools are now generally available in VS Code, and the practical change is simple: Copilot can inspect the UI it just helped build. In practice, that turns agent mode from a code-edit loop into a build, open, click, debug, patch, and verify loop inside the editor.</p>
<h2 id="what-does-github-copilot-browser-tools-ga-mean-in-vs-code">What does GitHub Copilot Browser Tools GA mean in VS Code?</h2>
<p>GitHub announced general availability for browser tools for GitHub Copilot in VS Code on July 1, 2026. The GA announcement matters because browser interaction is no longer a preview-only experiment that teams evaluate on the side. It is part of the normal Copilot agent workflow in VS Code.</p>
<p>Before this, I treated Copilot agent mode mostly as a code and terminal assistant. It could edit files, reason over workspace context, run commands when allowed, and help interpret build errors. That was useful, but front-end work still had a hard boundary: the agent could generate React, Vue, or plain TypeScript code, but I had to open the app, click through the result, read console errors, and describe the failure back to chat.</p>
<p>Browser tools close that gap. Copilot can open a real browser session, navigate to a local or allowed remote URL, interact with the page, inspect behavior through DevTools-backed signals, and feed those observations back into chat. That does not make it a QA engineer. It does make it much better at catching the boring mistakes that show up only after rendering: disabled buttons that never enable, forms that submit twice, dropdowns hidden behind overflow containers, routes that 404 after a refactor, and console errors caused by missing data guards.</p>
<p>The important mental model is not &ldquo;Copilot can browse the web.&rdquo; The useful model is &ldquo;Copilot can observe the running application.&rdquo; That distinction keeps the workflow grounded.</p>
<p>If you are already using agent workflows, this fits naturally beside the patterns I use in <a href="/posts/github-copilot-agent-mode-workflows/">GitHub Copilot agent mode workflows</a> and <a href="/posts/vscode-mcp-server-setup/">VS Code MCP server setup</a>. Browser tools give the agent eyes on the app. MCP gives the agent connections to outside systems. They solve different parts of the loop.</p>
<h2 id="what-can-browser-tools-actually-do">What can browser tools actually do?</h2>
<p>The GA feature set is focused on real browser interaction. According to GitHub&rsquo;s announcement, Copilot agents can open pages, navigate, click, type, hover, drag, and handle dialogs. The VS Code browser-agent testing guide also shows the intended loop: build the app, open it in the integrated browser, inspect behavior, fix bugs, and verify again.</p>
<p>Here is the capability map I use when deciding whether browser tools are the right tool:</p>
<table>
  <thead>
      <tr>
          <th>Task</th>
          <th>Good fit for browser tools?</th>
          <th>Why</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Open a local Vite or Next.js app</td>
          <td>Yes</td>
          <td>The agent can inspect the rendered UI after code changes.</td>
      </tr>
      <tr>
          <td>Click through a form flow</td>
          <td>Yes</td>
          <td>It can find obvious validation, state, and navigation bugs.</td>
      </tr>
      <tr>
          <td>Read console errors</td>
          <td>Yes</td>
          <td>The browser session can expose runtime failures that TypeScript missed.</td>
      </tr>
      <tr>
          <td>Check hover and modal behavior</td>
          <td>Yes</td>
          <td>Interactions like hover, click, dialogs, and drag are part of the model.</td>
      </tr>
      <tr>
          <td>Prove a regression will never return</td>
          <td>No</td>
          <td>You still need a repeatable Playwright, Cypress, or unit test.</td>
      </tr>
      <tr>
          <td>Test production data mutations</td>
          <td>Usually no</td>
          <td>Agents should not be trusted with destructive production workflows.</td>
      </tr>
      <tr>
          <td>Validate pixel-perfect design</td>
          <td>Partly</td>
          <td>It can spot obvious visual issues, but human review still matters.</td>
      </tr>
  </tbody>
</table>
<p>I&rsquo;ve found that browser tools are most useful when the task has a visible failure. &ldquo;The settings modal opens behind the sidebar&rdquo; is a good browser-tools task. &ldquo;Improve the architecture of our billing permissions model&rdquo; is not.</p>
<h2 id="how-do-browser-tools-change-the-vs-code-agent-workflow">How do browser tools change the VS Code agent workflow?</h2>
<p>The old agent loop for a web feature looked like this:</p>
<ol>
<li>Ask Copilot to implement the UI.</li>
<li>Let it edit files.</li>
<li>Run the app or test suite.</li>
<li>Manually open the browser.</li>
<li>Describe any UI failures back to Copilot.</li>
<li>Repeat until the app looks right.</li>
</ol>
<p>The new loop removes a lot of translation:</p>
<ol>
<li>Ask Copilot to implement the UI.</li>
<li>Let it edit files.</li>
<li>Start the local app.</li>
<li>Ask Copilot to open the app with browser tools.</li>
<li>Have it click through the target flow and inspect console errors.</li>
<li>Ask for a minimal fix based on observed failures.</li>
<li>Ask it to verify the same path again.</li>
<li>Turn the final bug into a durable test when it is worth keeping.</li>
</ol>
<p>That last step matters. Browser tools are fast feedback, not a test artifact. When building a checkout prototype, I ran into this distinction constantly. The agent could discover that a shipping form failed after changing country because a stale postal-code validator was still running. That was valuable. But the fix only became durable after I added a Playwright test for the country-switching case.</p>
<p>I use browser tools as the scouting pass and Playwright as the permanent record. For a deeper testing comparison, see <a href="/posts/playwright-mcp-test-generation/">Playwright MCP test generation</a>.</p>
<h2 id="how-should-you-set-up-browser-tools-safely">How should you set up browser tools safely?</h2>
<p>In VS Code, browser tools need to be available in the chat tools picker before the agent can use them. On managed machines, your administrator may disable browser tools or restrict which domains agent tools can reach. That is a feature, not a nuisance, especially for companies with production admin panels, customer data, or strict network boundaries.</p>
<p>My default setup for local development is intentionally boring:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>npm run dev -- --host 127.0.0.1 --port <span style="color:#ae81ff">5173</span>
</span></span></code></pre></div><p>Then I give Copilot a narrow target:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Use browser tools to open http://127.0.0.1:5173/settings.
</span></span><span style="display:flex;"><span>Verify only the profile edit flow.
</span></span><span style="display:flex;"><span>Do not navigate to billing, admin, or destructive actions.
</span></span><span style="display:flex;"><span>Report console errors before editing code.
</span></span><span style="display:flex;"><span>After you identify the smallest likely fix, ask before changing files.
</span></span></code></pre></div><p>For Next.js apps, the same pattern works:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>pnpm dev --hostname 127.0.0.1 --port <span style="color:#ae81ff">3000</span>
</span></span></code></pre></div><p>I prefer loopback URLs over shared staging URLs for early work because they reduce accidental data exposure and make state easier to reset. If the app requires authentication, I usually create a seeded local user rather than asking an agent to handle real credentials.</p>
<p>The VS Code guide says agent-opened pages run in private, in-memory sessions. That helps with isolation, but it is not a reason to relax security boundaries. If a flow can delete real data, send real email, charge a card, or expose customer records, I do not let an autonomous agent wander through it.</p>
<h2 id="what-is-a-practical-build-inspect-fix-and-verify-workflow">What is a practical build, inspect, fix, and verify workflow?</h2>
<p>Here is the workflow I use for small to medium front-end changes.</p>
<h3 id="how-do-you-scope-the-first-browser-pass">How do you scope the first browser pass?</h3>
<p>Start with a concrete user path. Avoid asking the agent to &ldquo;check the app.&rdquo; That prompt invites broad exploration and vague output.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Open the local app at http://127.0.0.1:3000.
</span></span><span style="display:flex;"><span>Test the create-project flow:
</span></span><span style="display:flex;"><span>1. Click &#34;New project&#34;.
</span></span><span style="display:flex;"><span>2. Enter &#34;Browser Tools Smoke Test&#34; as the project name.
</span></span><span style="display:flex;"><span>3. Submit the form.
</span></span><span style="display:flex;"><span>4. Confirm the app lands on the project detail page.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Before editing files, summarize:
</span></span><span style="display:flex;"><span>- visible failure, if any
</span></span><span style="display:flex;"><span>- console errors, if any
</span></span><span style="display:flex;"><span>- network or route failures, if visible
</span></span><span style="display:flex;"><span>- the smallest code area likely involved
</span></span></code></pre></div><p>This gives the agent a route, success criteria, and a reporting format. The reporting format is useful because it slows the agent down before it starts changing code.</p>
<h3 id="how-do-you-keep-fixes-small">How do you keep fixes small?</h3>
<p>After Copilot reports an observed failure, I usually follow with:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Make the smallest code change that addresses only this observed failure.
</span></span><span style="display:flex;"><span>Do not refactor unrelated components.
</span></span><span style="display:flex;"><span>Do not change styling unless the failure is caused by styling.
</span></span><span style="display:flex;"><span>After editing, re-run the same browser path and compare the result.
</span></span></code></pre></div><p>That prompt is defensive because agent mode can over-fix. When it sees a broken form, it may rewrite the component, rename state variables, adjust validation, and change CSS in one pass. Sometimes that works. More often, it increases review cost.</p>
<p>Browser tools make over-fixing more tempting because the agent can immediately verify its own broader change. Human review still needs a narrow diff.</p>
<h3 id="how-do-you-turn-the-finding-into-a-real-test">How do you turn the finding into a real test?</h3>
<p>Once the browser pass finds a real bug, decide whether the bug deserves a durable test. I use this rule:</p>
<table>
  <thead>
      <tr>
          <th>Finding</th>
          <th>Durable test?</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Route crashes on a common path</td>
          <td>Yes</td>
      </tr>
      <tr>
          <td>Payment, auth, or permissions behavior</td>
          <td>Yes</td>
      </tr>
      <tr>
          <td>Form validation regression</td>
          <td>Usually yes</td>
      </tr>
      <tr>
          <td>One-off copy mismatch</td>
          <td>Usually no</td>
      </tr>
      <tr>
          <td>Visual spacing issue</td>
          <td>Maybe, if screenshot tests already exist</td>
      </tr>
      <tr>
          <td>Flaky behavior with unclear cause</td>
          <td>Not yet, reproduce first</td>
      </tr>
  </tbody>
</table>
<p>For a durable test, ask Copilot to use the browser finding as source material, not as proof:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Based on the browser-observed failure, add a Playwright regression test.
</span></span><span style="display:flex;"><span>Keep the test focused on the create-project path.
</span></span><span style="display:flex;"><span>Use existing test helpers and selectors.
</span></span><span style="display:flex;"><span>Do not snapshot unrelated page content.
</span></span></code></pre></div><p>That handoff is where browser tools and traditional automation work well together.</p>
<h2 id="what-prompt-patterns-work-for-ui-bugs-console-errors-forms-and-navigation">What prompt patterns work for UI bugs, console errors, forms, and navigation?</h2>
<p>I keep a small set of prompts around because they reduce rambling agent behavior.</p>
<p>For console errors:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Use browser tools to reproduce the page load at http://127.0.0.1:5173/dashboard.
</span></span><span style="display:flex;"><span>Focus on console errors and uncaught exceptions.
</span></span><span style="display:flex;"><span>Do not edit code yet.
</span></span><span style="display:flex;"><span>Group findings by error message, likely source file, and user-visible impact.
</span></span></code></pre></div><p>For form flows:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Use browser tools to test the profile form with:
</span></span><span style="display:flex;"><span>- empty name
</span></span><span style="display:flex;"><span>- valid name
</span></span><span style="display:flex;"><span>- invalid email
</span></span><span style="display:flex;"><span>- valid email
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Report which validation messages appear and whether submit is blocked correctly.
</span></span><span style="display:flex;"><span>Only propose code changes after the report.
</span></span></code></pre></div><p>For navigation:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Click through the primary navigation from the sidebar.
</span></span><span style="display:flex;"><span>Check that each route renders without a 404, blank page, or console exception.
</span></span><span style="display:flex;"><span>Do not test admin-only routes.
</span></span><span style="display:flex;"><span>Return a table of route, result, and observed issue.
</span></span></code></pre></div><p>For visual smoke checks:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Open the settings page at desktop width.
</span></span><span style="display:flex;"><span>Check for overlapping text, hidden primary actions, modals clipped by containers, and buttons that appear disabled when enabled.
</span></span><span style="display:flex;"><span>Do not make subjective redesign suggestions.
</span></span><span style="display:flex;"><span>Only report functional visual defects.
</span></span></code></pre></div><p>The last prompt is intentionally strict. Agents are often too eager to redesign when the job is to verify.</p>
<h2 id="how-do-browser-tools-compare-with-playwright-mcp-and-cypress">How do browser tools compare with Playwright MCP and Cypress?</h2>
<p>Native GitHub Copilot browser tools, Playwright MCP, and Cypress sit in related but different parts of the workflow.</p>
<table>
  <thead>
      <tr>
          <th>Tool</th>
          <th>Best use</th>
          <th>Output</th>
          <th>Trade-off</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>GitHub Copilot browser tools</td>
          <td>Fast exploratory UI verification inside VS Code</td>
          <td>Observations, fixes, verification pass</td>
          <td>Not a durable regression suite</td>
      </tr>
      <tr>
          <td>Playwright MCP</td>
          <td>Agent-assisted browser automation and test generation</td>
          <td>Repeatable Playwright flows or test drafts</td>
          <td>More setup and selector discipline</td>
      </tr>
      <tr>
          <td>Cypress</td>
          <td>Team-owned E2E and component testing</td>
          <td>CI-ready regression tests</td>
          <td>Less natural for ad hoc agent exploration</td>
      </tr>
  </tbody>
</table>
<p>Native browser tools are the lowest-friction option when I am already in VS Code and want the agent to inspect the running app. Playwright MCP becomes more useful when I want the agent to reason through repeatable browser automation or draft a test that belongs in CI. Cypress remains a strong choice for teams that already have Cypress fixtures, custom commands, and CI reporting.</p>
<p>I would not migrate a mature Cypress suite just because Copilot can click buttons in VS Code. I would use browser tools to shorten the manual debugging loop, then encode important findings in the test framework the team already trusts.</p>
<h2 id="what-security-and-governance-issues-should-teams-handle-first">What security and governance issues should teams handle first?</h2>
<p>There are four controls I would discuss before enabling broad browser-agent usage on a team.</p>
<p>First, domain restrictions. VS Code documentation says administrators can disable browser tools or restrict reachable domains. For enterprise work, that should be part of the rollout. Localhost and known staging domains are reasonable defaults. Production admin domains should require a stronger reason.</p>
<p>Second, permission approvals. GitHub&rsquo;s GA announcement says sensitive permission approvals remain controlled by the user. Keep it that way culturally too. The agent should not approve OAuth scopes, browser permissions, or destructive prompts without a human explicitly deciding.</p>
<p>Third, session isolation. Private, in-memory sessions reduce persistence risk, but they do not remove data-handling obligations. A private browser session can still display sensitive data during the session.</p>
<p>Fourth, seeded test data. Browser tools are safest when the app has predictable local fixtures:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;user&#34;</span>: <span style="color:#e6db74">&#34;agent-smoke-test@example.com&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;role&#34;</span>: <span style="color:#e6db74">&#34;editor&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;workspace&#34;</span>: <span style="color:#e6db74">&#34;Copilot Browser Tools Sandbox&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;billingEnabled&#34;</span>: <span style="color:#66d9ef">false</span>
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>If a flow needs a real customer account to reproduce, I treat that as a separate debugging path with tighter human control.</p>
<h2 id="how-should-teams-think-about-cost-under-2026-copilot-billing">How should teams think about cost under 2026 Copilot billing?</h2>
<p>GitHub&rsquo;s 2026 Copilot billing model includes usage-based elements and AI credit allowances, depending on plan. Browser-driven loops can save developer time, but they can also encourage long autonomous runs: open the app, click around, patch code, verify, patch again, and repeat.</p>
<p>That is not automatically bad. A five-minute agent loop that catches a broken release path is cheap compared with a production bug. The risk is unbounded exploration.</p>
<p>I use stop conditions:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Stop after one full pass through the target flow.
</span></span><span style="display:flex;"><span>If the issue is not reproduced, report that and ask for next steps.
</span></span><span style="display:flex;"><span>If a fix requires changing more than three files, stop and explain why.
</span></span><span style="display:flex;"><span>If authentication blocks the flow, stop without attempting workarounds.
</span></span></code></pre></div><p>These limits also improve engineering quality. A bounded agent run produces a reviewable diff and a clear observation trail. An unbounded run produces mystery changes.</p>
<h2 id="what-failure-modes-should-you-expect">What failure modes should you expect?</h2>
<p>Browser tools are useful, but they fail in predictable ways.</p>
<p>Stale dev server state is the first one. Hot reload can leave the browser in a state that a fresh load would not reproduce. When a bug looks strange, ask the agent to reload the page and repeat the path.</p>
<p>Authentication walls are second. Agents can get stuck at login, especially with SSO, MFA, or expiring sessions. Use local seeded accounts where possible.</p>
<p>False visual confidence is third. The agent may say a page &ldquo;looks correct&rdquo; while missing a subtle design issue. I trust it for obvious overlap, missing elements, and broken interactions. I do not trust it as final visual QA.</p>
<p>Selector confusion is fourth. If the page has repeated button labels like &ldquo;Edit&rdquo; or &ldquo;Save&rdquo;, the agent may click the wrong one. Stable accessible names and test IDs help humans, tests, and agents.</p>
<p>Over-fixing is fifth. The agent may turn a one-line null guard into a component rewrite. This is why I ask for reports before edits and small fixes after observation.</p>
<h2 id="how-should-teams-turn-agent-findings-into-pr-review-evidence">How should teams turn agent findings into PR review evidence?</h2>
<p>The best browser-tools output is not &ldquo;Copilot says it works.&rdquo; The best output is a short trail a reviewer can evaluate:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Browser verification:
</span></span><span style="display:flex;"><span>- URL: http://127.0.0.1:3000/projects/new
</span></span><span style="display:flex;"><span>- Flow: create project with valid name
</span></span><span style="display:flex;"><span>- Before fix: submit stayed disabled because trimmedName was not recomputed after input
</span></span><span style="display:flex;"><span>- Change: moved derived validation into useMemo dependency on name
</span></span><span style="display:flex;"><span>- After fix: submit enabled, project detail route loaded, no console errors observed
</span></span><span style="display:flex;"><span>- Durable test: tests/e2e/create-project.spec.ts
</span></span></code></pre></div><p>That kind of note is useful in a PR description. It tells reviewers what was observed, what changed, and whether the finding became a test. It also makes clear where human review is still needed.</p>
<p>My current team rule is simple: browser verification can support a PR, but it does not replace code review, CI, or product review. It is an extra feedback loop inside the editor.</p>
<h2 id="faq-github-copilot-browser-tools-in-vs-code">FAQ: GitHub Copilot Browser Tools in VS Code</h2>
<h3 id="are-github-copilot-browser-tools-generally-available">Are GitHub Copilot browser tools generally available?</h3>
<p>Yes. GitHub announced browser tools for GitHub Copilot in VS Code as generally available on July 1, 2026. The GA release means teams can treat browser interaction as part of normal VS Code agent workflows, subject to their organization policies.</p>
<h3 id="do-browser-tools-replace-playwright-or-cypress">Do browser tools replace Playwright or Cypress?</h3>
<p>No. Browser tools are best for fast exploratory verification and debugging. Playwright and Cypress are better for repeatable regression tests that run in CI. In practice, I use browser tools to discover or verify a bug, then add a durable test for important paths.</p>
<h3 id="can-copilot-browser-tools-interact-with-local-development-apps">Can Copilot browser tools interact with local development apps?</h3>
<p>Yes. A common workflow is to run a local app with Vite, Next.js, or another dev server, then ask Copilot to open the localhost URL, click through a scoped flow, inspect console errors, and report findings before editing code.</p>
<h3 id="are-copilot-browser-sessions-isolated">Are Copilot browser sessions isolated?</h3>
<p>VS Code documentation says agent-opened pages run in private, in-memory sessions. That helps with isolation, but teams should still avoid exposing production customer data or destructive workflows to autonomous agent browsing.</p>
<h3 id="how-are-browser-tools-different-from-mcp">How are browser tools different from MCP?</h3>
<p>Browser tools give Copilot a real browser inside VS Code so it can observe and interact with a running web app. MCP connects Copilot to external systems and tools, such as documentation, issue trackers, internal APIs, or Playwright automation. They are complementary, not interchangeable.</p>
]]></content:encoded></item></channel></rss>