Agentische Akzeptanztests erklärt: wie Akzeptanzkriterien zum Maßstab für KI Agenten werden, welche Risiken drohen und wie Teams 2026 absichern
Mehr erfahren
Self Healing Tests sind automatisierte Tests, die einen kaputten Selektor zur Laufzeit selbst ersetzen, statt rot zu werden. Ändert sich ein Button oder ein Eingabefeld, sucht das Werkzeug ein passendes Element und läuft weiter.
In Cypress gibt es Self Healing offiziell nur an einer Stelle: im Befehl cy.prompt. Normale Befehle wie cy.get oder cy.contains heilen nichts. Sie finden das Element, oder der Test schlägt fehl. Das ist Absicht, denn ein roter Test ist ein Signal.
Self Healing klingt nach weniger Wartung. Es hat aber einen Preis: Ein Test kann grün bleiben, obwohl sich das Verhalten deiner App geändert hat. Auf dieser Seite schauen wir uns an, was Cypress wirklich anbietet, wo das Risiko liegt und welche Grundlage Tests auf Dauer stabil hält.
Instabile Selektoren lösen wir dort, wo sie entstehen: im Markup und in der Teststruktur. Wenn bei uns ein Test an einem Selektor scheitert, schauen wir zuerst ins Template. Fehlt ein data-cy Attribut, hängt der Test an einer CSS Klasse, steht derselbe Ablauf in zehn Specs? Cypress mit Cypress Cloud läuft bei uns täglich in Production, in GitHub Actions und GitLab CI, in Projekten mit Symfony, Astro, React und Vue. Roland Golla ist offizieller Cypress Ambassador.
Mit deinem Team legen wir eine Selektor Strategie fest, die Redesigns übersteht, und bauen sie im Cypress Workshop mit Roland Golla oder in der Cypress Remote Schulung für Teams gemeinsam auf. Die Regeln dafür prüft das ESLint Plugin für Cypress automatisch. Wenn KI Agenten Tests pflegen sollen, setzen wir in der Vibe Coding Beratung klare Regeln auf, nach den NCA Agentic AI Coding Guardrails. Dazu passen Quality Gates für KI Code in der Pipeline.
Ein Tag inhouse mit Roland Golla, offizieller Cypress Ambassador und seit über 20 Jahren in Testing und Refactoring zu Hause. Auf unserem YouTube Kanal zeigt er in über 70 Live Coding Tutorials, wie Cypress in echten Projekten läuft. Dazu kommt unser Open Source Plugin NCA TESTIFY: Basistests für jede Website, mit einer Zeile im CI/CD Setup. Im Workshop lernt euer Team Setup, stabile Selektoren, Custom Commands und Tests in der Pipeline.
Cypress listet in der Übersicht der KI Funktionen mehrere Werkzeuge: cy.prompt, Studio AI mit Vorschlägen für Assertions, Zusammenfassungen von Testabsicht und Fehlern, Testgenerierung aus UI Coverage sowie Cloud MCP und Cloud CLI für Agenten. Self Healing gehört dort ausschließlich zu cy.prompt.
Kurz gesagt: cy.prompt erzeugt aus natürlicher Sprache Cypress Code und speichert ihn im Cache. Passt ein Selektor nicht mehr, erzeugt Cypress den Schritt neu und markiert das im Command Log. Wie Cache und Heilung im Detail ablaufen, erklärt die Seite zu cy.prompt.
Cypress beschreibt zwei Arbeitsweisen. Entweder du exportierst den erzeugten Code und committest ihn. Dann läuft der Test ohne KI und ohne Self Healing. Oder du lässt cy.prompt im Test, und Selektoren passen sich laufend an. cy.prompt braucht Cypress Cloud, läuft nur in E2E Tests und nur in Chromium Browsern.
Ein Test hat eine Aufgabe: Er soll laut werden, wenn sich etwas Wichtiges ändert. Self Healing dreht das um. Der Test findet ein anderes Element und bleibt grün. Ob die Änderung gewollt war, prüft dabei niemand.
Ein Beispiel: Aus dem Button „Bestellen“ wird „Bestellung prüfen“, und ein Klick führt jetzt auf eine Zwischenseite. Der geheilte Test klickt das neue Element und läuft weiter. Die eigentliche Änderung im Ablauf fällt erst auf, wenn eine Assertion danach scheitert. Fehlt diese Assertion, fällt sie gar nicht auf.
Typische Folgen:
Gleb Bahmutov, früher VP of Engineering bei Cypress, nennt Auto Healing deshalb ein Warnsignal für den Entwicklungsprozess. Wenn Tests ständig an Selektoren scheitern, liegt das Problem meist in der Teststruktur oder im fehlenden Abgleich zwischen Frontend und Tests.
Die meisten kaputten Selektoren hängen an Dingen, die sich ständig ändern: CSS Klassen, Tag Strukturen, generierte IDs. Die Cypress Best Practices empfehlen deshalb eigene data-cy Attribute. Sie sind von Styling und JavaScript Verhalten entkoppelt.
<button class="btn btn-primary" data-cy="checkout-submit">
Bestellen
</button>
// brüchig: hängt an Styling
cy.get('.btn.btn-primary').click()
// stabil: eigenes Test Attribut
cy.get('[data-cy=checkout-submit]').click()
Ändert ein Designer die Klassen, bleibt der zweite Selektor stabil. Ändert sich das Verhalten, schlägt eine Assertion fehl, und das Team entscheidet bewusst. Dafür ist ein Test da.
Damit die Regel im Alltag hält, muss niemand Selektoren von Hand prüfen. Das ESLint Plugin für Cypress erzwingt mit der Regel require-data-selectors data Attribute automatisch und meldet jeden Selektor auf Klassen oder Tags.
Neben data-cy gibt es zwei weitere Bausteine, die Tests robust machen, ohne etwas zu verstecken.
Testing Library Queries: Cypress verweist in den Best Practices auf die Cypress Testing Library. Du suchst Elemente über Rolle und zugänglichen Namen, so wie Nutzer und Screenreader sie wahrnehmen. Ändert sich der Name eines Buttons, wird der Test rot. Das ist gewollt, denn Nutzer sehen die Änderung auch. Nebenbei prüfst du damit ein Stück Barrierefreiheit.
cy.findByRole('button', { name: 'Bestellen' }).click()
cy.findByLabelText('Mail Adresse').type('test@example.com')
Custom Commands und Page Objects: Selektoren und Abläufe stehen an genau einer Stelle. Ändert sich das Login Formular, passt du einen Command an, und alle Tests laufen wieder. Das ist Wartung mit Review statt Heilung zur Laufzeit.
// cypress/support/commands.js
Cypress.Commands.add('login', (email, password) => {
cy.get('[data-cy=login-email]').type(email)
cy.get('[data-cy=login-password]').type(password, { log: false })
cy.get('[data-cy=login-submit]').click()
})
// im Test
cy.login('test@example.com', testPassword)
cy.location('pathname').should('eq', '/dashboard')
Mehr zu Barrierefreiheit in Tests findest du bei axe DevTools mit Cypress und in der Übersicht der Accessibility Testing Tools.
Der wichtigste Unterschied zwischen Heilung und Wartung ist der Review. Eine Änderung am Test landet im Merge Request, jemand liest sie und stimmt zu. So bleibt nachvollziehbar, warum ein Test anders prüft als vorher.
Wenn du cy.prompt mit Self Healing einsetzt, mach die Heilung sichtbar:
Wie Anforderungen zum festen Maßstab für Tests werden, zeigt die lebende Spezifikation. Gemeinsame Beispiele dafür entstehen gut im Example Mapping.
KI Agenten können bei der Testwartung viel abnehmen. Der Unterschied zu Self Healing: Der Agent schlägt eine Änderung vor, ein Mensch reviewt und gibt frei. Nichts ändert sich still zur Laufzeit.
So sieht ein sauberer Ablauf aus:
Welche weiteren Regeln für Testdateien, Pipeline und Daten bei uns gelten, steht auf der Seite Cypress mit KI Agenten. Den Rahmen mit Scope, Evidenz und Freigabe beschreibt der Governed Agent Loop.
Please do not use auto-healing to hide changes in your application behavior.
Agentische Akzeptanztests erklärt: wie Akzeptanzkriterien zum Maßstab für KI Agenten werden, welche Risiken drohen und wie Teams 2026 absichern
Mehr erfahren
Cypress Cloud MCP verbindet KI Agenten direkt mit Testergebnissen, Flaky Tests und Test Replay. Setup für OpenCode und Claude Code, eingeordnet von NCA.
Mehr erfahrenWenn Tests ständig an Selektoren scheitern, schauen wir zuerst auf die Ursache. Meist fehlen Test Attribute im Markup, Abläufe sind in jedem Test neu geschrieben, oder Frontend und Tests laufen getrennt. Das lösen wir mit data-cy Konventionen, Custom Commands und einem Review Prozess, der zum Team passt.
KI nutzen wir dabei für Vorschläge und Routinearbeit. Ob eine Änderung am Test richtig ist, entscheidet ein Mensch im Review. Die Regeln für Agenten stehen in einer AGENTS.md mit klaren Coding Regeln, wie KI Code wartbar bleibt, zeigt Code Qualität mit KI Agenten, und die typischen Fallen fasst Vibe Coding Risiken zusammen.
Wer vom Selenium Umfeld kommt, findet die Einordnung unter Selenium. Passend dazu im NCA Cypress Glossar: Flaky Tests in Cypress, die oft hinter instabilen Selektoren stecken.
Roland Golla ist Entwickler aus Leidenschaft – seit über 20 Jahren. Er hat hunderte Projekte begleitet, von Legacy-Refactoring bis KI-Integration. Bei Vibe Coding verbindet er das Beste aus beiden Welten: Die Geschwindigkeit von KI-generiertem Code mit der Qualität professioneller Softwareentwicklung. Kein Bullshit, keine Agentur-Floskeln – direkte Hilfe von jemandem, der selbst täglich im Code steckt.
Kurze Antworten zu Self Healing in Cypress, zu den Risiken und zu stabilen Alternativen für deine Testsuite.
Self Healing Tests ersetzen einen kaputten Selektor zur Laufzeit selbst, statt fehlzuschlagen. Ändert sich ein Element, sucht das Werkzeug ein passendes neues und der Test läuft weiter. Das spart Wartung, kann aber Änderungen im Verhalten verdecken. Ein geheilter Test bleibt grün, auch wenn ein Ablauf sich gewollt oder ungewollt geändert hat.
Ja, aber nur im Befehl cy.prompt. Normale Befehle wie cy.get oder cy.contains heilen nichts. cy.prompt cached generierten Code und erzeugt einen Schritt neu, wenn ein Selektor nicht mehr passt. Im Command Log steht dann Self Healed via Cache oder Self Healed via AI. cy.prompt braucht Cypress Cloud und läuft nur in E2E Tests.
Für kritische Pfade raten wir davon ab. Login, Checkout und Rechteprüfungen sollten mit festem, reviewtem Code laufen. Self Healing kann Regressionen verdecken, weil der Test grün bleibt. Für frühe Phasen und schnelle Prototypen ist es nützlich. Danach exportierst du den Code, setzt stabile Selektoren und lässt ihn als Quality Gate laufen.
Stabile data-cy Attribute, die Cypress selbst in den Best Practices empfiehlt. Sie sind von Styling und JavaScript Verhalten entkoppelt. Dazu kommen Testing Library Queries über Rolle und Namen sowie Custom Commands, die Selektoren an einer Stelle bündeln. Änderungen am Test laufen über einen Review im Merge Request und bleiben so nachvollziehbar.
Ja, wenn ein Mensch freigibt. Der Agent liest fehlgeschlagene Runs, schlägt eine Änderung an Selektor oder Custom Command vor und öffnet einen Merge Request. Ein Mensch prüft den Diff, bevor etwas gemergt wird. So bleibt jede Änderung am Test sichtbar, statt still zur Laufzeit zu passieren.
Ein roter Test zwingt das Team, eine Änderung bewusst anzuschauen. War sie gewollt, passt jemand den Test an und dokumentiert das im Review. War sie ein Bug, fällt er vor dem Release auf. Ein geheilter Test überspringt diese Entscheidung. Das Dashboard bleibt grün, obwohl niemand geprüft hat, ob das neue Verhalten stimmt.
Cypress zeigt jede Heilung im Command Log an. Self Healed via Cache bedeutet, dass der Schritt über einen vorhandenen Cache Eintrag auf ein anderes Element zeigt. Self Healed via AI bedeutet, dass ein neuer KI Aufruf das Element bestimmt hat. Prüfe diese Hinweise aktiv und übernimm den neuen Code per Export in dein Review.
data-cy ist ein eigenes HTML Attribut, das nur für Tests gedacht ist. Du setzt es im Markup, zum Beispiel data-cy gleich checkout-submit, und greifst im Test mit cy.get darauf zu. Weil es weder für Styling noch für JavaScript genutzt wird, bleibt es stabil, wenn Designer Klassen ändern oder Entwickler Komponenten umbauen.
Testing Library Queries suchen Elemente über Rolle, Label und zugänglichen Namen, so wie Nutzer sie wahrnehmen. Das passt gut für Formulare, Buttons und Navigation. Ändert sich ein sichtbarer Name, wird der Test rot, was oft gewollt ist. Nebenbei prüfst du ein Stück Barrierefreiheit, weil fehlende Labels sofort auffallen.
Beide bündeln Selektoren und Abläufe an einer Stelle. In Cypress sind Custom Commands der übliche Weg, weil sie sich wie normale Befehle lesen. Page Objects passen, wenn dein Team sie aus anderen Frameworks kennt. Wichtig ist weniger die Form als die Regel: ein Selektor, eine Stelle, jede Änderung im Review.
cy.prompt liest das DOM deiner App, um Elemente zu finden. Laut Cypress werden Werte aus Passwortfeldern, Kreditkartenfeldern und versteckten Inputs vorher ausgeblendet, und Prompts werden nicht zum Training genutzt. Welche Daten generell in Testläufe gehören, klärt unsere Seite zu Testdaten in Cypress.
Wir schauen mit deinem Team auf die Ursachen: fehlende Test Attribute, doppelte Abläufe, fehlende Reviews. Daraus entstehen data-cy Konventionen, Custom Commands und Quality Gates in CI. Wenn KI Agenten Tests pflegen sollen, setzen wir Regeln mit Freigabe durch Menschen auf. Den Aufwand schätzen wir nach einem kostenlosen Kennenlernen und rechnen transparent nach Minuten ab.