Ошибка тайм-аута в Protractor при запуске в пакетном режиме, но нормально работает при его запуске по отдельности? - PullRequest
0 голосов
/ 25 сентября 2018

Я настраиваю тестирование e2e с транспортиром и угловым.Здесь я пишу 3 теста в комплекте.Когда есть только 2, он работает нормально.Что-то большее, чем это, это терпит неудачу с ошибкой тайм-аута.Я даже пытался реализовать функцию обратного вызова «готово», но не могу ее решить.Странно, если я переставлю тестовые примеры в порядке, который пройдут все 3 тестовых случаяНапример, см. Код ниже.

app.po.ts

import { browser, by, element } from 'protractor';

export class TestEngine {
  navigateTo() {
    browser.get('/');
    var script = "window.localStorage.setItem('isAccepted', 'true')";
    return browser.executeScript(script);
  }

  getParagraphText() {
    return element(by.css('page-welcome p')).getText();
    }

  getButtons() { 
      return element(by.buttonText('Login')).getText();
  }

  getButtonsClick() {
      return  browser.actions().mouseMove(element(by.tagName('b'))).click();
        }

}

test-e2e.spec.ts

    import { TestEngine } from './app.po';

    describe('Test Engine App', () => {
      let page: TestEngine;

      beforeEach(function (done) {
        setTimeout(function () {
          page = new TestEngine();
          done();
        }, 1);
      });

//1. Promise included

      it('should display the question for Validation', function (done) {
        page.navigateTo();
        page.getParagraphText()
          .then((text) => {
            expect(text).toEqual('Want to validate an engine?');
            done();
          });
      });

// 2. Promise included

      it('should display a button which is used for Validation', function (done) {
        page.navigateTo();
        page.getButtons().
          then((text) => {
            expect(text).toEqual('Login');
            done();
          });
      });

 //3. Promise not included   

      it('should click on the button which is used for Login', function (done) {
        page.navigateTo();
        page.getButtonsClick()
        done();
      });

    });

Сценарий, когдаВ приведенных выше тестовых случаях 1,2,3 выдается ошибка, в которой указывается

Test Engine App
    √ should display the question for Validation
    √ should display a button which is used for Validation
    × should click on the button which is used for Login
      - Failed: timeout
        (Session info: chrome=69.0.3497.100)
        (Driver info: chromedriver=2.41.578737 (49da6702b16031c40d6xgret43e5618de0x3a32ff6c19xx7e),platform=Windows NT 10.0.16299 x86_64)
        (Session info: chrome=69.0.3497.100)
        (Driver info: chromedriver=2.41.578737 (49da6702b16031c40d6xgret43e5618de0x3a32ff6c19xx7e),platform=Windows NT 10.0.16299 x86_64)

      From asynchronous test:
      Error
          at Suite.<anonymous> (D:\TESTING CLONE\e2e\e2e\test.e2e-spec.ts:33:3)
          at Object.<anonymous> (D:\TESTING CLONE\e2e\e2e\test.e2e-spec.ts:5:1)
          at Module._compile (module.js:649:30)
          at Module.m._compile (D:\VSTS TESTING CLONE\e2e\node_modules\ts-node\src\index.ts:439:23)
          at Module._extensions..js (module.js:660:10)
          at Object.require.extensions.(anonymous function) [as .ts] (D:\TESTING CLONE\e2e\node_modules\ts-node\src\index.ts:442:12)

**************************************************
*                    Failures                    *
**************************************************

1) Test Engine App should click on the button which is used for Login
  - Failed: timeout
    (Session info: chrome=69.0.3497.100)
    (Driver info: chromedriver=2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e),platform=Windows NT 10.0.16299 x86_64)

Executed 3 of 3 specs (1 FAILED) in 5 mins 17 secs.
[16:56:48] I/launcher - 0 instance(s) of WebDriver still running
[16:56:48] I/launcher - chrome #01 failed 1 test(s)
[16:56:48] I/launcher - overall: 1 failed spec(s)
[16:56:48] E/launcher - Process exited with error code 1

Но если я запускаю все 3 отдельно, используя fit или xit для каждого сценарияпроходит, а также, если я запускаю его в порядке 1-> 3-> 2, меняя 3-й тестовый набор на 2-й, то все проходит как пакет.

Что я здесь не так делаю?Это что-то с функцией обратного вызова done ();Это расположено в правильном месте?Потому что в этом файле спецификаций я планирую иметь более 100 тестовых случаев.Все будут включать в себя обещания.

...