Фокус тестирования в Laravel Dusk

Мне интересно, есть ли способ проверить, где на странице установлен фокус, используя Laravel Dusk. У меня есть форма, первый элемент которой всегда должен получать фокус при загрузке страницы. Я не вижу ничего очевидного в документации Dusk для этого. Я использую Ларавель 5.5.


person Amy Lashley    schedule 10.04.2018    source источник


Ответы (1)


Использовать это:

$element = $browser->element($selector);
$this->assertTrue($browser->driver->switchTo()->activeElement()->equals($element));

ОБНОВЛЕНИЕ: в Dusk 3.0.8 вы можете использовать assertFocused() и assertNotFocused().

person Jonas Staudenmeir    schedule 10.04.2018
comment
К сожалению, похоже, что assertTrue не является допустимым утверждением, по крайней мере, в версии 5.5. laravel.com/docs/5.5/dusk#available-assertions - person Amy Lashley; 11.04.2018
comment
assertTrue() является частью PHPUnit, а не Dusk. Вы пробовали? - person Jonas Staudenmeir; 11.04.2018
comment
Я вижу, что документация для Dusk действительно не впечатляет. Как человек, который плохо знаком с автоматическим тестированием, я не вижу четкой информации о том, как работает Dusk и как я могу использовать с ним нативные методы PHPUnit. У меня есть слегка измененная версия вашего кода, которая работает, но не работает. Так что я буду ковыряться в нем, пока не заработаю. Это также может быть связано с тем, что я использую Vue.js для установки фокуса. - person Amy Lashley; 11.04.2018
comment
Это всегда уязвимо для проблем со временем. Попробуйте что-то вроде sleep(1); перед проверкой фокуса. - person Jonas Staudenmeir; 11.04.2018
comment
В Dusk 3.0.8 вы можете использовать assertFocused() и assertNotFocused(). - person Jonas Staudenmeir; 01.05.2018