sendKeys останавливает тестовый поток e2e в транспортире - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть следующий код:

const inputBoxes = await landingPage.getPortIdInputBox();
await inputBoxes[0].sendKeys('0040');
await inputBoxes[1].sendKeys('9142');

const url: string = await browser.getCurrentUrl();

expect(url).toContain('/profile?fund1=0040&fund2=9142');

Я пишу тестовые примеры e2e для моего приложения Angular 6 с Protractor и Jasmine, все тесты, кажется, работают нормально, но иногда поток останавливается после ввода текста в поля ввода. Он останавливается примерно на минуту, а затем успешно подтверждает результат. У меня есть 2 метода, которые проверяют пользовательский ввод с помощью sendKeys формы метода WebdriverJS, иногда поток останавливается в первой функции, а иногда останавливается во второй функции после ввода текста в поле ввода.

Я даже использую async/awaut, чтобы позаботиться об обещаниях, возвращаемых методами WebdriverJS. Это приводит к ошибке сборки в конвейере CD со следующей ошибкой:

Ошибка: время ожидания - асинхронный обратный вызов не был вызван в течение времени ожидания указывается jasmine.DEFAULT_TIMEOUT_INTERVAL.

Не уверен, куда я иду не так. Локально все тесты проходят хорошо в пределах диапазона времени ожидания, но они терпят неудачу в конвейере CD.

Вот мой файл protractor.conf.js:

const SpecReporter = require('jasmine-spec-reporter').SpecReporter;
const JUnitXmlReporter = require('jasmine-reporters').JUnitXmlReporter;
const ENV = require('../variables.js');
const path = require('path');
const tsNode = require('ts-node');

exports.config = {
  logLevel: 'DEBUG',
  SELENIUM_PROMISE_MANAGER: false,
  allScriptsTimeout: 120000,
  getPageTimeout: 120000,
  specs: [path.join(__dirname, 'src', '**/*.e2e-spec.ts')],
  directConnect: ENV.PROTRACTOR_DIRECT_CONNECT,
  multiCapabilities: ENV.PROTRACTOR_MULTI_CAPABILITIES,
  seleniumAddress: ENV.PROTRACTOR_SELENIUM_ADDRESS,
  chromeDriver: ENV.PROTRACTOR_CHROME_DRIVER,
  resultJsonOutputFile: ENV.TEST_E2E_REPORT_FILE,
  baseUrl: ENV.BASE_URL,
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 120000,
    print: function() {}
  },
  onPrepare() {
    tsNode.register({ project: path.join(__dirname, './tsconfig.e2e.json') });
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
    jasmine.getEnv().addReporter(
      new JUnitXmlReporter({
        savePath: ENV.TEST_E2E_REPORT_DIRECTORY
      })
    );
  }
};
...