How to retry failed test specs in protractor jasmine

浪尽此生 提交于 2020-01-06 14:18:11

问题


I am trying to use protractor-retry mechanism to run my protractor e2e tests. I have installed Protractor-retry package and added required things in conf.js file as below:

var PropertiesReader = require('properties-reader');
var properties = PropertiesReader('config.properties');
var retry = require('protractor-retry').retry;
exports.config = {

plugins: [{
    package: 'jasmine2-protractor-utils',
    disableHTMLReport: false,
    disableScreenshot: false,
    //screenshotPath: './reports/screenshots',
    screenshotPath: './ExecutionResults/reports/screenshots',
    screenshotOnExpectFailure: true,
    screenshotOnSpecFailure: true,
    clearFoldersBeforeTest: true,
    htmlReportDir: './reports/htmlReports',
    failTestOnErrorLog: {
        failTestOnErrorLogLevel: 1100,
        excludeKeywords: ['keyword1', 'keyword2']
    }
}],
directConnect: true,
// Capabilities to be passed to the webdriver instance.
multiCapabilities: [
    {
        'browserName': properties.get('browserName'),
    }],

    onCleanUp: function(results) {
        retry.onCleanUp(results);
    },
suites: {
        test: '../test_spec/smoke/cards/test.js'
},

// Options to be passed to Jasmine.
allScriptsTimeout: properties.get('allscriptTimeOutSeconds'),
getPageTimeout: properties.get('pageTimeOut'),
jasmineNodeOpts: {
    defaultTimeoutInterval: 2000000
},
onPrepare: function () {
    retry.onPrepare();
    var jasmineReporters = require('jasmine-reporters');
    var width = 1400;
    var height = 1000;
    browser.driver.manage().window().maximize();
    useAllAngular2AppRoots: true,
    browser.driver.get(properties.get('envUrl'),);
    browser.driver.manage().timeouts().implicitlyWait(10000);

    var AllureReporter = require('jasmine-allure-reporter');
    jasmine.getEnv().addReporter(new AllureReporter({
        allureReport: {
            resultsDir: 'allure-results'
        }
    }));

    jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
        consolidateAll: true,
        savePath: 'testresults',
        filePrefix: 'xmloutput'
    }));
    var junitReporter = new jasmineReporters.JUnitXmlReporter({
        // setup the output path for the junit reports
        savePath: 'output/',
        consolidateAll: false
    });
    jasmine.getEnv().addReporter(junitReporter);
    return global.browser.getProcessedConfig().then(function (config) { });
},
afterLaunch: function() {
    return retry.afterLaunch(2);
 },

onComplete: function () {
    var browserName, browserVersion;
    var capsPromise = browser.getCapabilities();

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

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

        testConfig = {
            reportTitle: 'Test Execution Report',
            outputPath: './ExecutionResults/reports',
            screenshotPath: './screenshots',
            testBrowser: browserName,
            browserVersion: browserVersion,
            modifiedSuiteName: false,
            screenshotsOnlyOnFailure: true
        };
        browser.sleep(5000)
        new HTMLReport().from('testresults/xmloutput.xml', testConfig);
        browser.close();
    });
}
};

My test file is as below:

describe("Timesheet_Apply_Approved_Card", function () {
it ("Retest 1." , function(){
    //browser.get("http://www.google.com")
    //  browser.sleep(3000)
    console.log("test var : "+ testing.label)
    console.log("test " + testing._exitReasonFamilyReason)
       console.log("after test")
    expect("a").toEqual("b")
})


it ("Restest 2." , function(){
    console.log("after test 2")
    expect("a").toEqual("a")
})
})

But when I run the above test.js file. It does not run the failed test again.It gives below error:

test var : undefined
test undefined
inside method undefined
after test
Fafter test 2
.

Failures:
1) Timesheet_Apply_Approved_Card Retest 1.
Message:
Expected 'a' to equal 'b'.
Stack:
Error: Failed expectation
    at UserContext.<anonymous> 
(D:\GIT\altworklife\CARDS\test_spec\smoke\cards\test.js:20:21)

2 specs, 1 failure
Finished in 0.545 seconds

[17:43:43] I/launcher - 0 instance(s) of WebDriver still running
[17:43:43] I/launcher - chrome #01 failed 1 test(s)
[17:43:43] I/launcher - overall: 1 failed spec(s)


 Re-running tests , attempt :  1
 Re-running the following test files : 
 D:\GIT\altworklife\CARDS\test_spec\smoke\cards\test.js


[17:43:43] E/launcher - spawn 
C:\Users\amit.hada\AppData\Roaming\npm\node_modules\protractor\bin\protractor 
ENOENT
[17:43:43] E/launcher - Error: spawn 
C:\Users\amit.hada\AppData\Roaming\npm\node_modules\protractor\bin\protractor 
ENOENT
at _errnoException (util.js:1022:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
at onErrorNT (internal/child_process.js:372:16)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
[17:43:43] E/launcher - Process exited with error code 199

It prints that it is trying again but than abruptly fails with error as given above.

Any idea, why it is failing without retrying?


回答1:


Look Like you are running your CMD from a windows laptop/server, which is not supported by this protractor-retry pkg



来源:https://stackoverflow.com/questions/51114920/how-to-retry-failed-test-specs-in-protractor-jasmine

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!