Skip to content

fix: handle missing isIncluded in Rolldown (Vite 8) module info #1784

fix: handle missing isIncluded in Rolldown (Vite 8) module info

fix: handle missing isIncluded in Rolldown (Vite 8) module info #1784

name: Playground E2E Tests
on:
push:
branches:
- main
paths-ignore:
- "docs/**"
- ".notes/**"
- "*.md"
- "src/**/*.test.*"
- "playground/community/**"
pull_request_target:
types: [opened, synchronize, reopened]
paths-ignore:
- "docs/**"
- ".notes/**"
- "*.md"
- "src/**/*.test.*"
- "playground/community/**"
workflow_dispatch:
inputs:
ref:
description: "The branch, tag or SHA to checkout. e.g. `refs/pull/123/head`"
required: false
os:
description: "OS to run on (e.g., ubuntu-latest, macos-latest)"
required: true
type: choice
default: "all"
options:
- all
- ubuntu-latest
- macos-latest
- windows-latest
package-manager:
description: "Package manager to use (e.g., pnpm, npm)"
required: true
type: choice
default: "all"
options:
- all
- pnpm
- npm
- yarn
- yarn-classic
workflow_call:
inputs:
run_full_matrix:
description: "Run the full test matrix"
required: false
type: boolean
default: false
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'workflow_dispatch' && github.run_id || github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name != 'workflow_dispatch' }}
env:
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
jobs:
setup-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- id: set-matrix
run: |
if [[ "${{ inputs.run_full_matrix }}" == "true" ]]; then
echo 'matrix={"include":[{"os":"ubuntu-latest","package-manager":"pnpm"},{"os":"ubuntu-latest","package-manager":"npm"},{"os":"ubuntu-latest","package-manager":"yarn"},{"os":"ubuntu-latest","package-manager":"yarn-classic"},{"os":"macos-latest","package-manager":"pnpm"},{"os":"macos-latest","package-manager":"npm"},{"os":"macos-latest","package-manager":"yarn"},{"os":"macos-latest","package-manager":"yarn-classic"},{"os":"windows-latest","package-manager":"pnpm"},{"os":"windows-latest","package-manager":"npm"},{"os":"windows-latest","package-manager":"yarn"},{"os":"windows-latest","package-manager":"yarn-classic"}]}' >> $GITHUB_OUTPUT
elif [[ "${{ github.event_name }}" == "pull_request" || "${{ github.event_name }}" == "push" ]]; then
echo 'matrix={"include":[{"os":"ubuntu-latest","package-manager":"pnpm"}]}' >> $GITHUB_OUTPUT
elif [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
OS_INPUT=${{ github.event.inputs.os }}
PM_INPUT=${{ github.event.inputs.package-manager }}
[ "$OS_INPUT" == "all" ] && OS_LIST='ubuntu-latest macos-latest windows-latest' || OS_LIST=$OS_INPUT
[ "$PM_INPUT" == "all" ] && PM_LIST='pnpm npm yarn yarn-classic' || PM_LIST=$PM_INPUT
JSON_ARRAY="[]"
for o in $OS_LIST; do
for p in $PM_LIST; do
JSON_ARRAY=$(echo "$JSON_ARRAY" | jq -c ". + [{\"os\":\"$o\",\"package-manager\":\"$p\"}]")
done
done
echo "matrix={\"include\":${JSON_ARRAY}}" >> $GITHUB_OUTPUT
else
echo 'matrix={"include":[{"os":"ubuntu-latest","package-manager":"npm"}]}' >> $GITHUB_OUTPUT
fi
playground-e2e-dev:
needs: setup-matrix
name: Playground E2E Tests (Dev)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.setup-matrix.outputs.matrix) }}
timeout-minutes: 60
env:
DEBUG: rwsdk:e2e:*
MAX_RETRIES: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '10' || '1' }}
RWSDK_SETUP_PLAYGROUND_ENV_TIMEOUT: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '1800000' || '' }} # 30 mins
RWSDK_PUPPETEER_TIMEOUT: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '300000' || '' }} # 5 mins
RWSDK_HYDRATION_TIMEOUT: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '10000' || '' }} # 10s
RWSDK_DEV_SERVER_TIMEOUT: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '900000' || '' }} # 15 mins
RWSDK_TEST_MAX_RETRIES: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '12' || '' }}
RWSDK_TEST_MAX_RETRIES_PER_CODE: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '20' || '' }}
RWSDK_SKIP_DEPLOY: "1"
RWSDK_SEQUENTIAL: "1"
# context(justinvdm, 2025-09-20):
# Only run this job for PRs from the same repository and pushes to main
# For security, GH won't expose secrets for fork PRs
if: |
github.event_name == 'push' ||
github.event_name == 'schedule' ||
github.event_name == 'workflow_dispatch' ||
github.event_name == 'pull_request_target'
steps:
- name: Require approval for external contributors
if: |
github.event_name == 'pull_request_target' &&
github.event.pull_request.user.login != 'renovate[bot]' &&
github.event.pull_request.author_association != 'OWNER' &&
github.event.pull_request.author_association != 'MEMBER' &&
github.event.pull_request.author_association != 'COLLABORATOR' &&
!contains(github.event.pull_request.labels.*.name, 'run-secure-tests')
run: |
echo "ERROR: This PR is from an external contributor and requires the 'run-secure-tests' label."
exit 1
- name: Checkout repository
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha || github.event.inputs.ref || github.ref }}
- name: Enable Corepack
run: corepack enable
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24.14.0
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Build SDK
run: |
cd sdk
pnpm build
- name: Setup E2E Cache
uses: actions/cache@v5
with:
path: .tmp/rwsdk-e2e/rwsdk-e2e-cache
key: ${{ runner.os }}-${{ matrix.package-manager }}-e2e-deps-${{ hashFiles('playground/**/package.json', 'playground/**/pnpm-lock.yaml', 'playground/**/yarn.lock', 'playground/**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-${{ matrix.package-manager }}-e2e-deps-
- name: Run Playground E2E Tests (Dev)
id: tests
run: |
pnpm install
pnpm test:e2e
- name: Upload playground artifacts
uses: actions/upload-artifact@v7
if: always()
with:
name: playground-e2e-dev-artifacts-${{ matrix.os }}-${{ matrix.package-manager }}
path: |
/tmp/*-e2e-test-*
playground/**/node_modules/.cache/wrangler
retention-days: 7
playground-e2e-deploy:
needs: setup-matrix
name: Playground E2E Tests (Deploy)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.setup-matrix.outputs.matrix) }}
timeout-minutes: 60
env:
DEBUG: rwsdk:e2e:*
MAX_RETRIES: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '10' || '1' }}
RWSDK_SETUP_PLAYGROUND_ENV_TIMEOUT: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '1800000' || '' }} # 30 mins
RWSDK_DEPLOYMENT_TIMEOUT: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '900000' || '' }} # 15 mins
RWSDK_DEPLOYMENT_MIN_TRIES: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '10' || '' }}
RWSDK_DEPLOYMENT_CHECK_TIMEOUT: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '600000' || '' }} # 10 mins
RWSDK_PUPPETEER_TIMEOUT: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '300000' || '' }} # 5 mins
RWSDK_HYDRATION_TIMEOUT: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '10000' || '' }} # 10s
RWSDK_TEST_MAX_RETRIES: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '12' || '' }}
RWSDK_TEST_MAX_RETRIES_PER_CODE: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '20' || '' }}
RWSDK_SKIP_DEV: "1"
# context(justinvdm, 2025-09-20):
# Only run this job for PRs from the same repository and pushes to main
# For security, GH won't expose secrets for fork PRs
if: |
github.event_name == 'push' ||
github.event_name == 'schedule' ||
github.event_name == 'workflow_dispatch' ||
github.event_name == 'pull_request_target'
steps:
- name: Require approval for external contributors
if: |
github.event_name == 'pull_request_target' &&
github.event.pull_request.user.login != 'renovate[bot]' &&
github.event.pull_request.author_association != 'OWNER' &&
github.event.pull_request.author_association != 'MEMBER' &&
github.event.pull_request.author_association != 'COLLABORATOR' &&
!contains(github.event.pull_request.labels.*.name, 'run-secure-tests')
run: |
echo "ERROR: This PR is from an external contributor and requires the 'run-secure-tests' label."
exit 1
- name: Checkout repository
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha || github.event.inputs.ref || github.ref }}
- name: Enable Corepack
run: corepack enable
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24.14.0
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Build SDK
run: |
cd sdk
pnpm build
- name: Setup E2E Cache
uses: actions/cache@v5
with:
path: .tmp/rwsdk-e2e/rwsdk-e2e-cache
key: ${{ runner.os }}-${{ matrix.package-manager }}-e2e-deps-${{ hashFiles('playground/**/package.json', 'playground/**/pnpm-lock.yaml', 'playground/**/yarn.lock', 'playground/**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-${{ matrix.package-manager }}-e2e-deps-
- name: Run Playground E2E Tests (Deploy)
id: tests
run: |
pnpm install
pnpm test:e2e
- name: Upload playground artifacts
uses: actions/upload-artifact@v7
if: always()
with:
name: playground-e2e-deploy-artifacts-${{ matrix.os }}-${{ matrix.package-manager }}
path: |
/tmp/*-e2e-test-*
playground/**/node_modules/.cache/wrangler
retention-days: 7