Cypress heeft een bètafunctie genaamd tap uitgebracht die AI-gestuurde programmeeragenten in staat stelt om in te haken op een actieve Cypress-testsessie, DOM-snapshots en command-logs op te halen en die visuele informatie te gebruiken om fouten te diagnosticeren. De tool werkt alleen met Cypress 15.21.0 of nieuwer, een Chromium-gebaseerde browser en de “cypress open” UI; het werkt niet in headless-modus.
Waarom AI-agenten meer nodig hebben dan een exit code
De meeste AI-code-assistenten behandelen een Cypress-run als elk ander command-line tool: ze voeren npx cypress run uit, lezen de exit-status van het proces en beslissen of de test is geslaagd. Een exit code vertelt de agent dat er iets mis is gegaan, maar geeft geen aanwijzing of een selector verkeerd is getypt, een pagina niet is geladen of een overlay een knop blokkeerde. Mensen openen daarentegen de Cypress UI, kijken naar de browser, inspecteren de DOM-boom en lezen het command log voordat ze een hypothese vormen.
Die kloof maakt geautomatiseerd debuggen kwetsbaar. “Element not found” kan voortkomen uit tientallen oorzaken, en zonder visueel bewijs kan een AI blijven proberen dezelfde oplossing toe te passen, waardoor er een eindeloze lus ontstaat.
Hoe tap de kloof overbrugt
Tap creëert een terminal-gebaseerde interface voor een actieve Cypress-instantie. Zodra de ontwikkelaar Cypress start in open-modus:
npx cypress open --e2e --browser=chrome
de agent kan een reeks JSON-output commando's uitvoeren vanuit een aparte shell:
npx cypress tap specs --json– toont beschikbare spec-bestanden.npx cypress tap run <spec> --json– start een enkele spec-run.npx cypress tap status --json– geeft de status van de huidige run terug, inclusief tijdstempels.
Omdat de status-payload een startedAt tijdstempel bevat, kan de agent verifiëren dat hij naar verse resultaten kijkt in plaats van naar een verouderde run die eerder is afgerond. Alleen vertrouwen op de ruwe exit code is niet langer voldoende.
Wanneer een test faalt, kan de agent dieper graven:
npx cypress tap reporter --json– haalt het algemene testrapport op.npx cypress tap command --test-id <ID> --command-id <ID> --json– haalt het exacte commando op dat een fout veroorzaakte, samen met een snapshot van de DOM van de app, de ARIA-boom en alle relevante elementattributen op dat moment.
Gewapend met die snapshot kan de AI redeneren over waarom de selector niet overeenkwam, of de pagina nog aan het laden was, of dat een modal het doelwit blokkeerde. Vervolgens kan de AI een code-wijziging voorstellen, deze toepassen en dezelfde spec opnieuw uitvoeren om de oplossing te verifiëren.
Een veiligheidsbeleid voor autonome agenten
Om te voorkomen dat de lus eeuwig doorgaat, stelt het Cypress-team een gedisciplineerde workflow voor:
- Voer slechts één specifiek spec-bestand uit.
- Poll
tap statusmet een strikte deadline en negeer elk resultaat waarvan destartedAtouder is dan de laatste poll. - Inspecteer alleen de falende test en het foutieve commando.
- Sta slechts één code-wijziging toe voor de volgende run.
- Voer de spec opnieuw uit.
- Als de uitkomst verandert, stop dan en vraag een menselijke controle aan.
De agent moet ook een uitleg in natuurlijke taal genereren over wat hij heeft waargenomen en waarom de voorgestelde oplossing zou moeten werken. Het slagen van de test is niet genoeg; de AI moet aantonen dat hij het visuele bewijs heeft begrepen.
Wie profiteert hiervan
Ontwikkelaars die al vertrouwen op AI-assistenten voor het genereren van code, kunnen deze assistenten nu een rijker debug-oppervlak bieden. Het verwachte voordeel is een vermindering van de tijd die wordt besteed aan het achtervolgen van flaky tests, vooral in grote end-to-end suites waar het handmatig reproduceren van een fout minuten kan duren. Teams die tap adopteren, kunnen een snellere afhandeling zien van pull requests die UI-componenten aanraken, en een lagere behoefte aan heen-en-weer debugsessies.
Risico's en beperkingen
Tap bevindt zich nog in de bètafase, wat betekent dat het bugs kan bevatten, de commando-syntax kan veranderen of de ondersteuning voor bepaalde configuraties zonder aankondiging kan intrekken. Het vertrouwen op de open UI sluit headless CI-pipelines uit, dus teams zullen een aparte strategie nodig hebben voor geautomatiseerde builds. Omdat de functie live DOM-gegevens streamt, is er een bescheiden prestatie-overhead die grote specs kan vertragen. Tot slot gaat het veiligheidsbeleid ervan uit dat de AI deadlines kan respecteren en stopt na een enkele wijziging; een slecht ontworpen agent zou nog steeds in een oneindige lus terecht kunnen komen of een onjuiste oplossing kan toepassen.
Waar je op moet letten
- Beta-feedbackcycli – Cypress zal waarschijnlijk het JSON-schema verfijnen en meer gedetailleerde commando's toevoegen op basis van input van vroege gebruikers.
- Integratie met CI – Houd rekening met community-scripts die de open-mode-vereiste van tap overbruggen met headless runners, bijvoorbeeld door een virtueel scherm te starten.
- AI-agent tooling – Leveranciers die coding assistants bouwen, zouden tap-ondersteuning kunnen gaan bundelen als een standaard debugging-module, waardoor de functie zichtbaarder wordt in mainstream IDE-extensies.
Als je experimenteert met AI-gestuurd testonderhoud, probeer tap dan eens uit op een enkele flaky spec en kijk of de visuele context de debugging-cyclus verkort. De tool zal het menselijk oordeel niet vervangen, maar het geeft je coding agent wel een paar ogen die hij voorheen miste.
