Skip to content

Comments

chore(test): setup browser-based e2e test for test-dev-server#7351

Merged
graphite-app[bot] merged 1 commit intomainfrom
12-03-chore_repo_setup_vitest_browser_mode_for_test-dev-server_
Dec 8, 2025
Merged

chore(test): setup browser-based e2e test for test-dev-server#7351
graphite-app[bot] merged 1 commit intomainfrom
12-03-chore_repo_setup_vitest_browser_mode_for_test-dev-server_

Conversation

@hyf0
Copy link
Member

@hyf0 hyf0 commented Dec 6, 2025

#7325 is too messy, so I re-create this one.

I left todos at #7350

Copy link
Member Author

hyf0 commented Dec 6, 2025


How to use the Graphite Merge Queue

Add the label graphite: merge to this PR to add it to the merge queue.

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@hyf0 hyf0 marked this pull request as ready for review December 6, 2025 06:25
Copilot AI review requested due to automatic review settings December 6, 2025 06:25
@netlify
Copy link

netlify bot commented Dec 6, 2025

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit 3ad3391
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/693698080282a20008b25789

@socket-security
Copy link

socket-security bot commented Dec 6, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedplaywright-chromium@​1.57.0901006699100
Addedplaywright@​1.57.010010010099100

View full report

@hyf0 hyf0 changed the title chore(repo): setup vitest browser mode for test-dev-server chore(test): setup browser-based e2e test for test-dev-server Dec 6, 2025
@hyf0 hyf0 requested review from sapphi-red and removed request for Copilot December 6, 2025 06:27
Copilot AI review requested due to automatic review settings December 6, 2025 15:55
@hyf0 hyf0 force-pushed the 12-03-chore_repo_setup_vitest_browser_mode_for_test-dev-server_ branch from a9e4e6d to d8e227f Compare December 6, 2025 15:55
Copy link
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 sets up browser-based end-to-end testing infrastructure for the test-dev-server package using Playwright. It establishes a testing framework to validate Hot Module Replacement (HMR) functionality in full bundle mode by running tests in a real browser environment controlled from Node.js.

Key Changes

  • Added Playwright-based E2E testing: Introduced a new test setup using Playwright to run browser-based tests for HMR functionality, with tests running in Node.js environment while controlling a headless Chromium browser
  • Upgraded Vitest: Updated from v4.0.1 to v4.0.15 to support the new browser testing capabilities
  • Created test playground: Added hmr-full-bundle-mode playground with supporting infrastructure including temporary directory management, file editing utilities, and proper cleanup

Reviewed changes

Copilot reviewed 19 out of 20 changed files in this pull request and generated 18 comments.

