Skip to content

feat(testing-library): support lazy bundle testing#869

Merged
upupming merged 1 commit intolynx-family:mainfrom
upupming:feat/lazy-bundle-testing
May 22, 2025
Merged

feat(testing-library): support lazy bundle testing#869
upupming merged 1 commit intolynx-family:mainfrom
upupming:feat/lazy-bundle-testing

Conversation

@upupming
Copy link
Copy Markdown
Collaborator

Summary

Fixes #852

In the testing library, we do not need HMR for snapshots because snapshotManager is always created when the test is started. This is fixed by correcting the SnapshotOperation.DEV_ONLY_AddSnapshot's checking logic.

Checklist

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

@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented May 21, 2025

🦋 Changeset detected

Latest commit: 72bf547

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@lynx-js/react Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@upupming upupming requested review from Yradex, colinaaa and hzy May 21, 2025 04:57
@codecov
Copy link
Copy Markdown

codecov bot commented May 21, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

✅ All tests successful. No failed tests found.

📢 Thoughts on this report? Let us know!

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq bot commented May 21, 2025

CodSpeed Performance Report

Merging #869 will not alter performance

Comparing upupming:feat/lazy-bundle-testing (72bf547) with main (1b7c028)

Summary

✅ 9 untouched benchmarks

@upupming upupming requested a review from gaoachao May 21, 2025 06:15
Copy link
Copy Markdown
Collaborator

@colinaaa colinaaa left a comment

Choose a reason for hiding this comment

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

Overall LGTM!

@upupming upupming force-pushed the feat/lazy-bundle-testing branch from 016af58 to 72bf547 Compare May 21, 2025 07:41
@upupming upupming added this pull request to the merge queue May 22, 2025
Merged via the queue into lynx-family:main with commit d3967c0 May 22, 2025
38 checks passed
@upupming upupming deleted the feat/lazy-bundle-testing branch May 22, 2025 03:22
colinaaa pushed a commit that referenced this pull request May 24, 2025
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @lynx-js/react@0.109.0

### Minor Changes

