Skip to main content

pytest plugin for test analytics and flaky-test detection. Free local HTML reports out of the box, or upload to cloudreport.dev for cloud history and team dashboards.

Project description

pytest-cloudreport

PyPI Python License: MIT

Pass-rate trends, flaky-test detection, and duration tracking for your pytest suite — straight from pytest, no CI plugin, no YAML edits.

pip install pytest-cloudreport
pytest --cloudreport-local

Opens a self-contained cloudreport.html in your browser. No signup. No account. Nothing leaves your machine.

When you want history to survive across CI runs and developer laptops, point the plugin at cloudreport.dev and every pytest invocation uploads automatically.


Why pytest-cloudreport

Every pytest suite past ~50 tests develops the same three problems:

  • Flaky tests that fail once a week. Impossible to spot from one CI log.
  • Runs that quietly get slower. Until CI crawls and nobody knows which tests to blame.
  • No memory across machines. Your local run, your coworker's run, and the last CI run all vanish the moment the process exits.

pytest-cloudreport records every run so the patterns show up on their own.


What you get

Local (free, no account) Hosted — cloudreport.dev
Self-contained HTML report
Pass / fail / skip counts, durations, tracebacks
10-run trend chart ✅ with --accumulate
Persistent history across CI + developer machines
Flaky test detection across runs
Branch / commit / CI provider auto-tracking
Team dashboards
Web UI + JSON API

30-second start

Local, no account

pip install pytest-cloudreport
pytest --cloudreport-local

Writes cloudreport.html and opens it. Everything stays on your machine.

Want trend charts across your last 10 runs?

pytest --cloudreport-local --accumulate

Each run is appended to ~/.pytest-cloudreport/history.db.

Hosted — cloudreport.dev

Every new account starts on the Free tier — no credit card required.

  1. Sign up at cloudreport.dev — a default project and API key are created immediately.
  2. export PYTEST_CLOUD_API_KEY=pcr_your_key_here
    
  3. pytest
    

Runs appear on the dashboard within seconds. No CI plugin install. No GitHub App. No YAML edits beyond exporting the key.


CI, out of the box

GitHub Actions, GitLab CI, Jenkins, and CircleCI are auto-detected — branch, commit SHA, and run ID are captured with zero configuration.

- uses: actions/checkout@v4
- uses: actions/setup-python@v5
  with: { python-version: "3.12" }
- run: pip install -r requirements.txt pytest-cloudreport
- run: pytest
  env:
    PYTEST_CLOUD_API_KEY: ${{ secrets.PYTEST_CLOUD_API_KEY }}

The upload runs in a background thread with a 25-second timeout — your build never waits for analytics, and never fails because of them.


Configuration

Values come from environment variables or pytest.ini. Environment wins.

Env var pytest.ini Default What it does
PYTEST_CLOUD_API_KEY cloudreport_api_key Project API key. Setting this auto-enables cloud upload.
PYTEST_CLOUD_API_URL cloudreport_api_url Production backend Override for self-hosted or preview deployments.
PYTEST_CLOUD_ENV cloudreport_environment ci Environment label attached to every run.

CLI flags

  • --cloudreport-local — generate a self-contained HTML report. No API key required. If a key is also configured, the run uploads to the cloud in the same invocation.
  • --accumulate — with --cloudreport-local, append the run to the local history DB so the HTML report shows trends.
  • --cloudreport — force-enable cloud upload even without PYTEST_CLOUD_API_KEY set (warns if the key is missing so failures aren't silent).
  • --cloudreport-verbose — print upload status (or error) to stdout.

Pricing

Free during early access. Paid pricing launches with 6 months free for early adopters on any plan.

Free Starter Pro
Price $0 $24/month $99/month
Projects 1 10 Unlimited
Tests per day 5,000 100,000 300,000
History retention 7 days 6 months 1 year
Flaky test detection
CI provider auto-detect
GitHub Action
Team members 1 10 Unlimited
Priority support

Setup is identical across all tiers — same plugin, same API key.


Privacy

Sent to the server: test names, statuses, durations, assertion messages, tracebacks. Never sent: source code, test fixtures, environment variables, or stdout/stderr captured during the run.


Zero runtime dependencies

The plugin depends only on pytest and jinja2. No SDK, no telemetry library, no background daemon. Uploads use the Python standard library over plain HTTPS.


Support

License

MIT. See LICENSE.

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_cloudreport-0.2.1.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

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

pytest_cloudreport-0.2.1-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file pytest_cloudreport-0.2.1.tar.gz.

File metadata

  • Download URL: pytest_cloudreport-0.2.1.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for pytest_cloudreport-0.2.1.tar.gz
Algorithm Hash digest
SHA256 78369d1f72bbcffc509c7f2dd26c7461929dd5a7059fba03e9714af013f59ff1
MD5 78ca1964d840d8083a9e903c3025c24c
BLAKE2b-256 3a37fa3611228cde120c4dd4cda2f535a45cec65e0c9bcbab3e66f89bf71495f

See more details on using hashes here.

File details

Details for the file pytest_cloudreport-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pytest_cloudreport-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5b8c45d941be06734e090f88216a31178e512fe6544ae57bbc72bb68e6cc624d
MD5 da9e141c7a7ee5b3538c9aba7bf1e064
BLAKE2b-256 00084a172b27b43cee82b945b289308cc5c55d24170789e5ab286b3581ac510c

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