wdio-cucumber-framework icon indicating copy to clipboard operation
wdio-cucumber-framework copied to clipboard

Screenshot is not being attached to the Failed Cucumber Scenario Step in Allure(or Any) Reports

Open kasyed245 opened this issue 6 years ago • 2 comments

I am new in wdio and trying to explore different wdio frameworks. I have been working on wdio-cucumber-framework lately and facing this issue. Kindly help me in this matter Issue :> Whenever I try to run my cucumber tests along with allure reports (in sync mode), it doesn't attach the Screenshot to the right failed step in the allure XML file [even it is happening to other reports too like multiple HTML reports] BUT it is attaching screenshot to the next Scenario's 1st step. Here is the simple wdio-cucumber project ('https://github.com/kasyed245/webdriverio-cucumber/tree/master/allure-results') where you can check two xml files (*-testsuite.xml) regarding screenshots.

Here is the hook where I am trying to capture the screenshot in wdio.conf.js

   afterStep: function afterStep(stepResult) {
        
        if(stepResult.status == "passed"){
           console.log("===============Step passed===============")
        }else{
          console.log("===============Step Failed===============")
          console.log("Feature : "+stepResult.feature);
          console.log("Scenario : "+stepResult.scenario);
          console.log("Step Text : "+stepResult.text);
          var d = new Date();
          var datetime = d.getDate() + "_"+ (d.getMonth()+1)  + "_" + d.getFullYear()
                          + "_"+ d.getHours() + "_" + d.getMinutes() + "_" + d.getSeconds();
          var fileName = encodeURIComponent(stepResult.scenario.replace(/\s+/g, '-'))+"_"+datetime;
          var filePath = this.screenshotPath + fileName +'.png';
          browser.saveScreenshot(filePath);
          console.log('\n\t Screenshot location:',filePath,'\n');
         }

Apologies in advance if this is already discussed in this forum although I searched but couldn't find any relevant details. Thanks.

kasyed245 avatar Oct 14 '18 12:10 kasyed245

I found the solution here

https://github.com/wswebcreation/wdio-multiple-cucumber-html-reporter/blob/master/README.md#how-do-i-add-screenshots-to-the-report

You need to copy following code in separate file in step folder (like hooks.js) and commented out all the After hooks in the conf.js file

const {After, Status} =  require('cucumber');

After((scenarioResult)=>{
  // Here it is added to a failed step, but each time you call `browser.saveScreenshot()` it will automatically bee added to the report
  if (scenarioResult.result.status === 'failed') {
    // It will add the screenshot to the JSON
    browser.saveScreenshot()
  }
  return scenarioResult.status;
});

And now you'll find both Allure report or wdio-multiple-cucumber-html-reporter working fine.

kasyed245 avatar Oct 19 '18 11:10 kasyed245

Hello, The same problem that I have had. If you use afterStep to take screenshot, the screenshot save after that step attach.

Here is my package.json file details below;

    "@types/archiver": "^3.0.0",
    "@types/chai": "^4.2.3",
    "@types/cucumber": "^4.0.7",
    "@types/fs-extra": "^8.0.0",
    "@types/mysql2": "github:types/mysql2",
    "@types/node": "^12.7.7",
    "@types/nodemailer": "^6.2.1",
    "@types/sprintf-js": "^1.1.2",
    "@types/underscore": "^1.9.3",
    "@types/uuid": "^3.4.5",
    "@types/xml2js": "^0.4.5",
    "@wdio/allure-reporter": "^5.13.2",
    "@wdio/cli": "^5.13.2",
    "@wdio/cucumber-framework": "^5.13.2",
    "@wdio/local-runner": "^5.13.2",
    "@wdio/selenium-standalone-service": "^5.13.2",
    "@wdio/spec-reporter": "^5.13.2",
    "@wdio/sync": "^5.13.2",
    "allure-commandline": "^2.13.0",
    "appium-controller": "^1.1.6",
    "archiver": "^3.1.1",
    "browser-detect": "^0.2.28",
    "chai": "^4.2.0",
    "fs-extra": "^8.1.0",
    "moment": "^2.24.0",
    "mysql2": "^1.7.0",
    "nodemailer": "^6.3.0",
    "sprintf-js": "^1.1.2",
    "ts-node": "^8.4.1",
    "tsconfig-paths": "^3.9.0",
    "typescript": "^3.6.3",
    "webdriverio": "^5.13.2",

espekkaya avatar Sep 26 '19 08:09 espekkaya