В настоящее время я немного застрял с отзывчивыми функциями behat +, которые появляются / исчезают в заданные точки останова на экране.
Первым делом было бы создать теги для фильтрации функций для устройств.
подобно
@iphone или @mobile и так далее.
Это становится действительно грязным, если вы тестируете на нескольких устройствах с несколькими размерами экрана / ориентации.
Тогда мы бы получили:
@ iphone5c_hor
@ iphone5c_vert
@ iphone5s_hor
@ iphone5s_vert
@samsung …_ верт
Моя вторая попытка состояла в том, чтобы пометить объекты тегом минимальной ширины, например min-width: 700 и использовать контекст объекта и веб-драйвер, чтобы определить, поддерживает ли текущий браузер, на котором я работаю, функцию, которую я пытаюсь запустить.
Это работает до этого момента:
/**
* @BeforeFeature
*
* @param \Behat\Behat\Hook\Scope\BeforeFeatureScope|BeforeScenarioScope $scope
*/
public function prepareForTheScenario(BeforeScenarioScope $scope)
{
if (!$this->checkWindowWidth($scope)) {
// TODO: skip scenario here
}
}
Кто-нибудь имел опыт работы с такого рода динамическими тестами, я иду по неверному пути, и если нет, то как я могу заставить это работать?
Я решил это сам, создав Behat-Extension, который поддерживает мои потребности. (https://github.com/2bepublished/BehatResponsiveFeaturesExtension)
У меня были похожие проблемы, и мне пришлось установить размер окна браузера, чтобы избавиться от этой проблемы. Интересно, если это помогает тебе (проверьте это, пожалуйста).
То, что я сделал, было:
Просто установите размер окна на что-то большее, чтобы меню не сдавалось при тестировании. Вы можете изменить размер экрана с 1024X768 на что-то еще, как вы хотите.
#symfony/src/Site/CommonBundle/Features/Context/FeatureContext.php
/**
* @BeforeStep
*/
public function beforeStep()
{
$this->getSession()->resizeWindow(1024, 768, 'current');
}