Skip to content
Allure report logoAllure Report
Main Navigation ModulesDocumentationStart

English

Español

English

Español

Appearance

Sidebar Navigation

Introduction

Install & Upgrade

Install for Windows

Install for macOS

Install for Linux

Install for Node.js

Upgrade Allure

Getting started

How to view a report

Improving readability of your test reports

Improving navigation in your test report

Features

Test steps

Attachments

Test statuses

Sorting and filtering

Defect categories

Visual analytics

Test stability analysis

History and retries

Timeline

Export to CSV

Export metrics

Guides

JUnit 5 parametrization

JUnit 5 & Selenide: screenshots and attachments

JUnit 5 & Selenium: screenshots and attachments

Setting up JUnit 5 with GitHub Actions

Pytest parameterization

Pytest & Selenium: screenshots and attachments

Pytest & Playwright: screenshots and attachments

Pytest & Playwright: videos

Playwright parameterization

How it works

Overview

Test result file

Container file

Categories file

Environment file

Executor file

History files

Integrations

Azure DevOps

Bamboo

GitHub Actions

Jenkins

JetBrains IDEs

TeamCity

Visual Studio Code

Frameworks

Behat

Getting started

Configuration

Reference

Behave

Getting started

Configuration

Reference

Codeception

Getting started

Configuration

Reference

CodeceptJS

Getting started

Configuration

Reference

Cucumber.js

Getting started

Configuration

Reference

Cucumber-JVM

Getting started

Configuration

Reference

Cucumber.rb

Getting started

Configuration

Reference

Cypress

Getting started

Configuration

Reference

Jasmine

Getting started

Configuration

Reference

JBehave

Getting started

Configuration

Reference

Jest

Getting started

Configuration

Reference

JUnit 4

Getting started

Configuration

Reference

JUnit 5

Getting started

Configuration

Reference

Mocha

Getting started

Configuration

Reference

Newman

Getting started

Configuration

Reference

NUnit

Getting started

Configuration

Reference

PHPUnit

Getting started

Configuration

Reference

Playwright

Getting started

Configuration

Reference

pytest

Getting started

Configuration

Reference

Pytest-BDD

Getting started

Configuration

Reference

Reqnroll

Getting started

Configuration

Reference

REST Assured

Getting started

Configuration

Robot Framework

Getting started

Configuration

Reference

RSpec

Getting started

Configuration

Reference

SpecFlow

Getting started

Configuration

Reference

Spock

Getting started

Configuration

Reference

TestNG

Getting started

Configuration

Reference

Vitest

Getting started

Configuration

Reference

WebdriverIO

Getting started

Configuration

Reference

xUnit.net

Getting started

Configuration

Reference

On this page

Allure Cypress reference ​

These are the functions that you can use to integrate your Cypress tests with Allure.

In most cases, Allure Cypress provides two different ways to use a feature: the Runtime API and the Metadata API.

  • Runtime API: use Allure's functions to add certain data to the test result during its execution. This approach allows for constructing the data dynamically.

    Note that it is recommended to call the Allure's functions as close to the beginning of the test as possible. This way, the data will be added even if the test fails early.

  • Metadata API: add a metadata tag (beginning with @) into the test name. Allure Cypress will extract it and update the test result's data accordingly. When using this approach, the data is guaranteed to be added regardless of how the test itself runs.

Metadata ​

Assign a test's description, links and other metadata.

Description ​

  • allure.description(markdown: string): PromiseLike<void>

Set the test's description. Markdown formatting is allowed. Any HTML formatting, if present, will be stripped for security purposes.

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

it("Authentication", () => {
  allure.description("This test attempts to log into the website.");
  // ...
});

Owner ​

  • allure.owner(name: string): PromiseLike<void>
  • @allure.label.owner:⟨VALUE⟩

Set the test's owner.

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

it("Authentication", () => {
  allure.owner("John Doe");
  // ...
});
ts
it("Authentication @allure.label.owner:JohnDoe", () => {
  // ...
});

