{"slug": "playwright", "name": "Playwright", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "Microsoft's open-source library for automating Chromium, Firefox and WebKit browsers.", "recommenders": 22, "commenters": 44, "warners": 1, "score": 24.072, "rising": 2.09, "first": "2025-12-10", "latest": "2026-10-31", "why": "Recommended for cross-browser end-to-end testing and as a browser tool that lets AI coding agents check their own work, plus scraping and site automation.", "why_is_quote": false, "has_verdict": true, "sentiment": {"recommend": 23, "neutral": 20, "compare": 2, "warn": 1}, "spark": [0, 2, 2, 3, 3, 0, 0, 3, 3, 4, 2, 1], "listed": true, "loved": ["AI agent testing", "End-to-end testing"], "caveat": "Agent UX limits", "short_quote": "the big advantage of playwright is that it's cross-browser. It's still my go-to tool for automated testing", "icon": true, "domain": null, "github_repo": null, "official_url": "https://playwright.dev", "pricing": "open source", "aliases": ["Playwright"], "verdict": [{"text": "Recommended for cross-browser end-to-end testing", "cites": [{"id": 780490464, "item_id": 48780654, "url": "https://news.ycombinator.com/item?id=48780654", "by": "simonw", "date": "2026-07-03", "stance": "recommend", "quote": "the big advantage of playwright is that it's cross-browser. It's still my go-to tool for automated testing", "excerpt": "Yeah, the big advantage of playwright is that it's cross-browser. It's still my go-to tool for automated testing - I use the CDP trick for one-off automation tasks.", "context": "", "use_case": "automated browser testing", "switched_from": "", "story": "The Safari MCP server for web developers"}, {"id": 797723008, "item_id": 49857688, "url": "https://news.ycombinator.com/item?id=49857688", "by": "westurner", "date": "2026-09-26", "stance": "recommend", "quote": "Playwright is a useful and justified abstraction in the testing workflow", "excerpt": "Human accessibility testing is important too. Re: the new WebMCP spec: https://news.ycombinator.com/item?id=45623194 : > Could this help with accessibility reviews? > \"Lighthouse accessibility score\" https://developer.chrome.com/docs/lighthouse/accessibility/scoring > awesome-a11y > Tools: https://github.com/brunopulis/awesome-a11y/blob/main/topics/tools.md I've been working with Playwright e2e tests (End to End) in ", "context": "", "use_case": "end-to-end and accessibility testing", "switched_from": "", "story": "A Trump team wants to automate U.S. Web Design System accessibility testing"}, {"id": 788064160, "item_id": 49254010, "url": "https://news.ycombinator.com/item?id=49254010", "by": "ygjb", "date": "2026-08-10", "stance": "recommend", "quote": "I spent a bunch of time setting up playwright testing at the start of my project", "excerpt": "I use a combination of automated and manual testing. I spent a bunch of time setting up playwright testing at the start of my project, and then I shunt that through ZAP as well so that it can have a good understanding of how things work. If gives me a pretty solid map of what is working well, and aids in driving through security testing. Still not a replacement for manual testing. Us meatbags still have a knack for r", "context": "", "use_case": "automated testing", "switched_from": "", "story": "Ask HN: How do you go from writing code to deploying with agents?"}]}, {"text": " and as a browser tool that lets AI coding agents check their own work,", "cites": [{"id": 760004144, "item_id": 47500259, "url": "https://news.ycombinator.com/item?id=47500259", "by": "onion2k", "date": "2026-03-24", "stance": "recommend", "quote": "I give agent either a simple browser or Playwright access to proper browsers to do this. It works quite well", "excerpt": "I use AI agents to build UI features daily. The thing that kept annoying me: the agent writes code but never sees what it actually looks like in the browser. It can\u2019t tell if the layout is broken or if the console is throwing errors. I give agent either a simple browser or Playwright access to proper browsers to do this. It works quite well, to the point where I can ask Claude to debug GLSL shaders running in WebGL w", "context": "", "use_case": "agent UI verification", "switched_from": "", "story": "Show HN: ProofShot \u2013 Give AI coding agents eyes to verify the UI they build"}, {"id": 780356049, "item_id": 48772253, "url": "https://news.ycombinator.com/item?id=48772253", "by": "karlkloss", "date": "2026-07-03", "stance": "recommend", "quote": "told it to use PlayWright to control the browser and test by itself. After some hangs, that I had to stop manually, it did all by itself, and finally fixed the bug.", "excerpt": "Just yesterday I tried to find an annoying and persistent bug in the cummunication between a Lyrion Media Server and my player. I used Opencode's native Big Pickle AI, and first it was a pain in the back, because it gave me a new code, I had to start the player and test the control in the server's web GUI, report the errors back, and so forth, and it tried a lot, but never found the real cause. Then I got tired, and ", "context": "", "use_case": "automated browser testing by AI", "switched_from": "", "story": "Ask HN: Is anyone experimenting with different ways of using LLMs for coding?"}, {"id": 774886865, "item_id": 48430429, "url": "https://news.ycombinator.com/item?id=48430429", "by": "cadamsdotcom", "date": "2026-06-06", "stance": "recommend", "quote": "it will write Playwright code to validate its work, and that becomes forever part of the codebase", "excerpt": "The right set of techniques is highly situational and HN is full of people just dipping their toes into agentic coding. I\u2019ve been using Claude Code for over a year and built a 300k+ saas codebase with it. I use zero skills, zero MCPs, zero adornments to the base model. I have built something very different from what others have: my \u201cstack\u201d is a collection of Claude Code hooks that force the model to do test driven de", "context": "", "use_case": "end-to-end testing", "switched_from": "", "story": "Ask HN: What is your (AI) dev tech stack / workflow? (June 2026)"}]}, {"text": " plus scraping and site automation.", "cites": [{"id": 751409072, "item_id": 46963067, "url": "https://news.ycombinator.com/item?id=46963067", "by": "alexpotato", "date": "2026-02-10", "stance": "recommend", "quote": "Nowadays, I use playwright to scrape websites for thing I care about", "excerpt": "At my first full time job in the early 2000s I was tasked with building a webscraper. We worked for law firms representing Fortune 500 companies and they wanted to know who was running \"pump and dump\" stock schemes on stocks using Yahoo Finance message boards. At the time, I didn't know the LWP::Simple module existed in Perl so I ended up writing my own socket based HTTP library to pull down the posts, store them in ", "context": "", "use_case": "web scraping", "switched_from": "", "story": "I started programming when I was 7. I'm 50 now and the thing I loved has changed"}, {"id": 784807681, "item_id": 49050480, "url": "https://news.ycombinator.com/item?id=49050480", "by": "vidarh", "date": "2026-07-25", "stance": "recommend", "quote": "automated the hell out of my most important interactions with the site using Playwright", "excerpt": "And yet, for a site I use regularly, I keep getting the CAPTCHA, while Claude Code has automated the hell out of my most important interactions with the site using Playwright, and somehow never triggers the CAPTCHA...", "context": "", "use_case": "browser automation", "switched_from": "", "story": "Proving a Human Wrote Something"}, {"id": 758272544, "item_id": 47392034, "url": "https://news.ycombinator.com/item?id=47392034", "by": "dataviz1000", "date": "2026-03-15", "stance": "recommend", "quote": "I use Playwright to intercept all requests and responses and have Claude Code navigate to a website", "excerpt": "I use Playwright to intercept all requests and responses and have Claude Code navigate to a website like YouTube and click and interact with all the elements and inputs while recording all the requests and responses associated with each interaction. Then it creates a detailed strongly typed API to interact with any website using the underlying API. Yes, I know it likely breaks everybody's terms of service but at the ", "context": "", "use_case": "intercepting web requests", "switched_from": "", "story": "Let your Coding Agent debug the browser session with Chrome DevTools MCP"}]}, {"text": " A recurring caveat is that agents still miss UX problems even with Playwright in the loop,", "cites": [{"id": 797570304, "item_id": 49848144, "url": "https://news.ycombinator.com/item?id=49848144", "by": "bs7280", "date": "2026-09-25", "stance": "neutral", "quote": "even when you are aggressively using playwright in your agent loop", "excerpt": "Theres a distinction between built more rigorously and tested more rigorously. By many definitions, agent created apps are built more rigorously. They write more unit tests, attempt to handle more edge cases, write more lines of code, create features faster. For certain things, I do think agent created tools tend to be better. But - I have found that every single model available is lacking in creating a great UX, eve", "context": "", "use_case": "agent-driven UI testing", "switched_from": "", "story": "Search \u2013 A small, fast WebKit browser for macOS"}, {"id": 791105328, "item_id": 49444083, "url": "https://news.ycombinator.com/item?id=49444083", "by": "spike021", "date": "2026-08-26", "stance": "neutral", "quote": "I've had some luck on the web app side if I use playwright or similar for the model to interact with", "excerpt": "I've had a lot of trouble when it comes to sorting out UIs. I've tried with an iOS game and also a TypeScript app with UI elements from libraries like ReactFlow. The usual models can sometimes fix or change things based on screenshots but more often than not they just don't \"get it\" (e.g. certain shapes on a plane are overlapping, which I don't want, the models can't fix what they can't \"see\"). I've had some luck on ", "context": "", "use_case": "letting models interact with UI", "switched_from": "", "story": "Ask HN: What is one simple thing LLMs are insanely bad at?"}]}, {"text": " and stock Playwright can be flagged as a bot and uses a lot of memory.", "cites": [{"id": 782979041, "item_id": 48936190, "url": "https://news.ycombinator.com/item?id=48936190", "by": "suchintan", "date": "2026-07-16", "stance": "compare", "quote": "Stock playwright screamed \u201cI\u2019m a bot\u201d as anyone used it", "excerpt": "Hey everyone, Suchintan from Skyvern (YC S23) here. We're open sourcing something we built internally: Rustwright: Playwright on an in-process Rust CDP engine. It\u2019s a full rewrite of Playwright in Rust using CDP, which consumes 70% less memory than Playwright\u2019s node driver, and is 2.55x faster to boot. We run a lot of browser automations at Skyvern, and while we were doing some performance tuning, we realized the pla", "context": "Skyvern (YC S23)", "use_case": "browser automation", "switched_from": "", "story": "Rustwright \u2013 a Rust Rewrite of Playwright"}]}], "praise": [{"label": "AI agent testing", "summary": "Gives coding agents a real browser to test, screenshot and debug their own changes.", "quotes": [{"id": 760004144, "item_id": 47500259, "url": "https://news.ycombinator.com/item?id=47500259", "by": "onion2k", "date": "2026-03-24", "stance": "recommend", "quote": "I give agent either a simple browser or Playwright access to proper browsers to do this. It works quite well", "excerpt": "I use AI agents to build UI features daily. The thing that kept annoying me: the agent writes code but never sees what it actually looks like in the browser. It can\u2019t tell if the layout is broken or if the console is throwing errors. I give agent either a simple browser or Playwright access to proper browsers to do this. It works quite well, to the point where I can ask Claude to debug GLSL shaders running in WebGL w", "context": "", "use_case": "agent UI verification", "switched_from": "", "story": "Show HN: ProofShot \u2013 Give AI coding agents eyes to verify the UI they build"}, {"id": 780356049, "item_id": 48772253, "url": "https://news.ycombinator.com/item?id=48772253", "by": "karlkloss", "date": "2026-07-03", "stance": "recommend", "quote": "told it to use PlayWright to control the browser and test by itself. After some hangs, that I had to stop manually, it did all by itself, and finally fixed the bug.", "excerpt": "Just yesterday I tried to find an annoying and persistent bug in the cummunication between a Lyrion Media Server and my player. I used Opencode's native Big Pickle AI, and first it was a pain in the back, because it gave me a new code, I had to start the player and test the control in the server's web GUI, report the errors back, and so forth, and it tried a lot, but never found the real cause. Then I got tired, and ", "context": "", "use_case": "automated browser testing by AI", "switched_from": "", "story": "Ask HN: Is anyone experimenting with different ways of using LLMs for coding?"}, {"id": 774886865, "item_id": 48430429, "url": "https://news.ycombinator.com/item?id=48430429", "by": "cadamsdotcom", "date": "2026-06-06", "stance": "recommend", "quote": "it will write Playwright code to validate its work, and that becomes forever part of the codebase", "excerpt": "The right set of techniques is highly situational and HN is full of people just dipping their toes into agentic coding. I\u2019ve been using Claude Code for over a year and built a 300k+ saas codebase with it. I use zero skills, zero MCPs, zero adornments to the base model. I have built something very different from what others have: my \u201cstack\u201d is a collection of Claude Code hooks that force the model to do test driven de", "context": "", "use_case": "end-to-end testing", "switched_from": "", "story": "Ask HN: What is your (AI) dev tech stack / workflow? (June 2026)"}]}, {"label": "End-to-end testing", "summary": "A go-to tool for automated e2e tests that exercise the whole app.", "quotes": [{"id": 780490464, "item_id": 48780654, "url": "https://news.ycombinator.com/item?id=48780654", "by": "simonw", "date": "2026-07-03", "stance": "recommend", "quote": "the big advantage of playwright is that it's cross-browser. It's still my go-to tool for automated testing", "excerpt": "Yeah, the big advantage of playwright is that it's cross-browser. It's still my go-to tool for automated testing - I use the CDP trick for one-off automation tasks.", "context": "", "use_case": "automated browser testing", "switched_from": "", "story": "The Safari MCP server for web developers"}, {"id": 797723008, "item_id": 49857688, "url": "https://news.ycombinator.com/item?id=49857688", "by": "westurner", "date": "2026-09-26", "stance": "recommend", "quote": "Playwright is a useful and justified abstraction in the testing workflow", "excerpt": "Human accessibility testing is important too. Re: the new WebMCP spec: https://news.ycombinator.com/item?id=45623194 : > Could this help with accessibility reviews? > \"Lighthouse accessibility score\" https://developer.chrome.com/docs/lighthouse/accessibility/scoring > awesome-a11y > Tools: https://github.com/brunopulis/awesome-a11y/blob/main/topics/tools.md I've been working with Playwright e2e tests (End to End) in ", "context": "", "use_case": "end-to-end and accessibility testing", "switched_from": "", "story": "A Trump team wants to automate U.S. Web Design System accessibility testing"}, {"id": 799720946, "item_id": 49982559, "url": "https://news.ycombinator.com/item?id=49982559", "by": "theseamusjames", "date": "2026-10-06", "stance": "recommend", "quote": "built in the browser with playwright. This continues to expose so much more than individual unit/tool tests", "excerpt": "Yeah, it's a really well defined problem space with quantifiable outcomes, so LLMs are very well suited to it. For lopsy, the biggest issue I ran into was combinatorial bugs: certain sequences of tools and actions would cause a bug to occur that wasn't obvious from isolated tool testing. I solved it by having Claude generate complete projects, full documents with novel concepts chosen randomly, built in the browser w", "context": "", "use_case": "browser-based end-to-end testing", "switched_from": "", "story": "Adobe Creative Suite Cleanroom Port to Rust"}]}, {"label": "Scraping and automation", "summary": "Used to scrape sites, intercept requests and automate routine web interactions.", "quotes": [{"id": 751409072, "item_id": 46963067, "url": "https://news.ycombinator.com/item?id=46963067", "by": "alexpotato", "date": "2026-02-10", "stance": "recommend", "quote": "Nowadays, I use playwright to scrape websites for thing I care about", "excerpt": "At my first full time job in the early 2000s I was tasked with building a webscraper. We worked for law firms representing Fortune 500 companies and they wanted to know who was running \"pump and dump\" stock schemes on stocks using Yahoo Finance message boards. At the time, I didn't know the LWP::Simple module existed in Perl so I ended up writing my own socket based HTTP library to pull down the posts, store them in ", "context": "", "use_case": "web scraping", "switched_from": "", "story": "I started programming when I was 7. I'm 50 now and the thing I loved has changed"}, {"id": 758272544, "item_id": 47392034, "url": "https://news.ycombinator.com/item?id=47392034", "by": "dataviz1000", "date": "2026-03-15", "stance": "recommend", "quote": "I use Playwright to intercept all requests and responses and have Claude Code navigate to a website", "excerpt": "I use Playwright to intercept all requests and responses and have Claude Code navigate to a website like YouTube and click and interact with all the elements and inputs while recording all the requests and responses associated with each interaction. Then it creates a detailed strongly typed API to interact with any website using the underlying API. Yes, I know it likely breaks everybody's terms of service but at the ", "context": "", "use_case": "intercepting web requests", "switched_from": "", "story": "Let your Coding Agent debug the browser session with Chrome DevTools MCP"}, {"id": 784807681, "item_id": 49050480, "url": "https://news.ycombinator.com/item?id=49050480", "by": "vidarh", "date": "2026-07-25", "stance": "recommend", "quote": "automated the hell out of my most important interactions with the site using Playwright", "excerpt": "And yet, for a site I use regularly, I keep getting the CAPTCHA, while Claude Code has automated the hell out of my most important interactions with the site using Playwright, and somehow never triggers the CAPTCHA...", "context": "", "use_case": "browser automation", "switched_from": "", "story": "Proving a Human Wrote Something"}]}, {"label": "Cross-browser", "summary": "Runs tests across Chrome, Firefox and Safari/WebKit, including on Linux and Windows.", "quotes": [{"id": 780490464, "item_id": 48780654, "url": "https://news.ycombinator.com/item?id=48780654", "by": "simonw", "date": "2026-07-03", "stance": "recommend", "quote": "the big advantage of playwright is that it's cross-browser. It's still my go-to tool for automated testing", "excerpt": "Yeah, the big advantage of playwright is that it's cross-browser. It's still my go-to tool for automated testing - I use the CDP trick for one-off automation tasks.", "context": "", "use_case": "automated browser testing", "switched_from": "", "story": "The Safari MCP server for web developers"}, {"id": 801309552, "item_id": 50081847, "url": "https://news.ycombinator.com/item?id=50081847", "by": "tisdadd", "date": "2026-10-14", "stance": "neutral", "quote": "I do use safari in my playwright tests", "excerpt": "I do use safari in my playwright tests, and it led to me doing a note on my known limitations page - that those tests take longer than Firefox and Chrome, my daily drivers. But, that could be due to using it on Linux maybe. I do hate having to dig out ios devices for app testing.", "context": "", "use_case": "browser testing", "switched_from": "", "story": "Apple's new 'Switch to Safari' campaign details why you should ditch Chrome"}, {"id": 780360000, "item_id": 48772500, "url": "https://news.ycombinator.com/item?id=48772500", "by": "demetris", "date": "2026-07-03", "stance": "neutral", "quote": "I have multiple Playwright webkits on both Windows and Linux.", "excerpt": "I know of the solutions. I use a few of them. I have multiple Playwright webkits on both Windows and Linux. I have Epiphany on Linux (not 100% same webkit). I have subscriptions for testing on real hardware. This is why it seems to me that Apple does not really care about web developers.", "context": "web developer testing Safari compatibility", "use_case": "testing WebKit on Windows/Linux", "switched_from": "", "story": "The Safari MCP server for web developers"}]}, {"label": "Screenshot testing", "summary": "Its toHaveScreenshot comparison with proper waits has become fairly solid.", "quotes": [{"id": 748685248, "item_id": 46792828, "url": "https://news.ycombinator.com/item?id=46792828", "by": "jackfranklyn", "date": "2026-01-28", "stance": "recommend", "quote": "Playwright's screenshot comparison (toHaveScreenshot) combined with proper wait strategies has gotten pretty solid.", "excerpt": "Playwright + something like Claude with computer use is probably closest to what you're describing. Though I'd push back a bit on the approach. The flaky test problem usually comes from either race conditions (waiting for wrong things) or environmental differences. Adding AI vision on top often adds another layer of flakiness - now you're debugging \"why did the model misread this button\" on top of \"why did the test t", "context": "", "use_case": "visual regression testing", "switched_from": "", "story": "Ask HN: Do you use a visual debugging AI tool?"}]}], "caveats": [{"label": "Agent UX limits", "summary": "Even with Playwright, AI models struggle to catch UI and layout problems efficiently.", "quotes": [{"id": 797570304, "item_id": 49848144, "url": "https://news.ycombinator.com/item?id=49848144", "by": "bs7280", "date": "2026-09-25", "stance": "neutral", "quote": "even when you are aggressively using playwright in your agent loop", "excerpt": "Theres a distinction between built more rigorously and tested more rigorously. By many definitions, agent created apps are built more rigorously. They write more unit tests, attempt to handle more edge cases, write more lines of code, create features faster. For certain things, I do think agent created tools tend to be better. But - I have found that every single model available is lacking in creating a great UX, eve", "context": "", "use_case": "agent-driven UI testing", "switched_from": "", "story": "Search \u2013 A small, fast WebKit browser for macOS"}, {"id": 791105328, "item_id": 49444083, "url": "https://news.ycombinator.com/item?id=49444083", "by": "spike021", "date": "2026-08-26", "stance": "neutral", "quote": "I've had some luck on the web app side if I use playwright or similar for the model to interact with", "excerpt": "I've had a lot of trouble when it comes to sorting out UIs. I've tried with an iOS game and also a TypeScript app with UI elements from libraries like ReactFlow. The usual models can sometimes fix or change things based on screenshots but more often than not they just don't \"get it\" (e.g. certain shapes on a plane are overlapping, which I don't want, the models can't fix what they can't \"see\"). I've had some luck on ", "context": "", "use_case": "letting models interact with UI", "switched_from": "", "story": "Ask HN: What is one simple thing LLMs are insanely bad at?"}]}, {"label": "Bot detection", "summary": "Stock Playwright is easily detected as a bot, so some pair it with antidetect browsers.", "quotes": [{"id": 782979041, "item_id": 48936190, "url": "https://news.ycombinator.com/item?id=48936190", "by": "suchintan", "date": "2026-07-16", "stance": "compare", "quote": "Stock playwright screamed \u201cI\u2019m a bot\u201d as anyone used it", "excerpt": "Hey everyone, Suchintan from Skyvern (YC S23) here. We're open sourcing something we built internally: Rustwright: Playwright on an in-process Rust CDP engine. It\u2019s a full rewrite of Playwright in Rust using CDP, which consumes 70% less memory than Playwright\u2019s node driver, and is 2.55x faster to boot. We run a lot of browser automations at Skyvern, and while we were doing some performance tuning, we realized the pla", "context": "Skyvern (YC S23)", "use_case": "browser automation", "switched_from": "", "story": "Rustwright \u2013 a Rust Rewrite of Playwright"}, {"id": 805030289, "item_id": 50314393, "url": "https://news.ycombinator.com/item?id=50314393", "by": "walrus01", "date": "2026-10-31", "stance": "neutral", "quote": "things like playwright + camoufox", "excerpt": "I really wouldn't worry about this. People are already doing much more advanced, compute cycle intensive cloudflare bypasses with things like playwright + camoufox: https://github.com/daijro/camoufox There are various headless antidetect browsers now which are patched at the source code level to avoid headless-browser-detection systems, and to present consistent profiles for things like webrtc/webasssembly capability", "context": "", "use_case": "browser automation", "switched_from": "", "story": "Cloudflare Turnstile solver library (no headless browser required)"}]}, {"label": "Resource usage", "summary": "One team found the Node driver wasted significant memory and CPU.", "quotes": [{"id": 782979041, "item_id": 48936190, "url": "https://news.ycombinator.com/item?id=48936190", "by": "suchintan", "date": "2026-07-16", "stance": "compare", "quote": "Stock playwright screamed \u201cI\u2019m a bot\u201d as anyone used it", "excerpt": "Hey everyone, Suchintan from Skyvern (YC S23) here. We're open sourcing something we built internally: Rustwright: Playwright on an in-process Rust CDP engine. It\u2019s a full rewrite of Playwright in Rust using CDP, which consumes 70% less memory than Playwright\u2019s node driver, and is 2.55x faster to boot. We run a lot of browser automations at Skyvern, and while we were doing some performance tuning, we realized the pla", "context": "Skyvern (YC S23)", "use_case": "browser automation", "switched_from": "", "story": "Rustwright \u2013 a Rust Rewrite of Playwright"}]}, {"label": "Basic visual diffs", "summary": "Its pixelmatch-based comparison reports mismatched pixels but little about what changed.", "quotes": [{"id": 745219683, "item_id": 46576230, "url": "https://news.ycombinator.com/item?id=46576230", "by": "Robdel12", "date": "2026-01-11", "stance": "compare", "quote": "Playwright uses pixelmatch, which is decent but limited.", "excerpt": "I love this! I'm pretty biased, but I think everyone should be doing VRT. I used to work at Percy and now I'm building Vizzly. :p Playwright uses pixelmatch, which is decent but limited. It returns the number of mismatched pixels and a diff image, but nothing about where changes cluster or what kind of change you're looking at. I built Honeydiff (https://github.com/vizzly-testing/honeydiff) for Vizzly to go further: ", "context": "", "use_case": "browser testing", "switched_from": "", "story": "Visual regression tests for personal blogs"}]}, {"label": "Slow Safari runs", "summary": "Safari/WebKit tests take longer than Firefox and Chrome, at least on Linux.", "quotes": [{"id": 801309552, "item_id": 50081847, "url": "https://news.ycombinator.com/item?id=50081847", "by": "tisdadd", "date": "2026-10-14", "stance": "neutral", "quote": "I do use safari in my playwright tests", "excerpt": "I do use safari in my playwright tests, and it led to me doing a note on my known limitations page - that those tests take longer than Firefox and Chrome, my daily drivers. But, that could be due to using it on Linux maybe. I do hate having to dig out ios devices for app testing.", "context": "", "use_case": "browser testing", "switched_from": "", "story": "Apple's new 'Switch to Safari' campaign details why you should ditch Chrome"}]}, {"label": "Tedious scraping", "summary": "One commenter replaced a tedious Playwright scraping approach with direct API calls.", "quotes": [{"id": 766906962, "item_id": 47931685, "url": "https://news.ycombinator.com/item?id=47931685", "by": "safehuss", "date": "2026-04-28", "stance": "warn", "quote": "bypassed the old tedious playwright-based approach I used to rely on", "excerpt": "This is awesome! Worked on something similar albeit a different industry. For the more challenging scrapes, would highly recommend using the Chrome Devtools MCP to be able to attach the network requests, being made by the browser to the site, as context for your agent/LLM chat - this approach really helped me to write a solid API-based scraper (also using curl_cffi) and bypassed the old tedious playwright-based appro", "context": "", "use_case": "scraping", "switched_from": "", "story": "Scraping 241 UK council planning portals \u2013 2.6M decisions so far"}]}], "who": [{"by": "softwarewright", "context": "single person LLC", "url": "https://news.ycombinator.com/item?id=49591330", "date": "2026-09-06"}, {"by": "jhonatangalves", "context": "Front-end engineer seeking work", "url": "https://news.ycombinator.com/item?id=49259164", "date": "2026-08-11"}, {"by": "scottydelta", "context": "self-hosts a docker compose setup behind a VPN", "url": "https://news.ycombinator.com/item?id=49159733", "date": "2026-08-03"}, {"by": "demetris", "context": "web developer testing Safari compatibility", "url": "https://news.ycombinator.com/item?id=48772500", "date": "2026-07-03"}, {"by": "denizcakiroglu", "context": "full-stack engineer specializing in production LLM systems", "url": "https://news.ycombinator.com/item?id=48502797", "date": "2026-06-12"}, {"by": "hwartig", "context": "works at Checkly", "url": "https://news.ycombinator.com/item?id=47503469", "date": "2026-03-24"}, {"by": "johnfn", "context": "runs a website with decent traffic, heavy AI-assisted coding", "url": "https://news.ycombinator.com/item?id=46222640", "date": "2025-12-10"}], "tags": ["for e2e testing", "for AI coding agents", "for web scraping", "cross-browser", "for monitoring"], "use_cases": ["browser automation", "end-to-end testing", "browser testing", "testing", "browser-based end-to-end testing", "end-to-end and accessibility testing"], "compared": [{"slug": "claude-code", "name": "Claude Code", "co": 8, "switched_from": 0, "switched_to": 0}, {"slug": "claude", "name": "Claude", "co": 8, "switched_from": 0, "switched_to": 0}, {"slug": "chrome-devtools-mcp", "name": "Chrome DevTools MCP", "co": 3, "switched_from": 0, "switched_to": 1}, {"slug": "glm", "name": "GLM", "co": 4, "switched_from": 0, "switched_to": 0}, {"slug": "puppeteer", "name": "Puppeteer", "co": 4, "switched_from": 0, "switched_to": 0}, {"slug": "opencode", "name": "OpenCode", "co": 4, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 769474193, "item_id": 48092137, "url": "https://news.ycombinator.com/item?id=48092137", "by": "aslushnikov", "date": "2026-05-11", "stance": "neutral", "quote": "I worked on Playwright before", "excerpt": "Working on https://flakiness.io: GitHub-native test analytics. I worked on Playwright before, and this project started as a natural continuation of that work. We\u2019ve since expanded beyond Playwright to support many popular test runners. The idea is to connect test results and artifacts with commit history. Test reports should know whether a failure is new, whether a test has been flaky before, and which commit made a ", "context": "formerly worked on Playwright", "use_case": "browser testing", "switched_from": "", "story": "Ask HN: What Are You Working On? (May 2026)"}], "threads": [{"url": "https://news.ycombinator.com/item?id=48769639", "title": "The Safari MCP server for web developers", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=48413629", "title": "Ask HN: What is your (AI) dev tech stack / workflow? (June 2026)", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=47002404", "title": "I asked Claude Code to remove jQuery. It failed miserably", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=50277379", "title": "Cloudflare Turnstile solver library (no headless browser required)", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=50072286", "title": "Apple's new 'Switch to Safari' campaign details why you should ditch Chrome", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49981449", "title": "Adobe Creative Suite Cleanroom Port to Rust", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"recommend": 2}, "2026-01": {"neutral": 1, "compare": 1, "recommend": 2}, "2026-02": {"recommend": 3}, "2026-03": {"recommend": 3, "neutral": 1}, "2026-04": {"neutral": 4, "warn": 1}, "2026-05": {}, "2026-06": {"recommend": 3, "neutral": 1}, "2026-07": {"recommend": 3, "neutral": 2, "compare": 1}, "2026-08": {"neutral": 7, "recommend": 4}, "2026-09": {"neutral": 2, "recommend": 2}, "2026-10": {"recommend": 1, "neutral": 2}}, "quotes": [{"id": 805030289, "item_id": 50314393, "url": "https://news.ycombinator.com/item?id=50314393", "by": "walrus01", "date": "2026-10-31", "stance": "neutral", "quote": "things like playwright + camoufox", "excerpt": "I really wouldn't worry about this. People are already doing much more advanced, compute cycle intensive cloudflare bypasses with things like playwright + camoufox: https://github.com/daijro/camoufox There are various headless antidetect browsers now which are patched at the source code level to avoid headless-browser-detection systems, and to present consistent profiles for things like webrtc/webasssembly capability", "context": "", "use_case": "browser automation", "switched_from": "", "story": "Cloudflare Turnstile solver library (no headless browser required)"}, {"id": 801309552, "item_id": 50081847, "url": "https://news.ycombinator.com/item?id=50081847", "by": "tisdadd", "date": "2026-10-14", "stance": "neutral", "quote": "I do use safari in my playwright tests", "excerpt": "I do use safari in my playwright tests, and it led to me doing a note on my known limitations page - that those tests take longer than Firefox and Chrome, my daily drivers. But, that could be due to using it on Linux maybe. I do hate having to dig out ios devices for app testing.", "context": "", "use_case": "browser testing", "switched_from": "", "story": "Apple's new 'Switch to Safari' campaign details why you should ditch Chrome"}, {"id": 799720946, "item_id": 49982559, "url": "https://news.ycombinator.com/item?id=49982559", "by": "theseamusjames", "date": "2026-10-06", "stance": "recommend", "quote": "built in the browser with playwright. This continues to expose so much more than individual unit/tool tests", "excerpt": "Yeah, it's a really well defined problem space with quantifiable outcomes, so LLMs are very well suited to it. For lopsy, the biggest issue I ran into was combinatorial bugs: certain sequences of tools and actions would cause a bug to occur that wasn't obvious from isolated tool testing. I solved it by having Claude generate complete projects, full documents with novel concepts chosen randomly, built in the browser w", "context": "", "use_case": "browser-based end-to-end testing", "switched_from": "", "story": "Adobe Creative Suite Cleanroom Port to Rust"}, {"id": 797723008, "item_id": 49857688, "url": "https://news.ycombinator.com/item?id=49857688", "by": "westurner", "date": "2026-09-26", "stance": "recommend", "quote": "Playwright is a useful and justified abstraction in the testing workflow", "excerpt": "Human accessibility testing is important too. Re: the new WebMCP spec: https://news.ycombinator.com/item?id=45623194 : > Could this help with accessibility reviews? > \"Lighthouse accessibility score\" https://developer.chrome.com/docs/lighthouse/accessibility/scoring > awesome-a11y > Tools: https://github.com/brunopulis/awesome-a11y/blob/main/topics/tools.md I've been working with Playwright e2e tests (End to End) in ", "context": "", "use_case": "end-to-end and accessibility testing", "switched_from": "", "story": "A Trump team wants to automate U.S. Web Design System accessibility testing"}, {"id": 797570304, "item_id": 49848144, "url": "https://news.ycombinator.com/item?id=49848144", "by": "bs7280", "date": "2026-09-25", "stance": "neutral", "quote": "even when you are aggressively using playwright in your agent loop", "excerpt": "Theres a distinction between built more rigorously and tested more rigorously. By many definitions, agent created apps are built more rigorously. They write more unit tests, attempt to handle more edge cases, write more lines of code, create features faster. For certain things, I do think agent created tools tend to be better. But - I have found that every single model available is lacking in creating a great UX, eve", "context": "", "use_case": "agent-driven UI testing", "switched_from": "", "story": "Search \u2013 A small, fast WebKit browser for macOS"}, {"id": 794530658, "item_id": 49658166, "url": "https://news.ycombinator.com/item?id=49658166", "by": "jasonjmcghee", "date": "2026-09-11", "stance": "recommend", "quote": "If I'm using something like figma or glean or playwright/chrome dev tools, plugin/skill/mcp - likely very useful.", "excerpt": "I see the same thing and have effectively the same philosophy. If I'm using something like figma or glean or playwright/chrome dev tools, plugin/skill/mcp - likely very useful. But so many of the weird collections of skills that people on YouTube get viral followings for - I just don't get it. People excitedly ask me what skills I use and I feel bad just saying only things we've directly authored for some express pur", "context": "", "use_case": "agent browser automation", "switched_from": "", "story": "RTK reports token savings, but our cost benchmarks disagree"}, {"id": 793461280, "item_id": 49591330, "url": "https://news.ycombinator.com/item?id=49591330", "by": "softwarewright", "date": "2026-09-06", "stance": "neutral", "quote": "I use MCP for some things, like Playwright; for web UI development", "excerpt": "I am a single person LLC so my \"production\" is just me using AI to build things. I use MCP for some things, like Playwright; for web UI development, but I also use CLIs, especially custom CLIs I create that have built-in help for the AI coding agent to use. I just to run my command (in the path) with --help and it figures out how to use. This seems more straightforward and efficient than MCP. I have written MCP serve", "context": "single person LLC", "use_case": "web UI development", "switched_from": "", "story": "Ask HN: Who is using MCP in production?"}, {"id": 792149520, "item_id": 49509345, "url": "https://news.ycombinator.com/item?id=49509345", "by": "dataviz1000", "date": "2026-08-31", "stance": "neutral", "quote": "I use Playwright with Chrome DevTools Protocol in order to do performance testing and leak detection.", "excerpt": "Does anyone else not use memory? I find once there is one poisoned line of text it negatively affects everything else downstream. Instead, I use a temp/ folder with documents and use different files for different agents and models. Then I have to constantly prune and delete the files. Any information that can be extrapolated is just noise which negatively affects the agent. If you have a definition of a database stru", "context": "", "use_case": "performance testing, leak detection", "switched_from": "", "story": "Agent memory as a file format"}, {"id": 792039283, "item_id": 49502455, "url": "https://news.ycombinator.com/item?id=49502455", "by": "nejch", "date": "2026-08-30", "stance": "recommend", "quote": "give it tools like playwright and github MCP for upstream context and search", "excerpt": "With setup you mean HW or the SW stack? We used to run GLM-5 class models but have now changed to smaller ones as we're able to serve more concurrent users with our limited hardware (DeepSeek-v4-Flash-0731, Qwen-3.8-27b). We run on the order of hundreds of parallel requests right now, Qwen with data parallelism and DSv4F with P/D disaggregation, but will probably continue to tweak this. Qwen 3.8 27b in my experience ", "context": "", "use_case": "agent browser tooling", "switched_from": "", "story": "vLLM v0.28.0"}, {"id": 791105328, "item_id": 49444083, "url": "https://news.ycombinator.com/item?id=49444083", "by": "spike021", "date": "2026-08-26", "stance": "neutral", "quote": "I've had some luck on the web app side if I use playwright or similar for the model to interact with", "excerpt": "I've had a lot of trouble when it comes to sorting out UIs. I've tried with an iOS game and also a TypeScript app with UI elements from libraries like ReactFlow. The usual models can sometimes fix or change things based on screenshots but more often than not they just don't \"get it\" (e.g. certain shapes on a plane are overlapping, which I don't want, the models can't fix what they can't \"see\"). I've had some luck on ", "context": "", "use_case": "letting models interact with UI", "switched_from": "", "story": "Ask HN: What is one simple thing LLMs are insanely bad at?"}, {"id": 789951937, "item_id": 49371996, "url": "https://news.ycombinator.com/item?id=49371996", "by": "afiori", "date": "2026-08-20", "stance": "recommend", "quote": "if the app is web make it work very well with playwright for e2e ux tests.", "excerpt": "I cannot answer your main question, but i can give you recommendations wrt what you are gonna try to do. Very likely there will be a lot of parts of the app you are not going to understand, those will be the main problems so help claude help itself. Make it add diagnostic/event-logs to every part of the stack and potentially even design implementations around traceability (eg avoid batch background processes that tou", "context": "", "use_case": "end-to-end UX tests", "switched_from": "", "story": "Ask HN: Can I realistically make an app as a junior dev?"}, {"id": 789161632, "item_id": 49322602, "url": "https://news.ycombinator.com/item?id=49322602", "by": "jesol", "date": "2026-08-16", "stance": "recommend", "quote": "the first layer speaks app UI specific language and runs playwright directly", "excerpt": "Basically I'm designing a two layer interface, the first layer speaks app UI specific language and runs playwright directly (signin, dismiss toast, go to dashboard), and then the second speaks product language (\"user opens dashboard\" in Gherkin would translate to signin, wait for app to load, go to dashboard; for example). The translation from product level language to app level language is the step definition files ", "context": "", "use_case": "acceptance testing", "switched_from": "", "story": "Yadda 3.0.0: BDD in the Age of AI Agents"}, {"id": 788919345, "item_id": 49307459, "url": "https://news.ycombinator.com/item?id=49307459", "by": "alightsoul", "date": "2026-08-14", "stance": "neutral", "quote": "tests  it on the app with playwright or claude browser", "excerpt": "at work, an airline via an outsourcing company, the entire qa workflow is automated. we use claude desktop, the ai picks up a user story from azure devops via rest api or mcp, tests it on the app with playwright or claude browser, then reports bugs and test results via mcp servers and rest apis to azure devops. alas it needs manual intervention between each of those steps to copy and paste or publish results or comme", "context": "", "use_case": "app testing", "switched_from": "", "story": "AI Driven Testing"}, {"id": 788146631, "item_id": 49259164, "url": "https://news.ycombinator.com/item?id=49259164", "by": "jhonatangalves", "date": "2026-08-11", "stance": "neutral", "quote": "production-grade testing (Jest, Cypress, Playwright, Selenium)", "excerpt": "Location: S\u00e3o Paulo, Brazil Role: Front-End Software Engineer | React \u00b7 TypeScript \u00b7 Next.js \u00b7 Node.js \u00b7 NestJS Remote: Yes Willing to relocate: Yes Technologies: React, TypeScript, Next.js, Node.js, Nest.js, PostgreSQL, REST & GraphQL APIs, Tailwind CSS, Styled Components, Material UI, Jest, Cypress, Playwright, LLM Observability (LangSmith), CI/CD. R\u00e9sum\u00e9/CV: https://drive.google.com/file/d/1UMnk9HUMT2djA4ZQcjUCxL0", "context": "Front-end engineer seeking work", "use_case": "testing", "switched_from": "", "story": "Ask HN: Who wants to be hired? (August 2026)"}, {"id": 788064160, "item_id": 49254010, "url": "https://news.ycombinator.com/item?id=49254010", "by": "ygjb", "date": "2026-08-10", "stance": "recommend", "quote": "I spent a bunch of time setting up playwright testing at the start of my project", "excerpt": "I use a combination of automated and manual testing. I spent a bunch of time setting up playwright testing at the start of my project, and then I shunt that through ZAP as well so that it can have a good understanding of how things work. If gives me a pretty solid map of what is working well, and aids in driving through security testing. Still not a replacement for manual testing. Us meatbags still have a knack for r", "context": "", "use_case": "automated testing", "switched_from": "", "story": "Ask HN: How do you go from writing code to deploying with agents?"}, {"id": 787449238, "item_id": 49215577, "url": "https://news.ycombinator.com/item?id=49215577", "by": "rahulmax", "date": "2026-08-07", "stance": "neutral", "quote": "I also made the LLM write 60-odd unit tests and playwright tests running against production.", "excerpt": "Author here. Thank you very much for the kind words! I'm a product designer and a design engineer and I love tactile interfaces and typography. My goal was to challenge myself to build this purely by 'describing' the interface to an LLM, without giving it any image references. Being mosly working in Figma / Sketch for the past decade or so, the process was utterly painful and I craved to go back to Figma to polish an", "context": "", "use_case": "end-to-end testing", "switched_from": "", "story": "TypeStax: A type scale generator with vintage audio hardware interface"}, {"id": 787231586, "item_id": 49201974, "url": "https://news.ycombinator.com/item?id=49201974", "by": "FacelessAICoder", "date": "2026-08-06", "stance": "neutral", "quote": "Where appropriate I have playwright take screenshots and review it as part of the chain.", "excerpt": "thanks for posting the question - this space certainly keeps evolving I've been trying to tackle various aspects of traceability and validation at scale... embedding the self improvement & validation in various iterations of Ralph Loops.... here's a deeper write up: https://dataspheres.ai/pages/dataspheres-ai/spec-driven-development The tools & methodologies keep changing everyday - so I mostly just iterate on my own", "context": "", "use_case": "screenshots for validation", "switched_from": "", "story": "Harness Engineering for Self-Improvement"}, {"id": 786555730, "item_id": 49159733, "url": "https://news.ycombinator.com/item?id=49159733", "by": "scottydelta", "date": "2026-08-03", "stance": "neutral", "quote": "another container with playwright with sse", "excerpt": "Trying to wrap my head around how it differs from my current on-the-go setup that is claude code. On claude's phone app or web app I can choose a repo, ask it for a feature and it writes the code, runs my tests + add more tests and creates a new branch. Then I can click on create PR or configure claude code to auto create PR. I also have another setup which is a self-hosted docker compose behind my vpn with one conta", "context": "self-hosts a docker compose setup behind a VPN", "use_case": "giving agents a browser to test live", "switched_from": "", "story": "Launch HN: Hoplite (YC S26) \u2013 Effortlessly deploy cloud coding agents"}, {"id": 784807681, "item_id": 49050480, "url": "https://news.ycombinator.com/item?id=49050480", "by": "vidarh", "date": "2026-07-25", "stance": "recommend", "quote": "automated the hell out of my most important interactions with the site using Playwright", "excerpt": "And yet, for a site I use regularly, I keep getting the CAPTCHA, while Claude Code has automated the hell out of my most important interactions with the site using Playwright, and somehow never triggers the CAPTCHA...", "context": "", "use_case": "browser automation", "switched_from": "", "story": "Proving a Human Wrote Something"}, {"id": 783020689, "item_id": 48938793, "url": "https://news.ycombinator.com/item?id=48938793", "by": "ibrobaba", "date": "2026-07-16", "stance": "neutral", "quote": "creating that failing Playwright reproduction before any code changes", "excerpt": "The invariant we use is the downstream outcome, not the visual state. For a controlled select, that can be the request payload, confirmation state, or persisted record. I\u2019m building AnnotateQA around capturing a real browser failure and creating that failing Playwright reproduction before any code changes, with a candidate PR left for human review. If you have a recent case, I\u2019d be glad to try one.", "context": "", "use_case": "failing test reproduction", "switched_from": "", "story": null}, {"id": 782979041, "item_id": 48936190, "url": "https://news.ycombinator.com/item?id=48936190", "by": "suchintan", "date": "2026-07-16", "stance": "compare", "quote": "Stock playwright screamed \u201cI\u2019m a bot\u201d as anyone used it", "excerpt": "Hey everyone, Suchintan from Skyvern (YC S23) here. We're open sourcing something we built internally: Rustwright: Playwright on an in-process Rust CDP engine. It\u2019s a full rewrite of Playwright in Rust using CDP, which consumes 70% less memory than Playwright\u2019s node driver, and is 2.55x faster to boot. We run a lot of browser automations at Skyvern, and while we were doing some performance tuning, we realized the pla", "context": "Skyvern (YC S23)", "use_case": "browser automation", "switched_from": "", "story": "Rustwright \u2013 a Rust Rewrite of Playwright"}, {"id": 780490464, "item_id": 48780654, "url": "https://news.ycombinator.com/item?id=48780654", "by": "simonw", "date": "2026-07-03", "stance": "recommend", "quote": "the big advantage of playwright is that it's cross-browser. It's still my go-to tool for automated testing", "excerpt": "Yeah, the big advantage of playwright is that it's cross-browser. It's still my go-to tool for automated testing - I use the CDP trick for one-off automation tasks.", "context": "", "use_case": "automated browser testing", "switched_from": "", "story": "The Safari MCP server for web developers"}, {"id": 780360000, "item_id": 48772500, "url": "https://news.ycombinator.com/item?id=48772500", "by": "demetris", "date": "2026-07-03", "stance": "neutral", "quote": "I have multiple Playwright webkits on both Windows and Linux.", "excerpt": "I know of the solutions. I use a few of them. I have multiple Playwright webkits on both Windows and Linux. I have Epiphany on Linux (not 100% same webkit). I have subscriptions for testing on real hardware. This is why it seems to me that Apple does not really care about web developers.", "context": "web developer testing Safari compatibility", "use_case": "testing WebKit on Windows/Linux", "switched_from": "", "story": "The Safari MCP server for web developers"}, {"id": 780356049, "item_id": 48772253, "url": "https://news.ycombinator.com/item?id=48772253", "by": "karlkloss", "date": "2026-07-03", "stance": "recommend", "quote": "told it to use PlayWright to control the browser and test by itself. After some hangs, that I had to stop manually, it did all by itself, and finally fixed the bug.", "excerpt": "Just yesterday I tried to find an annoying and persistent bug in the cummunication between a Lyrion Media Server and my player. I used Opencode's native Big Pickle AI, and first it was a pain in the back, because it gave me a new code, I had to start the player and test the control in the server's web GUI, report the errors back, and so forth, and it tried a lot, but never found the real cause. Then I got tired, and ", "context": "", "use_case": "automated browser testing by AI", "switched_from": "", "story": "Ask HN: Is anyone experimenting with different ways of using LLMs for coding?"}, {"id": 776044762, "item_id": 48502797, "url": "https://news.ycombinator.com/item?id=48502797", "by": "denizcakiroglu", "date": "2026-06-12", "stance": "neutral", "quote": "BullMQ/Playwright workers", "excerpt": "Location: Istanbul, T\u00fcrkiye (relocating to Guildford, UK in Sept 2026) Remote: Yes \u2014 full EU overlap; US-East evenings (UTC+3, moving to UTC+0) Willing to relocate: No Technologies: TypeScript, Node.js, NestJS, Fastify, Next.js, React, React Native/Expo, PostgreSQL/Prisma, Redis/BullMQ, Claude API, RAG, tool-calling/MCP, pgvector, Playwright R\u00e9sum\u00e9/CV: https://github.com/denizcakiroglu322 Email: denizcakiroglu322@gma", "context": "full-stack engineer specializing in production LLM systems", "use_case": "browser automation workers", "switched_from": "", "story": "Ask HN: Who wants to be hired? (June 2026)"}, {"id": 775671681, "item_id": 48479480, "url": "https://news.ycombinator.com/item?id=48479480", "by": "hungryhobbit", "date": "2026-06-10", "stance": "recommend", "quote": "We've already got tons of alternatives to it (Playwright, Puppeteer, etc.).", "excerpt": "Ummm ... isn't Selenium technology from the 90's? We've already got tons of alternatives to it (Playwright, Puppeteer, etc.). If you're making a new product in that space, instead of referencing ancient technology, it'd make much more sense to present it as an alternative to them. Otherwise it's like saying \"I've got a great alternative to QBasic!\" Great, but I'm already using Python, I don't care about your alternat", "context": "", "use_case": "browser automation", "switched_from": "", "story": "Show HN: An Alternative to Selenium IDE"}, {"id": 774886865, "item_id": 48430429, "url": "https://news.ycombinator.com/item?id=48430429", "by": "cadamsdotcom", "date": "2026-06-06", "stance": "recommend", "quote": "it will write Playwright code to validate its work, and that becomes forever part of the codebase", "excerpt": "The right set of techniques is highly situational and HN is full of people just dipping their toes into agentic coding. I\u2019ve been using Claude Code for over a year and built a 300k+ saas codebase with it. I use zero skills, zero MCPs, zero adornments to the base model. I have built something very different from what others have: my \u201cstack\u201d is a collection of Claude Code hooks that force the model to do test driven de", "context": "", "use_case": "end-to-end testing", "switched_from": "", "story": "Ask HN: What is your (AI) dev tech stack / workflow? (June 2026)"}, {"id": 774666264, "item_id": 48416641, "url": "https://news.ycombinator.com/item?id=48416641", "by": "0xbadcafebee", "date": "2026-06-05", "stance": "recommend", "quote": "You also need end-to-end tests to actually run the app and verify it works, via Playwright", "excerpt": "1) OpenCode. Despite its many shortcomings and constant bugs, it's good enough for basic work. Use the web interface so you can switch around sessions easily, keep it running in the background (on a VPS for example). Add to it MCP servers for other systems you use, like AWS Docs MCP, Atlassian MCP, Linear MCP, SearXNG MCP, Playwright MCP, etc, which basically multiplies the AI's usefulness. Tune config to block all u", "context": "", "use_case": "end-to-end testing", "switched_from": "", "story": "Ask HN: What is your (AI) dev tech stack / workflow? (June 2026)"}, {"id": 767437765, "item_id": 47964860, "url": "https://news.ycombinator.com/item?id=47964860", "by": "alexjplant", "date": "2026-04-30", "stance": "neutral", "quote": "to iterate on UI tasks using Playwright", "excerpt": "> casting about for viable egress paths if I need to flee Claude Code Check out OpenCode (the OSS product [1]) and OpenCode Go/Zen (the LLMaaS [2]). Use a more expensive model with larger context (like GLM-5.1) for orchestration and cheaper models for coding and iteration on acceptance criteria (writing and passing tests). I also throw a more expensive vision-capable model into the mix like Gemini 3 Flash to iterate ", "context": "", "use_case": "UI testing", "switched_from": "", "story": "Claude Code refuses requests or charges extra if your commits mention \"OpenClaw\""}, {"id": 766906962, "item_id": 47931685, "url": "https://news.ycombinator.com/item?id=47931685", "by": "safehuss", "date": "2026-04-28", "stance": "warn", "quote": "bypassed the old tedious playwright-based approach I used to rely on", "excerpt": "This is awesome! Worked on something similar albeit a different industry. For the more challenging scrapes, would highly recommend using the Chrome Devtools MCP to be able to attach the network requests, being made by the browser to the site, as context for your agent/LLM chat - this approach really helped me to write a solid API-based scraper (also using curl_cffi) and bypassed the old tedious playwright-based appro", "context": "", "use_case": "scraping", "switched_from": "", "story": "Scraping 241 UK council planning portals \u2013 2.6M decisions so far"}, {"id": 764675760, "item_id": 47792235, "url": "https://news.ycombinator.com/item?id=47792235", "by": "cowartc", "date": "2026-04-16", "stance": "neutral", "quote": "doing playwright based extraction against anti-bot defenses", "excerpt": "This is what I found doing playwright based extraction against anti-bot defenses. Runtime agents were brittle. It felt like trying to debug/audit a black box. We used to deal with RPA stuff at work. Always fragile. Good to see evolution in the space.", "context": "", "use_case": "web data extraction", "switched_from": "", "story": "Show HN: Libretto \u2013 Making AI browser automations deterministic"}, {"id": 764498834, "item_id": 47781177, "url": "https://news.ycombinator.com/item?id=47781177", "by": "mark-weiss", "date": "2026-04-15", "stance": "neutral", "quote": "bug reproductions with screenshots via Playwright", "excerpt": "Moxn is a collaborative editor with git-like version control for documents and a filesystem interface for agents. Even before AI, I wanted docs to behave more like repos for two reasons: - With multiple users live-editing in the same doc, the content I was working on would bounce around in the UI. - I'm naturally iterative and I don\u2019t one-shot prose well. Collaborating with AI added two more pain points: - Multiple a", "context": "", "use_case": "bug reproductions with screenshots", "switched_from": "", "story": "Show HN: Moxn \u2013 Git-like version control for collaborative docs"}, {"id": 763909442, "item_id": 47744340, "url": "https://news.ycombinator.com/item?id=47744340", "by": "raw_anon_1111", "date": "2026-04-12", "stance": "neutral", "quote": "have Claude debug websites using Docker + playwright + headless chrome", "excerpt": "I do consulting work with AWS + backend development and since agentic coding became a thing, I have started doing more internal admin websites - completely vibe coded. I never build/install/run websites or npm packages directly on my computer. I do everything inside Docker containers and have Claude debug websites using Docker + playwright + headless chrome and just give Claude temporary JWT tokens.", "context": "", "use_case": "browser automation for debugging", "switched_from": "", "story": "Ask HN: Has anyone reconsidered Antivirus software after recent security news?"}, {"id": 760055505, "item_id": 47503469, "url": "https://news.ycombinator.com/item?id=47503469", "by": "hwartig", "date": "2026-03-24", "stance": "recommend", "quote": "we and our customers use it heavily and reliably through playwright for various monitoring, testing and automation use cases.", "excerpt": "I'd recommend chrome(ium) headless https://developer.chrome.com/docs/chromium/headless . It works with various drivers like puppeteer, selenium and playwright for some added convenience. At https://checklyhq.com we and our customers use it heavily and reliably through playwright for various monitoring, testing and automation use cases. As you want to use it from an Agent you also should take a look at https://develop", "context": "works at Checkly", "use_case": "monitoring, testing, automation", "switched_from": "", "story": "What are the best headless browsers?"}, {"id": 760004144, "item_id": 47500259, "url": "https://news.ycombinator.com/item?id=47500259", "by": "onion2k", "date": "2026-03-24", "stance": "recommend", "quote": "I give agent either a simple browser or Playwright access to proper browsers to do this. It works quite well", "excerpt": "I use AI agents to build UI features daily. The thing that kept annoying me: the agent writes code but never sees what it actually looks like in the browser. It can\u2019t tell if the layout is broken or if the console is throwing errors. I give agent either a simple browser or Playwright access to proper browsers to do this. It works quite well, to the point where I can ask Claude to debug GLSL shaders running in WebGL w", "context": "", "use_case": "agent UI verification", "switched_from": "", "story": "Show HN: ProofShot \u2013 Give AI coding agents eyes to verify the UI they build"}, {"id": 758603795, "item_id": 47412737, "url": "https://news.ycombinator.com/item?id=47412737", "by": "s1mon", "date": "2026-03-17", "stance": "neutral", "quote": "tooling through Google Chrome Devtools MCP and Playwright to extract things and control the browser", "excerpt": "I've been using Codex (GPT-5.4 extra high) to code custom FeatureScript in Onshape (3D mechanical CAD software). It's challenging to get it to do TDD that involves any visual reasoning. At the moment I've got tooling through Google Chrome Devtools MCP and Playwright to extract things and control the browser and I use some custom features which help with formatting and controlling debugging outputs (text and visual ov", "context": "", "use_case": "browser automation", "switched_from": "", "story": "Claude Tips for 3D Work"}, {"id": 758272544, "item_id": 47392034, "url": "https://news.ycombinator.com/item?id=47392034", "by": "dataviz1000", "date": "2026-03-15", "stance": "recommend", "quote": "I use Playwright to intercept all requests and responses and have Claude Code navigate to a website", "excerpt": "I use Playwright to intercept all requests and responses and have Claude Code navigate to a website like YouTube and click and interact with all the elements and inputs while recording all the requests and responses associated with each interaction. Then it creates a detailed strongly typed API to interact with any website using the underlying API. Yes, I know it likely breaks everybody's terms of service but at the ", "context": "", "use_case": "intercepting web requests", "switched_from": "", "story": "Let your Coding Agent debug the browser session with Chrome DevTools MCP"}, {"id": 752555105, "item_id": 47034694, "url": "https://news.ycombinator.com/item?id=47034694", "by": "vaibhavlodha98", "date": "2026-02-16", "stance": "recommend", "quote": "Playwright has better anti-detection out of the box", "excerpt": "Hey HN! I'm the creator of Klovr. I built this to solve a problem I had when building AI agents: HTML wastes 60-95% of tokens, and Cloudflare's new \"Markdown for Agents\" only works on ~5% of the web (opt-in only). THE PROBLEM: I tested 100 popular websites with Cloudflare's Accept: text/markdown header. Only 3 actually served markdown. The rest? Still HTML. Turns out their markdown feature requires website owners to ", "context": "", "use_case": "browser automation", "switched_from": "Puppeteer-extra", "story": "Show HN: Klovr \u2013 Convert any webpage to Markdown (Cloudflare covers only 5%)"}, {"id": 752051202, "item_id": 47003200, "url": "https://news.ycombinator.com/item?id=47003200", "by": "simonw", "date": "2026-02-13", "stance": "neutral", "quote": "For testing web apps I used to tell it \"use playwright\"", "excerpt": "I don't use CLAUDE.md, I instead use simple token-efficient conventions. Most importantly all of my Python projects use a pyproject.toml file with this pattern: [dependency-groups] dev = [\"pytest\"] Which means I can tell the agent: Run \"uv run pytest\" And it will run the tests - without first needing to setup a virtual environment or install dependencies or anything like that. I wrote more about that pattern here: ht", "context": "", "use_case": "testing web apps via agent", "switched_from": "", "story": "I asked Claude Code to remove jQuery. It failed miserably"}, {"id": 752047088, "item_id": 47002943, "url": "https://news.ycombinator.com/item?id=47002943", "by": "simonw", "date": "2026-02-13", "stance": "recommend", "quote": "Did you tell it to use Playwright or agent-browser or anything like that?", "excerpt": "How did you have it testing its code changes? Did you tell it to use Playwright or agent-browser or anything like that? If coding agents can't test the code as they're editing it they're no different from pasting your entire codebase into ChatGPT and crossing your fingers. At one point you mention it hadn't run \"npm test\" - did it run that once you directly told it to? I start every one of my coding agent sessions wi", "context": "", "use_case": "letting coding agents test code", "switched_from": "", "story": "I asked Claude Code to remove jQuery. It failed miserably"}, {"id": 751409072, "item_id": 46963067, "url": "https://news.ycombinator.com/item?id=46963067", "by": "alexpotato", "date": "2026-02-10", "stance": "recommend", "quote": "Nowadays, I use playwright to scrape websites for thing I care about", "excerpt": "At my first full time job in the early 2000s I was tasked with building a webscraper. We worked for law firms representing Fortune 500 companies and they wanted to know who was running \"pump and dump\" stock schemes on stocks using Yahoo Finance message boards. At the time, I didn't know the LWP::Simple module existed in Perl so I ended up writing my own socket based HTTP library to pull down the posts, store them in ", "context": "", "use_case": "web scraping", "switched_from": "", "story": "I started programming when I was 7. I'm 50 now and the thing I loved has changed"}]}