Run it from the test run
Press Run and Hawzu starts the build on Jenkins, GitHub Actions, or GitLab CI — with the branch and build parameters the run was configured with. No API calls of your own.
Point a test run at a Jenkins job, a GitHub Actions workflow, or a GitLab CI pipeline. Hawzu starts the build, watches it, reads the report it produced, and maps every result back to a test case — so a release decision rests on evidence, not on a green tick somebody screenshotted.
Hawzu is not trying to be a CI platform. Your pipeline builds, deploys, and runs the tests. Hawzu treats it as an execution engine and its report as the source of truth.
Hawzu starts the build — or you point the run at a build that already ran.
Polled on a backoff until it finishes, with the build's own state shown alongside Hawzu's.
Artifacts downloaded, zips unpacked, format detected, results read out.
Each result resolved to a test case by code, and recorded as a real execution result.
Plenty of tools will ingest a JUnit file. The difference is what happens to the rows that don't line up — and to the tests that never ran at all.
Press Run and Hawzu starts the build on Jenkins, GitHub Actions, or GitLab CI — with the branch and build parameters the run was configured with. No API calls of your own.
Hawzu polls the build on a backoff and reports each stage separately — queued, running, downloading, parsing, importing. Your tests failing reads differently from the import failing.
JUnit, TRX, NUnit, Cucumber, and Allure are parsed on arrival — format auto-detected, zip artifacts unpacked. Hawzu reads reports, never your repository.
Each result resolves to a test case by its Hawzu code — stated in the report, or embedded in the test's title. Renaming a test doesn't quietly break the link.
A row that matches nothing in the run is recorded and shown, but never touches status counts, analytics, test case history, or release readiness. It cannot inflate a pass rate.
Test cases the report never mentions stay Not Executed on purpose. That gap — between what you meant to automate and what actually ran — is what a readiness dashboard needs to be honest.
Matching on the test's name alone is a trap — the first rename silently breaks it. So Hawzu resolves each row in order, and never guesses at an ambiguous title.
A JUnit testcase_code property, an MSTest trait, a Cucumber @CHK-123 tag, an Allure label. Survives any rename.
No tooling at all — just put the code in the title. One test can name several cases, and each one gets the verdict.
A convenient fallback for suites that were never instrumented. Ambiguous titles are left unmatched rather than guessed.
Plenty of teams don't want a test tool starting their builds. Two ways to push instead — and both land on exactly the same import path.
Your pipeline tells Hawzu it finished; Hawzu fetches the report and imports it. HMAC-SHA256 signed, so the endpoint needs no session.
One REST call with the report as the body. Format is detected, zips are unpacked — which is how Azure DevOps, CircleCI, and Bitbucket pipelines report into Hawzu today.
curl --data-binary @results.xml \
-H 'Authorization: Bearer <token>' \
'.../import/results?run_title=CI%20build%20123' An imported result is a real execution result — it counts towards coverage, flakiness, traceability, and release readiness exactly as a manual one does.
Every feature is free while we're in early access — no credit card.