Skip to main content

Pytest reporter for Flakiness.io

Project description

pytest-flakiness

The official Flakiness.io reporter for pytest.

[!TIP] Report demo is available at https://flakiness.io/flakiness/pytest-flakiness

Installation

Install using uv (recommended):

uv add --dev pytest-flakiness

Or via standard pip:

pip install pytest-flakiness

Usage

Once installed, simply run pytest. The reporter will automatically activate, aggregate test results, and create Flakiness Report in the flakiness-report directory.

pytest

The generated report can be viewed interactively via the Flakiness CLI Tool:

flakiness show

[!TIP] Make sure to add flakiness-report directory to your .gitignore

flakiness-report/

If Flakiness Access Token is passed, then the reporter will upload the report to Flakiness.io. You will see a confirmation in your terminal summary:

...
PASSED [100%]
==============================
✅ [Flakiness] Report uploaded: https://flakiness.io/your_org/your_proj/run/1
==============================

Uploading Reports to Flakiness.io

Github Actions

When running in GitHub Actions, the reporter can authenticate using GitHub's OIDC token — no access token needed.

For this to work:

  1. The GitHub Actions workflow must have id-token: write permission.
  2. The --flakiness-project option (or FLAKINESS_PROJECT env variable) must be set to your Flakiness.io project identifier (org/project).
  3. The Flakiness.io project must be bound to the GitHub repository that runs the GitHub Actions workflow.
permissions:
  id-token: write

steps:
  - name: Run Tests
    run: pytest --flakiness-project="my-org/my-project"

You can also use the FLAKINESS_PROJECT environment variable instead of the CLI flag:

permissions:
  id-token: write

steps:
  - name: Run Tests
    env:
      FLAKINESS_PROJECT: my-org/my-project
    run: pytest

Access Token

Alternatively, you can authenticate using your project's Access Token. You can find this in your project settings on flakiness.io.

Set the Access Token using either an environment variable or command-line flag:

export FLAKINESS_ACCESS_TOKEN="flakiness-io-..."
pytest --flakiness-access-token="flakiness-io-..."

All Configuration Options

All options can be set via environment variables or command-line flags:

Flag Environment Variable Description
--flakiness-name FLAKINESS_NAME Name for this environment. Defaults to pytest
--flakiness-output-dir FLAKINESS_OUTPUT_DIR Local directory to save JSON report. Defaults to flakiness-report
--flakiness-project FLAKINESS_PROJECT Flakiness.io project identifier (e.g. org/project). Required for GitHub OIDC authentication
--flakiness-access-token FLAKINESS_ACCESS_TOKEN Your Flakiness.io access token for upload
--flakiness-endpoint FLAKINESS_ENDPOINT Flakiness.io service endpoint. Defaults to https://flakiness.io

Custom Environment Data

You can add custom metadata to your test runs using FK_ENV_* environment variables. These might be handy to capture properties that affect system-under-test.

export FK_ENV_GPU_TYPE="H100"
export FK_ENV_DEPLOYMENT="staging"

The FK_ENV_ prefix is removed and keys are lowercased, e.g. FK_ENV_DEPLOYMENT becomes deployment, and FK_ENV_GPU_TYPE becomses gpu_type.

Local Development

To save reports locally, pass --flakiness-output-dir:

pytest --flakiness-output-dir=./flakiness-reports

This will create a report.json file and an attachments/ directory in the specified folder.

CI/CD Example (GitHub Actions)

Using GitHub OIDC (recommended — no secrets needed):

permissions:
  id-token: write

steps:
  - name: Run Tests
    run: pytest --flakiness-project="my-org/my-project"

Alternatively, using an access token:

- name: Run Tests
  env:
    FLAKINESS_ACCESS_TOKEN: ${{ secrets.FLAKINESS_ACCESS_TOKEN }}
  run: pytest

Contributing

See CONTRIBUTING.md for development setup, running checks, and publishing new versions.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest_flakiness-0.16.0.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytest_flakiness-0.16.0-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file pytest_flakiness-0.16.0.tar.gz.

File metadata

  • Download URL: pytest_flakiness-0.16.0.tar.gz
  • Upload date:
  • Size: 11.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pytest_flakiness-0.16.0.tar.gz
Algorithm Hash digest
SHA256 22b82212a0d073365a83f92581293ca59f403a17403eefedeb6b359b466c4bce
MD5 20d355851f4c1e614792e6195736b756
BLAKE2b-256 3f5cfba3bcaafb84f40d28925c0384e498ffd40824c2601a7a00b668b1bac3ac

See more details on using hashes here.

File details

Details for the file pytest_flakiness-0.16.0-py3-none-any.whl.

File metadata

  • Download URL: pytest_flakiness-0.16.0-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pytest_flakiness-0.16.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a0e2fbf1e1b2946539caa7baa2519027c6bd2c845ec9a081e8a77b23a38f2c68
MD5 bdc0e6b9254bd9361cee2f0bfbaf55a9
BLAKE2b-256 9241a6631dd96f3e573581cc4de53e14fef4da9375b5b39422d05f88fbbb7e49

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page