У меня небольшая проблема с тестированием невидимой ReCaptcha на форме с помощью Laravel Dusk. Пакет, связанный с этой ситуацией, - Invisible Recaptcha от Albertcht
У меня есть этот метод внутри CreatesApplication.php
файла в /tests
protected function withoutRecaptcha() : void
{
InvisibleReCaptcha::shouldReceive("verifyRequest")
->andReturnTrue();
InvisibleReCaptcha::shouldReceive("verifyResponse")
->once()
->andReturnTrue();
}
Это хорошо работает для теста функций, потому что мне нужно только нажать API, и я могу игнорировать ввод g-recaptcha-response
из запроса на публикацию.
Но если я хочу проверить саму форму, используя систему тестирования браузера, такую как Laravel Dusk, конечно, этого недостаточно.
Мой текущий метод сумерек следующий.
public function a_guest_can_fill_the_registration_form()
{
$this->withoutRecaptcha();
$this->browse(function (Browser $browser) {
$browser->maximize()
->visit(new Register())
->assertPresent("input[name=g-recaptcha-response]")
->fillFormWithRandomData()
->submitForm()
->waitForReload()
->assertVisible(".alert.alert-success");
});
}
Простые вещи здесь, я вызываю форму регистрации, заполняю данные, отправляю их и проверяю, есть ли предупреждение. В настоящее время это не работает, и я получаю эту ошибку:
There was 1 failure:
1) Tests\Browser\RegisterTest::a_guest_can_fill_the_registration_form
Element [body input[name=g-recaptcha-response]] is not present.
Failed asserting that false is true.
/app/vendor/laravel/dusk/src/Concerns/MakesAssertions.php:806
/app/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:67
Итак, проблема ясна: во время теста вход ReCaptcha не отображается, поэтому невозможно поразить его или даже фальшивка это
Есть ли способ визуализации поддельной ReCaptcha, чтобы заставить ее работать с Laravel Dusk?
Спасибо