testplane
testplane copied to clipboard
Не работает ховер, если страницу нужно просколлить
Привет! Не уверена, что ишью к вам, а не к webdriverio, но пока попробую сюда, может быть подскажете)
Проблема следующая:
- нужно проверить состояние какого-либо элемента на ховер
- нужный элемент находится вне вьюпорта, до него нужно доскроллить
- на скриншоте с этого элемента – элемент в обычном состоянии, без ховера
Пример:
it('test', async ({ browser }) => {
await browser.url('https://translate.yandex.ru');
await browser.assertView('doc', '.header-nav-link:nth-child(2)');
await browser.$('.header-nav-link:nth-child(2)').moveTo();
await browser.assertView('doc-hovered', '.header-nav-link:nth-child(2)', {
screenshotDelay: 200
});
await browser.$('a[href*="0488000000"]').scrollIntoView();
await browser.$('a[href*="0488000000"]').moveTo();
await browser.assertView('footer-text-hovered', 'a[href*="0488000000"]', {
screenshotDelay: 200
});
});
Получается, что ссылка из навигации в шапке скриншотится как нужно, с ховером. А та, что в футере, без ховера, хотя должна:
Вопрос: как это можно починить?
Привет.
А в каком браузере запускаешь и с какими настройками? Проверил на chrome@101 и получил следующий результат:
Браузер Chrome. Судя по логам, 115 версия. Или может я не там смотрю
Настройки вот такие:
{
gridUrl: 'http://localhost:4444/wd/hub',
compositeImage: true,
screenshotsDir: 'references',
sessionsPerBrowser: 5,
tolerance: 5,
antialiasingTolerance: 4,
browsers: {
chrome: {
retry: 5,
automationProtocol: 'devtools',
desiredCapabilities: {
browserName: 'chrome',
'goog:chromeOptions': {
args: [
'headless',
'--hide-scrollbars'
]
}
},
windowSize: {
width: 1440,
height: 900
}
},
}
}
Проблему воспроизвел. Действительно, при запуске теста с использованием devtools скриншот с текстом "Переводите в Яндекс Браузере" снимается как будто без ховера.
Постараюсь подебажить на днях.
Похожая проблема, после обновления на 7.4.1 версию (и вероятно на webdriverio 8) выглядит будто метод moveTo не триггерит mouseover на элементе.
Похожая проблема, после обновления на 7.4.1 версию (и вероятно на webdriverio 8) выглядит будто метод
moveToне триггеритmouseoverна элементе.
Сам написал, сам решил проблему, сам отвечу (похоже у меня другой кейс), но проблема была в неверно выставленом mobileEmulation
Похожая проблема, после обновления на 7.4.1 версию (и вероятно на webdriverio 8) выглядит будто метод
moveToне триггеритmouseoverна элементе.Сам написал, сам решил проблему, сам отвечу (похоже у меня другой кейс), но проблема была в неверно выставленом
mobileEmulation
привет
а покажи, плз, дифф твоих настроек (как не работало и что изменил, чтобы заработало). Думаю, что кому-то в истории это точно пригодится
Помимо обновления версии мне нужно было оторвать пакет @какое-то-название-int/frontend-hermione-config, в нём был get-browsers, эти настройки дополнялись на уровне нашего проекта. Из-за бага всем браузерам доставился mobileEmulation в тч и 'linux-chrome'.
Вероятно, это крайне специфичная история. Но если не работает moveTo в том числе стоит проверить настройки браузера.