Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
52dd83e
chore: refresh packages via repotools
ScriptedAlchemy Dec 23, 2025
f3f1e53
chore: update pnpm lockfile
ScriptedAlchemy Dec 24, 2025
9f634e2
chore(bi-directional): inline mf config
ScriptedAlchemy Dec 24, 2025
fbdc28b
chore: refresh deps
ScriptedAlchemy Dec 24, 2025
ebc8c92
chore: update remix pnpm lockfile
ScriptedAlchemy Dec 24, 2025
4c35559
chore: update pnpm lockfile after modernjs upgrades
ScriptedAlchemy Dec 24, 2025
f0f5959
fix: inline module federation config for modernjs-ssr apps
ScriptedAlchemy Dec 24, 2025
92d9f7b
chore: update pnpm lockfile
ScriptedAlchemy Dec 24, 2025
dd8f62c
fix: migrate modernjs-ssr to new createLazyComponent API
ScriptedAlchemy Dec 24, 2025
f89e3f2
fix: improve e2e test reliability for CI
ScriptedAlchemy Dec 24, 2025
31a495d
fix(comprehensive-demo-react18): correct ReactRefresh plugin condition
ScriptedAlchemy Dec 24, 2025
696b5da
fix(comprehensive-demo-react18): filter undefined plugins and increas…
ScriptedAlchemy Dec 24, 2025
8282702
fix(comprehensive-demo-react18): filter undefined plugins in app-02 r…
ScriptedAlchemy Dec 24, 2025
de7346b
fix(comprehensive-demo-react18): remove experiments.css to align rspa…
ScriptedAlchemy Dec 24, 2025
0d4c3cd
fix(ci): centralize Playwright browser installation in CI workflows
ScriptedAlchemy Dec 24, 2025
ba5260f
fix(comprehensive-demo-react18): use CssExtractRspackPlugin for Svelt…
ScriptedAlchemy Dec 24, 2025
2d4c37f
chore: update @playwright/test to 1.57.0 in nextjs-host-react-remote
ScriptedAlchemy Dec 24, 2025
dbb8fc8
chore: update @playwright/test and playwright to 1.57.0 across all pa…
ScriptedAlchemy Dec 24, 2025
0cc5301
remove cypress, align playwright, stabilize e2e
ScriptedAlchemy Dec 24, 2025
810b2ff
stabilize e2e startup and scripts
ScriptedAlchemy Dec 24, 2025
dcb4a9e
defer app_05 load and harden comprehensive demo e2e
ScriptedAlchemy Dec 24, 2025
db5343d
lazy-load app_03/app_04 remotes in comprehensive demo
ScriptedAlchemy Dec 24, 2025
ee16957
Fix React shared versions in comprehensive demo
ScriptedAlchemy Dec 24, 2025
e15aab5
Fix React shared versions in react16 demo
ScriptedAlchemy Dec 24, 2025
00f288a
Relax React version checks in comprehensive demos
ScriptedAlchemy Dec 24, 2025
29ecbd9
Eager-load shared React in comprehensive demos
ScriptedAlchemy Dec 24, 2025
8257d74
chore: add no-op e2e scripts for native-federation tests
ScriptedAlchemy Dec 24, 2025
d687479
fix: stabilize clo e2e webservers
ScriptedAlchemy Dec 24, 2025
745a822
chore: remove playwright ui/debug scripts
ScriptedAlchemy Dec 24, 2025
452fd21
fix: remove unused deps variables flagged by CodeQL
ScriptedAlchemy Dec 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
89 changes: 27 additions & 62 deletions .github/workflows/on-pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,14 @@ jobs:
ref: ${{ github.event.pull_request.head.ref }}
fetch-depth: 0

- name: Get Playwright version
id: playwright-version
shell: bash
run: |
# Use the repo-pinned Playwright version as cache key input.
version="$(node -p "String(require('./package.json').devDependencies['@playwright/test']||'').replace(/^[^0-9]*/, '')")"
echo "version=$version" >> "$GITHUB_OUTPUT"

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
Expand Down Expand Up @@ -130,20 +138,12 @@ jobs:
restore-keys: |
pnpm-store-${{ runner.os }}-

