allure-cypress
TypeScript icon, indicating that this package has built-in type declarations

2.15.1 • Public • Published

allure-cypress

Allure framework integration for Cypress

Allure Report logo


Installation

Use your favorite node package manager to install the required packages:

npm add -D allure-cypress

Add the following lines to your cypress.config.js file to setup the reporter:

const { allureCypress } = require("allure-cypress/reporter");

module.exports = {
  // ...
  e2e: {
+    setupNodeEvents: (on, config) => {
+      allureCypress(on, {
+        resultsDir: "./allure-results",
+      });
+
+      return config;
+    },
  },
};

Don't forget to add the Allure Cypress commands to your cypress/support/e2e.js file to finish the installation:

+ import "allure-cypress/commands";

Use Allure runtime Api

The plugin provides custom commands which allow to add additional info inside your tests:

import { epic, attachment, parameter } from "allure-cypress";

it("my test", () => {
  attachment("Attachment name", "Hello world!", "text/plain");
  epic("my_epic");
  parameter("parameter_name", "parameter_value", {
    mode: "hidden",
    excluded: false,
  });
});

Links usage

import { link, issue, tms } from "allure-cypress";

it("basic test", () => {
  link("link_type", "https://allurereport.org", "Allure Report");
  issue("Issue Name", "https://github.com/allure-framework/allure-js/issues/352");
  tms("Task Name", "https://github.com/allure-framework/allure-js/tasks/352");
});

You can also configure links formatters to make usage much more convenient. %s in urlTemplate parameter will be replaced by given value.

const { allureCypress } = require("allure-cypress/reporter");

module.exports = {
  // ...
  e2e: {
    setupNodeEvents: (on, config) => {
      const reporter = allureCypress(on, {
+        links: [
+          {
+            type: "issue",
+            urlTemplate: "https://example.org/issues/%s"
+          },
+          {
+            type: "tms",
+            urlTemplate: "https://example.org/tasks/%s"
+          },
+          {
+            type: "custom",
+            urlTemplate: "https://example.org/custom/%s"
+          },
+        ],
+      });

      on("after:spec", (spec, result) => {
        reporter.endSpec(spec, result);
      });

      return config;
    },
  },
};

Then you can assign link using shorter notation:

import { link, issue, tms } from "allure-cypress";

it("basic test", () => {
  issue("351");
  issue("352", "Issue Name");
  tms("351");
  tms("352", "Task Name");
  link("custom", "352");
  link("custom", "352", "Link name");
});

Steps usage

The integration supports Allure steps, use them in following way:

import { step } from "allure-cypress";

it("my test", () => {
  step("foo", () => {
    step("bar", () => {
      step("baz", () => {
        cy.log("my cypress commands");
      });
    });
  });
});

Passing metadata from test title

You also can pass allure metadata from test title. This is useful when you need to set allureId for the tests with failing before hooks. Just add @allure.id={idValue} for the allureId or @allure.label.{labelName}={labelValue} for other types of labels.

it("test with allureId @allure.id=256", () => {});
it("tst with severity @allure.label.severity=critical", () => {});
it("test with epic @allure.label.epic=login", () => {});
it("test with strangeLabel @allure.label.strangeLabel=strangeValue", () => {});

Warning Note that changing title can cause creating new testcases in history. To fix this please add @allure.id={yourTestCaseId} to the test name if you passing allure metadata from test title

Using custom after:spec hook

If you want to use your own after:spec hook and keep the Allure reporter working, you should use AllureCypress class instead:

const { AllureCypress } = require("allure-cypress/reporter");

module.exports = {
  // ...
  e2e: {
    setupNodeEvents: (on, config) => {
+      const allureCypress = new AllureCypress({
+        resultsDir: "./allure-results",
+      });
+      
+      allureCypress.attachToCypress(on, config);
+ 
+      on("after:spec", (spec, result) => {
+        allureCypress.endSpec(spec, result);
+      });     
+  
+      return config;
+    },
  },
};

Package Sidebar

Install

npm i allure-cypress

Weekly Downloads

4,274

Version

2.15.1

License

Apache-2.0

Unpacked Size

167 kB

Total Files

19

Last publish

Collaborators

  • qameta-bot