AngularJS транспортир: случайный сбой в режиме без головы (Firefox) - PullRequest
0 голосов
/ 04 декабря 2018

Вот мой файл настроек.

exports.config = {
  rootElement: '[ng-app="myapp"]',
  framework: 'jasmine',
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['./web/assets/e2e/**/*protractor.js'],
  SELENIUM_PROMISE_MANAGER: false,
  baseUrl: 'https://localhost',
  capabilities: {
    browserName: 'firefox',
    marionette: true,
    acceptInsecureCerts: true,
    'moz:firefoxOptions': {
      args: ['--headless'],
    },
  }
}

Так что с этой конфигурацией мои тесты случайно проваливаются со следующей ошибкой

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

Но!Когда я закомментирую следующие строки

    'moz:firefoxOptions': {
      args: ['--headless'],
    },

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

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

  it('- should test add button open a form', async () => {
    await ClientListPageDriver.openAddClientForm();

    await FormDriver.toBeShown('Add New Client');

    await FormDriver.pressClose();
  });

А вот методы из драйверов, на которые я ссылаюсь

  this.openAddClientForm = async () => {
    const button = await $('button[ng-click="$ctrl.addClient()"]');
    await button.click();
  };

  this.toBeShown = async (title) => {
    const modalElement = await $('#form').element(by.cssContainingText('.form-header h2', title))

    const awaitSeconds = 6;
    return await browser.wait(
      protractor.ExpectedConditions.presenceOf(modalElement),
      awaitSeconds * 1000,
      `Form should be shown within ${awaitSeconds} sec`,
    );
  };

  this.pressClose = async () => {
    const button = await $('button[ng-click="$ctrl.closeForm()"]');
    await button.click();
  };

Мой вопрос - что я делаю неправильно,что мне, вероятно, не хватает и как это исправить?Спасибо!

1 Ответ

0 голосов
/ 04 декабря 2018

Добавьте приведенный ниже код в вашу конфигурацию.

allScriptsTimeout: 20000,
    jasmineNodeOpts: {
    defaultTimeoutInterval: 100000
     }

Настройте интервал ожидания в соответствии с временем выполнения теста.Для получения дополнительной информации см. https://www.theoldschoolhouse.com/reviews_client/node_modules/protractor/docs/timeouts.md

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...