Kurzer Check
Rate zuerst, ohne Punktabzug. Ein von der KI geschriebener Test pausiert mit page.waitForTimeout(3000), bevor er die Summe prüft. Etwa einmal pro Woche scheitert er in der CI. Was ist die beste Lösung?
Warte auf die Bedingung, nicht auf die Uhr
Ein wackeliger Test (flaky test) läuft beim selben Code mal durch und mal nicht. In der CI (Continuous Integration, das System, das deine Tests bei jeder Änderung ausführt) schaden wackelige Tests am meisten. KI-Tools fügen oft feste Pausen ein, weil Pausen so aussehen, als lösten sie Timing-Probleme.
Playwright hat das Warten eingebaut. Laut seiner Doku zur Actionability „wartet es automatisch, bis alle relevanten Prüfungen bestanden sind, und führt erst dann die gewünschte Aktion aus“, zum Beispiel bis das Element sichtbar und aktiviert ist. Seine Doku zu Assertions beschreibt automatisch wiederholende Assertions, die es erneut versuchen, bis sie bestehen oder in ein Timeout laufen. Standardmäßig liegt das Timeout für Assertions bei 5 Sekunden. Die Doku warnt außerdem, dass „nicht wiederholende Assertions zu einem wackeligen Test führen können“.
Die Lösung ist also, die Pause zu löschen und mit await auf eine automatisch wiederholende Assertion für das zu warten, worauf du wartest.
Ein Beispiel
Vorher (wackelig):
await page.getByRole('button', { name: 'Apply' }).click();
await page.waitForTimeout(3000);
expect(await page.getByTestId('cart-total').textContent()).toBe('$45.00');
Nachher:
await page.getByRole('button', { name: 'Apply' }).click();
await expect(page.getByTestId('cart-total')).toHaveText('$45.00');
Lücken füllen
Füll die Lücken.
Lösung
Lösch und nutz , das .
Probier es aus
Deine Schritte, etwa 1 Minuten
- 1.Durchsuch deine Testsuite nach waitForTimeout und ersetz eine Stelle durch eine automatisch wiederholende Assertion.1 Min.
Dein AI test kit ist jetzt komplett. Leg es neben deinen Testplan:
1. Testfälle aus einer Story: Fallarten, eine Tabelle und „unklare Kriterien auflisten“.
2. Grenzen: knapp darunter, am Minimum, am Maximum, knapp darüber.
3. Jeden neuen Test einmal scheitern lassen, indem du den erwarteten Wert änderst.
4. Erwartete Werte kommen aus der Regel, nie aus dem Code.
5. Keine festen Pausen: mit automatisch wiederholenden Assertions warten.