All free skills / Other majors
allure-js-commons 3.x
Use allure-js-commons 3.x as the test-facing Allure facade or as the SDK foundation for a framework adapter. Prefer the v3 ReporterRuntime/TestRuntime architecture over the removed v2 AllureRuntime shape.
- For
allure-js-commons@3.12.0- Verified
- 2026-09-08, 4 examples executed
- Skill package
@modootoday/pmcp-allure-js-commons@3.0.0
Use this skill for free
No PMCP login or subscription is required. Download the original instructions, or install the content-only archive with your project's package manager.
Download SKILL.md · Download package archive
npm install --save-dev https://pmcp.build/skills/allure-js-commons/3/package.tgz
PMCP discovers the installed package's instructions. Connect your runtime after installation.
Archive integrity
sha512-nImPTK40N+dQ7ARv2U6nVEDAF62zfAoTWlPBdw+vrODVywuWVmBKAA7odoVYJxBMkj3XMOAfAxmaFFOgI9gP/g==Complete instructions
Verified against allure-js-commons@3.12.0 on 2026-09-08. 4 of 4 examples executed.
allure-js-commons 3.x
Scope
allure-js-commons is a shared runtime API and reporter SDK. It does not execute tests or render HTML. A framework adapter must produce allure-results; Allure Report then generates or opens the report.
The package has two distinct surfaces:
- The root package is the test-facing facade: metadata, parameters, steps, logs, and attachments.
allure-js-commons/sdkand its subpaths are for framework integrations and custom reporters.
Test-facing facade
Import the asynchronous facade from the package root:
import assert from "node:assert/strict";
import * as allure from "allure-js-commons";
assert.equal(typeof allure.epic, "function");
assert.equal(typeof allure.feature, "function");
assert.equal(typeof allure.story, "function");
assert.equal(typeof allure.owner, "function");
assert.equal(typeof allure.severity, "function");
assert.equal(typeof allure.issue, "function");
assert.equal(typeof allure.tms, "function");
assert.equal(typeof allure.tag, "function");
assert.equal(typeof allure.description, "function");
assert.equal(typeof allure.descriptionHtml, "function");
assert.equal(typeof allure.displayName, "function");
assert.equal(typeof allure.historyId, "function");
assert.equal(typeof allure.testCaseId, "function");
assert.equal(typeof allure.parameter, "function");
assert.equal(typeof allure.step, "function");
assert.equal(typeof allure.logStep, "function");
assert.equal(typeof allure.attachment, "function");
assert.equal(typeof allure.attachmentPath, "function");
assert.equal(typeof allure.globalAttachment, "function");
assert.equal(typeof allure.globalAttachmentPath, "function");
Typical calls are asynchronous:
import assert from "node:assert/strict";
import * as allure from "allure-js-commons";
assert.equal(typeof allure.step, "function");
// These calls are meaningful when a framework integration has registered
// the active runtime with setGlobalTestRuntime().
await allure.epic("Authentication");
await allure.feature("Password sign-in");
await allure.owner("qa-team");
await allure.parameter("browser", "chromium");
await allure.step("Submit valid credentials", async () => {
await allure.attachment(
"request",
JSON.stringify({ login: "jane" }),
{ contentType: "application/json" },
);
});
Without an integration setup, facade calls warn and have no reporting effect. For Node's test runner, the documented integration setup uses --import allure-node-test/setup; the reporter is selected with --test-reporter allure-node-test/reporter.
Synchronous facade
Use allure-js-commons/sync for synchronous integrations:
import assert from "node:assert/strict";
import * as allure from "allure-js-commons/sync";
assert.equal(typeof allure.epic, "function");
assert.equal(typeof allure.parameter, "function");
assert.equal(typeof allure.step, "function");
allure.epic("Authentication");
allure.parameter("browser", "chromium");
allure.step("Submit valid credentials", () => {
allure.attachment(
"request",
JSON.stringify({ login: "jane" }),
{ contentType: "application/json" },
);
});
The callback passed to synchronous step() must be strictly synchronous and must not return a Promise. Do not use an async callback with this facade.
Custom integrations and reporter SDK
Version 3 split the old runtime into client/facade code and an SDK. The v3 integration names are ReporterRuntime and TestRuntime; the old AllureRuntime shape belongs to v2-era code.
The SDK surface includes:
ReporterRuntimecreateDefaultWriterFileSystemWriterInMemoryWriterMessageWriterMessageReadersetGlobalTestRuntimeMessageTestRuntimeMessageHolderTestRuntimecreateTestResultcreateStepResultcreateFixtureResultcreateTestResultContainer
The reporter classes are imported from allure-js-commons/sdk/reporter; runtime classes are imported from allure-js-commons/sdk/runtime. RuntimeMessage is a type from allure-js-commons/sdk.
import assert from "node:assert/strict";
import { ReporterRuntime, InMemoryWriter } from "allure-js-commons/sdk/reporter";
import {
MessageTestRuntime,
MessageHolderTestRuntime,
setGlobalTestRuntime,
} from "allure-js-commons/sdk/runtime";
assert.equal(typeof ReporterRuntime, "function");
assert.equal(typeof InMemoryWriter, "function");
assert.equal(typeof MessageTestRuntime, "function");
assert.equal(typeof MessageHolderTestRuntime, "function");
assert.equal(typeof setGlobalTestRuntime, "function");
A custom adapter creates a ReporterRuntime with a writer, registers a test runtime with setGlobalTestRuntime(), maps framework lifecycle events to startTest, updateTest, stopTest, and writeTest, and forwards runtime messages to ReporterRuntime.applyRuntimeMessages().
A representative reporter construction is:
import { ReporterRuntime, FileSystemWriter } from "allure-js-commons/sdk/reporter";
const reporterRuntime = new ReporterRuntime({
writer: new FileSystemWriter({ resultsDir: ".out/allure-results" }),
});
Use createDefaultWriter({ resultsDir: "./allure-results" }) when the integration wants the package's default writer selection. Use InMemoryWriter when the adapter needs an in-memory writer. The exact framework lifecycle mapping remains the adapter's responsibility.
Migration traps from v2
Do not carry this older custom-integration shape into 3.x:
const runtime = new AllureRuntime({ resultsDir: "./allure-results" });
In v3, use ReporterRuntime plus a writer, and connect the framework-side TestRuntime through setGlobalTestRuntime().
Also do not rely on old root exports such as ExecutableItem or FileSystemAllureWriter; v3 no longer exports those names from the package root.
The root facade's test-facing usage did not become the SDK integration API. Keep calls such as allure.step() in framework tests, and use the SDK subpaths when implementing a framework adapter.
What this skill does not cover
- The complete
ReporterRuntimelifecycle method signatures or message schemas. - How to implement a particular framework adapter.
- The full behavior or constructor options of every writer, reader, result factory, or runtime class.
- Allure Report generation or HTML rendering.
- Test-runner command configuration beyond the documented Node test runner setup.
- Network, filesystem, or framework-specific attachment behavior.