Тест Codeceptjs / Puppeteer не выполняется ТОЛЬКО на Дженкинсе: «Узел либо не виден, либо не является элементом HTMLE» - PullRequest
2 голосов
/ 04 июня 2019

У меня есть тест 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?

1 Ответ

0 голосов
/ 04 июня 2019

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

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

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

см. Также

...