Report Formats
grpctestify supports console output and file reports.
Use JSON for automation, JUnit for CI dashboards, and Allure for richer analytics.
Console
grpctestify tests/JSON
grpctestify tests/ --log-format json --log-output results.jsonJUnit
grpctestify tests/ --log-format junit --log-output results.xmlAllure
grpctestify tests/ --log-format allure --log-output allure-resultsAllure 2 and Allure 3 share the same allure-results on-disk contract — one result file per test plus a handful of sidecar files. grpctestify emits that shared contract; there is no separate "Allure 2 mode" or version flag, and the same allure-results directory works with either allure generate (Allure 2 CLI) or Allure 3.
What's in allure-results/:
{uuid}-result.jsonper test — status, timing, labels, per-assertion steps (expected/actual on failure), META (owner/tags/summary/links){uuid}-exchange-attachment.json— the captured request/response headers, trailers, and body, attached to its test{uuid}-container.jsonper directory that has a_setup.gctf/_teardown.gctffixture — links the fixture in as a before/after and the directory's ordinary tests as its childrencategories.json— a static defect taxonomy (assertion / gRPC status / connection / timeout / parse / validation) so failures group sensibly in the UIenvironment.properties— target address, grpctestify version, parallelismexecutor.json— populated automatically on GitHub Actions (or any CI setting the genericCI/BUILD_URL/BUILD_NUMBERvariables)
Labels drive two navigation trees from the gRPC endpoint alone (no extra config): Suites (parentSuite/suite/subSuite = package/service/method) and Behaviors (epic/feature/story = the same). A test that only passed after a retry is flagged flaky in its status details.
Allure attachments and per-assertion detail are only populated when the runner captures the exchange — this happens automatically whenever --log-format allure is set (or force it for any format with --capture-exchange; see Notes).
HTML
Single self-contained file, no network access required to view it (no CDN, no JS at all — every interaction is native <details>/checkbox CSS): a hero verdict banner leads with the pass/fail glyph, labeled Passed/Failed/Skipped/ Duration counts, and a thin ratio bar; failed tests get a red left-accent border and stay expanded (every assertion, tags, owner, and a collapsible captured exchange); the full test list collapses behind a summary when the whole run is green, so a clean report stays short. Slowest tests/assertions live in a secondary collapsed "Performance" section. Monospace type and a light/dark toggle in the corner (a checkbox-driven CSS switch, no JS) tie the report's look to the CLI's own terminal output.
grpctestify tests/ --log-format html --log-output report.htmlMultiple formats at once
--log-format accepts a comma-separated list to write several reports from one run. With more than one format, --log-output becomes a directory holding one file per format (junit.xml, html.html, an allure/ subdirectory, etc.) instead of an exact file path:
grpctestify tests/ --log-format junit,html --log-output reports/Notes
- Use
--log-formattogether with--log-outputto write file reports - If
--log-outputis omitted, run continues and report file is skipped with a warning - Set the
NO_COLORenvironment variable to disable colorized console output (no dedicated CLI flag) - Reports can be combined with
--streamfor live integrations - The captured request/response exchange is buffered automatically for verbose console output and for any format that renders it (Allure/JSON/ YAML/HTML/JUnit) once
--log-outputis set; force it for any other case with--capture-exchange
Metadata in reports
Reports include metadata from the META section:
- JUnit:
<property>elements for tags/owner/summary/links, display name fromMETA.name - Allure: labels for tags, owner, package/service/method trees;
descriptionfromMETA.summary;linksfromMETA.links - HTML: tags and owner shown on each test's card
- Console: tags shown in error output
- JSON / YAML: full
metaobject in each test result
See META and Attributes for details.