Reporter provides several libraries for various testing frameworks. On this page we collect the reference to them. Learn how to install and configure reporter for your project. But make sure you imported tests first.


📑 This documentation is taken from open-source project testomatio/reporteropen in new window

Library for sending test run reports to your testomat.ioopen in new window project.


Get the {API_KEY} from testomat.

You can refer sample tests from example folder of this repo. This is a basic example. If you need something full fledged you can refer this example repoopen in new window.

Add @testomatio/reporter package to your project:

npm i @testomatio/reporter --save

For testcafe use testcafe reporter:

npm i testcafe-reporter-testomatio

For newman use:

npm i newman-reporter-testomatio --save-dev

newman and newman-reporter-testomatio should be installed in the same directory.
If you run your tests using globally installed newman (newman run ...), intall newman-reporter-testomatio globally too (npm i newman-reporter-testomatio -g).
If you use locally installed newman (within the project) (npx newman run ...), install newman-reporter-testomatio locally (npm i newman-reporter-testomatio). You can verify installed packages via npm list or npm list -g.



Make sure you load all your tests using check-testsopen in new window.

Add plugin to codecept confopen in new window:

plugins: {
  testomatio: {
    enabled: true,
    require: '@testomatio/reporter/lib/adapter/codecept',
    apiKey: process.env.TESTOMATIO || 'API_KEY', // pass in api key via config or env variable

Run the following command from you project folder:

TESTOMATIO={API_KEY} npx codeceptjs run

CodeceptJS Parallel Run

If tests run parallel, like workers in CodeceptJS use start-test-run command to get proper reports:

TESTOMATIO={API_KEY} npx start-test-run -c 'npx codeceptjs run-workers 2'

Specify a command to run with -c option in start-test-run

Use --env-file <envfile> option to load environment variables from .env file. Inside env file TESTOMATIO credentials like TESTOMATIO api key or S3 config can be stored.


Add a reporter to Playwright config:

reporter: [
      apiKey: process.env.TESTOMATIO,

Run the following command from you project folder:

TESTOMATIO={API_KEY} npx playwright test


Load the test using using check-tests if not done already. Get the test id from testomat account and add it to your mocha test like in this exampleopen in new window.

Run the following command from you project folder:

mocha --reporter ./node_modules/testomat-reporter/lib/adapter/mocha.js --reporter-options apiKey={API_KEY}


Load the test using using check-tests. Add the test id to your tests like in this exampleopen in new window.

Add the following line to jest.config.jsopen in new window:

reporters: ['default', ['@testomatio/reporter/lib/adapter/jest.js', { apiKey: process.env.TESTOMATIO }]],

Run your tests.


Load you test using check-cucumberopen in new window.

Run the following command from you project folder:

TESTOMATIO={API_KEY} ./node_modules/.bin/cucumber-js --format ./node_modules/@testomatio/reporter/lib/adapter/cucumber.js


Load the test using using check-tests.

Run the following command from you project folder:

TESTOMATIO={API_KEY} npx testcafe chrome -r testomatio

Newman (Postman)

Run collection and specify testomatio as reporter:

TESTOMATIO={API_KEY} npx newman run {collection_name.json} -r testomatio

check-tests not supported for newman for now, tests will be created on testomatio by default


Load the test using using check-tests.

Register our cypress-plugin in cypress/plugins/index.js:

const testomatioReporter = require('@testomatio/reporter/lib/adapter/cypress-plugin');

 * @type {Cypress.PluginConfig}
module.exports = (on, config) => {
  // `on` is used to hook into various events Cypress emits
  // `config` is the resolved Cypress config

  testomatioReporter(on, config);

  return config;

Run the following command from you project folder:

TESTOMATIO={API_KEY} npx cypress run


Load the test using using check-tests.

Add the following lines to conf.jsopen in new window:

const JasmineReporter = require('@testomatio/reporter/lib/adapter/jasmine');

exports.config = {
  onPrepare: () => {
    jasmine.getEnv().addReporter(new JasmineReporter({ apiKey: process.env.TESTOMATIO }));

Run the following command from you project folder:

TESTOMATIO={API_KEY} npx start-test-run -c 'npx protractor conf.js'


Load the test using using check-tests.

Add the following lines to wdio.conf.jsopen in new window:

const testomatio = require('@testomatio/reporter/lib/adapter/webdriver');

exports.config = {
  // ...
  reporters: [
    [testomatio, {
      apiKey: $ {

For making screenshots on failed tests add the following hook to wdio.conf.js:

    afterTest: function (test, context, { error, result, duration, passed, retries }) {
        if (error) {

Run the following command from you project folder:

TESTOMATIO={API_KEY} npx start-test-run -c 'npx wdio wdio.conf.js'


Pipes allow you to get report inside different systems (e.g. Pull request comment, database etc) For now next pipes available:


This pipe adds comment with run report to GitHub Pull Request.

To use it:

  1. run your tests using github actions in Pull Request
  2. pass GH_PAT (GitHub Personal Access Token) as environment variable.

Last report (comment) will be replaced with the new one. To leave previous report pass GITHUB_KEEP_OUTDATED_REPORTS=1 env variable.


This pipe adds comment with run report to GitLab Merge Request.

To use it:

  1. run your tests in Merge Request (pipeline trigger should be merge_request)
  2. pass GITLAB_PAT (GitLab Personal Access Token) as environment variable.

Last report (comment) will be replaced with the new one. To leave previous report pass GITLAB_KEEP_OUTDATED_REPORTS=1 env variable.

JUnit Reports

Notice JUnit reports are supported since 0.6.0

Other frameworks and languages are supported via JUnit reports.

JUnit XML format is standard among test runners on various platforms. can load XML reports from test runners and create tests in a project from it. If your framework is not supported yet, generate JUnit report and upload it into will not only create a run report but also collect all information about tests, including source code, and create tests in a system as regular importer do. The only difference that normal process of import does not require executing tests on import, while importing via repoter requires to have tests executed and XML report provided.

Tested Frameworks:

  • JUnit (JUnit)
  • Python (Pytest)
  • Minitest (Ruby)
  • PHPUnit (PHP)
  • NUnit (C#)

To import JUnit reports into NodeJS >=14 is required.

Package @testomatio/reporter should be installed:

npm i @testomatio/reporter@latest --save-dev

Run your test framework and generate a JUnit report.

Then import XML report into

TESTOMATIO={API_KEY} npx report-xml "{pattern}" --lang={lang}
  • pattern - is a glob pattern to match all XML files from report. For instance, "test/report/**.xml" or just report.xml
  • --lang option can be specified to identify source code of the project. Example: --lang=Ruby or --lang=Java or --lang=Python. Possible values:
    • c#
    • java
    • ruby
    • python
    • php
  • --java-tests option is avaiable for Java projects, and can be set if path to tests is different then src/test/java. When this option is enable, lang option is automatically set to java
  • --env-file <envfile> option to load environment variables from .env file. Inside env file TESTOMATIO credentials like TESTOMATIO api key or S3 config can be stored.
  • --timelimit <time> set a timer to silently kill a long-running reporter process due to network or other issues. For instance, use --set-timeout=3 to stop process after 3 secs.

Notice: All options from Advanced Usage are also available for JUnit reporter

Check the list of examples:

Example: Pytest

Run pytest tests and generate a report to report.xml:

pytest --junit-xml report.xml

Import report with this command

TESTOMATIO={API_KEY} npx report-xml report.xml --lang=python

Example: JUnit with Maven

Run tests via Maven, make sure JUnit report was configured in pom.xml.

mvn clean test

Import report with this command:

TESTOMATIO={API_KEY} npx report-xml "target/surefire-reports/*.xml" --java-tests

You can specify --java-test option to set a path to tests if they are located in path other than src/test/java

Example: NUnit

Generate NUnit XML report and run the following code:

TESTOMATIO={API_KEY} npx report-xml "report.xml" --lang="c#"

Example: Ruby on Rails with Minitest

# test_helper.rb:

reporters = [ true)]
# enable JUnit reporter
reporters <<

Minitest::Reporters.use! reporters

Launch tests:

rails test

Import reports from test/reports directory:

TESTOMATIO={API_KEY} npx report-xml "test/reports/*.xml" --lang ruby


Screenshots or videos from tests are uploaded if a test contains output with a path to file of following format:


For instance, inside Java test you can use System.out.println to print a path to file that should be uploaded as a screenshot.

System.out.println("file://" + pathToScreenshot);

This will produce XML report which contains path to a file:


When uploaded XML report, all files from file:// will be uploaded to corresponding tests.

Advanced Usage

Create Unmatched Tests will not create tests from the report if they have not been previously imported. To create tests during the report TESTOMATIO_CREATE option can be used:


Add Report to Run by ID

This feature is widely used when a run is executed on CI. A run is created before the test is started and it is marked as scheduled. Then a report is assigned to that run using TESTOMATIO_RUN environment variable and {RUN_ID} of a run:


Do Not Finalize Run

If multiple reports are added to the same run, each of them should not finalize the run. In this case use TESTOMATIO_PROCEED=1 environment variable, so the Run will be shown as Running


After all reports were attached and run can be execute the following command:

TESTOMATIO={API_KEY} TESTOMATIO_RUN={RUN_ID} npx start-test-run --finish

Setting Report Title

Give a title to your reports by passing it as environment variable to TESTOMATIO_TITLE.

TESTOMATIO={API_KEY} TESTOMATIO_TITLE="title for the report" <actual run command>

Adding Report to RunGroup

Create/Add run to group by providing TESTOMATIO_RUNGROUP_TITLE:


Adding Environments to Run

Add environments to run by providing TESTOMATIO_ENV as comma seperated values:

TESTOMATIO={API_KEY} TESTOMATIO_ENV="Windows, Chrome" <actual run command>

Save test results to .csv file

Add an env to run by specifying the TESTOMATIO_CSV_FILENAME variable.

  1. using default report name:
TESTOMATIO={API_KEY} TESTOMATIO_CSV_FILENAME="report.csv" <actual run command>
  1. using unique report name:
TESTOMATIO={API_KEY} TESTOMATIO_CSV_FILENAME="test.csv" <actual run command>

It's create a new /export folder with csv files

Attaching Test Artifacts

To save a test artifacts (screenshots and videos) of a failed test use S3 storage. Please note, that the storage is not connected to Testomatio. This allows you to store your artifacts on your own account and not expose S3 credentials.

To save screenshots provide a configuration for S3 bucket via environment variables:

  • S3_REGION - Region your bucket lies.
  • S3_BUCKET - Bucket name.
  • S3_ACCESS_KEY_ID - Access key.
  • S3_SECRET_ACCESS_KEY - Secret.
  • S3_ENDPOINT - for providers other than AWS

By default tests artifacts are uploaded to bucket with public-read permission. In this case uploaded files will be publicly accessible in Internet. These public links will be used by testomat.ioopen in new window to display images and videos.

To upload files with private access bucket add TESTOMATIO_PRIVATE_ARTIFACTS=1 environment value. Then update provide the same S3 credentials in "Settings > Artifacts" section of a testomat.ioopen in new window project, so testomat.ioopen in new window could connect to the same bucket and fetch uploaded artifacts. Links to files will be pre-signed and expires automatically in 10 minutes.

Example upload configuration in environment variables:


It is important to add S3_FORCE_PATH_STYLE var for minio setup

For local testing, it is recommended to store configuration in .env file. If you load configuration from a test runner, use dotenvopen in new window library to load it.

If you run a reporter via start-test-run or report-xml command use --env-file option to load variables from .env file:

npx start-test-run --env-file .env
npx report-xml --env-file .env

On CI set environment variables in CI config.

Test artifacts are automatically uploaded for these test runners:

  • CodeceptJS
  • Playwright
  • Cypress
  • WebdriverIO

To manually attach an artifact and upload it for a test use global.testomatioArtifacts array:

// attach a picture inside a test
// attach a picture and add a name to it
global.testomatioArtifacts.push({ name: 'Screenshot', path: 'img/file.png' });

Artifacts will be uploaded for the current test when it is finished.

To disable uploading artifacts add TESTOMATIO_DISABLE_ARTIFACTS environment variable:


Starting an Empty Run

If you want to create a run and obtain its {RUN_ID} from testomat.ioopen in new window you can use --launch option:

TESTOMATIO={API_KEY} npx start-test-run --launch

This command will return {RUN_ID} which you can pass to other testrunner processes.

When executed with --launch a command provided by -c flag is ignored

Manually Finishing Run

If you want to finish a run started by --launch use --finish option. TESTOMATIO_RUN environment variable is required:

TESTOMATIO={API_KEY} TESTOMATIO_RUN={RUN_ID} npx start-test-run --finish

Debug logs

Pass DEBUG variable with module name e.g. DEBUG=@testomatio/reporter:pipe:github. (Module name could be taken directly from the required module code). To log all debug info pass DEBUG=*.


📑 This documentation is taken from open-source project testomatio/php-reporteropen in new window


composer require testomatio/reporter --dev


Get API key from Testomatio application and set it as TESTOMATIO environment variable. Run your tests withTestomatio\Reporter\Codeception extension enabled:

On Linux/MacOS:

TESTOMATIO={apiKey} php vendor/bin/codecept run --ext "Testomatio\Reporter\Codeception"

On Windows

set TESTOMATIO={apiKey}&& php vendor/bin/codecept run  --ext "Testomatio\Reporter\Codeception"

Alternatively, you can add Testomatio\Reporter\Codeception extension to suite or global config. Reporter will be started only when TESTOMATIO environment variable is set:

    - Testomatio\Reporter\Codeception
Contributors: davert