- name: Cache Cypress binary
uses: actions/cache@v4
with:
path: ~/.cache/Cypress
key: cypress-${{ runner.os }}-cypress-13.12.0
restore-keys: |
cypress-${{ runner.os }}-

- name: Cache Playwright browsers
uses: actions/cache@v4
id: playwright-cache
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
key: playwright-${{ runner.os }}-${{ steps.playwright-version.outputs.version }}
restore-keys: |
playwright-${{ runner.os }}-

Expand All @@ -153,21 +153,12 @@ jobs:
- name: Install dependencies
run: |
echo "Installing all dependencies to populate cache..."
pnpm install --frozen-lockfile --prefer-offline

- name: Install Cypress
run: npx cypress install
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 pnpm install --frozen-lockfile --prefer-offline

- name: Install Playwright browsers
run: |
# Install Playwright browsers for projects that have it as a dependency
# This prepares the cache for future migration
if command -v playwright &> /dev/null || [ -f "$(npm root -g)/playwright/cli.js" ]; then
echo "Installing Playwright browsers..."
npx playwright install --with-deps chromium
else
echo "Playwright not found in dependencies, skipping browser installation"
fi
# Populate the shared browser cache once per workflow run (no system deps here).
pnpm exec playwright install chromium

- name: Create matrix
id: set-matrix
Expand All @@ -178,7 +169,7 @@ jobs:
echo $matrix
echo "matrix=$matrix" >> $GITHUB_OUTPUT

# Run Cypress e2e tests for changed samples (additionally install deps for all changed samples if there is no any created cache in master branch) + Create artifacts for Cypress screenshots and videos
# Run e2e tests for changed samples (additionally install deps for all changed samples if there is no any created cache in master branch)
run-e2e-test:
needs: [setup-matrix]
if: ${{ needs.setup-matrix.outputs.matrix != '{"container":[]}' }}
Expand All @@ -195,6 +186,13 @@ jobs:
ref: ${{ github.event.pull_request.head.ref }}
fetch-depth: 1

- name: Get Playwright version
id: playwright-version
shell: bash
run: |
version="$(node -p "String(require('./package.json').devDependencies['@playwright/test']||'').replace(/^[^0-9]*/, '')")"
echo "version=$version" >> "$GITHUB_OUTPUT"

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
Expand Down Expand Up @@ -225,23 +223,12 @@ jobs:
pnpm-store-${{ runner.os }}-
fail-on-cache-miss: false

- name: Restore Cypress cache
uses: actions/cache/restore@v4
id: cypress-cache
with:
path: ~/.cache/Cypress
key: cypress-${{ runner.os }}-cypress-13.12.0
restore-keys: |
cypress-${{ runner.os }}-
fail-on-cache-miss: false

- name: Restore Playwright cache
if: matrix.container == 'bi-directional'
uses: actions/cache/restore@v4
id: playwright-cache
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-1.54.2
key: playwright-${{ runner.os }}-${{ steps.playwright-version.outputs.version }}
restore-keys: |
playwright-${{ runner.os }}-
fail-on-cache-miss: false
Expand All @@ -253,35 +240,13 @@ jobs:
FORCE_COLOR: 3
run: |
echo "Installing dependencies from cached pnpm store..."
pnpm install --frozen-lockfile --prefer-offline

# Verify Cypress if needed
if [ "${{ steps.cypress-cache.outputs.cache-hit }}" != "true" ]; then
echo "Installing Cypress binary..."
npx cypress install
else
echo "Cypress binary already cached"
npx cypress verify || true
fi

PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 pnpm install --frozen-lockfile --prefer-offline

- name: Install Playwright browsers for projects that use it
run: |
echo "Installing Playwright browsers for projects that use it..."

# Install Playwright package first if not already available
if ! command -v playwright &> /dev/null; then
echo "Installing Playwright package..."
npm install -g playwright@^1.54.2
fi

