что входит в состав preprep и onComplete в защитнике или жасмине? - PullRequest
0 голосов
/ 19 января 2019

При попытке выполнить файл conf.js в защитнике все рабочие файлы при генерации отчета из xml в html скриншот, не прикрепленный к html отчету.Также почему onprepare и onComplete выполняются по умолчанию.Хочет знать о реализации этих.

Любые разъяснения будут полезны с соответствующим исходным кодом github.

exports.config = {
    framework: 'jasmine2',
    seleniumAddress: 'http://localhost:4444/wd/hub',
    specs: ['spec.js'],
    capabilities: {
        browserName: 'chrome'
    },
    onPrepare: function () {
        console.log('on prepared called');
        var jasmineReporters = require('jasmine-reporters');
        jasmine.getEnv().addReporter(new . jasmineReporters.JUnitXmlReporter({
            consolidateAll: true,
            //savePath: '.',
            filePrefix: 'xmlresults.xml'
        }));
    },

    onComplete: function() {
        console.log('on complete called');
        var browserName, browserVersion;
        var capsPromise = browser.getCapabilities();

        capsPromise.then(function (caps) {
            browserName = caps.get('browserName');
            browserVersion = caps.get('version');
            platform = caps.get('platform');

            var HTMLReport = require('protractor-html-reporter-2');

            testConfig = {
                reportTitle: 'Protractor Test Execution Report',
                outputPath: './',
                outputFilename: 'ProtractorTestReport',
                screenshotPath: './screenshots',
                testBrowser: browserName,
                browserVersion: browserVersion,
                modifiedSuiteName: false,
                screenshotsOnlyOnFailure: true,
                testPlatform: platform
            };
            new HTMLReport().from('xmlresults.xml', testConfig);
        });
    }    
}

1 Ответ

0 голосов
/ 20 января 2019

onPrepare и onComplete называются хуками жизненного цикла и выполняются на определенных этапах вашего выполнения. Транспортирующим компаниям доступно множество хуков жизненного цикла с помощью различных средств, в том числе от репортеров-жасминов, которых вы объявляете, как вы упомянули.

Обзор крючков жизненного цикла и порядок их срабатывания

--- beforeLaunch           
    --- onPrepare          (set in conf) ***reporters initialized here
      --- jasmineStarted   (set in reporter)
        --- beforeAll
         --- suiteStarted  (set in reporter)
          --- specStarted  (set in reporter)
           --- beforeEach  (set in testFile)
           +++ afterEach   (set in testFile)
          +++ specDone     (set in reporter)
         +++ suiteDone     (set in reporter)
        +++ afterAll
      +++ jasmineDone      (set in reporter)
    +++ onComplete         (set in conf)
+++ afterLaunch

Из вашего вопроса не ясно, в чем заключается ваша проблема, но я предполагаю, что у вас возникли проблемы с вашим репортером html, потому что вы объявляете об этом в onComplete. У журналистов Жасмин есть несколько важных хуков жизненного цикла: ( jasmineStarted, jasmineDone, suiteStarted, suiteDone, specStarted, specDone ) но если вы посмотрите на приведенный выше обзор, который я вставил, то увидите, что все эти перехватчики жизненного цикла репортера происходят до вызова onComplete. Если вы объявите своего репортера в onComplete вместо onPrepare, эти этапы жизненного цикла уже пройдены, и над ними не будет выполнено никаких действий.

Подробнее о назначении хуков жизненного цикла Protractor вы можете прочитать в прикрепленной ссылке. https://github.com/angular/protractor/blob/master/exampleTypescript/conf.ts

и крючки жизненного цикла Jasmine Reporter здесь. https://jasmine.github.io/api/3.3/Reporter.html

Надеюсь, что ответит на ваши вопросы, но дайте мне знать, если я неправильно понял.

...