Laravel Сумерки утверждая для 404 ошибок

Я пытаюсь использовать Laravel Dusk для проверки 404 не найдена ошибка. Особенно при загрузке изображения. После прочтения документации по сумраку laravel я не нашел никаких подтверждений, которые могли бы помочь мне проверить, возникает ли исключение 404.

Есть ли хороший способ получить тест браузера, чтобы узнать, не удалось ли загрузить ресурс или это просто невозможно?

3 ответа

Решение

Умышленно нет способа получить доступ к кодам HTTP-статуса:

https://github.com/laravel/dusk/issues/422
https://github.com/facebook/php-webdriver/issues/470

В моем случае я боролся с этим часами. Я прочитал ответ @Robert Davids, но не знал, что с ним делать. Аdd($browser->driver->manage()->getLog('browser');позвольте мне посмотреть, что было возвращено. Мне пришлось углубиться в него, чтобы получить только строку сообщения.

      ..array:1 [ // tests/Browser/test_404_is_given.php:56
  0 => array:4 [
    "level" => "SEVERE"
    "message" => "https://example.com/customer/fa866b18-ccd9-11ed-8b33-cdf257dc49d8 - Failed to load resource: the server responded with a status of 404 (Not Found)"
    "source" => "network"
    "timestamp" => 1687317936976
  ]
]

Вот мой рабочий код, который сочетает в себеassertStringContainsString, обход массива и журналы браузера для успешного тестирования на странице 404.

          public function test_404_is_given(): void
    {
        $this->browse(function (Browser $browser) {
            $browser->visit('/url_that_will_generate_404')
            $this->assertStringContainsString("404", $browser->driver->manage()->getLog('browser')[0]["message"]);

            //dd($browser->driver->manage()->getLog('browser')[0]["message"]);
        });
    }

Вы можете использовать browser -> driver -> manage() -> getLog('browser') чтобы получить журнал и посмотреть, есть ли ошибка 404

Другие вопросы по тегам