Получить Laravel Dusk для правильной работы на Ubuntu 16 wt Laravel 5.5
Я пытаюсь интегрировать Laravel Dusk в мою схему тестирования в течение недели и не могу получить никакого теста, чтобы фактически доставить ожидаемые результаты. Здесь ситуация:
- Я запускаю Laravel 55 на Homestead (для каждого проекта) с php 7.1. *
- Я установил Dusk после шагов установки в документах.
Из коробки тесты не работали
-
Я добавил шаги, описанные в этой статье, в "Laravel Dusk on Homestead", и этот пункт найден в "setup-headless-selenium-xvfb.sh" в моем файле инициализации. Это устранило множество исключений, которые я получал.
-
Я также добавил все мои существующие окружения vars в php-узел моего файла phpunit.dusk.xml
точно так же, как это было сделано в уже успешно запущенных тестах phpunit.xml
из 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
.
Я в недоумении. Сумерки отправляются в нужное место, и страница определенно имеет вход и значение. Но я не могу заставить Dusk дать ожидаемый результат, который был бы тем, что 12345 был извлечен из элемента.
Вся помощь была оценена.
Ответы
Ответ 1
возможно, то, что я говорю, неправильно... но Laravel dusk, кажется, нуждается в dusk
вместо id
: like dusk="dusk-test"
. также вызывайте его после: $browser->visit('/')>refresh() ->assertValue('@dusk-test', '1234')
и это должно быть похоже на документ.
Ответ 2
На Github кто-то решил свою проблему, заменив https://
на http://
в файле .env
.