Der Spickzettel zum agentischen Teil des Seminars Playwright mit KI-Agenten: Wer welche Aufgabe hat, woran man ein erzeugtes Ergebnis prüft und wo die Grenzen liegen. Das Testhandwerk darunter — Locators, Assertions, Fixtures, Parallelität, CI — steht auf einem eigenen Blatt: Playwright-Testhandwerk.
Maßgeblich ist die Originaldokumentation auf playwright.dev; dieses Blatt trifft eine Auswahl — die Raster, die Versionssprünge überleben.
Deterministisch trifft probabilistisch
| Ebene | Eigenschaft |
|---|---|
| Testausführung | Deterministisch — gleicher Lauf, gleiches Ergebnis |
| Codeerzeugung | Probabilistisch — gleicher Auftrag, anderes Ergebnis |
| Konsequenz | Erzeugtes wird geprüft, Ausgeführtes wird gemessen |
| Grenze | Der Agent darf vorschlagen, nicht allein entscheiden |
Deshalb steht am Ende jeder Agentenschleife ein Diff und ein Review, nie ein direkter Commit.
Modul: Einführung: Playwright und KI-gestütztes Test Engineering
Die drei Agenten
| Agent | Eingabe | Ergebnis |
|---|---|---|
| Planner | Auftrag, Seed-Test, optional Anforderungen | Markdown-Testplan in specs/ |
| Generator | geprüfter Plan | Testdateien unter tests/ |
| Healer | ein fehlgeschlagener Test | Änderungsvorschlag oder übersprungener Test |
npx playwright init-agents --loop=claude # vscode | claude | codex | opencode
Der Planner erzeugt keinen Testcode — er erkundet und schreibt einen Plan. Erst der Generator überführt ihn. Nach einem Playwright-Update werden die Agentendefinitionen neu erzeugt, sonst passen Werkzeugnamen und Optionen nicht mehr.
Modul: Tests entdecken mit dem Planner-Agenten
Woher die Erwartung kommt
| Quelle | Was sie liefert |
|---|---|
| Anforderungen und User Stories | Zweck und Akzeptanzkriterien |
| Fachbereich | Geschäftsregeln, die die Oberfläche nicht zeigt |
| Bestehende Tests | Bereits abgesicherte Erwartungen |
| Beobachtung durch den Agenten | Ist-Verhalten, unbewertet |
Nur die ersten drei taugen als Test Oracle. Ohne sie schreibt der Agent den Ist-Zustand als Erwartung fest — samt der Fehler, die schon drinstecken.
Modul: Anwendungen mit KI erkunden
Fragen, die brauchbare Beobachtungen liefern
| Frageform | Ergebnis |
|---|---|
| Welche Eingaben werden abgewiesen und wie | Negativfälle |
| Was sieht diese Rolle, was jene nicht | Berechtigungen |
| Welche Zustände sind gleichzeitig möglich | Zustandskonflikte |
| Wo hast du geraten statt beobachtet | Unsichere Annahmen |
Die letzte Frage trennt Beobachtung von Erfindung — und wird fast nie gestellt. Je Beobachtung Schritt, Erwartung, tatsächliches Ergebnis und Belegstelle verlangen: Meldungstext, Statuscode oder Konsolenzeile.
Modul: Anwendungen mit KI erkunden
Prüfraster für ein Szenario im Plan
| Frage | Warnsignal |
|---|---|
| Welche Regel sichert es ab | Nur Klickfolge, keine Aussage |
| Woher stammt die Erwartung | Aus der Oberfläche abgeschrieben |
| Welche Daten braucht es | Ein fester Datensatz aus der Datenbank |
| Was ist der Ausgangszustand | Setzt das Ergebnis des Vorgängers voraus |
| Wie oft steht es schon da | Dieselbe Regel mehrfach beschrieben |
Was den Raster nicht besteht, wird im Plan korrigiert — nicht später im erzeugten Testcode, dort ist es ein Vielfaches an Arbeit.
Modul: Tests entdecken mit dem Planner-Agenten
Reviewraster für erzeugten Testcode
| Prüfpunkt | Woran es scheitert |
|---|---|
| Locators | Struktur statt Rolle, generierte Klassennamen |
| Assertions | Nur sichtbar, statt Inhalt und Zustand |
| Überflüssiges | Klicks und Prüfungen ohne Bezug zur Aussage |
| Wartezeiten | Feste Pausen statt Web-first Assertions |
| Testdaten | Zufallswerte oder feste Datensätze der Datenbank |
| Abhängigkeiten | Setzt Zustand aus einem anderen Test voraus |
| Beobachtung | Bewertung |
|---|---|
| Ein Testname mit „und” darin | Zwei Aussagen, trennen |
| Zwanzig Schritte vor der ersten Assertion | Setup gehört in eine Fixture |
| Prüft nebenbei die Navigation mit | Fremde Aussage, streichen |
| Baut auf dem Vorgängertest auf | Nicht isoliert, Ausgangszustand fehlt |
Ein erzeugter Test kann grün sein und trotzdem wertlos: Das Review prüft die Aussage, nicht die Lauffähigkeit. Reihenfolge: Testnamen, Assertions, Ausgangszustand, Abgleich mit dem Plan — dann erst ausführen.
Modul: Testcode erzeugen mit dem Generator-Agenten
Auftrag an einen Agenten
Kontext: specs/warenkorb.md, tests/seed.spec.ts, tests/fixtures.ts
Ziel: tests/warenkorb.spec.ts, ein Test je Szenario
Regeln: nur Rollen-Locators, keine festen Wartezeiten,
keine neuen Hilfsdateien, Daten je Test eindeutig
Prüfe: jede Assertion gegen die Erwartung im Plan
Kontext, Ziel, Einschränkungen — der dritte Teil fehlt fast immer, und dann erfindet der Agent Struktur. Der Auftrag gehört versioniert ins Repository, sonst weicht jeder Lauf vom vorigen ab.
Modul: Testcode erzeugen mit dem Generator-Agenten
Fehlklassen vor dem Reparieren
| Klasse | Richtige Reaktion |
|---|---|
| Geänderte Oberfläche oder Locator | Locator anpassen, Aussage behalten |
| Timing und Synchronisation | Web-first Assertion statt fester Pause |
| Testdaten oder Umgebung | Daten oder Setup reparieren, nicht den Test |
| Echte Regression | Test bleibt rot, Fehler ins Produkt melden |
| Veraltete Erwartung | Anforderung klären, dann Plan und Test ändern |
Nur die ersten beiden Klassen rechtfertigen eine automatische Reparatur. Bei einer echten Regression ist der rote Test das gewünschte Ergebnis.
Modul: Fehlgeschlagene Tests sicher reparieren
Guardrails fürs Healing
| Änderung | Bewertung |
|---|---|
| Locator auf Rolle umstellen | Erlaubt |
| Feste Pause durch Assertion ersetzen | Erlaubt |
| Erwarteten Wert an das Ist anpassen | Nur mit fachlicher Klärung |
| Assertion entfernen | Nicht erlaubt |
| Test überspringen | Nur mit Ticket und Frist |
| Testnamen ändern | Nicht erlaubt — daran hängt die Historie |
Diese Tabelle gehört in die Agentendefinition, nicht nur in den Kopf der Reviewerin. Ein übersprungener Test sieht im Report aus wie ein bestandener Lauf.
Modul: Fehlgeschlagene Tests sicher reparieren
MCP oder CLI
| Kriterium | MCP | playwright-cli |
|---|---|---|
| Erkundung | Sehr gut geeignet | Gut geeignet |
| Lange, zustandsbehaftete Schleifen | Stärke | Über Sessions möglich |
| Kontextverbrauch | Eher höher | Token-effizient |
| Integration | Strukturierte Werkzeuge | Shell und Skills |
| Große Repositories | Möglich | Besonders geeignet |
npm install -g @playwright/cli@latest
playwright-cli install --skills
playwright-cli -s=shop open <url> --persistent
playwright-cli -s=shop snapshot # Element-Referenzen
playwright-cli state-save zustand.json # angemeldeter Ausgangszustand
Kein Umschalter, sondern zwei Interaktionsmodelle auf demselben Browser. Beide arbeiten auf dem Accessibility Snapshot — Rollen, Namen, Referenzen statt Pixel.
Modul: Playwright MCP oder CLI
Sicherheit
| Risiko | Gegenmittel |
|---|---|
| Beliebige JavaScript-Ausführung | Werkzeug aus, gilt als RCE-äquivalent |
| Prompt-Injektion über Seiteninhalte | Nur bekannte Umgebungen, Ausgaben prüfen |
| Abfluss von Zugangsdaten | Testkonten, Werte aus der Umgebung |
| Unbemerkte Änderungen am Repository | Alles über Pull Request und Review |
| Zugriff auf fremde Hosts | Erlaubte Ursprünge einschränken |
Playwright nennt die MCP-Funktion zur Ausführung beliebigen JavaScripts ausdrücklich RCE-äquivalent — nur für vertrauenswürdige Clients. Storage-State-Dateien sind Anmeldedaten in Dateiform: nie committen.
Modul: Playwright MCP oder CLI
Abnahme eines agentengestützten Laufs
| Kriterium | Nachweis |
|---|---|
| Jede Regel hat einen Test | Plan verweist auf Testnamen |
| Suite läuft parallel grün | Mehrere Läufe mit vier Workern |
| Keine stillen Übersprünge | Report ohne unerklärte skipped-Einträge |
| Reparaturen begründet | Fehlerklasse je Patch im Pull Request |
| Lücken dokumentiert | Liste offener Szenarien mit Begründung |
Die letzte Zeile ist die wichtigste: Eine ehrliche Lückenliste ist mehr wert als eine geschönte Abdeckung.
Modul: Der agentengestützte Test-Workflow in der Praxis
Typische Fallen
- Den Agenten als Ersatz für Teststrategie verstehen statt als Werkzeug.
- Grüne Tests für Qualität halten, ohne die Assertions gelesen zu haben.
- Vollständigkeit annehmen, weil der Plan lang ist — Länge ist bei Sprachmodellen keine Währung.
- Halluzinierte Erwartungen übernehmen, weil sie fachlich klingen.
- Den Plan direkt an den Generator geben, ohne ihn gelesen zu haben.
- Die ganze Suite auf einmal heilen lassen und einen Diff erzeugen, den niemand liest.
- Änderungen übernehmen, ohne die Ursache benennen zu können.
- Übersprungene Tests nicht zählen und die Abdeckung überschätzen.
- Lücken finden und nicht dokumentieren — ein halbes Jahr später hält sie jemand für abgedeckt.