Я пытался интегрировать Laravel Dusk в свою схему тестирования в течение недели и не могу получить ни одного теста, который бы действительно дал ожидаемые результаты. Вот ситуация:
Из коробки тесты не сработали
Я добавил шаги, найденные в эта статья на тему «Laravel Dusk на усадьбе» и суть найдена здесь, в «setup-headless-selenium-xvfb.sh» это в моем файле обеспечения. Это удалило много исключений, которые я получал.
Я также добавил все существующие переменные окружения в узел php моего phpunit.dusk.xml
файл точно так, как они были сделаны в уже успешно запущенных тестах phpunit из phpunit.xml
Однако теперь, когда я запускаю тесты, я просто не могу получить ожидаемый результат. Это то, что я делаю. Я добавляю поле ввода в файл просмотра моей домашней страницы (‘/’) следующим образом: <input id="dusk-test" value="1234">
Я запускаю этот тест, который является модом оригинального примера теста и является единственным тестом:
<?php
namespace Tests\Browser;
use Tests\DuskTestCase;
use Laravel\Dusk\Browser;
class ExampleTest extends DuskTestCase
{
public function testBasicExample()
{
$this->browse(function (Browser $browser)
{
$browser->visit('/')->refresh()
->assertValue('#dusk-test', '1234')
;
});
}
}
…запустив php artisan dusk
и это мой вывод КАЖДЫЙ раз
PHPUnit 6.4.3 by Sebastian Bergmann and contributors.
E 1
/ 1 (100%)
Time: 1.07 seconds, Memory: 12.00MB
There was 1 error:
1) Tests\Browser\ExampleTest::testBasicExample
Facebook\WebDriver\Exception\NoSuchElementException: no such element:
Unable to locate element: {"method":"id","selector":"dusk-test"}
(Session info: headless chrome=62.0.3202.62)
(Driver info: chromedriver=2.32.498513 (2c63aa53b2c658de596ed550eb5267ec5967b351),platform=Linux 4.4.0-92-generic x86_64)/home/vagrant/landing/vendor/facebook/webdriver/lib/Exception/WebDriverException.php:102 /home/vagrant/landing/vendor/facebook/webdriver/lib/Remote/HttpCommandExecutor.php:320
/home/vagrant/landing/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:535
/home/vagrant/landing/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:175
/home/vagrant/landing/vendor/laravel/dusk/src/ElementResolver.php:281
/home/vagrant/landing/vendor/laravel/dusk/src/ElementResolver.php:327
/home/vagrant/landing/vendor/laravel/dusk/src/Concerns/MakesAssertions.php:632
/home/vagrant/landing/tests/Browser/ExampleTest.php:22
/home/vagrant/landing/vendor/laravel/dusk/src/TestCase.php:92
/home/vagrant/landing/tests/Browser/ExampleTest.php:24
ERRORS!
Tests: 1, Assertions: 0, Errors: 1.
Чтобы сделать это еще более запутанным, это мой вывод, когда я выкидываю из теста. Вот как я сбрасываю
<?php
namespace Tests\Browser;
use Tests\DuskTestCase;
use Laravel\Dusk\Browser;
class ExampleTest extends DuskTestCase
{
/**
* A basic browser test example.
*
* @return void
*/
public function testBasicExample()
{
$this->browse(function (Browser $browser)
{
$browser->visit('/')
->dump()
;
});
}
}
и мой вывод после запуска php artisan dusk
снова
PHPUnit 6.4.3 by Sebastian Bergmann and contributors.
"<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body></body></html>"
Который абсолютно НЕ моя домашняя страница. Я также бросил $url
значение от vendor/laravel/dusk/src/Browser.php
и получил мои проекты правильно APP_URL
,
Я в недоумении. Сумерки отправляются в правильном месте, и страница определенно имеет вход и значение. Но я не могу заставить Сумерки дать ожидаемый результат, который был бы таким, что 12345 было получено из элемента.
Вся помощь приветствуется.
может быть, то, что я говорю, неправильно … но сумрак Ларавела, кажется, нужен dusk
вместо id
: лайк dusk="dusk-test"
, также назвать это после:
и это должно быть похоже на док.
$browser->visit('/')>refresh()
->assertValue('@dusk-test', '1234')
На Github кто-то решил свою проблему, заменив https://
с http://
в .env
файл.