> ## Documentation Index
> Fetch the complete documentation index at: https://docs.testdino.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Reporter for the e2e Framework by TesterArmy

> Install @testdino/e2e to report test runs from the e2e framework by TesterArmy to TestDino, with config, sharded runs, split mode, and limits.

`@testdino/e2e` reports each test run from the [e2e framework by TesterArmy ↗](https://github.com/tester-army/e2e) to TestDino when the run finishes. The test run appears on the dashboard with its test cases, retries, steps, errors, console output, screenshots, videos, and traces.

For Playwright, use the [Node.js CLI](https://docs.testdino.com/cli/testdino-playwright-nodejs.md) instead.

## Prerequisites

* Node.js `>= 22.12.0`
* `e2e` `>= 0.16.0` and `< 1`
* TestDino API key ([generate one](https://docs.testdino.com/guides/generate-api-keys.md))
* Git initialized repository (for commit and branch metadata)
* `@types/node`, if you type-check your project with `tsc`

## Installation

```bash theme={null}
npm install @testdino/e2e
```

View `@testdino/e2e` on [npm ↗](https://www.npmjs.com/package/@testdino/e2e).

## Set up

Add `testdino()` to the `reporters` array in your e2e config. Other reporters, such as `list`, are optional and yours to keep.

```typescript e2e.config.ts theme={null}
import type { E2EConfig } from 'e2e';
import { testdino } from '@testdino/e2e';

export default {
  targets: [/* your targets */],
  reporters: ['list', testdino()],
} satisfies E2EConfig;
```

Set your API key and run your tests:

```bash theme={null}
export TESTDINO_TOKEN="your-api-key"
npx e2e run
```

When the run finishes, the TestDino line of the e2e output shows a link to the test run, or the number of test cases it uploaded.

## Reporter options

Pass options to `testdino()`. An option set in the config takes precedence over its environment variable.

| Option | Environment variable | Description |
| :- | :- | :- |
| `token` | `TESTDINO_TOKEN` | Project API key. Without it, the reporter uploads nothing. |
| `ciRunId` | `TESTDINO_CI_RUN_ID` | Groups the shards of one run into a single test run. |
| `split` | `TESTDINO_SPLIT` | Split position, for example `2/3`. Needs `splitId`. |
| `splitId` | `TESTDINO_SPLIT_ID` | ID shared by every job of one split run. |
| `tags` | None | Run-level tags, for example `['nightly']`. |
| `artifacts` | None | Set `false` to keep screenshots, videos, and traces local. |

```typescript e2e.config.ts theme={null}
reporters: ['list', testdino({ tags: ['nightly'], artifacts: false })],
```

## Sharded runs

Set the same `TESTDINO_CI_RUN_ID` on every shard. TestDino merges the shards into 1 test run.

```bash theme={null}
TESTDINO_CI_RUN_ID="$CI_RUN_ID" npx e2e run --shard 1/2
TESTDINO_CI_RUN_ID="$CI_RUN_ID" npx e2e run --shard 2/2
```

On GitHub Actions, use `${{ github.run_id }}-${{ github.run_attempt }}` as the ID. A shard started without `TESTDINO_CI_RUN_ID` uploads as its own test run.

## Split mode

When your jobs run different files, use split mode instead of sharding. Give each job its position and the same split ID. TestDino merges the jobs into 1 test run.

```bash theme={null}
TESTDINO_SPLIT=1/2 TESTDINO_SPLIT_ID="$SPLIT_ID" npx e2e run tests/checkout.e2e.ts
TESTDINO_SPLIT=2/2 TESTDINO_SPLIT_ID="$SPLIT_ID" npx e2e run tests/login.e2e.ts
```

Set both variables. Learn how to read the Splits panel in [Split mode](https://docs.testdino.com/guides/playwright-split-mode.md).

## Differences from Playwright test runs

| Area | e2e test runs |
| :- | :- |
| When results appear | After the test run finishes. There is no real-time streaming. |
| Targets | Each e2e target is shown as a project. The [Configuration tab](https://docs.testdino.com/platform/playwright-test-runs/configuration.md) lists them under **Targets**. |
| Artifacts | PNG, JPEG, WebM, ZIP, JSON, TXT, and Markdown files up to 50 MB each. MP4 videos, such as device recordings, are not uploaded. Artifacts still uploading 40 seconds after the run finishes are not uploaded. |
| Visual comparison | Not available: e2e produces no expected, actual, or diff screenshots. |
| [Test Controls](https://docs.testdino.com/guides/test-controls.md) | Not applied to the build result: a failing quarantined test case still fails the build. |
| Re-run commands and CI suggestions | Written for Playwright. They do not apply to e2e test runs. |

## Troubleshooting

> **skipped (TESTDINO\_TOKEN is not set)**
>
> The reporter found no API key. Set `TESTDINO_TOKEN` in the environment that runs `npx e2e run`, or pass `token` to `testdino()`. Generate a new key from [API Keys](https://docs.testdino.com/guides/generate-api-keys.md) if needed.

> **not recorded (the project is over its execution limit)**
>
> Your organization used its executions for this billing cycle. Tests still run, but the test run is not saved. To resume recording, upgrade your plan, or on Pro and Team plans an Owner or Admin can [add executions](https://docs.testdino.com/platform/billing-and-usage/manage-billing.md#add-executions-for-this-cycle) for this cycle.

> **not uploaded (no event channel the server offered could be reached)**
>
> The machine running the tests could not reach TestDino. Check that it allows outbound connections to TestDino, then run the tests again.

> **shards uploaded as separate runs: set TESTDINO\_CI\_RUN\_ID to merge them**
>
> A shard ran without `TESTDINO_CI_RUN_ID`. Set the same value on every shard, as in [Sharded runs](#sharded-runs).

> **split ignored: a split position and TESTDINO\_SPLIT\_ID are needed together**
>
> Only 1 of `TESTDINO_SPLIT` and `TESTDINO_SPLIT_ID` was set. Set both on every job, as in [Split mode](#split-mode).

## Related

> **[Configuration](https://docs.testdino.com/platform/playwright-test-runs/configuration.md)**
>
> Review the commit, CI, and targets of a test run

> **[Generate API Keys](https://docs.testdino.com/guides/generate-api-keys.md)**
>
> Create and manage keys for the reporter and CI


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.