[{"data":1,"prerenderedAt":596},["ShallowReactive",2],{"tool-playwright-de":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":13,"about":21,"sources":28,"cover":50,"og":51,"expertise":52,"locales":53,"lang":55,"title":57,"description":58,"coverAlt":59,"url":24,"pricing":60,"kind":10,"metaTitle":61,"takeaways":62,"faq":68,"toc":81,"blocks":106,"others":367},"playwright","2026-05-27",10,"web",[9,10,11,12],"End-to-end testing","Browser automation","MCP","Cross-browser",[4,14,15,16,17,18,19,20],"playwright vs selenium","playwright mcp","browser automation testing","playwright test runner","playwright for ai agents","playwright vs cypress","playwright cloud pricing",[22,25],{"name":23,"url":24},"Playwright","https:\u002F\u002Fplaywright.dev",{"name":26,"url":27},"Model Context Protocol","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FModel_Context_Protocol",[29,32,35,38,41,44,47],{"title":30,"url":31},"Playwright documentation: installation","https:\u002F\u002Fplaywright.dev\u002Fdocs\u002Fintro",{"title":33,"url":34},"Playwright MCP introduction","https:\u002F\u002Fplaywright.dev\u002Fmcp\u002Fintroduction",{"title":36,"url":37},"Playwright CLI introduction","https:\u002F\u002Fplaywright.dev\u002Fagent-cli\u002Fintroduction",{"title":39,"url":40},"Playwright Test agents","https:\u002F\u002Fplaywright.dev\u002Fdocs\u002Ftest-agents",{"title":42,"url":43},"npm package metadata for @playwright\u002Ftest","https:\u002F\u002Fregistry.npmjs.org\u002F@playwright\u002Ftest\u002Flatest",{"title":45,"url":46},"Microsoft Learn: Playwright Workspaces free trial","https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Fapp-testing\u002Fplaywright-workspaces\u002Fhow-to-try-playwright-workspaces-free",{"title":48,"url":49},"Azure App Testing pricing","https:\u002F\u002Fazure.microsoft.com\u002Fen-us\u002Fpricing\u002Fdetails\u002Fapp-testing\u002F","\u002Fimages\u002Fblog\u002Fplaywright\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fplaywright\u002Fog.jpg","ai-engineer",[54,55,56],"en","de","hu","Playwright: eine Browser-API für Tests, Skripte und Agents","Playwright steuert Chromium, Firefox und WebKit über eine Apache-2.0-API: Test-Runner, agent-taugliche CLI und MCP-Server. Was es kostet und wo es hapert.","Ein Playwright-Testlauf: eine Spec-Datei, ein Runner mit drei Browser-Engines und ein Agent, der Accessibility-Snapshots liest.","Apache-2.0 · cloud paid","Playwright-Test: Tests, Skripte und Agents · Balázs Csorba",[63,64,65,66,67],"Playwright steht unter Apache-2.0 ohne bezahlte Edition; Geld kostet CI-Zeit und optional Microsoft Playwright Workspaces, das pro Testminute abrechnet, sekundengenau, nach einem 30-Tage-Test mit 100 Minuten.","Eine API deckt Chromium, Firefox und WebKit unter Windows, Linux und macOS ab, mit nativer Mobil-Emulation für Android Chrome und Mobile Safari.","Die Agent-Flächen kommen vom Projekt selbst: ein MCP-Server mit 70+ Werkzeugen auf Accessibility-Snapshots, eine token-sparende CLI mit persistentem Daemon sowie Planner-, Generator- und Healer-Testagents.","Accessibility-Snapshots sind die Designentscheidung, die für LLMs zählt: Elemente tragen Refs statt Pixel, die Interaktion bleibt deterministisch, und kein Vision-Modell ist nötig.","Der Runner, nicht die API, verursacht die Wartungskosten: Projekte, Sharding, Traces und Retries sind kostenlos, aber nicht wartungsfrei.",[69,72,75,78],{"q":70,"a":71},"Ist Playwright kostenlos?","Das Framework steht unter Apache-2.0 und hat keine bezahlte Edition. Kosten entstehen durch CI-Minuten und Arbeitszeit sowie optional durch Microsoft Playwright Workspaces in Azure App Testing, das pro Testminute abrechnet, sekundengenau, nach einem 30-Tage-Test mit 100 Minuten.",{"q":73,"a":74},"MCP-Server oder CLI für Agents?","Die Dokumentation stellt die CLI für Coding-Agents voran: Shell-Befehle mit knapper Ausgabe laden keine Tool-Schemas und Accessibility-Bäume in den Kontext. MCP passt zu explorativen Schleifen mit persistentem Zustand und strukturierten Parametern; MCP öffnet dabei einen sichtbaren Browser, die CLI startet im Hintergrund.",{"q":76,"a":77},"Womit unterscheidet sich Playwright von Selenium?","Playwright spricht eigene Protokolle und liefert eine API, einen Runner mit Auto-Waiting und Web-First-Assertions sowie versionsgebundene Browser-Binaries. Selenium nutzt W3C WebDriver — das zählt, wenn ein Vertrag oder ein Vendor-Grid es verlangt, kostet sonst aber mehr Klebstoff für dieselben Abläufe.",{"q":79,"a":80},"Kann Playwright Tests mit einem LLM erzeugen und reparieren?","Ja, offiziell: npx playwright init-agents installiert Planner-, Generator- und Healer-Definitionen, die einen Markdown-Testplan schreiben, ihn in Specs übersetzen und fehlgeschlagene Tests durch erneutes Abspielen und Prüfen der Seite patchen. Der Healer darf einen Test auch überspringen, den er für defekt hält — sinnvoll als Standard, schlecht, wenn es unbemerkt passiert.",[82,85,88,91,94,97,100,103],{"id":83,"title":84},"what-it-is","Was es ist",{"id":86,"title":87},"how-it-works","Wie es funktioniert",{"id":89,"title":90},"getting-started","Erste Schritte",{"id":92,"title":93},"ai-agents","Agents am Steuer",{"id":95,"title":96},"pricing","Preise",{"id":98,"title":99},"where-it-shingles","Wo es quietscht",{"id":101,"title":102},"verdict","Fazit",{"id":104,"title":105},"sources","Quellen",[107,111,119,122,125,143,144,147,156,159,160,175,177,180,194,195,198,200,218,221,224,234,235,238,248,251,252,255,311,314,315,318,331,335,336],{"type":108,"content":109},"paragraph",[110],"Playwright ist Microsofts Browser-Automatisierung und inzwischen drei Produkte in einem Repository: ein Test-Runner, eine Scripting-Bibliothek und eine Agent-Fläche aus MCP-Server und Kommandozeilenwerkzeug. Es steht unter Apache-2.0, es gibt keine bezahlte Edition, und es bleibt die komfortabelste API dieser Kategorie. Die Position dieses Tests: der Standard für neue End-to-End-Arbeit — und die Agent-Flächen sind der Grund, eine bestehende Suite noch einmal anzusehen.",{"type":108,"content":112},[113,114,118],"Es konkurriert mit Selenium, Cypress und Puppeteer und zunehmend mit handgeschriebenen Scraping- und QA-Skripten, weil dasselbe ",{"tag":115,"children":116},"code",[117],"page","-Objekt jetzt einen Test in der CI, einen nächtlichen Report und ein LLM bedient, das den Browser über Accessibility-Snapshots steuert. Im Kern braucht keines davon ein Modell: die Agent-Werkzeuge liegen obenauf und lassen sich ignorieren — deshalb setzen Teams es zuerst als Testwerkzeug ein und entdecken die Agent-Ebene später.",{"type":120,"level":121,"id":83,"text":84},"heading",2,{"type":108,"content":123},[124],"Das Projekt liefert Browser-Automatisierung für Chromium, Firefox und WebKit unter Windows, Linux und macOS, lokal oder in der CI, im Hintergrund oder sichtbar, mit nativer Mobil-Emulation für Android Chrome und Mobile Safari. Die aktuelle Linie ist 1.63, veröffentlicht im September 2026, und die Browser-Binaries sind an diese Version gebunden.",{"type":126,"ordered":127,"items":128},"list",false,[129,131,133,135,137,139,141],[130],"Apache-2.0 ohne bezahlte Edition; das npm-Paket setzt Node 20 oder neuer voraus.",[132],"Eine API in vier Sprachen: JavaScript und TypeScript, Python, Java und .NET.",[134],"Ein Test-Runner mit Auto-Waiting, Web-First-Assertions, Fixtures, parallelen Projekten, Sharding, Retries und HTML-Report.",[136],"Browser-Kontexte geben jedem Test ein frisches Profil, damit Anmeldezustand ein Fixture und kein globales Geteiltes ist.",[138],"Werkzeuge um den Lauf: Codegen, UI-Modus, Trace-Viewer, Netzwerk-Mocking, Clock-Steuerung und Aria-Snapshots.",[140],"Offizielle Container-Bilder je Release, wodurch die CI-Browser identisch zu den lokalen bleiben.",[142],"Drei Agent-Flächen: ein MCP-Server, eine CLI mit installierbaren Skills sowie Planner-, Generator- und Healer-Testagents.",{"type":120,"level":121,"id":86,"text":87},{"type":108,"content":145},[146],"Der Treiber spricht jeden Browser über eigenes Protokoll — gepatchte Chromium- und Firefox-Builds plus ein gepatchtes WebKit —, und genau dadurch kann eine API dieselben Fähigkeiten auf allen drei Engines bieten statt des kleinsten gemeinsamen Nenners. Lokatoren werden zum Zeitpunkt der Aktion aufgelöst, und jede Aktion wartet, bis das Element bedienbar ist; der übliche Fix für einen flüchtigen Test ist damit eine Assertion statt eines Sleeps.",{"type":148,"attrs":149,"inner":153,"caption":154},"diagram",{"viewBox":150,"role":151,"aria-labelledby":152},"0 0 720 320","img","pw-t pw-d","\u003Ctitle id=\"pw-t\">Playwright-Testlauf\u003C\u002Ftitle>\u003Cdesc id=\"pw-d\">Eine Spec-Datei geht an den Runner, der die Tests über Browser-Projekte verteilt. Ein Treiber spricht Chromium, Firefox und WebKit, jeder Test läuft in einem frischen Browser-Kontext, und der Report sammelt die Traces. Snapshots und die Agent-Flächen hängen unter demselben Treiber.\u003C\u002Fdesc>\u003Ctext x=\"20\" y=\"28\" class=\"d-title\">Playwright-Testlauf\u003C\u002Ftext>\u003Ctext x=\"700\" y=\"28\" text-anchor=\"end\" class=\"d-label\">eine API\u003C\u002Ftext>\u003Crect x=\"20\" y=\"70\" width=\"116\" height=\"64\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"78\" y=\"98\" text-anchor=\"middle\" class=\"d-text\">Spec\u003C\u002Ftext>\u003Ctext x=\"78\" y=\"119\" text-anchor=\"middle\" class=\"d-small\">Lokatoren\u003C\u002Ftext>\u003Cpath d=\"M136 102 H148\" class=\"d-line\" \u002F>\u003Cpath d=\"M156 102 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"156\" y=\"70\" width=\"116\" height=\"64\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"214\" y=\"98\" text-anchor=\"middle\" class=\"d-text\">Runner\u003C\u002Ftext>\u003Ctext x=\"214\" y=\"119\" text-anchor=\"middle\" class=\"d-small\">Sharding\u003C\u002Ftext>\u003Cpath d=\"M272 102 H284\" class=\"d-line\" \u002F>\u003Cpath d=\"M292 102 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"292\" y=\"70\" width=\"116\" height=\"64\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"350\" y=\"98\" text-anchor=\"middle\" class=\"d-text\">Browser\u003C\u002Ftext>\u003Ctext x=\"350\" y=\"119\" text-anchor=\"middle\" class=\"d-small\">3 Engines\u003C\u002Ftext>\u003Cpath d=\"M408 102 H420\" class=\"d-line\" \u002F>\u003Cpath d=\"M428 102 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"428\" y=\"70\" width=\"116\" height=\"64\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"486\" y=\"98\" text-anchor=\"middle\" class=\"d-text\">Seite\u003C\u002Ftext>\u003Ctext x=\"486\" y=\"119\" text-anchor=\"middle\" class=\"d-small\">Auto-Wait\u003C\u002Ftext>\u003Cpath d=\"M544 102 H556\" class=\"d-line\" \u002F>\u003Cpath d=\"M564 102 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"564\" y=\"70\" width=\"116\" height=\"64\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"622\" y=\"98\" text-anchor=\"middle\" class=\"d-text\">Report\u003C\u002Ftext>\u003Ctext x=\"622\" y=\"119\" text-anchor=\"middle\" class=\"d-small\">Traces\u003C\u002Ftext>\u003Ctext x=\"20\" y=\"172\" class=\"d-label\">RUND UM DEN LAUF\u003C\u002Ftext>\u003Cpath d=\"M214 216 V146\" class=\"d-line d-dash\" \u002F>\u003Cpath d=\"M214 138 l-5 9 h10 z\" class=\"d-head\" \u002F>\u003Cpath d=\"M368 216 V146\" class=\"d-line d-dash\" \u002F>\u003Cpath d=\"M368 138 l-5 9 h10 z\" class=\"d-head\" \u002F>\u003Cpath d=\"M546 216 V146\" class=\"d-line d-dash\" \u002F>\u003Cpath d=\"M546 138 l-5 9 h10 z\" class=\"d-head\" \u002F>\u003Crect x=\"134\" y=\"216\" width=\"160\" height=\"64\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"214\" y=\"244\" text-anchor=\"middle\" class=\"d-text\">Kontexte\u003C\u002Ftext>\u003Ctext x=\"214\" y=\"265\" text-anchor=\"middle\" class=\"d-small\">frisches Profil\u003C\u002Ftext>\u003Crect x=\"288\" y=\"216\" width=\"160\" height=\"64\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"368\" y=\"244\" text-anchor=\"middle\" class=\"d-text\">Snapshots\u003C\u002Ftext>\u003Ctext x=\"368\" y=\"265\" text-anchor=\"middle\" class=\"d-small\">a11y Refs\u003C\u002Ftext>\u003Crect x=\"446\" y=\"216\" width=\"200\" height=\"64\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"546\" y=\"244\" text-anchor=\"middle\" class=\"d-text\">Agents\u003C\u002Ftext>\u003Ctext x=\"546\" y=\"265\" text-anchor=\"middle\" class=\"d-small\">MCP, CLI\u003C\u002Ftext>\u003Ctext x=\"360\" y=\"306\" text-anchor=\"middle\" class=\"d-label\">Derselbe Treiber bedient Test, Skript und Agent\u003C\u002Ftext>",[155],"Ein Treiber, drei Engines und dasselbe Page-Objekt für den Test in der CI, das nächtliche Skript und den Agenten.",{"type":108,"content":157},[158],"Über dem Treiber sitzt der Runner, wo der eigentliche Wert entsteht: eine Konfigurationsdatei deklariert die Projekte — Browser, Viewports, Zugangsdaten —, Tests werden auf Worker verteilt, Sharding teilt sie auf Maschinen auf, und jeder Fehler trägt einen Trace, Schritt für Schritt abspielbar. Dieser Trace macht auch eine assistierte Diagnose praktikabel, weil er strukturierte Daten sind statt ein Screenshot eines Stack-Traces.",{"type":120,"level":121,"id":89,"text":90},{"type":108,"content":161},[162,163,166,167,170,171,174],"Ein Scaffold, ein Install, ein Lauf: ",{"tag":115,"children":164},[165],"npm init playwright@latest"," schreibt Konfiguration und erste Spec, ",{"tag":115,"children":168},[169],"npx playwright install --with-deps"," holt die versionsgebundenen Browser-Binaries samt Systembibliotheken, und ",{"tag":115,"children":172},[173],"npx playwright test"," läuft im Hintergrund und parallel über alle drei Engines.",{"type":115,"code":176},"import { test, expect, devices } from '@playwright\u002Ftest';\n\ntest('order confirmation shows a number', async ({ page }) => {\n  await page.goto('\u002Fcheckout');\n  await page.getByLabel('Email').fill('qa@example.com');\n  await page.getByRole('button', { name: 'Place order' }).click();\n  await expect(page.getByRole('status')).toContainText(\u002FOrder WS-\\d+\u002F);\n});\n\ntest.describe('phone', () => {\n  test.use({ ...devices['iPhone 15'] });\n  test('checkout renders on a phone viewport', async ({ page }) => {\n    await page.goto('\u002Fcheckout');\n    await expect(page.getByRole('heading', { name: 'Checkout' })).toBeVisible();\n  });\n});",{"type":108,"content":178},[179],"Was altern lässt, ist nicht der Runner, sondern die Selektoren. Die Empfehlung des Projekts: Rollen- und Label-Lokatoren bevorzugen, Assertions web-first halten, damit sie bis zum Timeout neu prüfen statt einmal zu sampeln, und bei Fehler den Trace öffnen statt aus dem Stack zu raten.",{"type":181,"variant":182,"title":183,"body":184},"callout","tip","Versionsdisziplin",[185],[186,187,190,191,193],"Die Browser sind an die Release gebunden, ein Upgrade von ",{"tag":115,"children":188},[189],"@playwright\u002Ftest"," verlangt also ein erneutes ",{"tag":115,"children":192},[169],": ein für 1.62 gebautes Image findet die erwarteten Binaries nicht. Paket und Browser zusammen pinnen und die Agent-Definitionen nach jedem Upgrade neu erzeugen — die Dokumentation sagt ausdrücklich, dass das bei jeder Playwright-Änderung zu geschehen hat.",{"type":120,"level":121,"id":92,"text":93},{"type":108,"content":196},[197],"Das ist der Teil, der den Status des Werkzeugs verändert hat. Playwright ist inzwischen ein Standardweg, wie ein Sprachmodell einen Browser bedient, und das Projekt liefert drei Wege dorthin, alle aus erster Hand.",{"type":115,"code":199},"# MCP server: structured tool calls, accessibility snapshots with element refs\n{\n  \"mcpServers\": {\n    \"playwright\": { \"command\": \"npx\", \"args\": [\"@playwright\u002Fmcp@latest\"] }\n  }\n}\n\n# CLI: shell commands for a coding agent, headless by default\nnpm install -g @playwright\u002Fcli\nplaywright-cli open https:\u002F\u002Fexample.com\nplaywright-cli snapshot\nplaywright-cli click e5\n\n# Test agents: planner, generator and healer, installed into the repo\nnpx playwright init-agents --loop=vscode",{"type":126,"ordered":127,"items":201},[202,208,210,216],[203,204,207],"Der MCP-Server liefert Accessibility-Snapshots: jedes Element trägt ein Ref wie ",{"tag":115,"children":205},[206],"e5",", das Modell klickt eine Referenz statt Koordinaten zu raten, und kein Vision-Modell ist nötig. Die Dokumentation listet 70+ Werkzeuge, Netzwerk-Mocking, Storage, Tracing und Video hinter Capability-Flags.",[209],"Die CLI ist der token-sparende Weg: knappe Ausgabe, ein persistenter Daemon, damit Befehle keinen Browser-Start bezahlen, Skills bei Bedarf und Sessions, die Zustand zwischen Befehlen behalten.",[211,212,215],"Playwright-Testagents — Planner, Generator und Healer — schreiben einen Markdown-Testplan, übersetzen ihn in Specs und patchen fehlgeschlagene Tests durch erneutes Abspielen und Prüfen der Seite; ",{"tag":115,"children":213},[214],"npx playwright init-agents"," installiert die Definitionen für VS Code, Claude Code, Codex und OpenCode.",[217],"Die Dokumentation benennt den Tausch direkt: MCP passt zu spezialisierten agentic Loops und explorativer Automatisierung, die CLI zu Coding-Agents mit großen Codebasen, und die CLI startet im Hintergrund, während MCP einen sichtbaren Browser öffnet.",{"type":108,"content":219},[220],"Die Token-Ökonomie entscheidet häufiger als die Features. Ein MCP-Umschlag legt bei jedem Schritt Tool-Schemas und einen frischen Snapshot in den Kontext; ein CLI-Befehl liefert den Pfad zu einer YAML-Snapshot-Datei und eine Zeile Status. Für einen langlebigen Agent, der nur durch einen Ablauf klicken muss, ist das der Unterschied zwischen einer Sitzung, die in den Kontext passt, und einer, die es nicht tut.",{"type":108,"content":222},[223],"Screenshots gibt es weiterhin — ein Tool-Aufruf, und der Vision-Modus setzt die Maus auf Koordinaten —, sie kosten aber Tokens pro Pixel und bringen genau die Mehrdeutigkeit zurück, die das Snapshot-Design entfernt hat. Der Accessibility-Baum ist eine Zusammenfassung, auf die das Modell handeln kann; ein Screenshot ist Beleg, das es deuten muss.",{"type":181,"variant":225,"title":226,"body":227},"warn","Ein Werkzeug ist Remote-Code-Ausführung",[228],[229,230,233],"Der MCP-Server bietet ",{"tag":115,"children":231},[232],"browser_run_code_unsafe",", das beliebiges JavaScript im Playwright-Serverprozess ausführt; die Dokumentation nennt es RCE-Äquivalent und rät, es nur für vertrauenswürdige Clients freizuschalten. Ein im Hintergrund laufender Browser ohne Werkzeugaufruf wird nach einer Stunde geschlossen, ein sichtbarer nicht, und der Extension-Connector kann sich an einen Browser mit aktiven Anmeldungen hängen — zuerst den Client begrenzen, dann den Browser.",{"type":120,"level":121,"id":95,"text":96},{"type":108,"content":236},[237],"Das Framework kostet nichts, es gibt keine Pro-Edition, keine Sitzplätze und keine Nutzungsverrechnung. Kosten entstehen an drei Stellen: CI-Minuten, die die Suite verbrennt, die Arbeitszeit, die sie grün hält, und — nur wenn ein verwaltetes Grid gewünscht ist — Microsofts Cloud aus erster Hand.",{"type":126,"ordered":127,"items":239},[240,242,244,246],[241],"Framework: kostenlos unter Apache-2.0, unbegrenzte Projekte und Tests, keine zu verlängernde Lizenz.",[243],"Playwright Workspaces in Azure App Testing: nutzungsbasiert pro Testminute, sekundengenau abgerechnet, mit einem 30-Tage-Test inklusive 100 Minuten; darüber hinaus wechselt der Workspace in den bezahlten Tarif, und die veröffentlichten Sätze hängen von der Region ab.",[245],"Fremd-Grids wie BrowserStack und Sauce Labs rechnen pro paralleler Sitzung oder Abo ab und sind nur für echte Geräte, eine breitere Browser-Matrix oder Compliance nötig.",[247],"Die größte Position ist nie die Lizenz: das Aufräumen flüchtiger Tests und die Pflege von Selektoren sind die wiederkehrenden Kosten, und kein Plan deckt sie ab.",{"type":108,"content":249},[250],"Weil der Runner kostenlos ist, geht es bei der Migration meist um Zeit statt um Budget. Ein bestehender Suite-Stack bedeutet umgeschriebene Selektoren, Fixtures und Custom Commands, und die Amortisation kommt mit dem zweiten Wartungsmonat, nicht mit dem ersten grünen Build.",{"type":120,"level":121,"id":98,"text":99},{"type":108,"content":253},[254],"Die Schwächen sind bekannt und größtenteils akzeptiert. Browser-Binaries sind pro Release gebunden, ein Upgrade ist also eine geplante Aufgabe, die die CI-Images mitzieht. Die Breite des Runners ist viel Fläche, bevor ein Team etwas von Sharding und Traces hat. WebKit ist hier ein gepatchtes Build statt Safari selbst, ein Apple-spezifischer Defekt kann also spät auftauchen. Und die CLI- und MCP-Schichten sind neu genug, dass ihre Befehlssätze zwischen Minor-Releases wandern.",{"type":256,"head":257,"rows":265},"table",[258,260,261,263],[259],"",[23],[262],"Selenium",[264],"Cypress",[266,275,284,293,302],[267,269,271,273],[268],"Treiber",[270],"Eigenes Protokoll je Browser",[272],"W3C WebDriver",[274],"Proxy im Seitenkontext",[276,278,280,282],[277],"Browser",[279],"Chromium, Firefox, WebKit",[281],"Jeder WebDriver-Browser",[283],"Chrome, Firefox, Edge, Electron",[285,287,289,291],[286],"Runner",[288],"Integriert: parallel, Sharding, Traces",[290],"Selbst mitzubringen",[292],"Integriert, Sharding über Plugins",[294,296,298,300],[295],"Agent-Flächen",[297],"MCP, CLI und Testagents",[299],"Community-MCP-Server",[301],"Community-Plugins",[303,305,307,309],[304],"Passt zu",[306],"Neue Suites und agent-gesteuerte Arbeit",[308],"Alte Stacks und Vendor-Grids",[310],"Komponentenlastige Front-End-Teams",{"type":108,"content":312},[313],"Das ehrliche Vergleichsziel ist der Umfang, nicht die Qualität. Selenium bleibt die Antwort, wenn ein Vertrag WebDriver oder eine Device-Cloud verlangt; Cypress liegt bequem für Teams, die in seinen Component-Test-Runner investiert sind; Puppeteer ist eine Bibliothek, kein Framework, und die richtige Größe für ein Skript. Playwright behauptet, eines dieser vier Werkzeuge zu sein — und die Wartungskosten dieser Behauptung sind die Browser-Matrix, die nun in der CI läuft.",{"type":120,"level":121,"id":101,"text":102},{"type":108,"content":316},[317],"Playwright ist der stärkste Standard der Browser-Automatisierung, und die interessante Frage ist nicht mehr, ob man es einführt, sondern welche seiner drei Flächen man wem aussetzt.",{"type":126,"ordered":319,"items":320},true,[321,323,325,327,329],[322],"Für neue End-to-End-Arbeit einführen. Runner, Kontext-Isolation und Trace-Viewer zahlen sich ab dem zweiten Monat aus — genau dann, wenn ein dünneres Werkzeug teurer wird.",[324],"Einführen, wenn ein Agent den Browser führen muss. Refs und Rollen sind günstiger und deterministischer als Pixel, und das Projekt pflegt MCP und CLI selbst, statt sie der Community zu überlassen.",[326],"Den Upgrade-Rhythmus einplanen: eine Release-Linie, die alle paar Wochen neue Browser-Binaries zieht, bedeutet, dass Lockfile, Image und Browser zusammen bewegt werden oder gar nicht.",[328],"Selenium behalten, wo WebDriver oder eine Device-Cloud vertraglich ist, und eine grüne Cypress-Suite nicht umschreiben, nur weil die API woanders schöner ist.",[330],"Die Testagents nicht als Review behandeln. Der Healer darf einen Test überspringen, den er für defekt hält — sinnvoll als Standard, schlecht, wenn es unbemerkt passiert.",{"type":332,"content":333},"quote",[334],"Der Browser ist nicht mehr nur das, was getestet wird; er ist auch die Schnittstelle, die ein Agent bedient. Werkzeuge, die ihn als strukturierten Zustand zeigen — Rollen, Refs, Text — altern besser als solche, die ihn als Pixel zeigen.",{"type":120,"level":121,"id":104,"text":105},{"type":126,"ordered":319,"items":337},[338,343,347,351,355,359,363],[339],{"tag":340,"href":31,"children":341},"a",[342],"Playwright-Dokumentation: Installation",[344],{"tag":340,"href":34,"children":345},[346],"Playwright MCP: Einführung",[348],{"tag":340,"href":37,"children":349},[350],"Playwright CLI: Einführung",[352],{"tag":340,"href":40,"children":353},[354],"Playwright Test Agents",[356],{"tag":340,"href":43,"children":357},[358],"npm-Paketmetadaten für @playwright\u002Ftest",[360],{"tag":340,"href":46,"children":361},[362],"Microsoft Learn: Testversion von Playwright Workspaces",[364],{"tag":340,"href":49,"children":365},[366],"Azure App Testing: Preise",[368,423,477,531],{"slug":369,"published":370,"minutes":6,"category":7,"tags":371,"keywords":374,"about":382,"sources":386,"cover":416,"og":417,"expertise":52,"locales":418,"lang":55,"title":419,"description":420,"coverAlt":421,"url":385,"pricing":422,"kind":10},"browserbase-stagehand","2026-09-30",[10,372,373,23,11],"Web agents","Headless browsers",[375,376,377,378,379,380,381],"browserbase","stagehand","stagehand vs playwright","browserbase pricing","ai web agent framework","headless browser api","browserbase alternatives",[383],{"name":384,"url":385},"Browserbase","https:\u002F\u002Fwww.browserbase.com",[387,390,393,396,399,402,405,408,411,414],{"title":388,"url":389},"Browserbase pricing","https:\u002F\u002Fwww.browserbase.com\u002Fpricing",{"title":391,"url":392},"Browserbase plans and pricing docs","https:\u002F\u002Fdocs.browserbase.com\u002Fguides\u002Fplans-and-pricing",{"title":394,"url":395},"Stagehand documentation","https:\u002F\u002Fdocs.stagehand.dev\u002F",{"title":397,"url":398},"Stagehand quickstart","https:\u002F\u002Fdocs.stagehand.dev\u002Fv4\u002Ffirst-steps\u002Fquickstart",{"title":400,"url":401},"Stagehand v4 announcement","https:\u002F\u002Fwww.browserbase.com\u002Fblog\u002Fstagehand-v4",{"title":403,"url":404},"Stagehand repository","https:\u002F\u002Fgithub.com\u002Fbrowserbase\u002Fstagehand",{"title":406,"url":407},"Browser Use comparison of the two vendors","https:\u002F\u002Fbrowser-use.com\u002Fposts\u002Fbrowser-use-vs-browserbase",{"title":409,"url":410},"Browser Use pricing","https:\u002F\u002Fwww.browser-use.com\u002Fpricing",{"title":412,"url":413},"Skyvern pricing","https:\u002F\u002Fskyvern.com\u002Fpricing",{"title":23,"url":415},"https:\u002F\u002Fplaywright.dev\u002F","\u002Fimages\u002Fblog\u002Fbrowserbase-stagehand\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fbrowserbase-stagehand\u002Fog.jpg",[54,55,56],"Browserbase und Stagehand im Test: gemietetes Chrome für KI-Agenten","Browserbase vermietet verwaltetes Chrome pro Minute, Stagehand legt Natural-Language-Schritte obendrauf. Was es kostet, wo die Zähler laufen und wann Playwright gewinnt.","Abstrakte Pipeline-Grafik für die Browserbase- und Stagehand-Bewertung","From $20 per month · OSS library free",{"slug":424,"published":370,"minutes":425,"category":7,"tags":426,"keywords":431,"about":438,"sources":444,"cover":468,"og":469,"expertise":52,"locales":470,"lang":55,"title":471,"description":472,"coverAlt":473,"url":474,"pricing":475,"kind":476},"webmcp",11,[427,428,429,430,11],"WebMCP","Agent tools","JSON Schema","Chrome",[424,432,433,434,435,436,437],"webmcp vs mcp","document.modelContext registerTool","webmcp declarative api","browser agent tools","webmcp origin trial","webmcp chrome 149",[439,441,442],{"name":427,"url":440},"https:\u002F\u002Fgithub.com\u002Fwebmachinelearning\u002Fwebmcp",{"name":26,"url":27},{"name":429,"url":443},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJSON_Schema",[445,448,451,454,457,460,463,465],{"title":446,"url":447},"Chrome for Developers: WebMCP (get started)","https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fai\u002Fwebmcp",{"title":449,"url":450},"Chrome for Developers: Imperative API","https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fai\u002Fwebmcp\u002Fimperative-api",{"title":452,"url":453},"Chrome for Developers: Declarative API","https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fai\u002Fwebmcp\u002Fdeclarative-api",{"title":455,"url":456},"Chrome for Developers: WebMCP versus MCP","https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fai\u002Fwebmcp\u002Fcompare-mcp",{"title":458,"url":459},"Chrome for Developers: WebMCP tool security","https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fai\u002Fwebmcp\u002Fsecure-tools",{"title":461,"url":462},"Chrome for Developers: Build effective tools","https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fai\u002Fwebmcp\u002Fbuild-tools",{"title":464,"url":440},"WebMCP explainer and specification draft",{"title":466,"url":467},"WebMCP implementation status","https:\u002F\u002Fgithub.com\u002Fwebmachinelearning\u002Fwebmcp\u002Fblob\u002Fmain\u002Fimplementation-status.md","\u002Fimages\u002Fblog\u002Fwebmcp\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fwebmcp\u002Fog.jpg",[54,55,56],"WebMCP: Tools veröffentlichen statt Pixel ausliefern","WebMCP lässt eine Seite typisierte, aufrufbare Tools an einen Agenten im Browser publizieren. Was der Standard tut, wie viel heute ausgeliefert ist und wann ein MCP-Server die bessere Wahl bleibt.","Eine Seite registriert typisierte Tools im Browser, ein Browser-Agent ruft eines davon auf, und das Tool läuft in der Seite und aktualisiert deren Oberfläche.","https:\u002F\u002Fgithub.com\u002Fwebmcp","Emerging standard, open","Browser protocol",{"slug":478,"published":5,"minutes":6,"category":7,"tags":479,"keywords":484,"about":491,"sources":498,"cover":522,"og":523,"expertise":52,"locales":524,"lang":55,"title":525,"description":526,"coverAlt":527,"url":528,"pricing":529,"kind":530},"elevenlabs",[480,481,482,483],"Text to speech","Voice API","Speech to text","Voice cloning",[478,485,486,487,488,489,490],"elevenlabs api pricing","elevenlabs vs openai tts","text to speech api comparison","elevenlabs flash latency","voice cloning api","eleven v4 model",[492,495],{"name":493,"url":494},"ElevenLabs","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FElevenLabs",{"name":496,"url":497},"Speech synthesis","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSpeech_synthesis",[499,502,505,508,511,513,516,519],{"title":500,"url":501},"ElevenLabs pricing: plans and credits","https:\u002F\u002Felevenlabs.io\u002Fpricing",{"title":503,"url":504},"ElevenAPI pricing: per-product rates","https:\u002F\u002Felevenlabs.io\u002Fpricing\u002Fapi",{"title":506,"url":507},"ElevenLabs documentation: models","https:\u002F\u002Felevenlabs.io\u002Fdocs\u002Fmodels",{"title":509,"url":510},"API reference: create speech","https:\u002F\u002Felevenlabs.io\u002Fdocs\u002Fapi-reference\u002Ftext-to-speech\u002Fconvert",{"title":512,"url":494},"Wikipedia: ElevenLabs",{"title":514,"url":515},"Amazon Polly pricing","https:\u002F\u002Faws.amazon.com\u002Fpolly\u002Fpricing\u002F",{"title":517,"url":518},"OpenAI API pricing","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fpricing",{"title":520,"url":521},"SILMA AI: text to speech price comparison, August 2026","https:\u002F\u002Fsilma.ai\u002Fblog\u002Ftext-to-speech-price-comparison-august-2026","\u002Fimages\u002Fblog\u002Felevenlabs\u002Fcover.webp","\u002Fimages\u002Fblog\u002Felevenlabs\u002Fog.jpg",[54,55,56],"ElevenLabs: Sprachsynthese als API","Ein Review der ElevenLabs-Audio-API: Modellpalette, Latenzangaben, Guthaben- und Zeichenpreise, formatabhängige Stufen, und wo OpenAI und Amazon Polly besser sind.","ElevenLabs-Covermotiv mit Beschriftungen einer Sprach-API-Pipeline","https:\u002F\u002Felevenlabs.io","Free tier · from $5 per month","Voice and audio API",{"slug":532,"published":533,"minutes":6,"category":7,"tags":534,"keywords":540,"about":549,"sources":556,"cover":587,"og":588,"expertise":52,"locales":589,"lang":55,"title":590,"description":591,"coverAlt":592,"url":593,"pricing":594,"kind":595},"replicate","2026-05-22",[535,536,537,538,539],"Model hosting","Serverless GPU","Diffusion","Async jobs","Webhooks",[541,542,543,544,545,546,547,548],"replicate api","replicate vs fal.ai","serverless gpu inference pricing","replicate webhooks","replicate cold start","replicate vs baseten","how to run an open source model in production","replicate prediction api",[550,553],{"name":551,"url":552},"Replicate","https:\u002F\u002Freplicate.com\u002Fdocs",{"name":554,"url":555},"Serverless computing","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServerless_computing",[557,560,563,566,569,572,575,578,581,584],{"title":558,"url":559},"Replicate pricing","https:\u002F\u002Freplicate.com\u002Fpricing",{"title":561,"url":562},"Replicate docs: About predictions","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fpredictions",{"title":564,"url":565},"Replicate docs: Create a prediction","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fpredictions\u002Fcreate-a-prediction",{"title":567,"url":568},"Replicate docs: Prediction lifecycle","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fpredictions\u002Flifecycle",{"title":570,"url":571},"Replicate docs: Rate limits","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fpredictions\u002Frate-limits",{"title":573,"url":574},"Replicate docs: Data retention","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fpredictions\u002Fdata-retention",{"title":576,"url":577},"Replicate docs: Verify webhooks","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fwebhooks\u002Fverify-webhook",{"title":579,"url":580},"Replicate docs: Official models","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fmodels\u002Fofficial-models",{"title":582,"url":583},"fal.ai pricing","https:\u002F\u002Ffal.ai\u002Fpricing",{"title":585,"url":586},"Baseten pricing","https:\u002F\u002Fwww.baseten.co\u002Fpricing\u002F","\u002Fimages\u002Fblog\u002Freplicate\u002Fcover.webp","\u002Fimages\u002Fblog\u002Freplicate\u002Fog.jpg",[54,55,56],"Replicate im Test: eine Modell-API pro Sekunde abgerechnet, mit allen scharfen Kanten benannt","Replicate stellt tausende offene Modelle hinter eine Prediction-API und rechnet pro Sekunde Rechenzeit ab. Ein Test zu Cold Boots, Versionsdrift und der Löschung nach einer Stunde.","Ein Request läuft von starting über processing in einen von vier Endzuständen: succeeded, failed, canceled oder aborted.","https:\u002F\u002Freplicate.com","Pay per second of compute","Model hosting API",1791383550832]