Я написал большой тест, используя jest & puppeteer, который выполняет в моем приложении целую кучу вещей.
Когда я запускаю тест локально - все проходит 99% времени.
Когда я запускаю тест в Docker - тест непоследователен в нескольких местах.Почти каждый раз, когда я запускаю тест, обычно происходит сбой при ожидании загрузки селектора.
К сожалению, я не могу поделиться своим кодом здесь, но я могу показать, что я сделал, чтобы смягчить ошибку на основе повторного поиска Iсделано.
- размещение вызовов
waitFor(< x ms>)
после того, как произошла навигация, или до подтверждений - , реализующих шаблон
Promise.all
, как предложено в документах puppeteer для событий клика.Примерно так:
async singleClickElement(selector, page) {
try {
await Promise.all([
page.waitForSelector(selector),
page.click(selector)
]);
} catch (error) {
console.error(error)
}
}
возиться с настройками sloMo
(мне кажется, 17 - наиболее удачное число для меня, учитывая, что наши переходы css по умолчанию - .4s)
с использованием screenshots
сделать фото до / после в местах, где тест не пройден
Некоторые правки, которые я забыл упомянуть
мои аргументы --forceExit --runInBand --detectOpenHandles
мой тайм-аут увеличен до минимума jest.setTimeout(60000)
аргументы браузера '--window-size=2560,1080', '--no-sandbox', '--disable-setuid-sandbox', '--enable-logging=stderr', '--v=1'
У меня заканчиваются идеи и я ищу предложения о том, как я могу смягчить условия гонки в Docker при выполнении тестов пользовательского интерфейса.Пожалуйста, не стесняйтесь предложить что-нибудь, что, по вашему мнению, может мне помочь.Спасибо: D