Laravel Dusk не может утверждать, что видит текст, который виден на скриншоте (используя whenAvailable для модального)

Я написал тест Laravel Dusk. Я пытаюсь утверждать, виден ли какой-либо текст после того, как модальное открыто. Итак, я использую whenAvailable метод. Но это не удается, пока я вижу текст на скриншоте.

$browser->press('@finish-setup-button')
        ->whenAvailable('#modal-payment-info', function ($modal) use($paymentInfo) {
            $modal->assertSee(html_entity_decode(__('account_setup.payment')))
                  ->type('name', $paymentInfo->name)
                  ->type('iban', $paymentInfo->iban)
                  ->type('bic', $paymentInfo->bic)
                  ->press('@subscribe-button');
        });

Я получаю следующее сообщение:

Был 1 сбой:

1) Tests \ Browser \ RegistrationTest:: testRegistration Не увидел ожидаемого текста [Payment] внутри элемента [body #modal-payment-info]. Не удалось утверждать, что ложь - это правда.

Скриншот:

Что я делаю неправильно?

1 ответ

Я только что столкнулся с той же проблемой, я предполагаю, что ее просто нет, когда утверждение проверяется, но затем появляется к моменту создания снимка экрана.

Вместо добавления 1-секундной задержки вы также можете использовать ->waitForText() что избавит от лишнего времени ожидания.

Я нашел обходной путь. Я добавил паузу в 1 секунду, и она отлично работает.

$browser->press('@finish-setup-button')
        ->whenAvailable('#modal-payment-info', function ($modal) use($paymentInfo) {
            $modal->pause(1000)
                  ->assertSee(html_entity_decode(__('account_setup.payment')))
                  ->type('name', $paymentInfo->name)
                  ->type('iban', $paymentInfo->iban)
                  ->type('bic', $paymentInfo->bic)
                  ->press('@subscribe-button');
        });
Другие вопросы по тегам