Skip to content

Job summary and annotations in GitHub Actions and Azure Pipelines - #62

Merged
jochen-testingbot merged 3 commits into
mainfrom
feat/ci-job-summary
Oct 29, 2026
Merged

jochen-testingbot merged 3 commits into
mainfrom
feat/ci-job-summary

Conversation

@jochen-testingbot

Copy link
Copy Markdown
Contributor

Stacked on #61. CLI-only, no server change.

Results show up in the CI system's own UI instead of only in the log, for maestro, espresso, xcuitest and status (new src/utils/ci_summary.ts, called from finishCommand):

  • GitHub Actions: a markdown table appended to $GITHUB_STEP_SUMMARY: verdict, link to TestingBot, one row per device (flows passed / total for Maestro, result for Espresso/XCUITest, link to the run), then a Failures table with each failing flow's first error. Plus one ::error title=TestingBot: <flow> on <device>::<error>\n<run url> annotation per failure (max 10 + a "N more" line, GitHub's per-step cap), properly escaped.
  • Azure Pipelines: the same markdown written to $AGENT_TEMPDIRECTORY and attached with ##vso[task.uploadsummary], failures as ##vso[task.logissue type=error].
  • Maestro retries: only the latest attempt of each flow counts (latest), so a flow that passed on retry is not reported.
  • Skipped when: outcome is not passed/failed (async, dry-run, error); --json (annotations are stdout commands, the summary file is still written); the artifacts command (its run already published one); TESTINGBOT_CI_SUMMARY=0. Failures to write are logged at debug, never fail the command.
  • cli.test.ts mocks it, so this repo's own CI does not write into its job summary.

Heads-up, testingbot/maestro-action: it runs @testingbot/cli@latest and writes its own summary, so after this CLI release action users would get two tables. It needs export TESTINGBOT_CI_SUMMARY=0 before the CLI call in scripts/run.sh (older CLIs ignore it), ideally merged before this release. That change is prepared but not pushed.

Tests: markdown (Maestro with retried flow, Espresso), GitHub/Azure annotation escaping, publish paths (GitHub append, --json, Azure, off/outside CI/no verdict, unwritable file). 857/857, lint + tsc clean. Not yet seen in a real Actions or Azure run.

A markdown results table (per device, failing flows with their first
error, links to TestingBot) goes to $GITHUB_STEP_SUMMARY or the Azure
build summary; each failure becomes an ::error / task.logissue
annotation. Skipped with --json (stdout), for the artifacts command, and
with TESTINGBOT_CI_SUMMARY=0.
@jochen-testingbot

Copy link
Copy Markdown
Contributor Author

Companion: testingbot/maestro-action#2 (sets TESTINGBOT_CI_SUMMARY=0), merge that before releasing this.

@jochen-testingbot
jochen-testingbot changed the base branch from feat/maestro-cancel-previous to main October 29, 2026 10:18
@jochen-testingbot
jochen-testingbot merged commit 3373aa4 into main Oct 29, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant