AntiGem Browser QA
Übersicht
Vereinheitlichte, token-effiziente Browser-Testfähigkeit für AntiGems natives browser_mcp (17 Werkzeuge). Deckt 8 Testaspekte durch progressive Offenlegung ab: explorative Abläufe, Formulare/Sicherheit, Layout/Barrierefreiheit/Visuelles, PWA/Offline/i18n und In-Page-Audit-Snippets. Obligatorisches Protokoll: Tab-Wiederverwendung → Sperre → Ref-Erstentdeckung → React-sichere Eingaben → Batch-Aktionen → Laufzeitprüfung (Konsole + Netzwerk).
Wann verwenden
- Erstellung oder Ausführung von E2E-Tests auf Web-/PWA-Apps
- Explorative Fehlersuche (Erstbenutzerabläufe, adversarielle Sequenzen)
- Grenzwertüberprüfung von Formularen, XSS-Payloads, Dateiuploads, Drag & Drop, Canvas/WebGL
- WCAG 2.1 AA/AAA-Audits, 200%-Zoom-Neufluss, CLS, Berührungsziele (≥48px/≥60dp)
- Visueller Regressionstest: Vergleich Baseline vs. Build, responsive Breakpoints
- Service Worker-Lebenszyklus, IndexedDB/Dexie-Offline-Synchronisation, Indic-Glyphen-/Matra-Clipping
- Laufzeit-Laufzeitgatter: Nullduldung bei Konsolenfehlern/Netzwerkfehlern
Obligatorisches Ausführungsprotokoll
- Tab-Wiederverwendung:
browser_list_tabs → Vorhandenen Tab wiederverwenden oder browser_open_url
- Berührungs-/Zoom-Sperre:
browser_lock(locked=true) vor mehrstufigen Ketten
- Ref-Erstentdeckung:
browser_find(query="...") (bevorzugt) oder browser_read_page(filter="interactive") für ARIA-Baum mit stabilen ref_N-IDs
- React-sichere Eingaben:
browser_form_input(ref, value) für <input>, <textarea>, <select>, Checkboxen/Switches, Radiobuttons, contenteditable
- Vertrauenswürdige Betätigung:
browser_computer (left_click, hover, left_click_drag, key, scroll_to, screenshot, zoom [x0,y0,x1,y1], wait); browser_upload_file für Dateieingaben; browser_handle_dialog für Alarme
- Round-Trip-Batching:
browser_batch für deterministische mehrstufige Ketten
- Laufzeitgatter (Nullduldung):
browser_get_console_logs(pattern="error|warn") + browser_read_network (vorher neu laden, wenn der Tab vor dem MCP-Anschluss existierte) nach jedem Bildschirm
- Entsperren:
browser_lock(locked=false) beim Beenden
8-Aspekt-Vereinheitlichungs-Checkliste
| # | Aspekt | Pass/Fail-Gatter |
|---|
| 1 | Explorativ & Abläufe | Erstbenutzersimulation; Multi-Route-Navigation; browser.goBack()-Priorität; Fokusfallen; Fehlerberichtsformat |
| 2 | Formulare & Komponenten | Grenzwertüberprüfung; numerische Begrenzung; Inline-Blur-Validierung; Scroll-zum-ersten-Fehler; Double-Submit-Entprellung; XSS-Bereinigung; Dateiupload; Drag & Drop; Canvas/SVG-Überprüfung |
| 3 | Sicherheitstests | CSP-Header; XSS-Payload-Injektion; Verweigerung von Berechtigungsrückfällen; sichere Cookie-Flags |
| 4 | Layout, Barrierefreiheit, Visuelles | WCAG AA ≥4.5:1 / Sonnenlicht AAA ≥7.0:1 / Scotopic Rot #000000; 200%-Zoom-Neufluss; CLS ≤0.1; prefers-reduced-motion; Berührungsziele ≥48px (Standard) / ≥64px (ländlich); visueller Diff Baseline-vs-Build |
| 5 | PWA, Offline, i18n | Manifest & SW-Lebenszyklus; IndexedDB/Dexie ACID + useLiveQuery; Offline-Simulation + Sync-Warteschlange; Indic-Konjunktionen/Matra-Clipping; document.documentElement.lang; Lakhs/Crores + tabular-nums |
| 6 | Web-APIs & Berechtigungen | navigator.vibrate?.(), Kamera/Geo-Berechtigungsverweigerungen; Hardware-API-Rückfälle |
| 7 | Laufzeitdiagnose | Schnelles Scheitern bei Konsolenfehlern; schnelles Scheitern bei Netzwerk-4xx/5xx; LCP/Speicher-Audits via browser_eval_js |
| 8 | Mobil & Viewport | browser_set_view_mode Mobil-/Desktop-Matrix; browser_computer(action="zoom") Mikroinspektion |
Progressive Referenz-Router-Tabelle
| Aufgabenfokus | Referenz laden |
|---|
| Explorative Fehlersuche, Erstbenutzerabläufe, Modal-Fokus, Navigation | references/01-explorativ-und-ablaeufe.md |
| Formularvalidierung, Grenzwertüberprüfung, Dateiupload, Drag & Drop, Canvas, XSS | references/02-formulare-komponenten-sicherheit.md |
| WCAG-Audit, Kontrast, Zoom-Neufluss, CLS, Berührungsziele, visueller Diff | references/03-layout-barrierefreiheit-visuelles.md |
| SW-Lebenszyklus, IndexedDB, Offline-Synchronisation, Indic-Typografie, Berechtigungen | references/04-pwa-offline-i18n-apis.md |
| In-Page-Audit-Snippets (verwaiste Labels, Bounding-Boxen, Kontrast, SW, IndexedDB) | references/05-eval-js-audit-snippets.md |
Kurzreferenz: browser_mcp-Werkzeugzuordnung
| Upstream-Primitive | AntiGem-Werkzeug |
|---|
page.fill() / selectOption() / check() | browser_form_input(ref, value) |
page.click() / keyboard.press() / hover() / dragAndDrop() | browser_computer(left_click, hover, left_click_drag, key, scroll_to, ...) |
page.setInputFiles() | browser_upload_file |
page.on('dialog') | browser_handle_dialog(accept=true/false) |
page.evaluate() | browser_eval_js (Top-Level-Await, gibt JSON zurück) |
page.on('console') / page.on('pageerror') | browser_get_console_logs(pattern="...") |
page.on('response') / HAR | browser_read_network |
| Mehrstufige Ketten | browser_batch + browser_lock |
| Viewport / Screenshot / Zoom | `browser_set_view_mode + browser_computer(screenshot |
Häufige Fehler
browser_lock überspringen → versehentliches Berühren/Zoomen korrumpiert ref-IDs
- Koordinaten statt refs verwenden → brüchig, bricht bei Neufluss
- Keine Laufzeitprüfung durchführen → verpasst Konsolenfehler/fehlgeschlagene Anfragen
- Alle Referenzen auf einmal laden → Token-Aufblähung; bei Bedarf gemäß Router-Tabelle laden
browser_lock(false) vergessen → Tab für Benutzer gesperrt lassen
Praktische Auswirkungen
- 90% Tokenreduktion im Vergleich zu vollständigen DOM-Snapshots via
browser_find/browser_read_page(filter="interactive")
- Ein einziger
browser_eval_js-Aufruf führt einen vollständigen Bildschirm-Audit durch (Barrierefreiheit + Geometrie + Kontrast + SW + IndexedDB)
- Das Laufzeitgatter mit Nullduldung fängt Regressionen, bevor sie die Benutzer erreichen