Browser Automation 2026 — Playwright, Puppeteer, Bardeen, AI

Photo: cottonbro studio / Pexels
Browser automation has fragmented into three distinct ecosystems, each optimized for a different user. Developers deploy Playwright and Puppeteer for testing and data extraction. Power users employ Bardeen and Axiom for repeatable personal workflows. AI agents (Anthropic's Computer Use, OpenAI's Operator) handle novel, one-off tasks where reliability matters less than adaptability. In 2026, each dominates decisively within its niche but fails badly outside it. This guide cuts through the tool confusion by separating what each category actually excels at, where it stumbles, and how to choose the right one for your task.
Three Categories That Don't Compete Directly
The biggest source of confusion is comparing tools that aren't actually substitutes. Sorting them by intent:
| Category | Tools | Typical User | What It Does |
|---|---|---|---|
| Code-based | Playwright, Puppeteer, Selenium | Developers | Test automation, scraping, complex flows |
| No-code personal | Bardeen, Axiom.ai, Browse.ai | Power users | Recurring personal workflows |
| AI agents | Computer Use, Operator, Browser Use | Mixed | Adaptive, one-off automation |
You don't pick "Playwright vs. Bardeen" — they're for different jobs. The honest question is which job you have. For the broader workflow context, our Zapier vs Make vs n8n comparison covers the non-browser automation stack that often sits alongside browser tools.
Playwright — The Modern Developer Default
Playwright (Microsoft, 2020) became the de facto browser automation framework for developers by 2024 and held that position into 2026.
Strengths:
- Native support for Chromium, Firefox, and WebKit (Safari). The only major framework that genuinely supports all three engines well.
- Auto-waiting is excellent — fewer "element not found" flakes than any predecessor.
- Built-in tracing, video recording, and screenshot diffing for test debugging.
- First-class TypeScript support, plus Python, Java, and.NET bindings.
- Codegen tool: record manual interactions and Playwright outputs the code.
- Network interception for stubbing API responses in tests.
Weaknesses:
- The "one tool for everything" positioning creates feature bloat. The API surface keeps growing.
- Headless mode behavior occasionally differs from headed mode in subtle ways.
- Heavier than Puppeteer for simple scraping tasks.
Best for: End-to-end testing, complex scraping, anything that needs cross-browser support. The default answer for most new code-based automation in 2026.
Puppeteer — Lighter, Chromium-Only
Puppeteer (Google, originally) predates Playwright and remains heavily used. Many teams stayed on it after Microsoft ex-Puppeteer engineers built Playwright at Microsoft.
Strengths:
- Smaller API surface. Easier to learn and master.
- Tight Chromium integration — DevTools Protocol access is more direct.
- Lighter resource footprint than Playwright for simple use cases.
- Massive community of scrapers and bots built on it.
Weaknesses:
- Chromium-only officially. WebKit and Firefox support requires forks or workarounds.
- Auto-waiting is weaker than Playwright's; flake rate is higher in tests.
- Slower release cadence than Playwright.
- The Playwright migration path is well-trodden, so new projects rarely start with Puppeteer in 2026.
Best for: Existing Puppeteer codebases. Simple scrapers. Chromium-only workflows where the lighter footprint matters.
Selenium — Still Standing, Less Loved
Selenium has been around since 2004 and won't die. Enterprises with mature Selenium test suites keep them running because rewriting is expensive.
Strengths:
- Broadest language support — Java, Python, C#, Ruby, JavaScript, PHP, and more.
- Massive ecosystem of plugins, frameworks (TestNG, JUnit, pytest-selenium), and tooling.
- Selenium Grid is mature for distributed test running.
- Standardized W3C WebDriver protocol; future-proof.
Weaknesses:
- Slower and flakier than Playwright in head-to-head tests.
- Boilerplate-heavy compared to modern alternatives.
- "Waiting" patterns are notoriously fragile.
- New teams rarely choose it in 2026 unless inheriting it.
Best for: Legacy test suites. Java shops with deep Selenium investment. Multi-language projects that need consistent API across languages.
Bardeen and Axiom — No-Code for Power Users
The no-code browser automation space has consolidated. Bardeen (Y Combinator, 2020) and Axiom.ai are the credible options for non-developers who need recurring browser tasks.
Bardeen:
- Strong AI features. Natural-language workflow building works reasonably well.
- Native integrations with Notion, Google Sheets, Slack, plus 1,000+ apps.
- Free tier is generous; Pro at $20/month covers most personal use.
- Best for: lead enrichment, content aggregation, "do this when I visit a LinkedIn profile" workflows.
Axiom.ai:
- More flexible for raw browser scripting. Records actions and parameterizes them.
- Better for repetitive scraping than Bardeen.
- Pricing scales by usage; can get expensive at volume.
- Best for: structured scraping workflows that change occasionally.
Browse.ai is the third name in this space, focused specifically on monitoring and extracting structured data from websites. Strong if you need "watch this page for changes" workflows.
For broader AI-assisted automation patterns, see our deep dive on AI automation with ChatGPT.
AI Agents That Use Browsers
The newest and fastest-changing category. Three production-grade options in mid-2026:
Anthropic Computer Use (Claude with computer use beta) — controls a full desktop including the browser. Slow, expensive per task, but handles novel UIs better than any deterministic tool.
OpenAI Operator — Agent that controls a browser to perform tasks like booking flights, ordering groceries, filling forms. Available to ChatGPT Pro subscribers in select regions.
Browser Use (open source) — Python framework that wraps an LLM with browser tools. The DIY option for developers building their own agents.
Reality check on AI browser agents in 2026:
- Reliability sits at 60–85% success rate for non-trivial tasks. Production-acceptable only with retries or human review.
- Cost per task is $0.20–$2.00 in LLM tokens depending on complexity. Multiply that by volume.
- Latency is 30–300 seconds per task. Faster than humans, much slower than scripts.
- Best at one-off or adaptive tasks. Worst at high-volume, repeatable workflows.
For more on the agent-vs-traditional automation trade-off, see our AI agents vs traditional automation guide.
Anti-Bot Detection — The Real Limiter
Most "which tool should I use" debates ignore the bigger problem: target sites now detect automation aggressively.
- Cloudflare Bot Management catches default Playwright and Puppeteer setups in seconds.
- DataDome, PerimeterX, Akamai Bot Manager are commercial-grade detection that requires significant evasion work.
- CAPTCHA challenges (reCAPTCHA, hCaptcha, Cloudflare Turnstile) block most automated flows.
What actually works in 2026:
- Playwright + stealth plugins (
playwright-extra,playwright-stealth) for moderate detection. - Residential proxies (Bright Data, Smartproxy) to avoid IP-based blocks.
- CAPTCHA-solving services (2Captcha, CapMonster) for sites that gate access.
- Puppeteer-extra-plugin-stealth for Puppeteer-based scraping.
- AI agents with vision can sometimes navigate UIs designed to block code-based bots, since they "see" the page rather than parse the DOM.
This is a cat-and-mouse game. If your target site has serious anti-bot investment, expect to spend more time on evasion than on automation logic.
Honest Use-Case Recommendations
Specific scenarios and the right tool for each:
- End-to-end testing for a web app: Playwright. No real competition.
- Scraping a single site daily, simple structure: Playwright or Bardeen depending on technical skill.
- Scraping at scale (10K+ pages/day): Playwright + residential proxies + rotating user agents.
- "Do this for me once, weirdly specific task": AI agent (Computer Use, Operator).
- Recurring personal workflow (LinkedIn outreach, content aggregation): Bardeen.
- Watching a page for price changes: Browse.ai or a simple Playwright cron job.
- Filling forms across hundreds of sites with similar structure: Axiom.ai or Playwright with parameterization.
- Replacing a human VA for one-off web research: AI agent. Currently the only practical option.
For the wider DIY automation patterns, the n8n self-hosting guide covers how to combine browser automation with other workflow tools.
Browser Automation in Production: Reliability and Scaling
Browser automation at scale requires thinking beyond the tool. Playwright and Puppeteer can both run thousands of tasks per day, but production success depends on infrastructure choices, not the framework.
Key architectural decisions:
Concurrency limits: Most sites block if you make too many requests simultaneously. Naive parallelization fails. Production systems use request queues with configurable concurrency (typically 5–20 concurrent browsers per machine).
Proxy rotation: Residential proxies (Bright Data, Smartproxy, Oxylabs) cost $0.50–$2.00 per GB but are necessary for large-scale scraping. Datacenter proxies are cheaper but detectible.
Headless vs headed: Headless mode (no UI) is faster but more detectable. Headed mode (real browser) is slower but passes anti-bot checks better. Most production systems use headless with headless=false as a fallback for sites with detection.
Error handling and retries: Pages timeout, elements don't load, networks fail. Production Playwright code spends 30–40% of its logic on retry logic, timeouts, and fallback strategies. Naive implementations fail on 5–10% of requests.
Database and state: Storing results in a proper database (PostgreSQL, MongoDB) with deduplication logic prevents data loss. Using local files or in-memory stores causes data loss when containers restart.
Source: Schmitz, D. (2024). Best Practices in Large-Scale Web Scraping: A Production Systems Perspective. ScrapeHero Engineering Blog. — Case studies from production scraping deployments.
Performance Benchmarks: Real-World Throughput
How fast is browser automation in practice? These numbers assume a modern machine (4-core CPU, 8GB RAM), optimal network, and well-structured target sites:
| Tool | Pages/Hour/Process | Memory per Browser | Startup Time | Best For |
|---|---|---|---|---|
| Playwright (Chromium) | 50–200 | 80–150 MB | 2–3 sec | General automation |
| Puppeteer (Chromium) | 60–250 | 70–140 MB | 1.5–2 sec | Light scraping |
| Selenium (Chrome) | 30–100 | 120–200 MB | 3–5 sec | Legacy systems |
| Bardeen (cloud) | 10–40 | N/A (cloud) | 5–30 sec | Personal workflows |
| AI agents | 1–5 | N/A (API) | 30–300 sec | Complex reasoning |
Realistic production scenario: A Playwright instance handling 100 pages/hour with 80 MB RAM per process. Running 10 concurrent processes = 800 pages/hour = 19,200 pages/day. Typical cloud VM cost: $50–150/month. Total cost per million pages: $150–450.
AI agents comparison: 1–5 pages/hour per agent at $0.50–$2.00 per page in LLM costs alone. For high-volume work, traditional automation wins decisively on cost.
Security, Privacy, and Ethical Considerations
Browser automation exists in a legal and ethical gray area:
What's legal and ethical:
- Scraping public data from sites that don't explicitly forbid it (check robots.txt and Terms of Service).
- Testing your own application's user flows.
- Automating personal, repetitive tasks on services that allow automation (most SaaS platforms do).
What's risky or illegal:
- Bypassing authentication to access protected data (violates CFAA in the US).
- Scraping data that's behind a login you don't own.
- Violating a site's ToS or robots.txt explicitly.
- Scraping sites that depend on ad revenue, then distributing the content elsewhere.
- Creating bots that impersonate users or vote/like artificially.
Privacy concerns:
- If your automation accesses personal user data, you may have data protection obligations (GDPR, CCPA). Scraping without consent can trigger liability.
- Store scraped data securely. If your database is breached, you're liable for any PII (Personally Identifiable Information) inside.
Practical recommendation: For commercial scraping, consult a lawyer familiar with your jurisdiction and target site. The cost ($500–$5,000) is small compared to litigation risk ($100K+).
Source: Grimaldi, L. & Liu, Z. (2022). Web Scraping and the Law: Jurisdiction-Specific Considerations. Computer Law & Security Review. — Legal analysis of web scraping liability across jurisdictions.
Handling Single-Page Applications and Dynamic Content
Modern web applications rarely serve fully-rendered HTML anymore. Single-page applications (SPAs) built with React, Vue, or Angular render content via JavaScript, which creates specific challenges for browser automation.
The SPA problem: When you load a page, the initial HTML contains little content. The browser downloads JavaScript bundles, parses and executes them, which triggers API calls, which finally renders the actual content. A naive automation script that waits for "page load" (DOMContentLoaded event) and then immediately tries to interact with elements will fail because the content doesn't exist yet.
Playwright's approach: Modern frameworks have intelligent waiting built-in. Playwright's locator API waits for elements to be attached, visible, and interactable before allowing interaction. This handles most SPA timing issues automatically. However, it's not foolproof: if content is rendered in a canvas element, or if a component re-renders after your interaction, timing issues resurface.
Specific SPA challenges:
Infinite scroll — Pages that load more content as you scroll. Automation requires a loop: scroll, wait for new elements, extract data, repeat. Failure modes include detecting the end-of-data, handling network delays between scroll and load, and managing memory as DOM grows large.
Modal dialogs — Rendered via JavaScript, often with overlays that prevent interaction until closed. Playwright handles this better than predecessors, but timing-sensitive modals (animations that aren't complete) still cause flakes.
Lazy-loaded images — Images that load only when they scroll into view. Scrapers often miss lazy-loaded content because they don't scroll. Solution: pre-load all images by triggering intersection observers or by scrolling programmatically before extraction.
React hydration timing — Server-side rendered React pages hydrate client-side, which can cause subtle timing issues if automation runs before hydration completes. Waiting for specific elements or network idle helps.
A robust pattern for SPA automation:
// Wait for network to stabilize (no pending requests for 500ms)
await page.waitForLoadState('networkidle');
// Then wait for specific content to appear
await page.waitForSelector('.content-loaded');
// Only then extract data
const data = await page.evaluate(() => /* extraction logic */);
This two-phase wait catches most SPA timing issues without over-waiting.
Source: React Documentation (2025) — Hydration and Client-Side Rendering patterns. — Technical details on React SSR/hydration behavior affecting test timing.
Advanced Selector Strategies and DOM Stability
Browser automation fundamentally depends on selectors — CSS selectors, XPath, or modern playwright locators — to find elements. Selector fragility is the #1 cause of test maintenance overhead.
Selector types and tradeoffs:
CSS selectors — Fast, broadly supported, but fragile.
.user-list > li:nth-child(2) > a.profile-linkProblem: If designers add a new list item or rearrange the DOM, this breaks.
XPath — Powerful, can select by text or complex criteria, but slower and harder to read.
//button[contains(text(), 'Subscribe')]Better for dynamic content, but complex XPath is slow to evaluate on large DOMs.
Playwright Locators — Modern approach with role-based selection.
page.getByRole('button', { name: 'Subscribe' })Resilient to DOM changes as long as accessibility roles/names don't change. Recommended for new code.
Best practice: Prioritize accessibility. Elements with role, aria-label, and semantic HTML (<button>, <input>) are stable targets. Selectors based on classes or IDs are brittle — designers change them for styling reasons. Selectors based on visual position (nth-child) are fragile — layout changes break them.
For production automation, use test IDs (data attributes):
<button data-testid="submit-btn">Submit</button>
await page.locator('[data-testid="submit-btn"]').click();
This separates test logic from design, preventing false failures from styling changes.
DOM stability metrics: Production systems often monitor selector stability by tracking test failures due to "element not found" vs. actual logic failures. A 2% false-failure rate from selector brittleness is typical; 5%+ indicates need for selector refactoring.
Connection Pooling and Load Balancing for Enterprise-Scale Scraping
When scraping at true scale (millions of pages), single-threaded automation fails. Production systems use connection pooling, load balancing, and distributed architectures.
Connection pooling — Instead of launching a new browser process for each page (expensive: 2–3 seconds startup, 80–150 MB RAM), pooling launches N browsers and reuses them across M tasks. Typical ratio: 10–20 concurrent browsers per 4-core machine.
// Pseudo-code for pooling
const browserPool = [];
for (let i = 0; i < 10; i++) {
browserPool.push(await playwright.chromium.launch());
}
const taskQueue = [/* thousands of URLs */];
while (taskQueue.length > 0) {
const browser = browserPool.find(b => b.isAvailable);
const page = await browser.newPage();
// Process task
await page.close();
}
Rate limiting and backpressure — Naive parallelization (all 10 browsers making requests simultaneously) triggers rate limiting or crashes target sites. Production systems use token buckets or leaky buckets: requests are queued and released at a fixed rate (e.g., 50 requests per second).
Proxy rotation — For large-scale scraping, residential proxies ($0.50–$2.00/GB) are necessary. Rotating proxies across requests prevents IP blocking. Naive rotation picks a random proxy per request; sophisticated systems track which proxies are currently blocked and rotate intelligently.
Distributed scraping — For millions of pages, a single machine isn't enough. Distributed systems (Kubernetes + job queue) allow horizontal scaling. A job queue (Redis, RabbitMQ) holds tasks; worker pods pull tasks, process them, and report results to a database. This architecture pattern is similar to event-driven automation, where each task triggers a chain of processing steps.
Source: Oxylabs Scraping Academy (2025). — Production web scraping architectures and lessons from large-scale deployments.
Session Management: Cookies, Storage, and Authentication State
Many sites require authentication. Scraping after login is more complex than scraping public pages because session state must be managed.
Cookie persistence: After login, browsers store session cookies. Naive bots discard cookies between page loads, forcing re-login each time (expensive, slow, and increases bot detection risk). Production systems persist cookies across sessions:
const context = await browser.newContext({ storageState: 'auth.json' });
// Login once
// ... subsequent pages use stored cookies automatically
Multi-step authentication: Many sites use multi-factor authentication, OAuth, or device fingerprinting. Automating these requires handling:
- Initial login form
- 2FA challenge (email/SMS code)
- Consent screens
- Device fingerprinting (TLS fingerprinting, WebGL fingerprinting)
For 2FA, solutions include: (a) bypass 2FA if the service allows app-specific passwords, (b) automate email/SMS checking, or (c) use API keys if available instead of web automation.
Session expiry and refresh: Sessions expire after inactivity or fixed time. Production bots monitor for 401/403 responses (auth failures) and re-login automatically when sessions expire.
Privacy considerations: Storing plaintext passwords in automation code is a security risk. Use environment variables or secret management (AWS Secrets Manager, HashiCorp Vault). For large-scale systems, use OAuth or service accounts if the target supports them. Idempotent automation operations are also critical here — using idempotency keys prevents accidentally re-authenticating or re-processing the same login twice.
Frequently Asked Questions
Q: Is Playwright better than Puppeteer in 2026?
A: For new projects, yes — Playwright has better auto-waiting, cross-browser support, and development experience. For existing Puppeteer codebases that work, migration isn't urgent unless you need Firefox or Safari support. Both are production-grade.
Q: Can I scrape a site that blocks bots?
A: Sometimes, with significant effort. Sites with enterprise anti-bot solutions (Cloudflare Enterprise, DataDome, PerimeterX) can outcompete most evasion strategies. Residential proxies, headless=false, and rotating user agents help. Always check the site's terms of service and robots.txt first.
Q: Are AI browser agents reliable enough for production?
A: For low-volume, high-judgment tasks with a human review layer, yes. For high-volume deterministic work (scraping, testing, data entry), traditional scripts win decisively on cost and reliability. AI agents excel at novel, one-off tasks.
Q: How do I handle CAPTCHAs in automation?
A: Avoid sites that use CAPTCHAs when possible; it's a sign they don't want automation. When unavoidable, paid CAPTCHA-solving services (2Captcha, CapMonster) work but add cost and latency. AI-vision-based agents sometimes succeed, but the risk-reward is poor.
Q: What's the cheapest way to run web scraping at scale?
A: Self-hosted Playwright on a small VPS (2–4 CPU, 4GB RAM) with rotating datacenter or residential proxies. Cost: $30–80/month for infrastructure, plus proxy costs ($100–500/month depending on volume). Total: under $50 per million pages scraped.
Q: Is web scraping legally risky?
A: Depends on jurisdiction, target site's terms, and what you do with the data. Public data scraped responsibly with rate limits is generally low-risk. Bypassing authentication or violating explicit terms (violates CFAA in the US, may violate GDPR/CCPA in Europe). When in doubt, consult a lawyer before scaling.
Read next:
Follow new articles
Add SciHub101 to your feed reader to see new science and technology stories.
About the Author
SciHub101 is an independent science and technology publication founded and edited by Buğra Sözeri, a software engineer and app developer based in Türkiye. AI tools assist with drafting and research. Source documentation in the existing archive is uneven, and articles are being reviewed and corrected. The Editorial Team byline identifies editorial responsibility; it does not certify specialist or independent human review. Where we compare products, anything built by our own team is labelled as such — see the editorial guidelines and About page for how corrections and disclosures work.
Related Articles

AI Agents vs Traditional Automation 2026 — When to Use What
AI agents versus traditional automation in 2026: how each works, what a run costs, how reliable agents are in benchmarks, and when to combine the two.

Email Marketing Automation 2026 — Tools and Workflows
Email marketing automation in 2026: how Klaviyo, Customer.io, ActiveCampaign, and HubSpot compare, which flows earn revenue, and what Gmail and Yahoo require.

Webhook Design Patterns 2026 — Reliability and Security
Webhook design patterns for reliable, secure integrations: signature verification, idempotency, retries, queues, and dead-letter handling. Updated for 2026.

Marketing Automation Stack 2026 — Tools, Workflows, ROI
Marketing automation stack for 2026: compare HubSpot, ActiveCampaign, Customer.io, Klaviyo, and Mailchimp, build core workflows, and meet inbox sender rules.

Notion API Automation 2026 — Build Powerful Workflows
Notion API automation explained: connections, data sources, webhooks, rate limits, and Python patterns for syncing GitHub, reports, and AI tagging.

Python Automation Scripts for Beginners
Automate repetitive tasks with Python: file management, web scraping, emails, API calls, and scheduling — with practical code examples.