Laravel Dusk: как изменить значения конфигурации перед каждым тестом для браузера?

Я пытаюсь изменить некоторые значения конфигурации перед каждым тестом. Однако браузер их не применяет.

В моем файле DuskTestCase:

abstract class DuskTestCase extends BaseTestCase
{
    use CreatesApplication;

    protected function setUp()
    {
        parent::setUp();

        config()->set('cookie-consent.enabled', false);
        config()->set('app.recaptcha', false);
        config()->set('localization.acceptLanguage', false);
    }

    /**
     * Prepare for Dusk test execution.
     *
     * @beforeClass
     * @return void
     */
    public static function prepare()
    {
        static::startChromeDriver();
    }

    ...

Значения конфигурации правильно установлены в каждом тесте, но не для браузера. Когда я удаляю '--disable-gpu', я ясно вижу, что браузер все еще использует старые значения конфигурации.

Как это тоже можно изменить?


person Philipp Mochine    schedule 28.01.2019    source источник
comment
config() не действует, потому что тест Dusk и приложение выполняются в разных процессах. Вы хотите установить эти значения конфигурации для всех тестов Dusk?   -  person Jonas Staudenmeir    schedule 28.01.2019
comment
@JonasStaudenmeir да, я вижу это и нашел обходной путь для моей конкретной проблемы. Но я не совсем понимаю, что вы имеете в виду под all? С DuskTestCase это будет все в моих тестах. Но, как вы сказали, он выполняется в отдельном процессе, поэтому на стороне сервера все еще есть старые файлы конфигурации.   -  person Philipp Mochine    schedule 29.01.2019
comment
Что я имел в виду: если все тесты должны выполняться с этими значениями конфигурации, лучшим решением будет файл .env.dusk.local (см. документация). Я спросил, потому что видел людей, которые хотели изменить значения конфигурации только для определенных тестов, что является более сложным.   -  person Jonas Staudenmeir    schedule 29.01.2019
comment
@JonasStaudenmeir Не могли бы вы узнать, знаете ли вы обходной путь для Dusk для github.com / laravel / framework / issues / теперь, когда DotEnv неизменна? (См. Раздел «Помощник только для чтения» по адресу laravel.com/docs/5.8/upgrade#support) Спасибо!   -  person Ryan    schedule 18.10.2019
comment
@JonasStaudenmeir Я написал это как отдельный вопрос здесь: stackoverflow.com/q/58450836/470749 Заранее благодарим за любую помощь !   -  person Ryan    schedule 18.10.2019


Ответы (1)


Чтобы получить такой подход:

$browser
  ->withConfig(['currency' => 'EUR'])
  ->visit('/')
  // -> ..

Вам нужно будет добавить и зарегистрировать промежуточное ПО, переопределить браузер и зарегистрировать его в DuskTestCase. Подробности здесь: https://gist.github.com/wrabit/e01df16858505c395b7b0d271112a023

person digout    schedule 04.11.2020