Код: Выделить всё
public void waitForOrReload(Page page, Locator locator) {
try {
debug("waitForOrReload");
locator.waitFor(new Locator.WaitForOptions().setTimeout(5000));
} catch (PlaywrightException e) {
debug("Reloading because of PlaywrightException: %s", e.getMessage());
page.reload();
debug("waitForOrReload again");
locator.waitFor(new Locator.WaitForOptions().setTimeout(5000));
}
}
Он выполняется в контейнере докера в конвейере gitlab-ci, и когда Тестируемый веб-сайт замедляется (>5 с), выдается исключение. После этого страницу следует перезагрузить. Для метода перезагрузки не задано никаких параметров, поэтому время ожидания по умолчанию должно составлять 30 секунд согласно https://playwright.dev/java/docs/api/cl ... age-reload. Я проверил, не перезаписываю ли я где-нибудь этот тайм-аут, но точно не знаю.
Обычно код работает нормально, но время от времени конвейер зависает, пока gitlab не выведет его из строя. В этом случае в журнал записывается следующее:
Код: Выделить всё
2024-10-26T10:46:03.275Z [DEBUG] waitForOrReload
2024-10-26T10:46:03.276Z pw:api => Locator.waitFor started
2024-10-26T10:46:03.364Z pw:api waiting for getByLabel(Pattern.compile("foo")).first() to be visible
2024-10-26T10:46:08.371Z pw:api waiting for navigation until "load"
2024-10-26T10:46:08.367Z pw:api
Подробнее здесь: [url]https://stackoverflow.com/questions/79129040/playwright-hangs-forever-on-page-reload[/url]