Тест Codeceptjs / Puppeteer не проходит ТОЛЬКО на Jenkins: узел либо не отображается, либо не является HTMLElement

У меня есть тест Codeceptjs / Puppeteer, который выполняется локально в контейнерах, организованных Kubernetes и использующих данные, поступающие из AWS.

Пример кода

...
I.waitForVisible('#§Brand§amazon + div', 30);
I.scrollTo('#§Brand§amazon + div', 30); // Jenkins stops here
...

Я тоже пробовал

...
I.waitForVisible('#§Brand§amazon + div', 30);
I.click('#§Brand§amazon + div'); // Jenkins stops here
...

Когда я запускаю тот же тест в конвейере Jenkins (все работает на AWS), всегда с управлением K8S, шаги «I.scrollTo» или «I.click» сбой с сообщением: «Узел либо не виден, либо не является HTMLElement».

Выходные снимки экрана показывают, что страница загружена правильно. Эти скриншоты идентичны как локально, так и в конвейере Jenkins.

Что может быть причиной того, что тесты запускаются локально и терпят неудачу на Jenkins?


person gigiz    schedule 04.06.2019    source источник


Ответы (1)


В конце концов выяснилось, что Дженкинс не имеет отношения к этой проблеме.

Похоже, что Puppeteer может занять некоторое время, прежде чем новый элемент SVG DOM станет интерактивным. Установка I.wait(3) перед щелчком решила проблему.

Более безопасная стратегия - систематически размещать I.retry({retries: 3, maxTimeout: 1000 }).click(selector); перед тем, как что-либо щелкать.

смотрите также

person gigiz    schedule 04.06.2019