跳至主要内容

CucumberJS JSON 报告器

wdio-cucumberjs-json-reporter 是一个第三方包,更多信息请参见GitHub | npm

一个 WDIO 报告器,为 WebdriverIO v8 及更高版本创建 CucumberJS JSON 文件。

NPM

它能做什么

此报告器将为正在测试的每个功能生成一个**Cucumber JSON 文件**。JSON 文件可用于您想要使用的任何报告,例如multiple-cucumber-html-reporter

它还将有关运行实例的元数据添加到功能文件中,最后但并非最不重要的一点是,它将为您提供将附件添加到 JSON 输出的机会。

安装

最简单的方法是在您的package.json中将wdio-cucumberjs-json-reporter作为开发依赖项。

{
"devDependencies": {
"wdio-cucumberjs-json-reporter": "^5.0.0"
}
}

您可以简单地通过以下方式进行操作

npm install wdio-cucumberjs-json-reporter --save-dev

因此它将自动添加到您的package.json中。

有关如何安装WebdriverIO的说明,请参见此处

配置

在您的 wdio.conf.js 文件中配置输出目录和语言

export const config = {
// ...
reporters: [
// Like this with the default options, see the options below
'cucumberjs-json',

// OR like this if you want to set the folder and the language
[ 'cucumberjs-json', {
jsonFolder: '.tmp/new/',
language: 'en',
},
],
],
// ...
}

不要同时使用这两种添加报告器的方法,这只是一个示例!

选项

jsonFolder

  • 类型:字符串
  • 是否必填:
  • 默认值:.tmp/json/

此报告生成的 JSON 文件将存储到的目录,相对于脚本启动的位置。

注意:如果您从命令行使用 npm 脚本,例如npm run test,则jsonFolder将相对于执行脚本的路径。从项目根目录执行它也会在项目根目录中创建jsonFolder

language

  • 类型:字符串
  • 是否必填:
  • 默认值:en

编写 Gherkin 场景的语言(默认为英语)。语言代码及其关键字的列表,请参见此处

disableHooks

  • 类型:布尔值
  • 是否必填:
  • 默认值:false

如果此属性设置为true,则挂钩详细信息将不会成为生成的一部分。

reportFilePerRetry

  • 类型:布尔值
  • 是否必填:
  • 默认值:true

如果此属性设置为false,则在重新尝试规范时,报告将附加到先前尝试的现有报告文件中。

示例['cucumberjs-json', { jsonFolder: '.tmp/new/', language: 'en', disableHooks:true}]

元数据

注意
如果您使用的是 WebdriverIO V6,则目前不支持此功能,WebdriverIO V5 仍然支持此功能,WebdriverIO V7 再次支持此功能。

如上所述,此报告可以自动存储功能执行所在当前机器/设备的元数据。

要自定义此功能,您可以通过将以下对象添加到您的capabilities中来实现。

// Example wdio.conf.js
export const config = {
//..
capabilities: [
{
browserName: 'chrome',
// Add this
'cjson:metadata': {
// For a browser
browser: {
name: 'chrome',
version: '58',
},
// for an app
app: {
name: 'name.of.app.ipa',
version: '1.2.3',
},
device: 'MacBook Pro 15',
platform: {
name: 'OSX',
version: '10.12.6'
}
},
},
],
};

元数据对象需要具有cjson前缀,否则将无法正常工作!

元数据值

metadata.app.name

  • 类型:字符串

例如:应用程序的名称。

metadata.app.version

  • 类型:字符串

例如:应用程序的版本。

metadata.browser.name

  • 类型:字符串
  • 可能的值:internet explorer | edge | chrome | firefox | safari

metadata.browser.version

  • 类型:字符串

例如:浏览器的版本,可以在测试执行期间手动添加或检索以获取精确的版本号。

metadata.device

  • 类型:字符串

例如:表示设备类型的名称。例如,如果您在虚拟机上运行它,则可以将其放置在此处虚拟机,或移动设备的名称,例如iPhone 7 Plus

metadata.platform.name

  • 类型:字符串
  • 可能的值:windows | osx | linux | ubuntu | android | ios

metadata.platform.version

  • 类型:字符串

例如:平台的版本

如果您未在元数据中提供browser对象,则此模块将自动为您确定它。**它将始终使用它可以确定的最新值覆盖它。**

如果您未提供device和/或platform对象,则它将默认为您为未知

如果您未提供browser.namebrowser.version,则模块将尝试自动确定它。

附件

您可以选择将数据附加到所有这些挂钩/步骤中的 JSON 文件中

  • Before(All)
  • After(All)
  • Given
  • When
  • Then
  • And

您只需要在您的步骤文件中提供以下代码。

对于 ES 模块 (ESM)

import cucumberJson from 'wdio-cucumberjs-json-reporter';

// Attach a string (if no type is provided it will automatically default to `text/plain`
cucumberJson.attach('just a string');
cucumberJson.attach('just a second string', 'text/plain');

// Attach JSON
cucumberJson.attach({"json-string": true}, 'application/json');

// Attach a screenshot in a before hook
cucumberJson.attach(await browser.takeScreenshot(), 'image/png');

对于 CommonJS (CJS)

const { attach } = require("wdio-cucumberjs-json-reporter");

// Attach a string (if no type is provided it will automatically default to `text/plain`
attach('just a string');
attach('just a second string', 'text/plain');

// Attach JSON
attach({"json-string": true}, 'application/json');

// Attach a screenshot in a before hook
attach(await browser.takeScreenshot(), 'image/png');

与 multiple-cucumber-html-reporter 一起使用

WebdriverIO V4 的先前模块wdio-multiple-cucumber-html-reportermultiple-cucumber-html-reporter模块有内置连接。**此报告器并非如此**,因为 WebdriverIO V5 的新设置基于实例,不允许我使用onPrepareonComplete挂钩。

如果您仍然想使用multiple-cucumber-html-reporter模块,您可以将以下内容添加到您的配置文件中。

  • 使用以下命令安装模块

    npm install multiple-cucumber-html-reporter --save-dev
  • 将此添加到您的配置文件中

    import fs from 'node:fs/promises'
    // Import the module
    import { generate } from 'multiple-cucumber-html-reporter'

    // Example wdio.conf.js
    export const config = {
    //..

    // =====
    // Hooks
    // =====
    /**
    * Gets executed once before all workers get launched.
    */
    onPrepare: () => {
    // Remove the `.tmp/` folder that holds the json and report files
    return fs.rm('.tmp/', { recursive: true });
    },
    /**
    * Gets executed after all workers got shut down and the process is about to exit.
    */
    onComplete: () => {
    // Generate the report when it all tests are done
    generate({
    // Required
    // This part needs to be the same path where you store the JSON files
    // default = '.tmp/json/'
    jsonDir: '.tmp/json/',
    reportPath: '.tmp/report/',
    // for more options see https://github.com/wswebcreation/multiple-cucumber-html-reporter#options
    });
    }
    }

旧版 WebdriverIO

此模块只能与 WebdriverIO V8+ 一起使用!
对于 V6,请查看此处的文档并使用版本 2.0.4
对于 V5,请查看此处的文档并使用版本 1.3.0

此模块不是wdio-multiple-cucumber-html-reporter的替代品。该模块仅支持 WEBDRIVERIO V4 并创建报告。此模块仅创建 JSON,不创建报告!

欢迎!我怎样才能帮到您?

WebdriverIO AI Copilot