Skip to main content

externalTestRunArchiver

A StageCrewMember that archives test run data (db.json) and screenshot artifacts to disk during the test run.

Unlike HtmlReporter, this crew member does not generate the aggregated HTML report. It only persists the raw data. Use it in CI pipelines where each parallel job archives its own data, and a separate aggregation step (via HtmlReportGenerator or the CLI) combines all data into a single report.

When to use TestRunArchiver instead of HtmlReporter

Use HtmlReporter (the default) when you want a single crew member to handle both data collection and report generation in the same process.

Use TestRunArchiver when:

  • Tests run in parallel across multiple CI jobs or containers
  • Report generation should happen after all test jobs complete
  • You need to aggregate results from multiple shards into one report

Split workflow for parallel CI jobs

Step 1: Register TestRunArchiver in each parallel CI job:

import { configure } from '@serenity-js/core';

configure({
crew: [
['@serenity-js/html-reporter:TestRunArchiver', {
outputDirectory: './reports/serenity-js',
testRunId: process.env.BUILD_NUMBER,
moduleId: 'api-tests',
}],
],
});

Step 2: After all jobs finish, aggregate and generate the report:

npx @serenity-js/html-reporter aggregate \
--input "./reports/serenity-js/test-runs/**" \
--output ./reports/serenity-js \
--spec-dir ./spec

Registering with Playwright Test

// playwright.config.ts
import { defineConfig } from '@playwright/test';
import type { SerenityFixtures, SerenityWorkerFixtures } from '@serenity-js/playwright-test';

export default defineConfig<SerenityFixtures, SerenityWorkerFixtures>({
reporter: [
['line'],
['@serenity-js/playwright-test', {
crew: [
['@serenity-js/html-reporter:TestRunArchiver', {
outputDirectory: './reports/serenity-js',
testRunId: process.env.GITHUB_RUN_NUMBER,
moduleId: 'e2e-chrome',
}],
],
}],
],
});

Registering with WebdriverIO

// wdio.conf.ts
import type { WebdriverIOConfig } from '@serenity-js/webdriverio';

export const config: WebdriverIOConfig = {
framework: '@serenity-js/webdriverio',
serenity: {
crew: [
['@serenity-js/html-reporter:TestRunArchiver', {
outputDirectory: './reports/serenity-js',
testRunId: process.env.BUILD_NUMBER,
moduleId: 'wdio-chrome',
}],
],
},
};

Programmatic registration with fromJSON

import { configure } from '@serenity-js/core';
import { TestRunArchiver } from '@serenity-js/html-reporter';

configure({
crew: [
TestRunArchiver.fromJSON({
outputDirectory: './reports/serenity-js',
testRunId: process.env.BUILD_NUMBER,
moduleId: 'api-tests',
}),
],
});

Learn more

Implements

Index

Constructors

externalconstructor

  • new TestRunArchiver(deps: ArchiverDependencies, executionContext?: ExecutionContext, stage?: Stage): TestRunArchiver
  • Parameters

    • externaldeps: ArchiverDependencies
    • externalexecutionContext: ExecutionContext = {}
    • externaloptionalstage: Stage

    Returns TestRunArchiver

Methods

staticexternalfromJSON

externalassignedTo

externalnotifyOf

  • Parameters

    Returns void