Skip to content

test(TreeList): the tree-view coverage check runs as one serial part per state - #9004

Merged
cixzhang merged 2 commits into
mainfrom
fix/treelist-coverage-serial-parts
Oct 30, 2026
Merged

cixzhang merged 2 commits into
mainfrom
fix/treelist-coverage-serial-parts

Conversation

@cixzhang

Copy link
Copy Markdown
Contributor

Maintainer impact

The release-time accessibility contracts can go red on a correct TreeList. "every tree-view expectation is exercised by a TreeList state" runs every binding state in one test. It took 56-60 s in recent release checks against the 60 s per-test timeout, and the latest run crossed it. A timeout on a healthy commit holds the release, and the test would keep hitting the limit as states are added.

Intended invariant

Coverage is unchanged: every tree-view expectation is exercised by at least one TreeList binding state, checked over the results of all states. The per-state tests below it are untouched. The time limit is not raised.

Change

The exhaustive test is now a serial group: one test per binding state, each recording its result, followed by one check over all of them. The final check first asserts that every state's result is present, so running it alone, or after a skipped part, fails instead of passing on partial data. Serial mode keeps the parts on one worker in order and skips the rest if one fails. Each part runs a single state, about a fifth of the old test's time. Test only: no product code and no Changeset.

Evidence

All runs were in Chromium against the Storybook built for the failing commit, with Playwright 1.61.1.

  • Before the change: the single test took 26 s locally at normal load (56-60 s on CI runners).
  • After the change: the parts take 3.0-6.8 s each at normal load, and the whole file passes (22/22 over two repeats). Under heavy CPU saturation (8 workers and 32 busy loops) it passes 88/88, with the slowest part at 50 s; that load is far beyond CI's.
  • The final check alone fails as designed, saying that the states' results are missing.
  • Product/runtime behavior verified unchanged: no source change.

Scope

  • No intended public API, product behavior, visual direction, or policy change.
  • Product changes discovered during the work were removed or split.
  • Public text and artifacts contain no internal Meta context.

Testing

  • pnpm exec playwright test packages/core/src/TreeList/__tests__/TreeList.a11y.chromium.spec.ts --project chromium, at normal load and under CPU saturation, plus the final check run alone.
  • prettier --check and eslint on the file are clean.

Credit: @cixzhang wrote this binding in #7477. This change only splits its coverage check so no single test nears the time limit.

Posted by Cindy's agent on her behalf.

…per state

The exhaustive coverage test ran every binding state in one test, 56-60 s
on CI against the 60 s per-test timeout. It is now a serial group: one test
per state recording its result, then one check over all of them that first
requires every state's result. Same coverage, no raised limit. Test only.

Original binding by @cixzhang in #7477.
@vercel

vercel Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
astryx Ready Ready Preview Oct 30, 2026 10:51am UTC

Request Review

@astracat-bot

astracat-bot Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

AI review status for this pull request.

Review status Updated
🟢 Reviewed (for maintainers only) Oct 30, 2026, 11:06 AM UTC

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Meta Open Source bot. label Oct 30, 2026

@astracat-bot astracat-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This looks ready to merge. Splitting the coverage check into one serial part per TreeList binding state keeps all five states under the same never-exercised assertion, and the new presence check makes a missing or failed part fail the check instead of passing on partial results. No changes are needed.

[Automated review]

@astracat-bot astracat-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This looks ready to merge. Splitting the TreeList coverage check into one serial test per binding state keeps all five states under the same never-exercised assertion, and the new presence check makes a missing or failed part fail the check instead of passing on partial results. No changes are needed.

[Automated review]

@cixzhang cixzhang closed this Oct 30, 2026
@cixzhang cixzhang reopened this Oct 30, 2026
@cixzhang cixzhang closed this Oct 30, 2026
@cixzhang cixzhang reopened this Oct 30, 2026
@cixzhang
cixzhang merged commit 4c07cbb into main Oct 30, 2026
91 of 95 checks passed
@cixzhang
cixzhang deleted the fix/treelist-coverage-serial-parts branch October 30, 2026 11:35

This branch was successfully deployed

1 active deployment
Preview — 5e915c0f Deployed Oct 30, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Meta Open Source bot.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant