Транспортир / jasmine проверяет время ожидания в Jenkins

#shell #jenkins #cmd #jasmine #protractor

#оболочка #дженкинс #cmd #jasmine #транспортир

Вопрос:

У меня и моей команды есть набор из 122 тестов protractor. Тесты jasmine просты

  1. войдите в систему
  2. перейдите на страницу
  3. заполните форму
  4. подтвердите результаты

Тесты написаны с использованием protractor 5.4, jasmine 3.3 и type script 3.1 и выполняются с использованием NodeJS 10.5.3, npm 6.9.0. Наши тесты нацелены на удаленный сервер разработки.

запуск следующих команд как на моей локальной, так и на удаленной машинах, тесты проходят успешно.

  • откройте cmd
  • git clone ...
  • cd repo-name
  • npm install
  • npm run e2e:dev

тесты выполняются с использованием браузера Chromium без заголовков. вот конфигурация e2e

 exports.config = {
  specs: [
    './src/**/*.e2e-spec.ts'
  ],
  capabilities: {
    'browserName': 'chrome',
    chromeOptions: {
      args: [
        'headless',
        'disable-gpu',
        'window-size=1024,1536',
        'disable-browser-side-navigation',
        'disable-web-security'
      ],
      useAutomationExtension: false,
      prefs: {
        'download': {
          'prompt_for_download': false,
          'directory_upgrade': true,
          'default_directory': path.resolve("./target/downloads")
          }
        }
      }      
  },
  directConnect: true,
  baseUrl: '[internal server url]',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true
  },
  onPrepare() {
    rmDir(path.resolve("./target/downloads"));
    require('ts-node').register({
      project: require('path').join(__dirname, './tsconfig.e2e.json')
    });
    var environment = jasmine.getEnv();
    environment.addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
    environment.addReporter(new jasmineReporters.JUnitXmlReporter({
        savePath: 'target/junitreporter',
        consolidateAll: true,
        captureStdout: true
      })
    );
  }
};
  

Jenkins работает как служба Windows, используя учетную запись домена с правами локального администратора. До 12 марта задание успешно выполнялось каждую неделю в 10 часов вечера. начиная с 12 марта задание завершается неудачей, потому что в 30-40 тестах истекают тайм-ауты jasmine.
31m Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL
Мы попытались увеличить время ожидания по умолчанию, но это не решило проблему.

Мы запускаем Jenkins 2.169 на Java 1.8. Я исключил файлы конфигурации RAM, AV и проекта. Действительно кажется, что виноваты пакетные команды Jenkins 2.169 Windows, и я не уверен, как это решить.

Мы также пытались запускать команды, используя оболочку git bash от Jenkins, и мы получаем те же результаты.

Кто-нибудь еще сталкивался с подобной проблемой, и смогли ли вы ее решить?

Комментарии:

1. проходит ли неудачный тест при локальном запуске?. И один и тот же тест не выполняется ежедневно?

2. да, неудачные тесты проходят локально, и когда я захожу на удаленный сервер и запускаю тесты, используя ту же учетную запись, запускается Jenkins.

3. Большинство одних и тех же тестов постоянно завершаются неудачей. существует менее 10 периодических сбоев. Похоже, чем больше шагов в тесте, тем больше вероятность сбоя.

4. Поскольку прошло несколько дней, и теперь скрипты выходят из строя из-за несогласованности, сбой может быть связан с недавним обновлением jenkins, библиотек узлов и версии chrome на удаленном компьютере. Можете ли вы подтвердить, что версии были одинаковыми несколько дней назад, и ни одна из них не обновлялась?

5. Мы постоянно обновляем jenkins и плагины. Я знаю, что было по крайней мере 1 обновление jenkins и около дюжины обновлений плагинов. За 3 года его работы это первый случай, когда обновление прервало сборку.