Расовые условия в Puppeteer / Jest тесты в Docker - PullRequest
0 голосов
/ 24 апреля 2019

Я написал большой тест, используя jest & puppeteer, который выполняет в моем приложении целую кучу вещей.

Когда я запускаю тест локально - все проходит 99% времени.

Когда я запускаю тест в Docker - тест непоследователен в нескольких местах.Почти каждый раз, когда я запускаю тест, обычно происходит сбой при ожидании загрузки селектора.

К сожалению, я не могу поделиться своим кодом здесь, но я могу показать, что я сделал, чтобы смягчить ошибку на основе повторного поиска Iсделано.

  1. размещение вызовов waitFor(< x ms>) после того, как произошла навигация, или до подтверждений
  2. , реализующих шаблон 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

...