Skip to content

Commit 2e0009b

Browse files
fix(manifest): enforce react18 sharing and add e2e script
1 parent 27604c4 commit 2e0009b

File tree

7 files changed

+90
-27
lines changed

7 files changed

+90
-27
lines changed

apps/manifest-demo/3009-webpack-provider/webpack.config.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,23 @@ module.exports = composePlugins(
5151
antd: {},
5252
'react/': {
5353
singleton: true,
54-
requiredVersion: '^18.3.1',
54+
requiredVersion: '18.3.1',
55+
strictVersion: true,
5556
},
5657
react: {
5758
singleton: true,
58-
requiredVersion: '^18.3.1',
59+
requiredVersion: '18.3.1',
60+
strictVersion: true,
5961
},
6062
'react-dom': {
6163
singleton: true,
62-
requiredVersion: '^18.3.1',
64+
requiredVersion: '18.3.1',
65+
strictVersion: true,
6366
},
6467
'react-dom/': {
6568
singleton: true,
66-
requiredVersion: '^18.3.1',
69+
requiredVersion: '18.3.1',
70+
strictVersion: true,
6771
},
6872
},
6973
experiments: {

apps/manifest-demo/3010-rspack-provider/rspack.config.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,21 +96,20 @@ module.exports = composePlugins(
9696
shared: {
9797
lodash: {},
9898
antd: {},
99-
// 'react/': {
100-
// singleton: true,
101-
// requiredVersion: '^18.3.1',
102-
// },
10399
react: {
104100
singleton: true,
105-
requiredVersion: '^18.3.1',
101+
requiredVersion: '18.3.1',
102+
strictVersion: true,
106103
},
107104
'react-dom': {
108105
singleton: true,
109-
requiredVersion: '^18.3.1',
106+
requiredVersion: '18.3.1',
107+
strictVersion: true,
110108
},
111109
'react-dom/': {
112110
singleton: true,
113-
requiredVersion: '^18.3.1',
111+
requiredVersion: '18.3.1',
112+
strictVersion: true,
114113
},
115114
},
116115
dataPrefetch: true,

apps/manifest-demo/3011-rspack-manifest-provider/rspack.config.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,23 @@ module.exports = composePlugins(
8282
shared: {
8383
'react/': {
8484
singleton: true,
85-
requiredVersion: '^18.3.1',
85+
requiredVersion: '18.3.1',
86+
strictVersion: true,
8687
},
8788
react: {
8889
singleton: true,
89-
requiredVersion: '^18.3.1',
90+
requiredVersion: '18.3.1',
91+
strictVersion: true,
9092
},
9193
'react-dom': {
9294
singleton: true,
93-
requiredVersion: '^18.3.1',
95+
requiredVersion: '18.3.1',
96+
strictVersion: true,
9497
},
9598
'react-dom/': {
9699
singleton: true,
97-
requiredVersion: '^18.3.1',
100+
requiredVersion: '18.3.1',
101+
strictVersion: true,
98102
},
99103
},
100104
experiments: {

apps/manifest-demo/3012-rspack-js-entry-provider/rspack.config.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,23 @@ module.exports = composePlugins(
8282
shared: {
8383
'react/': {
8484
singleton: true,
85-
requiredVersion: '^18.3.1',
85+
requiredVersion: '18.3.1',
86+
strictVersion: true,
8687
},
8788
react: {
8889
singleton: true,
89-
requiredVersion: '^18.3.1',
90+
requiredVersion: '18.3.1',
91+
strictVersion: true,
9092
},
9193
'react-dom': {
9294
singleton: true,
93-
requiredVersion: '^18.3.1',
95+
requiredVersion: '18.3.1',
96+
strictVersion: true,
9497
},
9598
'react-dom/': {
9699
singleton: true,
97-
requiredVersion: '^18.3.1',
100+
requiredVersion: '18.3.1',
101+
strictVersion: true,
98102
},
99103
},
100104
manifest: false,

apps/manifest-demo/webpack-host/webpack.config.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,19 @@ module.exports = composePlugins(withNx(), withReact(), (config, context) => {
4141
antd: {},
4242
'react/': {
4343
singleton: true,
44-
requiredVersion: '^18.3.1',
44+
requiredVersion: '18.3.1',
4545
},
4646
react: {
4747
singleton: true,
48-
requiredVersion: '^18.3.1',
48+
requiredVersion: '18.3.1',
4949
},
5050
'react-dom': {
5151
singleton: true,
52-
requiredVersion: '^18.3.1',
52+
requiredVersion: '18.3.1',
5353
},
5454
'react-dom/': {
5555
singleton: true,
56-
requiredVersion: '^18.3.1',
56+
requiredVersion: '18.3.1',
5757
},
5858
},
5959
dataPrefetch: true,

apps/modernjs/modern.config.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,19 +49,19 @@ export default defineConfig({
4949
shared: {
5050
'react/': {
5151
singleton: true,
52-
requiredVersion: '^18.3.1',
52+
requiredVersion: '18.3.1',
5353
},
5454
react: {
5555
singleton: true,
56-
requiredVersion: '^18.3.1',
56+
requiredVersion: '18.3.1',
5757
},
5858
'react-dom': {
5959
singleton: true,
60-
requiredVersion: '^18.3.1',
60+
requiredVersion: '18.3.1',
6161
},
6262
'react-dom/': {
6363
singleton: true,
64-
requiredVersion: '^18.3.1',
64+
requiredVersion: '18.3.1',
6565
},
6666
},
6767
dataPrefetch: true,

scripts/run-e2e-manifest-dev.sh

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#!/usr/bin/env bash
2+
3+
set -euo pipefail
4+
5+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. && pwd)"
6+
cd "$ROOT_DIR"
7+
8+
# Ensure devtools postinstall hook is skipped like in CI.
9+
export SKIP_DEVTOOLS_POSTINSTALL="${SKIP_DEVTOOLS_POSTINSTALL:-true}"
10+
11+
echo "[e2e-manifest-dev] Installing workspace dependencies"
12+
pnpm install
13+
14+
echo "[e2e-manifest-dev] Ensuring Cypress binary is installed"
15+
npx cypress install
16+
17+
echo "[e2e-manifest-dev] Building all tagged packages"
18+
npx nx run-many --targets=build --projects=tag:type:pkg --skip-nx-cache
19+
20+
echo "[e2e-manifest-dev] Checking if manifest host is affected"
21+
if ! node tools/scripts/ci-is-affected.mjs --appName=manifest-webpack-host; then
22+
echo "[e2e-manifest-dev] Manifest host not affected; skipping E2E run"
23+
exit 0
24+
fi
25+
26+
cleanup() {
27+
echo "[e2e-manifest-dev] Cleaning up background processes and ports"
28+
npx kill-port 3013 3009 3010 3011 3012 4001 >/dev/null 2>&1 || true
29+
if [[ -n "${DEV_PID:-}" ]] && kill -0 "$DEV_PID" >/dev/null 2>&1; then
30+
kill "$DEV_PID" >/dev/null 2>&1 || true
31+
fi
32+
}
33+
34+
trap cleanup EXIT
35+
36+
echo "[e2e-manifest-dev] Starting manifest dev servers"
37+
export NX_SKIP_NX_CACHE=1
38+
pnpm run app:manifest:dev >/tmp/e2e-manifest-dev.log 2>&1 &
39+
DEV_PID=$!
40+
41+
echo "[e2e-manifest-dev] Waiting for required ports"
42+
npx wait-on tcp:3009 tcp:3012 http://127.0.0.1:4001/
43+
44+
echo "[e2e-manifest-dev] Running manifest host Cypress suites"
45+
TIMEOUT_SECONDS=300
46+
if ! timeout "$TIMEOUT_SECONDS" npx nx run-many --target=e2e --projects=manifest-webpack-host --parallel=2 --skip-nx-cache; then
47+
echo "[e2e-manifest-dev] E2E run timed out after ${TIMEOUT_SECONDS}s" >&2
48+
cleanup
49+
exit 1
50+
fi
51+
52+
echo "[e2e-manifest-dev] Completed successfully"

0 commit comments

Comments
 (0)