CI Reporter Integration
Automatically publish test results from your CI pipeline to TestOps using framework-specific reporters. See results, coverage, and trends directly in your TestOps dashboard.
Overview
TestOps provides reporter packages that plug into your existing test frameworks. When your CI pipeline runs tests, the reporter automatically streams results to TestOps in real time. No changes to your test code are required — just add the reporter to your framework configuration.
Available reporters:
@calimatic-testops/jest-reporter— For Jest 27+
Prerequisites
- A TestOps account with at least one project created. Go to Getting Started if you have not set this up yet.
- A CLI Token for authentication. Generate one from Settings > CLI Tokens in the TestOps dashboard.
- Your project slug (visible on the project settings page).
Installation
Install the reporter as a dev dependency in your project:
Configuration
Add the reporter to your Jest configuration. The reporter requires three environment variables and accepts optional inline options.
Environment Variables (required)
Set these in your CI environment (GitHub Actions secrets, GitLab CI variables, etc.). The reporter silently disables itself when these are missing, so local test runs are unaffected.
Jest Configuration
Add the reporter to your jest.config.js or jest.config.ts:
Setting Test Layers
The layers option controls what appears in the Layers column on the TestOps dashboard. Set it to match the type of tests the configuration runs. Common values:
unitUnit testsintegrationIntegration testse2eEnd-to-end testssmokeSmoke testssystemSystem testscontractsContract testsfunctionalFunctional testsregressionRegression testsIf your project has separate Jest configurations for different test types, set the layer accordingly in each:
You can also pass multiple layers if a single config runs mixed test types:
Alternatively, set layers via the TESTOPS_LAYERS environment variable (comma-separated):
All Reporter Options
| Option | Type | Default | Description |
|---|---|---|---|
url | string | TESTOPS_URL env | TestOps server URL |
token | string | TESTOPS_TOKEN env | API token |
project | string | TESTOPS_PROJECT env | Project slug |
layers | string[] | TESTOPS_LAYERS env | Test layers shown in dashboard |
source | string | "jest-reporter" | Source identifier |
launchName | string | "Jest Run" | Name shown in dashboard |
attributes | object | undefined | Extra metadata attached to the launch |
flushSize | number | 100 | Batch size for result uploads |
silent | boolean | true | Silently disable when config is missing |
All Environment Variables
| Variable | Description |
|---|---|
TESTOPS_URL | TestOps server URL (required) |
TESTOPS_TOKEN | API token from Settings > CLI Tokens (required) |
TESTOPS_PROJECT | Project slug (required) |
TESTOPS_LAYERS | Comma-separated test layers, e.g. "unit,integration" |
TESTOPS_SOURCE | Source identifier override |
TESTOPS_ENVIRONMENT | Environment name (e.g. "staging", "ci") |
TESTOPS_CORRELATION_ID | Group multiple suites under one logical run |
GitHub Actions Example
A complete workflow that runs unit and integration tests as separate jobs, each reporting to TestOps with the correct layer:
Grouping Suites with Correlation IDs
When multiple test suites (unit, integration, e2e) run in the same CI pipeline, pass the same TESTOPS_CORRELATION_ID to group them under a single combined report in TestOps.
On GitHub Actions this is auto-detected from the run ID. On other CI providers, set it explicitly: