Skip to content

feat: support output test files in ES module format#735

Merged
9aoy merged 20 commits intomainfrom
esm-target
Dec 8, 2025
Merged

feat: support output test files in ES module format#735
9aoy merged 20 commits intomainfrom
esm-target

Conversation

@9aoy
Copy link
Copy Markdown
Collaborator

@9aoy 9aoy commented Dec 4, 2025

Summary

  • support output test files in ES module format via output.module configuration.
import { defineConfig } from '@rstest/core';

export default defineConfig({
  output: {
    module: true,
  },
});

Related Links

Checklist

  • Tests updated (or not required).
  • Documentation updated (or not required).

Copilot AI review requested due to automatic review settings December 4, 2025 08:03
@netlify
Copy link
Copy Markdown

netlify bot commented Dec 4, 2025

Deploy Preview for rstest-dev ready!

Name Link
🔨 Latest commit a492d72
🔍 Latest deploy log https://app.netlify.com/projects/rstest-dev/deploys/693690ff051ba100083ac10a
😎 Deploy Preview https://deploy-preview-735--rstest-dev.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds support for outputting test files in ES module format through a new output.module configuration option. The implementation allows users to enable ES module output by setting output.module: true in their rstest configuration or via the RSTEST_OUTPUT_MODULE environment variable. This is a significant enhancement that provides better compatibility with modern JavaScript module systems.

  • Adds output.module configuration to enable ES module output format
  • Implements a separate ES module loader (loadEsModule.ts) alongside the existing CommonJS loader
  • Updates build plugins to handle ES module-specific requirements (externals, banner injection, filename extensions)

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/core/src/types/config.ts Adds module to the allowed output config options
packages/core/src/types/core.ts Adds outputModule boolean field to ProjectContext
packages/core/src/types/worker.ts Adds outputModule field to WorkerContext for runtime communication
packages/core/src/core/rstest.ts Initializes outputModule from config or environment variable
packages/core/src/core/plugins/basic.ts Configures module output settings and injects require shim banner for ESM
packages/core/src/core/plugins/external.ts Updates external handling to use 'module-import' type for ES modules
packages/core/src/core/plugins/mockRuntime.ts Adds chunk loading runtime modification for ES module support
packages/core/src/runtime/worker/loadEsModule.ts New file implementing ES module loading using Node.js VM API
packages/core/src/runtime/worker/index.ts Dynamically selects loader based on outputModule flag
packages/core/src/pool/index.ts Propagates outputModule setting to worker context
packages/core/tests/core/rsbuild.test.ts Adds test case for ES module output configuration
packages/core/tests/core/__snapshots__/rsbuild.test.ts.snap Snapshot for ESM output webpack config
website/docs/en/config/build/output.mdx English documentation for output.module
website/docs/zh/config/build/output.mdx Chinese documentation for output.module
website/theme/components/ConfigOverview.tsx Adds output.module to configuration overview UI
package.json Updates e2e test script to include ESM testing
e2e/package.json Adds test:esm script for ES module testing
e2e/setup/index.test.ts Refactors test to use expectLog helper for better assertions
e2e/mock/tests/mock.test.ts Adds ESM-specific test assertion for axios mocking
e2e/externals/interop.test.ts Skips invalid named exports test in ESM mode
e2e/dom/uncaughtException.test.ts Cleans up unused imports and variables

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Dec 5, 2025

📝 Rstest Ecosystem CI: Open

suite result
rsdoctor ✅ success
rslib ✅ success
rsbuild ✅ success

@9aoy 9aoy requested a review from fi3ework December 8, 2025 08:02
@9aoy 9aoy merged commit 5d6cb8a into main Dec 8, 2025
15 checks passed
@9aoy 9aoy deleted the esm-target branch December 8, 2025 11:14
@9aoy 9aoy mentioned this pull request Dec 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants