使用带有Mocha的Nightwatch时如何生成HTML报告

时间:2017-07-27 08:08:17

标签: mocha nightwatch.js

我正在使用Nightwatch JS与Mocha跑步者一起运行我的e2e测试。 我想将HTML报告器与套件集成。

我正在尝试使用nightwatch-html-reporter包。但据我所知,CLI命令存在问题(在Nightwatch文档中写的--reporter在使用mocha时无效)。

我还将代码示例从nightwatch-html-reporter复制到我的globals.js,但它似乎也没有用。

测试运行但任何地方都没有输出。

这是我的文件夹结构:

project
  src
    spec
      e2e
        globals
          globals.js
        tests
          smoke
            testFile.js
nightwatch.conf.js

这是我的conf文件:

const seleniumServer = require('selenium-server-standalone-jar');
const chromeDriver = require('chromedriver');

module.exports = {
  src_folders: ['src/spec/e2e/tests'],
  output_folder: 'report',
  page_objects_path: [
    'src/spec/e2e/pageObjects'
  ],
  globals_path: 'src/spec/e2e/globals/globals.js',
  custom_commands_path: 'src/spec/e2e/customCommands',

  selenium: {
    start_process: true,
    server_path: seleniumServer.path,
    host: '127.0.0.1',
    port: 4444,
    cli_args: {
      'webdriver.chrome.driver': chromeDriver.path
    }
  },

  test_runner: {
    type: 'mocha',
    options: {
      ui: 'bdd',
      reporter: 'list'
    }
  },

  test_settings: {
    default: {
      launch_url: 'http://URL',
      silent: true,
      desiredCapabilities: {
        browserName: 'chrome',
        javascriptEnabled: true,
        acceptSslCerts: true,
        chromeOptions: {
          args: [
            "--no-sandbox",
            "start-fullscreen"
          ]
        }
      }
    }
  }
};

这是我的global.js文件:

var HtmlReporter = require('nightwatch-html-reporter');
var reporter = new HtmlReporter({
    openBrowser: true,
    reportsDirectory: __dirname + '/reports'
});
module.exports = {
    reporter: reporter.fn
};

2 个答案:

答案 0 :(得分:0)

我认为它不能与nightwatch-html-reporter一起使用,因为它可能不是摩卡记者(但如果我错了,请纠正我)。

在将夜视与摩卡一起使用时,您想使用内置或自定义的摩卡记者。 您可以使用像 mochawesome 这样的自定义mocha html记者,但是您必须进行一些改动,并且由于我只对这些hack进行了少量测试,因此我不提供任何保证。

以下是使用 mochawesome 的说明 (经
测试 “ mocha”:“ ^ 5.2.0”, “ mochawesome”:“ ^ 3.1.1”, “ nightwatch”:“ ^ 0.9.21”)

  1. npm install mochawesome
  2. 修改mochawesome node_modules \ mochawesome * .js文件以要求使用mocha-nightwatch而不是mocha。 (请参阅答案末尾的说明/说明)
  3. 假设您使用的是nightwatch.conf.js,请将您的测试运行器配置为等效于

    test_runner : { type : "mocha", options : { ui : "bdd", reporter : require("mochawesome") // Please observe that you can pass a custom report constructor function here, not just reporter names } }

  4. 运行测试,观察到您仍然会看到默认的控制台报告程序(规范),但是在运行结束时,您还会看到类似以下的输出:
  

[mochawesome]报告HTML保存到C:\ projects \ myWebApp \ mochawesome-report \ mochawesome.html

  1. 打开html报告。

该解决方案是脆弱且脆弱的,因为 nightwatch 带有其自己的摩卡版本。 安装 nightwatch 时,您将在node_modules中看到一个mocha-nightwatch文件夹。这是守夜人正在使用的摩卡咖啡。 但是 mochawesome 不使用mocha-nightwatch。如果您查看node_modules \ mochawsome \ dist \ mochawesome.js,您将看到如下代码行:

var Base = require('mocha/lib/reporters/base');
var Spec = require('mocha/lib/reporters/spec'); 

这意味着需要 mocha ,而不是 mocha-nightwatch 。 理想情况下,这些行应该是:require('mocha-nightwatch / ...)。 因此,请在所有需要修复的* .js文件中进行更改。 您也可以分叉 mochawesome 并使它们像这样;)

调试说明: 尝试在Mocha.prototype.reporter函数的node_modules \ mocha-nightwatch \ lib \ mocha.js中放置一些其他console.logs。这就是我弄清楚发生了什么的方式。

答案 1 :(得分:-5)

如果您使用Mocha,您可以随时使用mochawsome:https://www.npmjs.com/package/mochawesome 我自己没试过,但看起来很整洁。