# Testing signals — remix-run/react-router

> Canonical page: https://codevetter.com/unpack/react-router/testing-signals

# Testing signals — remix-run/react-router

Scanned commit a6090382ed467b5a2d46c8de1a13b331f14959f8 (2026-09-30). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Tests and CI were inspected, not executed; test existence is not a passing result. The inspected unit configuration uses Jest, with jsdom for the core React package and Node overrides for filesystem sessions. Playwright integration tests exercise application fixtures and browser behavior. This is a bounded inspection, so coverage outside the cited tests remains unassessed.
- The root test script invokes Jest with experimental VM modules, and Jest enumerates package projects. — [package.json#L27-28](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/package.json#L27-L28) [package.json#L40-46](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/package.json#L40-L46)
- Shared Jest configuration maps workspace imports to source, transforms JS/TS, and matches *-test files. — [jest/jest.config.shared.js#L12-30](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/jest/jest.config.shared.js#L12-L30)
- The core package uses jest-environment-jsdom, a package setup file, and jest-dom matchers. — [packages/react-router/jest.config.js#L1-9](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/jest.config.js#L1-L9)
- Navigation tests assert committed loaderData, valid null results, and JSON Response unwrapping. — [packages/react-router/__tests__/router/navigation-test.ts#L68-105](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/__tests__/router/navigation-test.ts#L68-L105)
- Fetcher action tests assert submitting → loading → idle and distinguish fetcher action data from revalidated page loaderData. — [packages/react-router/__tests__/router/fetchers-test.ts#L267-303](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router/__tests__/router/fetchers-test.ts#L267-L303)
- Node session tests cover persistence across requests, cookie tampering, invalid IDs, and destroying an empty session. — [packages/react-router-node/__tests__/sessions-test.ts#L26-92](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/packages/react-router-node/__tests__/sessions-test.ts#L26-L92)
- Middleware integration tests use PlaywrightFixture and assert client middleware effects before/after loaders and actions. — [integration/middleware-test.ts#L12-20](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/integration/middleware-test.ts#L12-L20) [integration/middleware-test.ts#L278-306](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/integration/middleware-test.ts#L278-L306)
- Playwright runs tests in parallel, marks package modules external, forbids focused tests in CI, and retries three times in CI. — [integration/playwright.config.ts#L15-34](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/integration/playwright.config.ts#L15-L34)
- Unit CI configures Node 22.22 and 24, then installs, builds, typechecks, lints, and invokes pnpm test; these configured steps were not executed in this investigation. — [.github/workflows/test-unit.yml#L24-33](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/.github/workflows/test-unit.yml#L24-L33) [.github/workflows/test-unit.yml#L58-71](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/.github/workflows/test-unit.yml#L58-L71)
- Integration CI installs a selected Playwright browser and invokes pnpm test:integration with that browser; root scripts add a pre-build and post-run cleanup. — [.github/workflows/test-integration-run.yml#L50-58](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/.github/workflows/test-integration-run.yml#L50-L58) [package.json#L31-35](https://github.com/remix-run/react-router/blob/a6090382ed467b5a2d46c8de1a13b331f14959f8/package.json#L31-L35)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