- Support MTS functions running on the first screen.
([#840](#840))

### Patch Changes

- Fix type error when using `Suspense` with `"jsx": "react-jsx"`.
([#854](#854))

- Support lazy bundle in ReactLynx testing library.
([#869](#869))

- Fix a bug in HMR that snapshots are always updated because the same
unique ID check is not performed correctly.
([#869](#869))

- Fix missing types of `key` on components when using `"jsx":
"react-jsx"`.
([#872](#872))

## @lynx-js/react-rsbuild-plugin@0.10.0

### Minor Changes

- **BREAKING CHANGE**: Remove the unused `jsx` option.
([#903](#903))

### Patch Changes

- Support `output.inlineScripts`, which controls whether to inline
scripts into Lynx bundle (`.lynx.bundle`).
([#874](#874))

Only background thread scripts can remain non-inlined, whereas the main
thread script is always inlined.

    example:

    ```js
    import { defineConfig } from "@lynx-js/rspeedy";

    export default defineConfig({
      output: {
        inlineScripts: false,
      },
    });
    ```

- Support `@lynx-js/react` v0.109.0.
([#840](#840))

- Use `WebEncodePlugin` instead of `WebWebpackPlugin`.
([#904](#904))

- Updated dependencies
\[[`7beb35e`](7beb35e),
[`b6e27da`](b6e27da),
[`5ddec12`](5ddec12),
[`77524bc`](77524bc),
[`fdab5dc`](fdab5dc),
[`ff63b58`](ff63b58),
[`fdab5dc`](fdab5dc),
[`2b83934`](2b83934),
[`3520031`](3520031)]:
    -   @lynx-js/template-webpack-plugin@0.7.0
    -   @lynx-js/css-extract-webpack-plugin@0.5.4
    -   @lynx-js/react-refresh-webpack-plugin@0.3.3
    -   @lynx-js/react-webpack-plugin@0.6.14
    -   @lynx-js/react-alias-rsbuild-plugin@0.10.0

## @lynx-js/template-webpack-plugin@0.7.0

### Minor Changes

- Rename `lepus` to `mainThreadAssets` in `beforeEmit` hook.
([#901](#901))

- Remove the unused `encodeBinary` option of `LynxEncodePlugin`.
([#880](#880))

### Patch Changes

- Support `output.inlineScripts`, which controls whether to inline
scripts into Lynx bundle (`.lynx.bundle`).
([#874](#874))

Only background thread scripts can remain non-inlined, whereas the main
thread script is always inlined.

    example:

    ```js
    import { defineConfig } from "@lynx-js/rspeedy";

    export default defineConfig({
      output: {
        inlineScripts: false,
      },
    });
    ```

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

- Add `WebEncodePlugin`.
([#904](#904))

This is previously known as `WebWebpackPlugin` from
`@lynx-js/web-webpack-plugin`.

- Fix a bug that the `lepus` arg of `beforeEmit` hook does not contains
the `root` main chunk of the main thread.
([#898](#898))

## @lynx-js/rspeedy@0.9.6

### Patch Changes

- Support `output.inlineScripts`, which controls whether to inline
scripts into Lynx bundle (`.lynx.bundle`).
([#874](#874))

Only background thread scripts can remain non-inlined, whereas the main
thread script is always inlined.

    example:

    ```js
    import { defineConfig } from "@lynx-js/rspeedy";

    export default defineConfig({
      output: {
        inlineScripts: false,
      },
    });
    ```

- Bump Rsbuild v1.3.21 with Rspack v1.3.11.
([#863](#863))

- Updated dependencies
\[[`5b67bde`](5b67bde)]:
    -   @lynx-js/chunk-loading-webpack-plugin@0.2.1

## @lynx-js/offscreen-document@0.0.4

### Patch Changes

- fix: remove all children after the innerHTML setter is called
([#850](#850))

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

- perf: improve dom operation performance
([#881](#881))

    -   code clean for offscreen-document, cut down inheritance levels
- add `appendChild` method for OffscreenElement, improve performance for
append one node
    -   bypass some JS getter for dumping SSR string

## @lynx-js/web-constants@0.13.3

### Patch Changes

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

-   Updated dependencies \[]:
    -   @lynx-js/web-worker-rpc@0.13.3

## @lynx-js/web-core@0.13.3

### Patch Changes

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

- perf: improve dom operation performance
([#881](#881))

    -   code clean for offscreen-document, cut down inheritance levels
- add `appendChild` method for OffscreenElement, improve performance for
append one node
    -   bypass some JS getter for dumping SSR string

- fix: worker not released when backgroundWorkerContextCount != 1
([#845](#845))

- Updated dependencies
\[[`bb1f9d8`](bb1f9d8),
[`b6e27da`](b6e27da),
[`3d716d7`](3d716d7)]:
    -   @lynx-js/offscreen-document@0.0.4
    -   @lynx-js/web-mainthread-apis@0.13.3
    -   @lynx-js/web-worker-runtime@0.13.3
    -   @lynx-js/web-constants@0.13.3
    -   @lynx-js/web-worker-rpc@0.13.3

## @lynx-js/web-core-server@0.13.3

### Patch Changes

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

- feat: support to dump ssrEncode string
([#876](#876))

- perf: improve dom operation performance
([#881](#881))

    -   code clean for offscreen-document, cut down inheritance levels
- add `appendChild` method for OffscreenElement, improve performance for
append one node
    -   bypass some JS getter for dumping SSR string

- feat: dump dehydrate string with shadow root template
([#838](#838))

## @lynx-js/web-elements@0.7.3

### Patch Changes

- refactor: allow elements to be rendered before :defined
([#855](#855))

Before this commit, we don't allow developers to render these elements
before they're defined.

    In this commit, we will remove these restrictions.

- fix: remove the style `contain: content` of x-foldview-ng, otherwise
it will cause the `position: fixed` elements to be positioned
incorrectly after scrolling.
([#878](#878))

- fix: x-list should observe property list-type change.
([#862](#862))

    Before this commit, list-type only works when it was first assigned.

use `requestAnimationFrame` instead of `queueMicrotask` to
layoutListItem, this is because it may cause crashes in webkit.

- fix: list-item should support linear layout.
([#859](#859))

-   Updated dependencies \[]:
    -   @lynx-js/web-elements-template@0.7.3

## @lynx-js/web-explorer@0.0.9

### Patch Changes

- chore: update dependencies:
([#868](#868))

    -   @lynx-js/web-elements@0.7.2
    -   @lynx-js/web-core@0.13.2

## @lynx-js/web-mainthread-apis@0.13.3

### Patch Changes

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

- perf: improve dom operation performance
([#881](#881))

    -   code clean for offscreen-document, cut down inheritance levels
- add `appendChild` method for OffscreenElement, improve performance for
append one node
    -   bypass some JS getter for dumping SSR string

- Updated dependencies
\[[`b6e27da`](b6e27da)]:
    -   @lynx-js/web-constants@0.13.3

## @lynx-js/web-worker-runtime@0.13.3

### Patch Changes

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

- Updated dependencies
\[[`bb1f9d8`](bb1f9d8),
[`b6e27da`](b6e27da),
[`3d716d7`](3d716d7)]:
    -   @lynx-js/offscreen-document@0.0.4
    -   @lynx-js/web-mainthread-apis@0.13.3
    -   @lynx-js/web-constants@0.13.3
    -   @lynx-js/web-worker-rpc@0.13.3

## @lynx-js/chunk-loading-webpack-plugin@0.2.1

### Patch Changes

- Add `StartupChunkDependenciesRuntimeModule` to fix
`RuntimeGlobals.ensureChunkHandler` not found when using chunk splitting
([#798](#798))

## @lynx-js/css-extract-webpack-plugin@0.5.4

### Patch Changes

- Support `@lynx-js/template-webpack-plugin` v0.7.0.
([#880](#880))

- Support Rspack v1.3.11.
([#866](#866))

## @lynx-js/react-refresh-webpack-plugin@0.3.3

### Patch Changes

- Support `@lynx-js/template-webpack-plugin` v0.7.0.
([#880](#880))

## @lynx-js/react-webpack-plugin@0.6.14

### Patch Changes

- Support `@lynx-js/template-webpack-plugin` v0.7.0.
([#880](#880))

- Support `@lynx-js/react` v0.109.0.
([#840](#840))

## create-rspeedy@0.9.6



## @lynx-js/react-alias-rsbuild-plugin@0.10.0



## upgrade-rspeedy@0.9.6



## @lynx-js/web-elements-template@0.7.3



## @lynx-js/web-worker-rpc@0.13.3

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.

[Bug]: The HMR-related code breaks tests of a lazy component

2 participants