Migrate to React 19 #1110
Workflow file for this run
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: Tests | |
on: [push, pull_request, workflow_dispatch] | |
jobs: | |
build: | |
name: Build and run test Suite | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
cache: 'yarn' | |
- name: Install dependencies | |
run: yarn install | |
- name: Lint | |
run: yarn lint | |
- name: Run test suite | |
run: yarn test | |
- name: Build | |
run: yarn build | |
- name: Pack | |
run: yarn pack | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: package | |
path: ./package.tgz | |
test-types: | |
name: Test Types with TypeScript ${{ matrix.ts }} and React ${{ matrix.react.version }} | |
needs: [build] | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
node: ['20.x'] | |
ts: ['4.7', '4.8', '4.9', '5.0', '5.1', '5.2', '5.3', '5.4', '5.5'] | |
react: | |
[ | |
{ | |
version: '^18', | |
types: ^18, | |
react-dom: { version: '^18', types: '^18' }, | |
}, | |
{ | |
version: 'rc', | |
types: 'npm:types-react@rc', | |
react-dom: { version: 'rc', types: 'npm:types-react-dom@rc' }, | |
}, | |
] | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Use node ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: 'yarn' | |
- name: Download build artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: package | |
path: . | |
- name: Install deps | |
run: yarn install | |
- name: Install React ${{ matrix.react.version }} and React-DOM ${{ matrix.react.react-dom.version }} | |
run: yarn add -D react@${{ matrix.react.version }} react-dom@${{ matrix.react.react-dom.version }} @types/react@${{ matrix.react.types }} @types/react-dom@${{ matrix.react.react-dom.types }} | |
- name: Install TypeScript ${{ matrix.ts }} | |
run: yarn add typescript@${{ matrix.ts }} | |
- name: Install build artifact | |
run: yarn add ./package.tgz | |
- name: Erase path aliases | |
run: sed -i -e /@remap-prod-remove-line/d ./tsconfig.base.json | |
- name: Test types | |
env: | |
TEST_DIST: true | |
run: | | |
yarn tsc --version | |
yarn type-tests | |
are-the-types-wrong: | |
name: Check package config with are-the-types-wrong | |
needs: [build] | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
node: ['20.x'] | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: package | |
path: . | |
# Note: We currently expect "FalseCJS" failures for Node16 + `moduleResolution: "node16", | |
- name: Run are-the-types-wrong | |
run: npx @arethetypeswrong/cli ./package.tgz --format table --ignore-rules false-cjs --exclude-entrypoints alternate-renderers | |
test-published-artifact: | |
name: Test Published Artifact ${{ matrix.example }} | |
needs: [build] | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
node: ['20.x'] | |
example: | |
[ | |
'cra4', | |
'cra5', | |
'next', | |
'vite', | |
'node-standard', | |
'node-esm', | |
'react-native', | |
'expo', | |
] | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Use node ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: 'yarn' | |
- name: Clone RTK repo | |
run: git clone https://github.com/reduxjs/redux-toolkit.git ./redux-toolkit | |
- name: Cache example deps | |
uses: actions/cache@v4 | |
with: | |
path: ./redux-toolkit/examples/publish-ci/${{ matrix.example }}/node_modules | |
key: test-published-artifact-${{ matrix.example }}-node_modules | |
- name: Check folder contents | |
run: ls -l . | |
- name: Install example deps | |
working-directory: ./redux-toolkit/examples/publish-ci/${{ matrix.example }} | |
run: yarn install | |
- name: Install Playwright browser if necessary | |
working-directory: ./redux-toolkit/examples/publish-ci/${{ matrix.example }} | |
continue-on-error: true | |
run: yarn playwright install || true | |
- uses: actions/download-artifact@v4 | |
with: | |
name: package | |
path: ./redux-toolkit/examples/publish-ci/${{ matrix.example }} | |
- name: Check folder contents | |
working-directory: ./redux-toolkit/examples/publish-ci/${{ matrix.example }} | |
run: ls -l . | |
- name: Install build artifact | |
working-directory: ./redux-toolkit/examples/publish-ci/${{ matrix.example }} | |
run: yarn add ./package.tgz | |
- name: Show installed package versions | |
working-directory: ./redux-toolkit/examples/publish-ci/${{ matrix.example }} | |
run: yarn info react-redux && yarn why react-redux | |
- name: Build example | |
working-directory: ./redux-toolkit/examples/publish-ci/${{ matrix.example }} | |
env: | |
NODE_OPTIONS: --openssl-legacy-provider | |
run: yarn build | |
- name: Run test step | |
working-directory: ./redux-toolkit/examples/publish-ci/${{ matrix.example }} | |
run: yarn test | |
test-published-artifact-local: | |
name: Test Published Artifact (Local) ${{ matrix.example }} | |
needs: [build] | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
node: ['20.x'] | |
example: ['rr-rsc-context'] | |
defaults: | |
run: | |
working-directory: ./examples/publish-ci/${{ matrix.example }} | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Use node ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: 'yarn' | |
- name: Install deps | |
run: yarn install | |
- name: Remove existing React-Redux | |
run: yarn remove react-redux | |
- uses: actions/download-artifact@v4 | |
with: | |
name: package | |
path: ./examples/publish-ci/${{ matrix.example }} | |
- name: Check folder contents | |
run: ls -l . | |
- name: Install build artifact | |
run: yarn add ./package.tgz | |
- name: Show installed React-Redux versions | |
run: yarn info react-redux && yarn why react-redux | |
- name: Build example | |
run: yarn build | |
test-dist: | |
name: Run local tests against build artifact (React ${{ matrix.react.version }}) | |
needs: [build] | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
node: ['20.x'] | |
react: | |
[ | |
{ | |
version: '^18', | |
types: ^18, | |
react-dom: { version: '^18', types: '^18' }, | |
}, | |
{ | |
version: 'rc', | |
types: 'npm:types-react@rc', | |
react-dom: { version: 'rc', types: 'npm:types-react-dom@rc' }, | |
}, | |
] | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Use node ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: 'yarn' | |
- name: Install deps | |
run: yarn install | |
- name: Download build artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: package | |
path: . | |
- name: Check folder contents | |
run: ls -lah | |
- name: Install React ${{ matrix.react.version }} and React-DOM ${{ matrix.react.react-dom.version }} | |
run: yarn add -D react@${{ matrix.react.version }} react-dom@${{ matrix.react.react-dom.version }} @types/react@${{ matrix.react.types }} @types/react-dom@${{ matrix.react.react-dom.types }} | |
- name: Install build artifact | |
run: yarn add ./package.tgz | |
- name: Erase path aliases | |
run: sed -i -e /@remap-prod-remove-line/d ./tsconfig.base.json | |
- name: Run local tests against the build artifact | |
env: | |
TEST_DIST: true | |
run: yarn test |