npm.io
3.10.2 • Published 2d ago

allure-codeceptjs

Licence
Apache-2.0
Version
3.10.2
Deps
2
Size
132 kB
Vulns
0
Weekly
16.1K
Stars
278

allure-codeceptjs

Allure framework integration for CodeceptJS

Allure Report logo


The documentation and examples

The docs for Allure CodeceptJS are available at https://allurereport.org/docs/codeceptjs/.

Also, check out the examples at github.com/allure-examples.

Features

  • writes standard allure-results files directly from CodeceptJS runs
  • supports Allure labels, links, parameters, steps, and attachments through allure-js-commons
  • works with Allure Report 2 and Allure Report 3

Installation

Install allure-codeceptjs using a package manager of your choice. For example:

npm install -D allure-codeceptjs

Install Allure Report separately when you want to render the generated allure-results:

Supported versions and platforms

  • codeceptjs >= 2.3.6
  • Linux, macOS, and Windows wherever CodeceptJS supports Node.js
  • this repository is validated in CI on Node.js 20 and 22

Usage

Enable the allure plugin in the CodeceptJS configuration file:

module.exports.config = {
  plugins: {
    allure: {
      enabled: true,
      require: "allure-codeceptjs",
    },

    // Other plugins...
  },

  // Other CodeceptJS options...
};

When the test run completes, the result files will be generated in the ./allure-results directory.

You may select another location, or further customize the plugin's behavior with the configuration options.

View the report

Use Allure Report 2:

allure generate ./allure-results -o ./allure-report
allure open ./allure-report

Or use Allure Report 3:

npx allure generate ./allure-results
npx allure open ./allure-report

Allure API

Enhance the report by utilizing the Allure API:

import * as allure from "allure-js-commons";

Feature("Signing in with a password");
Scenario("Signing in with a correct password", async () => {
  await allure.description("The test checks if an active user with a valid password can sign in to the app.");
  await allure.epic("Signing in");
  await allure.tags("signin", "ui", "positive");
  await allure.issue("https://github.com/allure-framework/allure-js/issues/673", "ISSUE-673");
  await allure.owner("eroshenkoam");
  await allure.parameter("browser", "chrome");

  const user = await allure.step("Prepare the user", async () => {
    return await createAnActiveUserInDb();
  });

  await allure.step("Make a sign-in attempt", async () => {
    await allure.step("Navigate to the sign-in page", async () => {
      // ...
    });

    await allure.step("Fill the sign-in form", async (stepContext) => {
      await stepContext.parameter("login", user.login);
      await stepContext.parameter("password", user.password, "masked");

      // ...
    });

    await allure.step("Submit the form", async () => {
      // ...
      // const responseData = ...

      await allure.attachment("response", JSON.stringify(responseData), { contentType: "application/json" });
    });
  });

  await allure.step("Assert the signed-in state", async () => {
    // ...
  });
});

More details about the API are available at https://allurereport.org/docs/codeceptjs-reference/.

Sync API

When your test code uses synchronous helpers or matcher integrations, you can use the sync facade from allure-js-commons/sync.

import * as allure from "allure-js-commons/sync";

allure.step("check result", () => {
  allure.parameter("mode", "sync");
});

The sync facade is strict-sync only: allure.step() must finish synchronously and must not return a Promise.

Keywords