Minor Changes
-
Add
glob.excludeconfig for filtering paths during test discovery (defaults tonode_modules/**) -
Add code coverage reporting to
remix-test- You can enable coverage with default settings vis
remix-test --coverageor settingcoverage:truein yourremix-test.config.ts - Or you can specify individual coverage settings via the following config fields:
coverage.dir: Directory to store coverage information (default.coverage)coverage.include: Array of globs for files to include in coveragecoverage.exclude: Array of globs for files to exclude from coveragecoverage.statements: Percentage threshold for statement coveragecoverage.lines: Percentage threshold for line coveragecoverage.branches: Percentage threshold for branch coveragecoverage.functions: Percentage threshold for function coverage
- You can enable coverage with default settings vis
-
Export
runRemixTestfrom@remix-run/test/cliso other tools can run the Remix test runner programmatically without exiting the host process. The function returns an exit code so callers can decide how to terminate. Theremix-testexecutable now declares Node.js 24.3.0 or later in package metadata.
Patch Changes
-
Internal refactor to test discovery to better support test execution in
bun.- Unlike Node, Bun's
fs.promises.globfollows symbolic links and does not prune traversal via theexcludeoption, which can cause the test runner to enternode_modulessymlink cycles in pnpm workspaces - Refactored the internal test discovery logic to detect and use Bun's native
Globclass when running under the Bun runtime. Bun'sGlob#scandoes not follow symlinks by default, avoiding the cycle. - The Node runtime continues to use
fs.promises.glob
- Unlike Node, Bun's
-
Use native dynamic
import()in Bun to load.tsand.tsxfiles in the test runner -
Bumped
@remix-run/*dependencies: