The final CI-only failure was a Next.js module-shape mismatch in the terminal test. I added the missing next/navigation.js alias so Forgejo can resolve the same named exports the full Bun test run expects.
+
The remaining Forgejo-only failure was a Next.js module-shape mismatch in the terminal test. I taught the test harness to mock both the bare next/navigation specifier and the resolved next/navigation.js path so Forgejo can import the same named exports the local suite already accepts.
- Updated: 2026-05-30 01:48 EDT
+ Updated: 2026-05-30 01:53 EDTBeads: islandflow-3l6Validation: targeted terminal test + full Bun suite passed
-
New Changes as of 2026-05-30 01:48 EDT
-
This update is the last missing piece after the earlier Bun PATH and redirect-mock fixes. Forgejo was still loading next/navigation.js directly in the terminal test, so Bun threw before the test body could run.
+
New Changes as of 2026-05-30 01:53 EDT
+
This update builds on the earlier Bun PATH and redirect-mock fixes. Forgejo was still resolving the Next.js navigation module through the explicit .js path, so the test harness now mocks both the specifier and the resolved path before the terminal module loads.
Summary of changes
-
Added a next/navigation.js mock alias in apps/web/app/terminal.test.ts.
-
Exposed both redirect and usePathname from the alias to match the CI runtime's import shape.
+
Wrapped the Next.js navigation stubs in a shared mock object in apps/web/app/terminal.test.ts.
+
Added explicit mocks for both import.meta.resolve("next/navigation") and import.meta.resolve("next/navigation.js").
+
Kept the redirect shim and usePathname stub identical across every module entry point Forgejo might choose.
Why this change was made
-
The previous mock covered next/navigation, but the full CI run resolved the explicit .js entry point. Without the alias, Bun reported a missing named export and aborted the test file.
+
The previous mock covered the string specifier, but Forgejo's Bun runtime still resolved the explicit .js entry point in the test job. Without the resolved-path aliases, Bun reported a missing named export and aborted the file before the assertions could run.
Rendered with @pierre/diffs/ssr from the current working tree. It shows the new next/navigation.js alias in the terminal test.
+
Rendered with @pierre/diffs/ssr from the current working tree. It shows the shared Next.js navigation mock plus the explicit resolved-path aliases that keep Forgejo aligned with the local Bun runtime.