My agent has two Playwrights A developer at Appwrite analyzed 1,929 Playwright MCP browser calls across 62 Claude Code sessions from 17 September to 17 October and found that almost none ran the existing test suite; instead, 1,209 calls in 34 sessions were used for visual verification of UI, docs and release changes, with screenshots (281) and localhost navigations (209) dominating. The agent used the browser to catch issues no assertion covered, including a black logo on a near-black OAuth consent card and AVIF cover images that X would not render as share cards, fixing the latter with a JPEG conversion route for og:image and twitter:image. The developer argues the test suite and Playwright MCP answer different questions — regression versus whether newly built work looks right — and should be treated as two separate tools. My agent made 1,929 browser calls through Playwright MCP last month, and almost none of them were tests. That surprised me, because I do have tests. The Appwrite console has a playwright.config.ts , CI runs four Console E2E jobs on every pull request, and I spent part of the month fixing flakes in them. None of the 1,929 calls, spread over 62 sessions in my Claude Code transcripts between 17 September and 17 October, ran that suite. They used the browser for something else. So my agent has two Playwrights, and I've stopped treating them as one tool. The test suite answers one question: did something that used to work stop working? It runs headless in CI, it's mostly deterministic, and it doesn't care what anything looks like. Playwright MCP answers a different one: does the thing I just built look right? Nobody has written an assertion for that, because an hour ago the thing didn't exist. The agent opens a real browser, goes to the page, clicks through it, reads it back and takes a picture. Interactive version on the original post https://www.chiragaggarwal.tech/blog/my-agent-has-two-playwrights . Screenshots are the second most common call overall. In the sessions where the agent was checking its own work, they're the most common: 281 screenshots against 226 navigations, and 209 of those navigations went to localhost or a local file. It isn't browsing the web. It's looking at what it just made. browser evaluate is mostly reading, not poking. Of its 304 calls plus 188 run code unsafe calls, 175 use querySelectorAll and 151 read innerText . A handful flip the dark class on