# Check if we need to install Playwright browsers
if [ ! -d "$HOME/.cache/ms-playwright" ] || [ -z "$(ls -A $HOME/.cache/ms-playwright 2>/dev/null)" ]; then
echo "Installing Playwright browsers and dependencies..."
npx playwright install --with-deps chromium
else
echo "Playwright browsers already cached, installing system dependencies only..."
npx playwright install-deps chromium
fi
# Ensure system deps are present on the runner, then ensure the browser is installed.
pnpm exec playwright install-deps chromium
pnpm exec playwright install chromium

- name: Run sample webpack e2e tests
timeout-minutes: 30
Expand All @@ -306,7 +271,7 @@ jobs:
with:
name: test-results-${{ matrix.container }}
path: |
${{ matrix.container }}/cypress/results/allure-results
playwright-e2e/results/allure-results
${{ matrix.container }}/playwright-report
${{ matrix.container }}/test-results
retention-days: 7
40 changes: 12 additions & 28 deletions .github/workflows/on-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,13 @@ jobs:
ref: ${{ github.event.pull_request.head.ref }}
fetch-depth: 0

- name: Get Playwright version
id: playwright-version
shell: bash
run: |
version="$(node -p "String(require('./package.json').devDependencies['@playwright/test']||'').replace(/^[^0-9]*/, '')")"
echo "version=$version" >> "$GITHUB_OUTPUT"

- name: Free up some space
run: ${{ env.FILES_TO_DELETE }}

Expand Down Expand Up @@ -86,20 +93,12 @@ jobs:
restore-keys: |
pnpm-store-${{ runner.os }}-

- name: Cache Cypress binary
uses: actions/cache@v4
with:
path: ~/.cache/Cypress
key: cypress-${{ runner.os }}-cypress-13.12.0
restore-keys: |
cypress-${{ runner.os }}-

- name: Cache Playwright browsers
uses: actions/cache@v4
id: playwright-cache
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
key: playwright-${{ runner.os }}-${{ steps.playwright-version.outputs.version }}
restore-keys: |
playwright-${{ runner.os }}-

Expand All @@ -112,24 +111,9 @@ jobs:
FORCE_COLOR: 3
run: |
echo "Installing dependencies from pnpm store..."
pnpm install --frozen-lockfile --prefer-offline

- name: Install Cypress
run: |
# Install Cypress binary if not cached
if [ -z "$(ls -A ~/.cache/Cypress 2>/dev/null)" ]; then
echo "Installing Cypress binary..."
npx cypress install
else
echo "Cypress binary already cached"
fi

PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 pnpm install --frozen-lockfile --prefer-offline

