Транспортир делает пустой скриншот при использовании функции browser.restart () для запуска другого TC в новом окне браузера - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть две спецификации, которые должны выполняться каждый раз в новом браузере, поэтому в моей функции afterEach есть browser.restart () для перезапуска браузера после каждой спецификации.Но это заставляет транспортир делать пустой скриншот.Когда я удаляю browser.restart (), моя другая спецификация запускается в том же окне браузера, что приводит к сбою спецификации.Любое руководство будет полезно.

Ниже мой conf.js

onPrepare: function()
{
    jasmine.getEnv().addReporter(
        new Jasmine2HtmlReporter({
        savePath: 'target/screenshots',
            takeScreenshots: true,
            takeScreenshotsOnlyOnFailures: false
        })
    );
},

Ниже мой Spec.js

afterEach(function(){
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
browser.restart();
});

Фактический код

browser.wait(EC.visibilityOf(element(by.id("siteId"))),5000);
element(by.id("files")).click();
browser.actions().sendKeys(protractor.Key.ENTER).perform();
element(by.id("toggleFilter")).element(by.xpath('div/div/form/div[4]/div/button[2]')).click();
element(by.id("toggleFilter")).element(by.xpath('div/div/form/div[1]/div[1]/div/span')).getText().then(function(msg){
    expect(msg).toBe(pre.errorMsg);
})

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Я полагаю, что причина этого в том, что Jasmine создает скриншоты с ошибками в своем specDone хуке, но это не вызывается до тех пор, пока хук Protractor afterEach уже не завершится, перезапустив браузер до того, как снимок экрана сработает,Вы должны проверить это, переместив ваш browser.restart в хук beforeEach и посмотреть, будет ли он теперь работать так, как ожидалось.

Однако в долгосрочной перспективе это не идеально, так как для первого теста вы перезапускаете браузер, прежде чем какие-либо действия будут выполнены. См. Эту проблему , поскольку в ней перечислены другие подходы, которые могут помочь вам

Порядок выполнения хуков

--- beforeLaunch           
    --- onPrepare          
      --- jasmineStarted   (set in jasmine reporter)
        --- beforeAll
         --- suiteStarted  (set in jasmine reporter)
          --- specStarted  (set in jasmine reporter)
           --- beforeEach  
           +++ afterEach   
          +++ specDone     (set in jasmine reporter)
         +++ suiteDone     (set in jasmine reporter)
        +++ afterAll
      +++ jasmineDone      (set in jasmine reporter)
    +++ onComplete         
+++ afterLaunch
0 голосов
/ 11 февраля 2019

Не использовать browser.restart () Для нового окна браузера вы можете использовать следующий код:

 browser.getAllWindowHandles().then(function (handles) {
    const newWindowHandle = handles[1]; // this is your new window
    browser.switchTo().window(newWindowHandle).then(function () {
      return browser.getCurrentUrl()
      });
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...