Show a summary per file
File Description
pnpm-workspace.yaml Added new playground directory to workspace and updated rxjs trust policy comment
pnpm-lock.yaml Updated Vitest to 4.0.15 and added Playwright, @testing-library/jest-dom, and @vitest/browser dependencies
packages/test-dev-server/tests/vitest.config.fixtures.mts Added explicit include pattern to separate fixture tests from browser tests
packages/test-dev-server/tests/vitest.config.browser.mts New configuration for Playwright-based browser tests with extended timeouts and Node.js environment
packages/test-dev-server/tests/vitest-setup-playwright.ts New setup file managing dev server lifecycle, browser launch, and test cleanup
packages/test-dev-server/tests/tsconfig.json Updated to include *.spec.ts files for TypeScript compilation
packages/test-dev-server/tests/test-utils.ts New utilities for file editing and Playwright page access
packages/test-dev-server/tests/src/config.ts Extended configuration with path constants for playground and tmp directories
packages/test-dev-server/tests/playground/hmr-full-bundle-mode/* New test playground with HTML, JavaScript, and config files for HMR testing
packages/test-dev-server/tests/package.json Updated scripts to separate fixture and browser tests, added Playwright dependencies
packages/test-dev-server/tests/hmr-full-bundle-mode.spec.ts New E2E test verifying HMR behavior with file modifications
packages/test-dev-server/tests/.gitignore Added tmp-playground to ignore generated test directories
packages/test-dev-server/src/utils/create-dev-server-plugin.ts Updated HTML template to match the HMR test playground structure
package.json Added playwright-chromium to root dev dependencies
knip.jsonc Added configuration for new test directories and playground entry points
.github/workflows/reusable-node-test.yml Added Playwright installation step to CI workflow
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

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

@hyf0 hyf0 force-pushed the 12-03-chore_repo_setup_vitest_browser_mode_for_test-dev-server_ branch from d8e227f to f04ead4 Compare December 7, 2025 17:41
Copilot AI review requested due to automatic review settings December 7, 2025 17:44
@hyf0 hyf0 force-pushed the 12-03-chore_repo_setup_vitest_browser_mode_for_test-dev-server_ branch from f04ead4 to 096b1d5 Compare December 7, 2025 17:44
Copy link
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

Copilot reviewed 19 out of 20 changed files in this pull request and generated 8 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

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

@hyf0 hyf0 force-pushed the 12-03-chore_repo_setup_vitest_browser_mode_for_test-dev-server_ branch from 096b1d5 to ab20784 Compare December 8, 2025 03:06
@hyf0 hyf0 requested a review from sapphi-red December 8, 2025 03:20
@graphite-app
Copy link
Contributor

graphite-app bot commented Dec 8, 2025

Merge activity

#7325 is too messy, so I re-create this one.

I left todos at #7350
Copilot AI review requested due to automatic review settings December 8, 2025 09:19
@graphite-app graphite-app bot force-pushed the 12-03-chore_repo_setup_vitest_browser_mode_for_test-dev-server_ branch from ab20784 to 3ad3391 Compare December 8, 2025 09:19
Copy link
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.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@graphite-app graphite-app bot merged commit 3ad3391 into main Dec 8, 2025
27 checks passed
@graphite-app graphite-app bot deleted the 12-03-chore_repo_setup_vitest_browser_mode_for_test-dev-server_ branch December 8, 2025 09:37
shulaoda added a commit that referenced this pull request Dec 11, 2025
## [1.0.0-beta.54] - 2025-12-11

⏱️ Plugin Timing Analysis
- Added `checks.pluginTimings` option to emit warnings when plugins significantly impact build performance
- More details: https://rolldown.rs/options/checks#plugintimings
<img width="834" height="119" alt="image" src="https://github.com/user-attachments/assets/e819f906-6192-4503-8d5c-854fa92ecb45" />

> [!WARNING]
> For hooks using `ctx.resolve()` or `ctx.load()`, the reported time includes waiting for other plugins, which may overestimate that plugin's actual cost.
>
> Additionally, since plugin hooks execute concurrently, the statistics represent accumulated time rather than wall-clock time. The measured duration also includes Rust-side processing overhead, Tokio async scheduling overhead, NAPI data conversion overhead, and JavaScript event loop overhead.

### 🚀 Features

- rolldown_plugin_vite_reporter: add newline after build summary for better log separation (#7458) by @shulaoda
- plugin: collect plugin hook execution timings (#7364) by @shulaoda
- test-dev-server: reload page when detecting hmr reload message (#7422) by @hyf0
- rolldown_plugin_vite_dynamic_import_vars: add transform-based v2 implementation (#7400) by @shulaoda
- rolldown_plugin_vite_import_glob: add transform-based v2 implementation (#7394) by @shulaoda
- rolldown_plugin_vite_wasm_helper: add v2 implementation (#7402) by @shulaoda
- expose error location and context fields on JS API error objects (#7341) by @Copilot
- add `CIRCULAR_REEXPORT` error (#7337) by @Copilot
- support emit prebuilt chunk (#7277) by @Copilot

### 🐛 Bug Fixes

- preserve object key order when parse json with serde_json (#7443) by @IWANABETHATGUY
- improve JSON parsing with serde_json to emit proper diagnostic (#7442) by @IWANABETHATGUY
- deconflict external symbols in CJS modules (#7447) by @IWANABETHATGUY
- rolldown_plugin_vite_transform,rolldown_plugin_vite_resolve: enable `yarnPnp` option when pnp is detected (#5791) by @sapphi-red
- skip deconflicting top-level symbols for CJS modules (#7425) by @IWANABETHATGUY
- rolldown_plugin_esm_external_require: run resolveId hook before other plugins (#7426) by @shulaoda
- avoid duplicate underscores in legitimized identifiers (#7418) by @IWANABETHATGUY
- use `process.on('exit')` instead of `signal-exit` on webcontainers (#7421) by @sapphi-red
- dev: remove `imports` when an import is removed (#7348) by @sapphi-red
- bench: access latency.mean instead of mean in tinybench result (#7417) by @shulaoda
- path compression in symbol linking (#7392) by @IWANABETHATGUY
- rolldown_plugin_vite_resolve: add RwLock to avoid clearing cache while resolving (#7386) by @sapphi-red
- handle JSON prototype properties correctly (#7383) by @IWANABETHATGUY
- preserve entry signature strict chunk merging (#7343) by @IWANABETHATGUY
- support eliminating multiple unused dynamic imports in a single statement (#7361) by @IWANABETHATGUY
- eliminate unreachable dynamic entry (#7356) by @IWANABETHATGUY
- `NormalizedInputOptions#cwd` should always exists (#7360) by @hyf0
- cli: support multiple comma-separated define arguments (#7340) by @Copilot
- remove redundant symbol param in __reExport runtime helper (#7346) by @IWANABETHATGUY
- always use __export for empty namespace objects when symbols enabled (#7345) by @IWANABETHATGUY
- relax the restriction of preserveEntrySignatures when merging chunks (#7339) by @IWANABETHATGUY

### 🚜 Refactor

- builtin-plugin: make config parameter required for vite plugins (#7451) by @shulaoda
- move esbuild test related scripts to `scripts/src/esbuild-tests` (#7377) by @sapphi-red
- rewrite gen-esbuild-test in TypeScript (#7376) by @sapphi-red
- remove unnecessary Option in current_stmt_idx (#7359) by @IWANABETHATGUY
- move more code into chunk optimizer (#7335) by @IWANABETHATGUY

### 📚 Documentation

- checks: clarify pluginTimings measures CPU time due to concurrent execution (#7448) by @shulaoda
- checks: add accuracy note to pluginTimings documentation (#7441) by @shulaoda
- development-guide: add esbuild test description (#7439) by @sapphi-red
- checks: expand `pluginTimings` documentation with detection mechanism (#7428) by @shulaoda
- add checks options documentation (#7427) by @shulaoda
- development-guide: add test262 integration test description (#7430) by @sapphi-red
- guide: fix grammer in getting-started (#7331) by @jakeparis

### 🧪 Testing

- rollup-tests: make `--grep` work and document it (#7431) by @sapphi-red
- add a way to run some test262 test cases by name (#7429) by @sapphi-red
- rolldown_plugin_vite_dynamic_import_vars: add test cases for v2 implementation (#7401) by @shulaoda
- rolldown_plugin_vite_import_glob: add test cases for v2 implementation (#7395) by @shulaoda
- triage new esbuild tests (#7405) by @sapphi-red
- hmr: delete file used (#5933) by @sapphi-red
- watch: add `watchChange` hook `create` / `delete` tests (#7349) by @sapphi-red
- hmr: delete file not used anymore (#5932) by @sapphi-red
- triage esbuild failed reasons (#7391) by @sapphi-red
- change esbuild tests stats and diff generation (#7379) by @sapphi-red
- dev: add `continuous generate hmr patch` and `debounce bundle` tests (#7368) by @hyf0
- add new esbuild tests (#7353) by @sapphi-red

### ⚙️ Miscellaneous Tasks

- setup Node before updating snapshots for test262 update (#7435) by @sapphi-red
- run tests when submodules are updated (#7455) by @sapphi-red
- exclude NUL path pattern to prevent crash on Windows (#7450) by @IWANABETHATGUY
- run cargo-test for esbuild script changes and update esbuild snapshot (#7440) by @sapphi-red
- jsx_import_meta tests to `ignoreReasons` due to architectural limitation (#7434) by @Copilot
- deps: update dependency oxlint-tsgolint to v0.8.5 (#7433) by @renovate[bot]
- update test dependencies automatically (#7432) by @sapphi-red
- remove unused code (#7420) by @IWANABETHATGUY
- add back `just update-esbuild-diff` and add it to CI (#7404) by @sapphi-red
- deps: update oxc-resolver to 11.15.0 (#7415) by @shulaoda
- deps: update rust crate napi to v3.7.0 (#7393) by @renovate[bot]
- fix esbuild compatibility metrics calculation (#7390) by @sapphi-red
- support `tsconfig: true` in rust tests (#7389) by @sapphi-red
- hide oxc runtime in snapshots (#7388) by @sapphi-red
- deps: update oxc to v0.102.0 (#7385) by @camc314
- improve esbuild tests to download snapshots automatically (#7378) by @sapphi-red
- deps: update dependency tinybench to v6 (#7371) by @renovate[bot]
- deps: update actions/checkout action to v6 (#7370) by @renovate[bot]
- deps: update rust crates (#7367) by @renovate[bot]
- deps: update dependency oxlint to v1.32.0 (#7374) by @renovate[bot]
- deps: update dependency oxlint-tsgolint to v0.8.4 (#7373) by @renovate[bot]
- node/test-dev-server: support using custom html file (#7357) by @hyf0
- test: setup browser-based e2e test for `test-dev-server` (#7351) by @hyf0
- pin pnpm to version 10.23.0 (#7369) by @IWANABETHATGUY
- deps: update dependency rolldown-plugin-dts to v0.18.3 (#7372) by @renovate[bot]
- deps: update github-actions (#7365) by @renovate[bot]
- deps: update npm packages (#7366) by @renovate[bot]
- polish the comments about `SymbolRefFlags` (#7358) by @IWANABETHATGUY
- deps: update dependency rolldown-plugin-dts to v0.18.2 (#7355) by @renovate[bot]
- fix esbuild test generation script (#7352) by @sapphi-red
- apply cargo shear suggestion (#7347) by @IWANABETHATGUY
- deps: update oxc to v11.15.0 (#7344) by @renovate[bot]
- deps: update dependency @napi-rs/cli to v3.5.0 (#7338) by @renovate[bot]
- deps: update dependency oxlint to v1.31.0 (#7305) by @renovate[bot]
- update rollup-tests results (#7333) by @sapphi-red
- update rollup-tests Rollup version (#7332) by @sapphi-red
- add ignore config for test262 submodule (#7326) by @Copilot

### ❤️ New Contributors

* @jakeparis made their first contribution in [#7331](#7331)

Co-authored-by: shulaoda <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants