Как отобразить ошибки транспортира, когда истечет время Жасмин? - PullRequest
0 голосов
/ 06 декабря 2018

Вот мой файл спецификаций:

fdescribe('My test', () => {

    beforeAll(async () => {
        await browser.get('/login');    // usually takes 10 sec.
        await LoginPo.login();          // usually takes 1  sec.
        await browser.wait(protractor.ExpectedConditions.urlIs('myurl'), 15000);
    }, 20000);

    afterAll(async () => {
        await element(by.id('wrongID')).click();
    });

    it('dummy test ok', async () => {
        await expect(true).toBeTruthy();
    });
});

И часть моего конфигурационного файла:

exports.config = {
    allScriptsTimeout: 11000,
    jasmineNodeOpts: {
        defaultTimeoutInterval: 5000
    },
    SELENIUM_PROMISE_MANAGER: false }

С этим конфигом я получаю вывод с тайм-аутом Jasmine, без дальнейшегосоответствующая информация:

Jasmine started

  My test
    √ dummy test ok
    × My test
      - Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
          at ontimeout (timers.js:498:11)
          at tryOnTimeout (timers.js:323:5)

**************************************************
*                     Errors                     *
**************************************************

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

Executed 1 of 111 specs (1 ERROR) (110 SKIPPED) in 14 secs.
(node:9608) UnhandledPromiseRejectionWarning: Error: 'fail' was used when there was no current spec, this could be because an asynchronous test timed out
    at Env.fail (C:\workspace\mdib\node_modules\jasmine\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:1270:15)
    (...)
    at process._tickCallback (internal/process/next_tick.js:188:7)
(node:9608) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:9608) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Теперь, если я удаляю конкретный тайм-аут Жасмин 20000 мс в моем beforeAll(), я получаю этот вывод:

Jasmine started

  My test
    × 1 - dummy test ok
      - Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
          at ontimeout (timers.js:498:11)
          at tryOnTimeout (timers.js:323:5)
    × My test
      - Failed: No element found using locator: By(id, wrongID)
          at elementArrayFinder.getWebElements.then (C:\workspace\mdib\node_modules\protractor\built\element.js:814:27)
          at <anonymous>
          at process._tickCallback (internal/process/next_tick.js:188:7)
      From asynchronous test:
          (...)

Включает информацию, которую янужно от Protractor (неверный идентификатор), но фиктивный тест не удался, и он также включает тайм-аут Jasmine, потому что загрузка приложения занимает больше, чем 5000 мс, определяемый defaultTimeoutInterval.

Я предполагаю, что когда яустановить 20000 мсек. время ожидания жасмина, Protractor завершится неудачно и тест никогда не завершится, и поэтому Jasmine отключился, скрывая соответствующий журнал ошибок Protractor.

Как я могу получить этот полезный журнал ошибок Protractor без тайм-аута Jasmine?

Использование jasmine 3.3.0 и protractor 5.4.1.

1 Ответ

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

Я думаю, что увеличение значения defaultTimeoutInterval решит проблему:

exports.config = {
allScriptsTimeout: 11000,
jasmineNodeOpts: {
    defaultTimeoutInterval: 40000
},
SELENIUM_PROMISE_MANAGER: false }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...