Laravel Dusk 无法断言看到屏幕截图中可见的文本(使用 whenAvailable 作为模态)

Laravel Dusk fails to assert seeing a text which is visible in the screenshot (using whenAvailable for modal)

我写了一个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');
        });

我收到以下消息:

There was 1 failure:

1) Tests\Browser\RegistrationTest::testRegistration Did not see expected text [Payment] within element [body #modal-payment-info]. Failed asserting that false is true.

截图:

我做错了什么?

我有一个解决方法。我添加了 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');
        });

我刚遇到同样的问题,我假设它在测试断言时根本不存在,但在截取屏幕截图时出现了。

除了添加 1 秒延迟,您还可以使用 ->waitForText(),这将消除大部分不必要的等待时间。