Получить 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.