Ein Captcha und automatisierte Tests widersprechen sich naturgemäß.
Drei Wege funktionieren gut:
Prüfung im Backend simulieren
Im Testmodus gibt Ihre Prüffunktion true zurück, ohne die API aufzurufen.
Alles andere bleibt gleich.
Das ist der empfohlene Weg.
if (getenv('APP_ENV') === 'test') {
$ok = true;
} else {
$ok = cdp_captcha_verify($_POST['cdp-captcha-solution'] ?? '');
}Den Browser lösen lassen
Headless-Browser (Playwright, Puppeteer, Selenium) können den Web Worker ausführen.
Warten Sie auf das Ereignis complete oder bis das versteckte Feld gefüllt ist, dann absenden.
Nutzen Sie auf einem Test-Sitekey die niedrigste Schwierigkeit, damit die Läufe schnell bleiben.
await page.waitForFunction(() =>
document.querySelector('.cdp-captcha').getAttribute('data-state') === 'completed');
await page.click('button[type=submit]');Den Testrechner freigeben
Laufen End-to-End-Tests gegen die Produktion, überspringen Sie die Prüfung für die bekannten Adressen Ihres Testrechners oder akzeptieren Sie einen geheimen Wert im Formular, den nur Ihre Tests kennen.
Halten Sie solche Ausnahmen aus dem Client-Code heraus.
