Allure framework integration for Jest
- Learn more about Allure Report at https://allurereport.org
- 📚 Documentation – discover official documentation for Allure Report
- ❓ Questions and Support – get help from the team and community
- 📢 Official annoucements – be in touch with the latest updates
- 💬 General Discussion – engage in casual conversations, share insights and ideas with the community
Warning This package only works with the
jest-circustest runner for Jest. It's the default runner for Jest starting from 27.0.0. If you usejest@<27.0.0, you should installjest-circusmanually and set thetestRunnerJest option to"jest-circus/runner". If you're ajest-jasmine2user, consider switching tojest-circus. If that's not an option for you, please use allure-jasmine instead.
The docs for Allure Jest are available at https://allurereport.org/docs/jest/.
Also, check out the examples at github.com/allure-examples.
- writes Allure results from the Jest Circus runtime
- supports labels, links, parameters, nested steps, and attachments through
allure-js-commons - works with Allure Report 2 and Allure Report 3
Install allure-jest using a package manager of your choice. For example:
npm install -D allure-jestIf you're a Yarn PnP user, you must also explicitly install the Jest environment package and
allure-js-commons. For example:yarn add --dev jest-environment-node allure-js-commonsKeep in mind, that
allure-js-commonsandallure-jestmust have the same version. The same goes for all Jest packages (jest,jest-circus,jest-environment-node, etc). Useyarn infoto check the versions.
Install Allure Report separately when you want to render the generated allure-results:
- follow the Allure Report 2 installation guide to use the
allureCLI - or install Allure Report 3 with
npm install -D allureto usenpx allure
jest >= 24.8.0jest-circus >= 24.8.0- matching Jest CLI and environment packages
>= 24.8.0 - Linux, macOS, and Windows wherever Jest supports Node.js
- this repository is validated in CI on Node.js 20 and 22
Set the testEnvironment Jest option according to your needs:
- If you need access to DOM, set it to
"allure-jest/jsdom"(make sure jest-environment-jsdom is installed). - If you don't need access to DOM, set it to
"allure-jest/node".
Example:
const config = {
testEnvironment: "allure-jest/jsdom",
};
export default config;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 behavior of Allure Jest with the configuration options.
Use Allure Report 2:
allure generate ./allure-results -o ./allure-report
allure open ./allure-reportOr use Allure Report 3:
npx allure generate ./allure-results
npx allure open ./allure-reportEnhance the report by utilizing the runtime API:
import * as allure from "allure-js-commons";
describe("signing in with a password", () => {
it("should sign in with a valid 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.feature("Sign in with a password");
await allure.story("As an active user, I want to successfully sign in using a valid password");
await allure.tags("signin", "ui", "positive");
await allure.issue("https://github.com/allure-framework/allure-js/issues/4", "ISSUE-4");
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/jest-reference/.
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.
To use Allure-Jest with custom environments, you can use the createJestEnvironment helper function:
import CustomTestEnvironment from "jest-environment-custom";
import { createJestEnvironment } from "allure-jest/factory";
export default createJestEnvironment(CustomTestEnvironment);