Size: a a a

JavaScript testing

2020 December 05

AP

Alexey Panashchenko in JavaScript testing
Діма Потапов
Всем привет, вопрос не по JS. Был ли у кого-либо опыт использования katalon, если да поделитесь опытом, можно в ЛС
Я видел как оно выглядит и чутка занимался, там по-моему, толко логин тест можно без боли написать, дальше жопа
источник
2020 December 06

NA

Nikolay Aleksandrovi... in JavaScript testing
гайс, подскажите, пожалуйста
wdio v5
никак не могу понять, почему getLocation() возвращает дробное значение
по идее он использует getElementRect() из w3c
который, как написано в документации (https://www.w3.org/TR/webdriver1/#get-element-rect) должен возвращать CSS pixels, так откуда дробное значение-то?
scrollX, scrollY у элемента 0, проверял, дело не в этом
просто стабильно получаю очень странное дробное значение по иксу

[0-0] rect: { height: 3, width: 220, x: 754.828125, y: 328 }

что в хэдлесс, что в хэдфулл режиме в Хроме 87

из-за этого приходится использовать Math.floor или round со значений, полученных с помощью getLocation для .click (потому что pointerMove принимает только int)
а из-за этого, в свою очередь, может "шататься" значение, которое я проверяю, и приходится, как говорит основатель этой группы, "приседать" с toBeNear вместо toBe в жасмине
источник

OK

Oleksandr Khotemskyi in JavaScript testing
Nikolay Aleksandrovich
гайс, подскажите, пожалуйста
wdio v5
никак не могу понять, почему getLocation() возвращает дробное значение
по идее он использует getElementRect() из w3c
который, как написано в документации (https://www.w3.org/TR/webdriver1/#get-element-rect) должен возвращать CSS pixels, так откуда дробное значение-то?
scrollX, scrollY у элемента 0, проверял, дело не в этом
просто стабильно получаю очень странное дробное значение по иксу

[0-0] rect: { height: 3, width: 220, x: 754.828125, y: 328 }

что в хэдлесс, что в хэдфулл режиме в Хроме 87

из-за этого приходится использовать Math.floor или round со значений, полученных с помощью getLocation для .click (потому что pointerMove принимает только int)
а из-за этого, в свою очередь, может "шататься" значение, которое я проверяю, и приходится, как говорит основатель этой группы, "приседать" с toBeNear вместо toBe в жасмине
А в v6 так же?
источник

BO

Boris Osipov in JavaScript testing
Nikolay Aleksandrovich
гайс, подскажите, пожалуйста
wdio v5
никак не могу понять, почему getLocation() возвращает дробное значение
по идее он использует getElementRect() из w3c
который, как написано в документации (https://www.w3.org/TR/webdriver1/#get-element-rect) должен возвращать CSS pixels, так откуда дробное значение-то?
scrollX, scrollY у элемента 0, проверял, дело не в этом
просто стабильно получаю очень странное дробное значение по иксу

[0-0] rect: { height: 3, width: 220, x: 754.828125, y: 328 }

что в хэдлесс, что в хэдфулл режиме в Хроме 87

из-за этого приходится использовать Math.floor или round со значений, полученных с помощью getLocation для .click (потому что pointerMove принимает только int)
а из-за этого, в свою очередь, может "шататься" значение, которое я проверяю, и приходится, как говорит основатель этой группы, "приседать" с toBeNear вместо toBe в жасмине
ты читаешь секцию NOTE - All diagrams, examples, and notes in this specification are non-normative, as are all sections explicitly marked non-normative. Everything else in this specification is normative.
источник

BO

Boris Osipov in JavaScript testing
там дальше в шагах написано что Let rect be element’s bounding rectangle. а bounding rectangle как раз в double все.
источник

SC

Sergey Chepets in JavaScript testing
Привет. Какую либу порекомендуете для работы с конфигами.
Что-бы выполняла мерж глобального и локального конфига, что бы имела настраиваемые опции мержа, например поведение при мерже массивов. Удобные методы получения значений.
источник

AP

Alexander Popov in JavaScript testing
Sergey Chepets
Привет. Какую либу порекомендуете для работы с конфигами.
Что-бы выполняла мерж глобального и локального конфига, что бы имела настраиваемые опции мержа, например поведение при мерже массивов. Удобные методы получения значений.
Lodash
источник

SC

Sergey Chepets in JavaScript testing
да, я уже собрался свое написать, но потом подумал, что может уже кто-то придумал велосипед до меня
источник

P

Paul G in JavaScript testing
Всем привет, если в чатике есть люди с хорошим бекграундом manual части senior уровня и с пониманием automation и вы сейчас в поиске нового места работы, пишите в лс.
источник

NA

Nikolay Aleksandrovi... in JavaScript testing
Boris Osipov
там дальше в шагах написано что Let rect be element’s bounding rectangle. а bounding rectangle как раз в double все.
так, окей, ну допустим
но а как в реальности? элементы же не рисуются дробными долями пикселей,  как-то можно получить информацию precisely с какой координаты нарисован элемент, floor или seeling этого дробного значения?
просто говорю, от этого завсит попадёт ли клик по элементу или нет
не, конечно можно какой-нибудь костыль с if-ом написать, но это как-то некрасиво и время исполнения тестов сильно снизит
источник

NA

Nikolay Aleksandrovi... in JavaScript testing
Oleksandr Khotemskyi
А в v6 так же?
да, аналогично
источник

BO

Boris Osipov in JavaScript testing
Nikolay Aleksandrovich
так, окей, ну допустим
но а как в реальности? элементы же не рисуются дробными долями пикселей,  как-то можно получить информацию precisely с какой координаты нарисован элемент, floor или seeling этого дробного значения?
просто говорю, от этого завсит попадёт ли клик по элементу или нет
не, конечно можно какой-нибудь костыль с if-ом написать, но это как-то некрасиво и время исполнения тестов сильно снизит
> элементы же не рисуются дробными долями пикселей
а в чем проблема, почему не рисуются?  как минимум, кажется, при указании размеров в процентах, можно легко получить дробные значения.

>как-то можно получить информацию precisely с какой координаты нарисован элемент, floor или seeling этого дробного значения?

ну... округли в чем проблема то? ну и кликая в центр.
источник

NA

Nikolay Aleksandrovi... in JavaScript testing
>а в чем проблема, почему не рисуются?  как минимум кажется при указании размеров в процентах, можно легко получить дробные значения

ну а как это выглядит? почему тогда в клик нельзя передавать дробное значение, а только int?

>ну... округли в чем проблема то? ну и кликая в центр.

ну если бы не было проблемы, я бы и не писал
проблема в том, что это используется в слайдере, по которому нужно чётко на границу щёлкать, чтобы минимальное значение выбиралось, пиксель вправо-влево, будет либо непопадание по элементу, либо уже другое значение
источник

BO

Boris Osipov in JavaScript testing
Nikolay Aleksandrovich
>а в чем проблема, почему не рисуются?  как минимум кажется при указании размеров в процентах, можно легко получить дробные значения

ну а как это выглядит? почему тогда в клик нельзя передавать дробное значение, а только int?

>ну... округли в чем проблема то? ну и кликая в центр.

ну если бы не было проблемы, я бы и не писал
проблема в том, что это используется в слайдере, по которому нужно чётко на границу щёлкать, чтобы минимальное значение выбиралось, пиксель вправо-влево, будет либо непопадание по элементу, либо уже другое значение
не верю что юзер должен пиксельхантингом заниматься, чтобы слайдер использовать)
источник

NA

Nikolay Aleksandrovi... in JavaScript testing
юзер не должен, а вот тест, чтобы не быть flaky - должен
источник

BO

Boris Osipov in JavaScript testing
>ну а как это выглядит? почему тогда в клик нельзя передавать дробное значение, а только int?

ну это вопрос к авторам спеки. мне тоже не понятно зачем туда double передавать
источник

BO

Boris Osipov in JavaScript testing
Nikolay Aleksandrovich
юзер не должен, а вот тест, чтобы не быть flaky - должен
ну тут никто тебе ничего не посоветует. я же не знаю что там у тебя и как..
источник

NA

Nikolay Aleksandrovi... in JavaScript testing
ну суть проблемы я изложил, и она связана именно с этими дробными значениями и кликом
обходные пути есть, но я пытался глубже суть явления понять

>зачем туда double передавать?
ну вот как раз пример зачем
если значения границ/координат элемента возвращаются в double, то и клик соответственно должен МОЧЬ принимать дабл, это логично
источник

BO

Boris Osipov in JavaScript testing
>и она связана именно с этими дробными значениями и кликом
я очень сильно в этом сомневаюсь.
источник

NA

Nikolay Aleksandrovi... in JavaScript testing
ну а чём тогда по твоему мнению?
я беру getLocation слайдера, по которому мне нужно щёлкать
координата x возвращается с дробным значением
в клик я это дробное значение передать не могу, приходится использовать округления
из-за этого в разных кейсах клик либо будет попадать на границу элемента, либо нет

где ошибка?
источник