【问题标题】:protractor is not capturing the Screenshot with Cucumber Reporter量角器未使用 Cucumber Reporter 捕获屏幕截图
【发布时间】:2020-01-02 19:23:02
【问题描述】:

我正在使用 Protractor 和 Cucumber 来测试 Angular 应用程序,为了报告我正在使用“cucumber-html-reporter”,我无法在报告中捕获屏幕截图,并且它也没有保存在给定文件夹中

reporter.js

const reporter = require("cucumber-html-reporter");
cucumberReporteroptions = {
  theme: "bootstrap",
  //jsonFile: targetJson,
  jsonDir: targetjsonDir,
  output: htmlReports + "/cucumber_reporter"+datetime+".html",
  reportSuiteAsScenarios: true,
  storeScreenshots:true,
  screenshotsDirectory:htmlReports +'/screenshots',
  reportSuiteAsScenarios:true,
  launchReport:true,
  ignoreBadJsonFile:true
};

class Reporter {

  static createHTMLReport() {
    try {
      reporter.generate(cucumberReporteroptions); //invoke cucumber-html-reporter
    } catch (err) {
      if (err) {
        console.log("Failed to save cucumber test results to json file.");
        console.log(err);
      }
    }
  }

hooks.js

 After(function(scenario) {
            const attach = this.attach; 
            return browser.takeScreenshot().then(function(png) {
              const decodedImage = new Buffer(png, "base64");
              return attach(decodedImage, "image/png");
            });
        });

【问题讨论】:

  • 您是否尝试仅针对失败场景捕获屏幕截图?

标签: protractor cucumber


【解决方案1】:

您可以从自己身边进行快速检查,以确保正确调用报告器:

onPrepare: () => {
    browser.ignoreSynchronization = true;
    browser.manage().window().maximize();
    Reporter.createDirectory(jsonReports);
},
cucumberOpts: {
    compiler: "ts:ts-node/register",
    format: "json:./reports/json/cucumber_report.json",
    require: ["../../typeScript/stepdefinitions/*.js", "../../typeScript/support/*.js"],
    strict: true,
},

onComplete: () => {
    Reporter.createHTMLReport();
},

你可以试试这个,

defineSupportCode(({After}) => {
    After(function(scenario) {
        if (scenario.isFailed()) {
        var attach = this.attach; 
        return browser.takeScreenshot().then(function(png) {
        var decodedImage = new Buffer(png, "base64");
        return attach(decodedImage, "image/png");
      });
     }
   });
});

让我知道它是怎么回事!

【讨论】:

  • 您好,当我执行此代码时,我会在报告文件夹中生成一个屏幕截图。但是 HTML 报告本身没有附加任何内容。 [this.attach] 从 world.ts 调用“附加”函数对吗?我在 NOWHERE 中找不到此功能的示例。如果你有一个,我将不胜感激:)
  • 没关系,我找到了解决方案。在这里解释:stackoverflow.com/a/60278678/2376892
猜你喜欢
  • 1970-01-01
  • 2015-04-06
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
相关资源
最近更新 更多