AntiGem Browser QA
Aperçu
Compétence de test de navigateur unifiée et légère en tokens pour le browser_mcp natif d'AntiGem (17 outils). Couvre 8 aspects de test via une divulgation progressive : flux exploratoires, formulaires/sécurité, mise en page/a11y/visuel, PWA/hors ligne/i18n, et snippets d'audit in-page. Protocole obligatoire : réutilisation d'onglet → verrouillage → découverte par référence → saisies React-safe → actions par lots → porte d'exécution (console + réseau).
Quand l'utiliser
- Rédaction ou exécution de tests E2E sur des applications web/PWA
- Chasse aux bugs exploratoire (parcours utilisateur première fois, séquences adversariales)
- Tests aux limites de formulaires, payloads XSS, téléchargements de fichiers, glisser-déposer, canvas/WebGL
- Audits WCAG 2.1 AA/AAA, reflow à 200 % de zoom, CLS, cibles tactiles (≥48px/≥60dp)
- Comparaison de régression visuelle baseline-vs-build, points de rupture responsifs
- Cycle de vie du Service Worker, synchronisation hors ligne IndexedDB/Dexie, clipping de glyphes/matras Indic
- Porte d'exécution zéro tolérance pour erreurs console / échecs réseau
Protocole d'exécution obligatoire
- Réutilisation d'onglet :
browser_list_tabs → réutiliser un onglet existant ou browser_open_url
- Verrouillage toucher/zoom :
browser_lock(locked=true) avant les chaînes multi-étapes
- Découverte par référence :
browser_find(query="...") (préféré) ou browser_read_page(filter="interactive") pour l'arbre ARIA avec des ID ref_N stables
- Saisies React-safe :
browser_form_input(ref, value) pour <input>, <textarea>, <select>, cases à cocher/boutons, boutons radio, contenteditable
- Actionnement de confiance :
browser_computer (left_click, hover, left_click_drag, key, scroll_to, screenshot, zoom [x0,y0,x1,y1], wait) ; browser_upload_file pour les champs fichier ; browser_handle_dialog pour les alertes
- Traitement par lots aller-retour :
browser_batch pour les chaînes multi-étapes déterministes
- Porte d'exécution (zéro tolérance) :
browser_get_console_logs(pattern="error|warn") + browser_read_network (recharger d'abord si l'onglet précède l'attachement MCP) après chaque écran
- Déverrouillage :
browser_lock(locked=false) à la sortie
Liste de contrôle unifiée des 8 aspects
| # | Aspect | Critères Pass/Fail |
|---|
| 1 | Exploratoire et flux | Simulation du premier utilisateur ; navigation multi-route ; priorité de browser.goBack() modale ; pièges de focus ; format du rapport de défaut |
| 2 | Formulaires et composants | Tests aux limites ; limitation numérique ; validation blur en ligne ; défilement vers la première erreur ; debounce au double envoi ; sanitization XSS ; téléchargement de fichier ; glisser-déposer ; vérification canvas/SVG |
| 3 | Tests de sécurité | En-têtes CSP ; injection de payload XSS ; bascules de refus d'autorisation ; drapeaux de cookie sécurisé |
| 4 | Mise en page, A11y, Visuel | WCAG AA ≥4,5:1 / Lumière du jour AAA ≥7,0:1 / Scotopique Rouge #000000 ; reflow à 200 % de zoom ; CLS ≤0,1 ; prefers-reduced-motion ; cibles tactiles ≥48px (std) / ≥64px (rural) ; diff visuel baseline-vs-build |
| 5 | PWA, Hors ligne, i18n | Cycle de vie du manifeste et SW ; IndexedDB/Dexie ACID + useLiveQuery ; simulation hors ligne + file d'attente de synchronisation ; clipping de conjonctions/matras Indic ; document.documentElement.lang ; Lakhs/Crores + tabular-nums |
| 6 | API Web et autorisations | navigator.vibrate?.(), refus d'autorisation caméra/géo ; bascules API matérielles |
| 7 | Diagnostics d'exécution | Échec rapide des erreurs console ; échec rapide des 4xx/5xx réseau ; audits LCP/mémoire via browser_eval_js |
| 8 | Mobile et vue | Matrice mobile/desktop browser_set_view_mode ; micro-inspection browser_computer(action="zoom") |
Table de routage de référence progressive
| Axe de tâche | Référence à charger |
|---|
| Chasse aux bugs exploratoire, flux première fois, focus modal, navigation | references/01-exploratory-and-flows.md |
| Validation de formulaires, tests aux limites, téléchargement de fichier, glisser-déposer, canvas, XSS | references/02-forms-components-security.md |
| Audit WCAG, contraste, reflow zoom, CLS, cibles tactiles, diff visuel | references/03-layout-a11y-visual.md |
| Cycle de vie SW, IndexedDB, synchronisation hors ligne, typographie Indic, autorisations | references/04-pwa-offline-i18n-apis.md |
| Snippets d'audit in-page (étiquettes orphelines, boîtes englobantes, contraste, SW, IndexedDB) | references/05-eval-js-audit-snippets.md |
Référence rapide : Correspondance des outils browser_mcp
| Primitive amont | Outil AntiGem |
|---|
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 (await de premier niveau, retourne JSON) |
page.on('console') / page.on('pageerror') | browser_get_console_logs(pattern="...") |
page.on('response') / HAR | browser_read_network |
| Chaînes multi-étapes | browser_batch + browser_lock |
| Vue / capture d'écran / zoom | `browser_set_view_mode + browser_computer(screenshot |
Erreurs courantes
- Ignorer
browser_lock → toucher/zoom accidentel corrompt les ID de référence
- Utiliser des coordonnées au lieu de références → fragile, casse au reflow
- Ne pas exécuter la porte d'exécution → erreurs console / requêtes échouées non détectées
- Charger toutes les références à la fois → gonflement des tokens ; charger à la demande selon la table de routage
- Oublier
browser_lock(false) → laisse l'onglet verrouillé pour l'utilisateur
Impact réel
- 90 % de réduction des tokens par rapport aux snapshots DOM complets via
browser_find/browser_read_page(filter="interactive")
- Un seul appel
browser_eval_js exécute un audit complet de l'écran (a11y + géométrie + contraste + SW + IndexedDB)
- La porte d'exécution zéro tolérance détecte les régressions avant qu'elles n'atteignent les utilisateurs