Перезапустите тесты e2e, если одно условие не выполняется - PullRequest
0 голосов
/ 09 апреля 2020

Я пишу e2e-тест для регистрации на сайте здравоохранения. Перед регистрацией проводится пробная регистрация для исключения или включения пользователя в исследование. Я должен написать тестовый пример, в котором пользователь исключается из исследования, а затем браузер перезапускается, и пользователь снова заполняет всю анкету и включается в исследование. Поскольку пользователь должен ответить на тот же набор вопросов, тесты одинаковы. Итак, есть ли способ перенаправить драйвер для перезапуска всех тестов.

protractor.conf. js

const { SpecReporter } = require('jasmine-spec-reporter');

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './src/**/*.e2e-spec.ts'
  ],
  multiCapabilities: [
    {
    'browserName': 'chrome',
      'chromeOptions': {
        'prefs': {
          'profile.managed_default_content_settings.notifications': 1}
      }
  }
  ],
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function() {}
  },
  onPrepare() {
    require('ts-node').register({
      project: require('path').join(__dirname, './tsconfig.e2e.json')
    });
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
  }
};

app.e2e-spe c. тс

describe('workspace-project App', () => {
  let page: AppPage;
  beforeEach(() => {
    page = new AppPage();
  });

  it('should show login dialog', () => {
    page.navigateTo();
    browser.waitForAngularEnabled(false);
    browser.sleep(1000);
    page.clickBurgerBtn();
    browser.sleep(3500);
    page.clickLoginLink();
    browser.sleep(2500);
    expect(page.getTextOnLoginDialog()).toEqual('Not a member yet? Join the study');
  });

  it('should click on study and fill trial registration form', () => {
    page.clickSignupLink();
    browser.sleep(1500);
    page.fillSignupForm();
    browser.sleep(2000);
    page.fillTrialRegForm();
   //user gets excluded
    browser.restart();
   // restart tests 
   // user gets included
  });

1 Ответ

0 голосов
/ 09 апреля 2020

Вам просто нужно поместить его в блок, чтобы l oop выполнялся дважды.

describe('workspace-project App', () => {
  let page: AppPage;
  beforeEach(() => {
    page = new AppPage();
  });

  for(let i=0;i<2;i++) {
    describe('Execute block of code twice', function() {
        it('should show login dialog', () => {
          page.navigateTo();
          browser.waitForAngularEnabled(false);
          browser.sleep(1000);
          page.clickBurgerBtn();
          browser.sleep(3500);
          page.clickLoginLink();
          browser.sleep(2500);
          expect(page.getTextOnLoginDialog()).toEqual('Not a member yet? Join the study');
        });

        it('should click on study and fill trial registration form', () => {
          page.clickSignupLink();
          browser.sleep(1500);
          page.fillSignupForm();
          browser.sleep(2000);
          page.fillTrialRegForm();
         //user gets excluded
          browser.restart();
         // restart tests 
         // user gets included
        });
    });
  }
});
  
...