Skip to content

fix(deps): update starter-peer-deps #330

fix(deps): update starter-peer-deps

fix(deps): update starter-peer-deps #330

name: Playground E2E Tests
on:
push:
branches:
- main
paths-ignore:
- "docs/**"
- ".notes/**"
- "*.md"
- "src/**/*.test.*"
pull_request:
branches:
- main
paths-ignore:
- "docs/**"
- ".notes/**"
- "*.md"
- "src/**/*.test.*"
workflow_dispatch:
inputs:
os:
description: "OS to run on (e.g., ubuntu-latest, macos-latest)"
required: true
type: choice
default: "all"
options:
- all
- ubuntu-latest
- macos-latest
package-manager:
description: "Package manager to use (e.g., pnpm, npm)"
required: true
type: choice
default: "all"
options:
- all
- pnpm
- npm
- yarn
# todo(justinvdm, 25 Sep 2025): Re-enable yarn-classic once E2E tests are fixed
# - yarn-classic
workflow_call:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
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 [ "${{ github.event_name }}" == "pull_request" ] || [ "${{ github.event_name }}" == "push" ]; then
echo 'matrix={"include":[{"os":"ubuntu-latest","package-manager":"npm"}]}' >> $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' || OS_LIST=$OS_INPUT
# todo(justinvdm, 25 Sep 2025): Re-enable yarn-classic once E2E tests are fixed
[ "$PM_INPUT" == "all" ] && PM_LIST='pnpm npm yarn' || PM_LIST=$PM_INPUT
JSON_ARRAY="[]"
for o in $OS_LIST; do
for p in $PM_LIST; do
JSON_ARRAY=$(echo "$JSON_ARRAY" | jq ". + [{\"os\":\"$o\",\"package-manager\":\"$p\"}]")
done
done
echo "matrix={\"include\":${JSON_ARRAY}}" >> $GITHUB_OUTPUT
else # this is for workflow_call
# todo(justinvdm, 25 Sep 2025): Re-enable yarn-classic once E2E tests are fixed
echo 'matrix={"include":[{"os":"ubuntu-latest","package-manager":"pnpm"},{"os":"ubuntu-latest","package-manager":"npm"},{"os":"ubuntu-latest","package-manager":"yarn"},{"os":"macos-latest","package-manager":"pnpm"},{"os":"macos-latest","package-manager":"npm"},{"os":"macos-latest","package-manager":"yarn"}]}' >> $GITHUB_OUTPUT
fi
playground-e2e:
needs: setup-matrix
name: Playground E2E - ${{ matrix.os }} - ${{ matrix.package-manager }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.setup-matrix.outputs.matrix) }}
timeout-minutes: 60
env:
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_DEV_SERVER_TIMEOUT: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_call') && '900000' || '' }} # 15 mins
# 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.pull_request.head.repo.full_name == github.repository
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Install dependencies
shell: bash
run: |
corepack enable
pnpm install
- name: Build SDK
shell: bash
run: |
cd sdk
pnpm build
- name: Run Playground E2E Tests
id: tests
shell: bash
run: |
pnpm install
./scripts/retry.sh pnpm test:e2e
env:
CI: 1
PACKAGE_MANAGER: ${{ matrix.package-manager }}
- name: Upload playground artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: playground-e2e-artifacts-${{ matrix.os }}-${{ matrix.package-manager }}
path: |
/tmp/*-e2e-test-*
playground/**/node_modules/.cache/wrangler
retention-days: 7