[DO NOT MERGE] Replay React Devtools fork preview #2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: (Runtime) Test | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
paths-ignore: | |
- 'compiler/**' | |
env: | |
# Number of workers (one per shard) to spawn | |
SHARD_COUNT: 5 | |
jobs: | |
# Define the various test parameters and parallelism for this workflow | |
build_test_params: | |
name: Build test params | |
runs-on: ubuntu-latest | |
outputs: | |
params: ${{ steps.define-params.outputs.result }} | |
shard_id: ${{ steps.define-shards.outputs.result }} | |
steps: | |
- uses: actions/github-script@v7 | |
id: define-shards | |
with: | |
script: | | |
function range(from, to) { | |
const arr = []; | |
for (let n = from; n <= to; n++) { | |
arr.push(n); | |
} | |
return arr; | |
} | |
return range(1, process.env.SHARD_COUNT); | |
- uses: actions/github-script@v7 | |
id: define-params | |
with: | |
script: | | |
return [ | |
"-r=stable --env=development", | |
"-r=stable --env=production", | |
"-r=experimental --env=development", | |
"-r=experimental --env=production", | |
"-r=www-classic --env=development --variant=false", | |
"-r=www-classic --env=production --variant=false", | |
"-r=www-classic --env=development --variant=true", | |
"-r=www-classic --env=production --variant=true", | |
"-r=www-modern --env=development --variant=false", | |
"-r=www-modern --env=production --variant=false", | |
"-r=www-modern --env=development --variant=true", | |
"-r=www-modern --env=production --variant=true", | |
"-r=xplat --env=development --variant=false", | |
"-r=xplat --env=development --variant=true", | |
"-r=xplat --env=production --variant=false", | |
"-r=xplat --env=production --variant=true", | |
// TODO: Test more persistent configurations? | |
"-r=stable --env=development --persistent", | |
"-r=experimental --env=development --persistent" | |
]; | |
# Spawn a job for each shard for a given set of test params | |
test: | |
name: yarn test ${{ matrix.params }} (Shard ${{ matrix.shard_id }}) | |
runs-on: ubuntu-latest | |
needs: build_test_params | |
strategy: | |
matrix: | |
params: ${{ fromJSON(needs.build_test_params.outputs.params) }} | |
shard_id: ${{ fromJSON(needs.build_test_params.outputs.shard_id) }} | |
continue-on-error: true | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
cache: "yarn" | |
cache-dependency-path: yarn.lock | |
- name: Restore cached node_modules | |
uses: actions/cache@v4 | |
id: node_modules | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | |
- run: yarn install --frozen-lockfile | |
- run: yarn test ${{ matrix.params }} --ci=github --shard=${{ matrix.shard_id }}/${{ env.SHARD_COUNT }} |