gemini-testing / testplane

Testplane (ex-hermione) browser test runner based on mocha and wdio
https://testplane.io
MIT License
687 stars 62 forks source link

moveCursorTo не идентичен moveTo в hermione 7 (move target out of bounds) #878

Closed hheimerd closed 3 months ago

hheimerd commented 5 months ago

Verify latest release

Hermione version

8.5.0

Which area(s) of Hermione are affected? (leave empty if unsure)

No response

Link to the code that reproduces this issue or a replay of the bug

https://github.com/gemini-testing/hermione/blob/4dc6c2fd812e6a3c9d4d82671d59187049d52761/src/browser/commands/moveCursorTo.ts#L27

Reproduction steps

  1. создать окно браузера высотой в 900px
  2. сделать body высотой 2000px
  3. прокрутить окно вниз на 200px 4.1. вызвать browser.$('body').moveCursorTo() 4.2 вызвать browser.$('body').moveCursorTo({yOffset: 1200})

Describe the Bug

В обоих случаях произойдет ошибка "move target out of bounds"

Предполагаю это из-за того, что вьюпорт высотой 900px, а move происходит за его пределы (-200px и 1200px) соответственно.

Expected Behavior

Должен происходить сролл до нужного участка и мышь должна встать в указанную точку вне зависимости от размера вьюпорта.

Which Node.js version are you using?

20.10.0

hheimerd commented 5 months ago

Еще в отличии от оригинальной реализации, в этой реализации проверка на typeof xOffset === 'number' не имеет смысла, так как в определении функции ставятся нули https://github.com/gemini-testing/hermione/blob/4dc6c2fd812e6a3c9d4d82671d59187049d52761/src/browser/commands/moveCursorTo.ts#L14

hheimerd commented 5 months ago

moveTo({xOffset: -width / 2, yOffset: -height / 2 }) тоже не работает, так что возможно снова стал актуален этот баг https://github.com/webdriverio/webdriverio/issues/4206

shadowusr commented 5 months ago

Thanks for your report. We'll look at this problem as soon as possible — the next responsible will pick it up. It's weird it doesn't match wdio7 behaviour, since we used almost the same code to implement this.


Спасибо за репорт, посмотрим как только будет возможность — следующий ответственный подхватит эту проблему. Странно, что поведение не совпадает с wdio7, т.к. мы брали код почти без изменений.

KuznetsovRoman commented 4 months ago

@hheimerd, Действительно, у меня получилось воспроизвести ошибку с moveCursorTo. Однако та же самая ошибка получается от использования чистого moveTo с webdriver@8.20. Мы бы предпочли тут сохранить оригинальное поведение moveTo в webdriverio@8.20 и кидать ошибку в тех же случаях, в которых ее кидает webdriverio.

Причем интересно, что эта ошибка летит только при использовании webdriver протокола автоматизации. С devtools ошибок нет.

Если есть какой-нибудь пример, в котором hermione@7 в таком случае не кидает ошибку - приносите, посмотрим.

DudaGod commented 3 months ago

Closed due to inactivity.