Skip to content

[CI] Parity: surface XML failure messages in the summary#3364

Merged
jithunnair-amd merged 4 commits into
developfrom
ethanwee/parity-surface-failure-messages
Jun 24, 2026
Merged

[CI] Parity: surface XML failure messages in the summary#3364
jithunnair-amd merged 4 commits into
developfrom
ethanwee/parity-surface-failure-messages

Conversation

@ethanwee1

Copy link
Copy Markdown

Split out of #3210 (3 of 3) for easier review.

Surfaces test failure messages inline in the parity summary (generate_summary.py):

  • Extract the XML failure message per failed test and add it as a per-row collapsible Error Message column in the FAILED TESTS table.
  • Cap individual messages and, crucially, budget total message size against GitHub's 1 MiB step-summary limit so a run with many large tracebacks doesn't drop the entire summary. Only the longest messages are clipped, and only when a run would otherwise exceed the budget; the full text always stays in the CSV artifact.

Independent of the other two split PRs (touches only generate_summary.py).

Made with Cursor

Add the per-test error message (parsed from the test report XML, already
stored in the message_<set> CSV column) to the parity summary:

- CSV FAILED TESTS table gets a new 'Error Message' column so downstream
  dashboard parsing has it in structured form.
- Markdown summary gets a top-level collapsible 'Failure messages'
  <details> with one nested <details> per failed test (full traceback in
  an HTML-escaped <pre>), so the message is available without bloating
  the table.
The full .md is piped into $GITHUB_STEP_SUMMARY (1 MB cap); many full
tracebacks can push it over the limit and GitHub drops the whole summary.
Truncate each message to its tail (where the exception is) in the md;
the CSV 'Error Message' column keeps the full text for the dashboard.
Replace the separate bottom 'Failure messages' section with an
'Error Message' column in the FAILED TESTS markdown table. Each cell is
a <details><summary>view</summary> toggle wrapping a <pre> (newlines as
&#10;, pipes escaped) so the table stays scannable and expands per row.
The CSV 'Error Message' column (full text) is unchanged.
…y cap

The per-row 'Error Message' column hard-truncated each message to 2000 chars so
the markdown couldn't exceed GitHub's per-step $GITHUB_STEP_SUMMARY limit
(1 MiB), which clipped useful tracebacks even on small runs with room to spare.

Raise the per-message cap to 50k and size messages against a global 950 KB
budget (1 MiB minus headroom for the surrounding tables): the rest of the
summary is measured first, then the largest uniform per-message cap that fits
the remaining budget is applied. Typical runs render full tracebacks; only when
a run would exceed the cap do the longest (outlier) messages get clipped. Full
text always remains in the CSV 'Error Message' column.

https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-commands#step-isolation-and-limits
@rocm-repo-management-api

Copy link
Copy Markdown

Jenkins build for 9401da6c7e37cc3b9308db24b906c1fba2166cb6 commit is in progress
Links: Pipeline Overview / Build artifacts

Comment on lines 880 to 889
if has_set2:
line += f" | {t.get(f'shard_{s2_name}', '')}"
line += f" | {_xml_test_shard(t, s2_name)}"
line += f" | {t[f'status_{s1_name}']}"
if has_set2:
line += f" | {t.get(f'status_{s2_name}', '')}"
line += f" | {t.get('also_failing_in', '')}"
line += f" | {_job_id_link(t.get(f'job_url_{s1_name}', ''))}"
if has_set2:
line += f" | {_job_id_link(t.get(f'job_url_{s2_name}', ''))}"

@pablo-garay pablo-garay Jun 23, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit : not in this PR change diff but this could be (consolidated in) one "if has_set2:" condition followed by the lines after

@jithunnair-amd jithunnair-amd merged commit 001abbc into develop Jun 24, 2026
2 of 6 checks passed
@jithunnair-amd jithunnair-amd deleted the ethanwee/parity-surface-failure-messages branch June 24, 2026 02:09
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.

3 participants