Every CI run becomes a Probara run

The reporter runs in the same npx vitest run command, after the default reporter you read in the terminal. There is no separate upload step, the run is closed once every result is in, and a reporting problem never changes the command’s exit code.

It signs in with an organization app token read from the environment: it uses no seat and keeps working when the person who created it leaves.

GitHub Actions
- name: Run Vitest tests
  run: npx vitest run
  env:
    PROBARA_API_TOKEN: ${{ secrets.PROBARA_API_TOKEN }}

Every attempt, with its errors and evidence

A test retried with Vitest’s retry option sends each attempt in order, and so does each repetition with repeats. Every attempt stays in the case’s history, and a failed one carries every error, expect.soft failures included.

Your tests can add more with the reporter’s helpers: steps with probara.step(), files with probara.attach() and parameters with probara.parameters(). In browser mode, the screenshot of a failed test is attached too.

What the reporter sends
Results
One per attempt or repetition, in order
Errors
Every error of a failed attempt, expect.soft included
Steps and attachments
What probara.step(), probara.attach() and Vitest’s annotate add
Skipped tests
Skipped and test.todo tests, recorded as skipped

Tests link to their cases, and missing cases are created

Put a case ID in a test or describe title, or call probara.id() while the test runs, and the result goes to that case.

A test that names none is matched by its automation key, the same key a JUnit import of Vitest’s report uses, and its case is created the first time it reports, in a suite named after its test file.

src/checkout.test.ts
import { describe, test } from 'vitest';
import { probara } from '@probara/vitest-reporter';

describe('checkout', () => {
  test('SHOP-12 pays with a card', () => {});

  test('pays with a gift card', () => {
    probara.id('SHOP-14');
  });

  test('shows the total', () => {
    // No case named: matched by its key, created the first time.
  });
});

Run only the tests of a Probara run

Create a run in Probara, such as the cases of a release or the ones that failed yesterday, and let the pipeline run exactly those tests.

Set the run’s ULID in the job, with nothing to change in vitest.config.ts: Vitest runs only the tests that belong to the run, and their results go into it.

GitHub Actions
- name: Run the tests of a Probara run
  run: npx vitest run
  env:
    PROBARA_API_TOKEN: ${{ secrets.PROBARA_API_TOKEN }}
    PROBARA_RUN_CASES_ONLY: 'true'
    PROBARA_RUN_ULID: ${{ inputs.run_ulid }}

Send your first Vitest run to Probara

Create your organization, create an app token and add the reporter. Every new organization starts on a 14-day Pro trial, with no credit card.