Most likely culprit is: #1621
It was merged with failed 'build-and-test'
Summary
web_ci → build-and-test hangs indefinitely during the Run all JS/TS tests step (yarn test:all). The tools/composer (widget-builder) vitest run reports all tests passing (6 files / 32 tests), then prints:
Not implemented: navigation to another Document
…and the process never exits, hanging until the GitHub Actions ~6-hour job timeout kills the run.
This reproduces on main and on every PR (it is independent of the change under test), so it currently blocks a green build-and-test for the whole repo.
Reproduction signature
tools/composer → Test Files 6 passed (6)
→ Tests 32 passed (32)
→ Not implemented: navigation to another Document
→ [no further output for ~5 hours, until the job timeout]
Affected runs (all same signature, multiple unrelated branches)
Last known green build-and-test (before the regression): https://github.com/a2ui-project/a2ui/actions/runs/27428052847 (21 min).
Culprit / when it started
Triggered by #1621 ("ci: refactor GitHub Actions pipeline to use composite actions and consolidated CI workflows", commit eb9d5ffb), merged 2026-06-12 18:18 UTC. main's first hanging build-and-test run started at that same timestamp (run 27434536520).
#1621 deleted the dedicated composer_build_and_test.yml workflow and consolidated everything into web_ci.yml's build-and-test job, which now runs yarn test:all (all workspaces, including tools/composer). That is what pulled the composer jsdom test hang into the shared web CI path repo-wide. The underlying open-handle in the composer tests is the deeper cause (see below), but #1621 is what exposed it as a blocking failure for main and every PR.
Likely root cause
tools/composer runs its tests under the jsdom environment (tools/composer/vitest.config.ts). Its components navigate via Next.js routing / anchor links — e.g. <a href="/widget/${id}"> in src/components/layout/sidebar-widgets.tsx and router.push(...) in src/components/main/create-widget.tsx and src/app/gallery/page.tsx. When a test exercises one of these, jsdom logs Not implemented: navigation to another Document and an open handle (jsdom env / Monaco / CopilotKit / a timer) keeps the Node process alive, so vitest run reports success but never terminates.
Suggested directions
- Stub navigation in
tools/composer/src/test/setup.ts (mock window.location / Next.js useRouter so component clicks don't trigger a real jsdom navigation), and/or
- Detect/close the open handle (run
vitest run --reporter=verbose with open-handle detection locally to identify it), and/or
- As a stopgap, add a job-level
timeout-minutes to web_ci so a hang fails fast (minutes) instead of consuming a ~6h runner.
Impact
Blocks a passing build-and-test check on main and all PRs.
Most likely culprit is: #1621
It was merged with failed 'build-and-test'
Summary
web_ci→build-and-testhangs indefinitely during theRun all JS/TS testsstep (yarn test:all). Thetools/composer(widget-builder) vitest run reports all tests passing (6 files / 32 tests), then prints:…and the process never exits, hanging until the GitHub Actions ~6-hour job timeout kills the run.
This reproduces on
mainand on every PR (it is independent of the change under test), so it currently blocks a greenbuild-and-testfor the whole repo.Reproduction signature
Affected runs (all same signature, multiple unrelated branches)
mainrefactor_actionsdependabot/npm_and_yarn/...-24c5ad6f63dependabot/npm_and_yarn/...-d1806c4ab8refactor_actions(earlier)samples-reorg(PR #1628, cancelled)samples-reorg(PR #1628, re-run, cancelled)Last known green
build-and-test(before the regression): https://github.com/a2ui-project/a2ui/actions/runs/27428052847 (21 min).Culprit / when it started
Triggered by #1621 ("ci: refactor GitHub Actions pipeline to use composite actions and consolidated CI workflows", commit
eb9d5ffb), merged2026-06-12 18:18 UTC.main's first hangingbuild-and-testrun started at that same timestamp (run 27434536520).#1621 deleted the dedicated
composer_build_and_test.ymlworkflow and consolidated everything intoweb_ci.yml'sbuild-and-testjob, which now runsyarn test:all(all workspaces, includingtools/composer). That is what pulled the composer jsdom test hang into the shared web CI path repo-wide. The underlying open-handle in the composer tests is the deeper cause (see below), but #1621 is what exposed it as a blocking failure formainand every PR.Likely root cause
tools/composerruns its tests under thejsdomenvironment (tools/composer/vitest.config.ts). Its components navigate via Next.js routing / anchor links — e.g.<a href="/widget/${id}">insrc/components/layout/sidebar-widgets.tsxandrouter.push(...)insrc/components/main/create-widget.tsxandsrc/app/gallery/page.tsx. When a test exercises one of these, jsdom logsNot implemented: navigation to another Documentand an open handle (jsdom env / Monaco / CopilotKit / a timer) keeps the Node process alive, sovitest runreports success but never terminates.Suggested directions
tools/composer/src/test/setup.ts(mockwindow.location/ Next.jsuseRouterso component clicks don't trigger a real jsdom navigation), and/orvitest run --reporter=verbosewith open-handle detection locally to identify it), and/ortimeout-minutestoweb_ciso a hang fails fast (minutes) instead of consuming a ~6h runner.Impact
Blocks a passing
build-and-testcheck onmainand all PRs.