Tag ​

  • allure.tag(name: string): PromiseLike<void>
  • allure.tags(...tagsList: string[]): PromiseLike<void>
  • @allure.label.tag:⟨VALUE⟩

Set the test's tags.

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

it("Authentication", () => {
  allure.tag("Web interface");
  allure.tag("Authentication");
  // ...
});
ts
it("Authentication @allure.label.tag:WebInterface @allure.label.tag:Authentication", () => {
  // ...
});

Severity ​

  • allure.severity(name: string): PromiseLike<void>
  • @allure.label.severity:⟨VALUE⟩

Set the test's severity.

Allowed values are: “trivial”, “minor”, “normal”, “critical”, and “blocker”.

ts
import * as allure from "allure-js-commons";
import { Severity } from "allure-js-commons";

it("Authentication", () => {
  allure.severity(Severity.CRITICAL);
  // ...
});
ts
it("Authentication @allure.label.severity:critical", () => {
  // ...
});

Label ​

  • allure.label(name: LabelName | string, value: string): PromiseLike<void>
  • allure.labels(...labelsList: Label[]): PromiseLike<void>
  • @allure.label.⟨NAME⟩:⟨VALUE⟩

Set an arbitrary label for the test. This is the underlying implementation for a lot of Allure's other functions.

You can call label() multiple times to create an array of values under the given name.

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

it("Authentication", () => {
  allure.label("microservice", "UI");
  // ...
});
ts
it("Authentication @allure.label.microservice:UI", () => {
  // ...
});

ID ​

  • @allure.id:⟨VALUE⟩

Set the test's ID.

ts
it("Authentication @allure.id:123", () => {
  // ...
});

Link ​

  • allure.link(url: string, name?: string, type?: LinkType | string): PromiseLike<void>
  • allure.links(...linksList: Link[]): PromiseLike<void>
  • allure.issue(url: string, name?: string): PromiseLike<void>
  • allure.tms(url: string, name?: string): PromiseLike<void>

Add a link related to the test.

Based on the type (which can be any string, defaults to “link”), Allure will try to load a corresponding link template to process the URL, as defined by the links configuration option. If no template is found for the given type or if the link already represents a proper URL, it's left unmodified.

The name will be used as the link's text. If it is omitted, the URL will be used instead.

For convenience, Allure provides two shorthand functions with pre-selected link types: issue and tms.

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

it("Authentication", () => {
  allure.issue("AUTH-123", "Related issue");
  allure.tms("TMS-456", "Related TMS issue");
  allure.link("JIRA-777", "Related Jira issue", "jira");
  allure.link("https://example.com/", "Project website");
  // ...
});

Behavior-based hierarchy ​

  • allure.epic(name: string): PromiseLike<void>
  • allure.feature(name: string): PromiseLike<void>
  • allure.story(name: string): PromiseLike<void>
  • @allure.label.epic:⟨VALUE⟩
  • @allure.label.feature:⟨VALUE⟩
  • @allure.label.story:⟨VALUE⟩

Assign names of epics, features, or user stories for a test, as part of Allure's behavior-based hierarchy.

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

it("Authentication", () => {
  allure.epic("Web interface");
  allure.feature("Essential features");
  allure.story("Authentication");
  // ...
});
ts
it(
  "Authentication" +
    " @allure.label.epic:WebInterface" +
    " @allure.label.feature:EssentialFeatures" +
    " @allure.label.story:Authentication",
  () => {
    // ...
  },
);

Suite-based hierarchy ​

  • allure.parentSuite(name: string): PromiseLike<void>
  • allure.suite(name: string): PromiseLike<void>
  • allure.subSuite(name: string): PromiseLike<void>
  • @allure.label.parentSuite:⟨VALUE⟩
  • @allure.label.suite:⟨VALUE⟩
  • @allure.label.subSuite:⟨VALUE⟩

Assign the names of parent suite, suite, or sub-suite for a test, as part of Allure's suite-based hierarchy.

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

it("Authentication", () => {
  allure.parentSuite("Tests for web interface");
  allure.suite("Tests for essential features");
  allure.subSuite("Tests for authentication");
  // ...
});
ts
it(
  "Authentication" +
    " @allure.label.parentSuite:TestsForWebInterface" +
    " @allure.label.suite:TestsForEssentialFeatures" +
    " @allure.label.subSuite:TestsForAuthentication",
  () => {
    // ...
  },
);

Test steps ​

  • allure.step<T = void>(name: string, body: (context: StepContext) => T | PromiseLike<T>): PromiseLike<T>
  • allure.logStep(name: string, status?: Status, error?: Error): PromiseLike<void>

Define a test step or sub-step with the given name.

A step function accepts either no arguments or an object with the following methods:

  • displayName() — override the step name during its execution.
  • parameter() — indicate arbitrary parameters used for the step. The available signatures of this method are similar to the test-wide implementation, see Parametrized tests.

To create a step without a body, call the logStep() function that accepts a name and, optionally, a step status and an error object.

ts
import * as allure from "allure-js-commons";
import { Status } from "allure-js-commons";

it("Authentication", () => {
  allure.step("Step 1", () => {
    allure.step("Sub-step 1", (ctx) => {
      ctx.parameter("foo", "1");
      // ...
    });
    allure.step("Sub-step 2", (ctx) => {
      ctx.parameter("foo", "2");
      // ...
    });
  });
  allure.logStep("Step 2", Status.SKIPPED);
});

Parametrized tests ​

  • allure.parameter(name: string, value: string, options?: ParameterOptions): PromiseLike<void>

Specify a name and value of a parameter that was used during this test. See Parametrized tests for more details.

The options argument, if given, must be an object with two optional properties excluded and mode.

  • If excluded is set to true, Allure will not use the parameter when comparing the current test result with previous one in the history. See Common pitfall: a test's retries are displayed as separate tests.

  • The mode affects how the parameter will be displayed in the report. Available options are:

    • "default" (same as not specifying any mode) — the parameter and its value will be shown in a table along with other parameters.
    • "masked" — the parameter will be shown in the table, but its value will be hidden. Use this mode for passwords, tokens and other sensitive parameters.
    • "hidden" — the parameter and its value will not be shown in the test report.

    Note, that even when you use the "masked" or "hidden" mode, it is still possible to extract the value from the allure_results directory if you publish it.

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

for (const login of ["johndoe", "[email protected]"]) {
  it("Authentication", () => {
    allure.parameter("login", login);
    allure.parameter("time", new Date().toUTCString(), { excluded: true });
    // ...
  });
}

Attachments ​

  • allure.attachment(name: string, content: Buffer | string, options: ContentType | string | AttachmentOptions): PromiseLike<void>
  • allure.attachmentPath(name: string, path: string, options: ContentType | string | Omit<AttachmentOptions, "encoding">): PromiseLike<void>

Add an attachment to the test result under the given name. Pass either the content or the path from which the data will be read.

The options argument controls the media type of the content and the filename extension that will be used if a user downloads the attachment from the test report. You can either specify both options in an object (as shown for the image attachment below) or just specify the media type and let Allure deduce the appropriate filename extension automatically (as shown for the text attachment below). In either case, the media type can be a value from the ContentType enumeration or any string.

ts
import * as allure from "allure-js-commons";
import { ContentType } from "allure-js-commons";

it("Authentication", () => {
  // ...

  allure.attachment("Text file", "This is the file content.", ContentType.TEXT);

  allure.attachmentPath("Screenshot", "/path/to/image.png", {
    contentType: ContentType.PNG,
    fileExtension: "png",
  });
});

TIP

If your test calls cy.screenshot() or if the video recording is enabled in the Cypress configuration, the resulting images and video files will be attached to the test results automatically.

Pager
Previous pageConfiguration
Next pageGetting started
Powered by

Join our newsletter

Allure TestOps
  • Overview
  • Why choose us
  • Cloud
  • Self-hosted
  • Success Stories
Company
  • Documentation
  • Blog
  • About us
  • Contact
  • Events
© 2025 Qameta Software Inc. All rights reserved.