Test reporting for every framework
Qualflare turns your CI test results into hosted, historical reporting with AI analysis — whatever framework you run. Its CLI auto-detects 23+ frameworks, then clusters failures by root cause, scores flaky tests, and rates each launch’s risk. Below are step-by-step reporting guides for the most popular ones.
Framework reporting guides
-
Playwright test reporting
Send Playwright JSON results — AI failure clustering and flaky scoring from Playwright’s native retry data.
-
pytest test reporting
Upload pytest --junitxml output — AI clustering, history-based flaky detection, and pytest-xdist aggregation.
-
CucumberJS test reporting
Add the native @qualflare/cucumberjs formatter — Gherkin step traces, Scenario Outline rows as cases, AI clustering and history-based flaky scoring.
-
Mocha test reporting
Add the native @qualflare/mocha reporter — Mocha’s built-in retries as per-attempt history, AI clustering, and --parallel runs merged into one launch.
-
Vitest test reporting
Add the native @qualflare/vitest reporter — retry history, steps and labels Vitest can’t record, plus AI clustering and flaky scoring across runs.
-
Selenium test reporting
Selenium has no report format of its own — upload your runner’s output and get per-browser flake attribution on top.
-
PHPUnit test reporting
Failures, errors and risky tests kept apart rather than flattened into one red count, plus data-provider rows as cases.
-
TestCafe test reporting
Quarantine-mode unstable tests recorded as genuinely flaky, with screenshots and video kept alongside the failure.
-
Karate test reporting
API scenarios as cases, Scenario Outline rows tracked separately, and tags carried through to the report.
-
TestNG test reporting
Upload Surefire’s JUnit-format XML — @DataProvider rows as cases, and flaky scoring that sees through retryAnalyzer.
-
RSpec test reporting
Use RSpec’s built-in JSON formatter — no extra gem, order-dependent flakiness surfaced, pending kept apart from skipped.
-
Newman test reporting
Send Postman collection runs — requests as cases with stable IDs across renames, plus iteration pass rates.
-
k6 test reporting
Track load tests across runs — checks as pass rates, thresholds as cases, and the failed checks that never fail your build.
-
Go test reporting
Run go test through the native qualflare-go reporter — every t.Run subtest as its own case, AI clustering, and history-based flaky detection.
-
Cypress test reporting
Send Cypress JUnit or mochawesome results — AI clustering and flaky scoring from Cypress’s built-in retries.
-
Jest test reporting
Send Jest JSON results — AI failure clustering and history-based flaky detection across every CI run and monorepo package.
-
JUnit (Java) test reporting
Upload Java JUnit XML from Maven Surefire or Gradle — AI clustering, flaky detection from the XML, and multi-module aggregation.
-
Espresso test reporting
Upload Android instrumented-test JUnit-XML from AndroidJUnitRunner — AI clustering and flaky detection, no emulator execution.
-
XCTest test reporting
Upload the .xcresult bundle directly on macOS — no conversion step — with AI clustering and flaky detection for iOS CI.
-
Maestro test reporting
Send Maestro’s native JUnit-XML output — unify Android + iOS flow results alongside Espresso and XCTest in one dashboard.
-
Detox test reporting
React Native E2E — Detox runs on Jest, so the Jest reporter covers it, and Detox’s screenshots, videos and device logs attach to the right tests.
Also works with Mocha, Selenium, Cucumber, TestNG, RSpec, k6, Newman and more — point the Qualflare CLI at your results file and it auto-detects the format.
How it works
Every guide follows the same two steps: have your test runner write a machine-readable results file (JSON or
JUnit XML), then upload it with one CLI command — qf <project> collect <file>.
The CLI attaches your Git branch and commit and turns each CI run into a tracked launch with AI failure
clustering, flaky-test scoring, per-launch risk, and trends over time — the analysis a local HTML report
can’t do.
of Google's tests show some level of flakiness
Get AI analysis on your test results
Start free with Qualflare — connect your pipeline, upload a run, and get your first AI analysis in minutes.
Get Started FreeWeighing platforms? See how Qualflare compares to other test management tools, read how to evaluate test observability platforms, or browse the best AI test management tools roundup. Setting up a cycle? Start with test planning. Counting the cost of flaky failures? Try the flaky test cost calculator. The analysis layer above per-run reporting is test observability.
Frequently asked questions
Which test frameworks does Qualflare support?
The Qualflare CLI auto-detects 23+ frameworks — Playwright, pytest, Cypress, Jest, JUnit (Java), Mocha, Selenium, TestNG, Cucumber, k6, Newman and more. Point it at your results file (JSON or JUnit XML) and it detects the format automatically.
Do I need to change my test code to use Qualflare?
No. Your test runner already produces a machine-readable results file (JSON or JUnit XML); you add one CLI step — qf <project> collect <file> — after your test run. No test rewrites or framework changes.
How is this different from my framework’s built-in HTML report?
Built-in reports (Playwright HTML, pytest-html, etc.) are per-run and local — they live on the machine that ran them and are gone next build. Qualflare stores results across every CI run and adds AI failure clustering, flaky-test detection, and per-launch risk scoring — analysis a single local report can’t provide.
Does it work in CI/CD?
Yes — GitHub Actions, GitLab CI, Bitbucket Pipelines, Jenkins, CircleCI and more. Authenticate the CLI once with an access token stored as a CI secret, then add the collect step; each run becomes a tracked launch with your Git branch and commit attached.
Is there a free tier?
Yes — the free Starter plan includes AI analysis on up to 100 test reports per month. Paid plans start at $16/user/month billed annually.