Skip to content

Migrate to React 19 #872

Migrate to React 19

Migrate to React 19 #872

Workflow file for this run

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: Run test suite
run: yarn test
- name: Collect coverage
run: yarn coverage
- 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']
react:
[
{
version: '^18',
types: ^18,
react-dom: { version: '^18', types: '^18' },
},
{
version: 'rc',
types: 'npm:types-react@19.0.0-beta.1',
react-dom:
{ version: 'rc', types: 'npm:types-react-dom@19.0.0-beta.1' },
},
]
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 ./vitest.config.mts
- name: Test types
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@19.0.0-beta.1',
react-dom:
{ version: 'rc', types: 'npm:types-react-dom@19.0.0-beta.1' },
},
]
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 ./vitest.config.mts
- name: Run local tests against the build artifact
run: yarn test