- name: Install Playwright browsers
run: |
# Install Playwright browsers for projects that have it as a dependency
if command -v playwright &> /dev/null || [ -f "$(npm root -g)/playwright/cli.js" ]; then
echo "Installing Playwright browsers..."
npx playwright install --with-deps chromium
else
echo "Playwright not found in dependencies, skipping browser installation"
fi
# Populate the shared browser cache (no system deps here).
pnpm exec playwright install chromium
10 changes: 5 additions & 5 deletions advanced-api/automatic-vendor-sharing/app1/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@
"@babel/core": "7.24.7",
"@babel/preset-react": "7.24.7",
"@babel/preset-typescript": "^7.24.7",
"@module-federation/enhanced": "^0.17.1",
"@module-federation/enhanced": "0.22.0",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"typescript": "^5.5.4",
"@rspack/cli": "1.4.11",
"@rspack/core": "1.4.11",
"@rspack/dev-server": "1.1.3",
"@rspack/cli": "1.6.8",
"@rspack/core": "1.6.8",
"@rspack/dev-server": "1.1.4",
"babel-loader": "9.1.3",
"html-webpack-plugin": "5.6.0",
"serve": "14.2.3",
"webpack": "5.101.0",
"webpack": "5.104.1",
"webpack-cli": "5.1.4",
"webpack-dev-server": "5.0.4"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ module.exports = {
new ModuleFederationPlugin({
name: 'app1',
filename: 'remoteEntry.js',
dts: false,
remotes: {
app2: 'app2@http://localhost:3002/remoteEntry.js',
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ module.exports = {
new ModuleFederationPlugin({
name: 'app1',
filename: 'remoteEntry.js',
dts: false,
remotes: {
app2: 'app2@http://localhost:3002/remoteEntry.js',
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ module.exports = {
new ModuleFederationPlugin({
name: 'app1',
filename: 'remoteEntry.js',
dts: false,
remotes: {
app2: 'app2@/remoteEntry.js', // Use relative URL for production
},
Expand Down Expand Up @@ -108,4 +109,4 @@ module.exports = {
},
}),
],
};
};
10 changes: 5 additions & 5 deletions advanced-api/automatic-vendor-sharing/app2/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@
"@babel/core": "7.24.7",
"@babel/preset-react": "7.24.7",
"@babel/preset-typescript": "^7.24.7",
"@module-federation/enhanced": "^0.17.1",
"@module-federation/enhanced": "0.22.0",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"typescript": "^5.5.4",
"@rspack/cli": "1.4.11",
"@rspack/core": "1.4.11",
"@rspack/dev-server": "1.1.3",
"@rspack/cli": "1.6.8",
"@rspack/core": "1.6.8",
"@rspack/dev-server": "1.1.4",
"babel-loader": "9.1.3",
"html-webpack-plugin": "5.6.0",
"serve": "14.2.3",
"webpack": "5.101.0",
"webpack": "5.104.1",
"webpack-cli": "5.1.4",
"webpack-dev-server": "5.0.4"
},
Expand Down
3 changes: 2 additions & 1 deletion advanced-api/automatic-vendor-sharing/app2/rspack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ module.exports = {
new ModuleFederationPlugin({
name: 'app2',
filename: 'remoteEntry.js',
dts: false,
remotes: {
app1: 'app1@http://localhost:3001/remoteEntry.js',
},
Expand All @@ -77,4 +78,4 @@ module.exports = {
template: './public/index.html',
}),
],
};
};
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ module.exports = {
new ModuleFederationPlugin({
name: 'app2',
filename: 'remoteEntry.js',
dts: false,
remotes: {
app1: 'app1@http://localhost:3001/remoteEntry.js',
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ module.exports = {
new ModuleFederationPlugin({
name: 'app2',
filename: 'remoteEntry.js',
dts: false,
remotes: {
app1: 'app1@/remoteEntry.js', // Use relative URL for production
},
Expand Down Expand Up @@ -108,4 +109,4 @@ module.exports = {
},
}),
],
};
};
4 changes: 2 additions & 2 deletions advanced-api/automatic-vendor-sharing/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"legacy:e2e:ci": "npx playwright test"
},
"devDependencies": {
"@playwright/test": "^1.54.2",
"@playwright/test": "1.57.0",
"wait-on": "7.2.0"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@
"devDependencies": {
"@babel/core": "7.24.7",
"@babel/preset-react": "7.24.7",
"@module-federation/enhanced": "0.17.1",
"@module-federation/runtime": "0.17.1",
"@module-federation/enhanced": "0.22.0",
"@module-federation/runtime": "0.22.0",
"@module-federation/retry-plugin": "0.17.1",
"@rspack/cli": "1.4.11",
"@rspack/core": "1.4.11",
"@rspack/dev-server": "1.1.3",
"@rspack/cli": "1.6.8",
"@rspack/core": "1.6.8",
"@rspack/dev-server": "1.1.4",
"babel-loader": "9.1.3",
"copy-webpack-plugin": "12.0.2",
"html-webpack-plugin": "5.6.0",
"serve": "14.2.3",
"webpack": "5.101.0",
"webpack": "5.104.1",
"webpack-merge": "6.0.1",
"webpack-cli": "5.1.4",
"webpack-dev-server": "5.0.4"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
"legacy:e2e:ci": "USE_LEGACY=1 npx playwright test"
},
"devDependencies": {
"@playwright/test": "^1.54.2",
"@playwright/test": "1.57.0",
"wait-on": "7.2.0"
}
}
}
Loading
Loading