testplane icon indicating copy to clipboard operation
testplane copied to clipboard

Не работает ховер, если страницу нужно просколлить

Open AdelFattakhova opened this issue 2 years ago • 7 comments

Привет! Не уверена, что ишью к вам, а не к webdriverio, но пока попробую сюда, может быть подскажете)

Проблема следующая:

  1. нужно проверить состояние какого-либо элемента на ховер
  2. нужный элемент находится вне вьюпорта, до него нужно доскроллить
  3. на скриншоте с этого элемента – элемент в обычном состоянии, без ховера

Пример:

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
    });
});

Получается, что ссылка из навигации в шапке скриншотится как нужно, с ховером. А та, что в футере, без ховера, хотя должна:

Снимок экрана 2023-07-31 в 17 42 56

Вопрос: как это можно починить?

AdelFattakhova avatar Jul 31 '23 14:07 AdelFattakhova

Привет.

А в каком браузере запускаешь и с какими настройками? Проверил на chrome@101 и получил следующий результат:

Screenshot 2023-08-07 at 13 06 12

DudaGod avatar Aug 07 '23 10:08 DudaGod

Браузер Chrome. Судя по логам, 115 версия. Или может я не там смотрю

image

Настройки вот такие:

{
  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
      }
    },
  }
}

AdelFattakhova avatar Aug 07 '23 18:08 AdelFattakhova

Проблему воспроизвел. Действительно, при запуске теста с использованием devtools скриншот с текстом "Переводите в Яндекс Браузере" снимается как будто без ховера.

Постараюсь подебажить на днях.

DudaGod avatar Aug 08 '23 20:08 DudaGod

Похожая проблема, после обновления на 7.4.1 версию (и вероятно на webdriverio 8) выглядит будто метод moveTo не триггерит mouseover на элементе.

denisbalyko avatar Dec 26 '23 17:12 denisbalyko

Похожая проблема, после обновления на 7.4.1 версию (и вероятно на webdriverio 8) выглядит будто метод moveTo не триггерит mouseover на элементе.

Сам написал, сам решил проблему, сам отвечу (похоже у меня другой кейс), но проблема была в неверно выставленом mobileEmulation

denisbalyko avatar Dec 26 '23 18:12 denisbalyko

Похожая проблема, после обновления на 7.4.1 версию (и вероятно на webdriverio 8) выглядит будто метод moveTo не триггерит mouseover на элементе.

Сам написал, сам решил проблему, сам отвечу (похоже у меня другой кейс), но проблема была в неверно выставленом mobileEmulation

привет

а покажи, плз, дифф твоих настроек (как не работало и что изменил, чтобы заработало). Думаю, что кому-то в истории это точно пригодится

sipayRT avatar Jan 29 '24 15:01 sipayRT

Помимо обновления версии мне нужно было оторвать пакет @какое-то-название-int/frontend-hermione-config, в нём был get-browsers, эти настройки дополнялись на уровне нашего проекта. Из-за бага всем браузерам доставился mobileEmulation в тч и 'linux-chrome'. Вероятно, это крайне специфичная история. Но если не работает moveTo в том числе стоит проверить настройки браузера.

denisbalyko avatar Jan 29 '24 16:01 denisbalyko