diff --git a/.github/workflows/ci-rsc.yml b/.github/workflows/ci-rsc.yml index f051b4f7a..6832a9d22 100644 --- a/.github/workflows/ci-rsc.yml +++ b/.github/workflows/ci-rsc.yml @@ -68,9 +68,7 @@ jobs: - name: install react if: ${{ matrix.react_version }} run: | - sed -i "/^overrides:/a\ react: \"$REACT_VERSION\"" pnpm-workspace.yaml - sed -i "/^overrides:/a\ react-dom: \"$REACT_VERSION\"" pnpm-workspace.yaml - sed -i "/^overrides:/a\ react-server-dom-webpack: \"$REACT_VERSION\"" pnpm-workspace.yaml + ./scripts/override-react.sh "$REACT_VERSION" pnpm i --no-frozen-lockfile env: REACT_VERSION: ${{ matrix.react_version }} diff --git a/packages/plugin-rsc/e2e/basic.test.ts b/packages/plugin-rsc/e2e/basic.test.ts index 8b1242fa1..74c468094 100644 --- a/packages/plugin-rsc/e2e/basic.test.ts +++ b/packages/plugin-rsc/e2e/basic.test.ts @@ -7,6 +7,7 @@ import { expect, test, } from '@playwright/test' +import React from 'react' import { x } from 'tinyexec' import { normalizePath, type Rollup } from 'vite' import { type Fixture, useCreateEditor, useFixture } from './fixture' @@ -1277,6 +1278,12 @@ function defineTest(f: Fixture) { await expect(page.getByTestId('action-error-boundary')).toContainText( '(Error: boom!)', ) + } else if (/canary|experimental/.test(React.version)) { + // this is now minified on main + // https://github.com/facebook/react/pull/36277 + await expect(page.getByTestId('action-error-boundary')).toContainText( + '(Error: Minified React error #441', + ) } else { await expect(page.getByTestId('action-error-boundary')).toContainText( '(Error: An error occurred in the Server Components render.', diff --git a/packages/plugin-rsc/e2e/react-router.test.ts b/packages/plugin-rsc/e2e/react-router.test.ts index bcfe8ae9b..49a9c1c0b 100644 --- a/packages/plugin-rsc/e2e/react-router.test.ts +++ b/packages/plugin-rsc/e2e/react-router.test.ts @@ -1,13 +1,10 @@ import { createHash } from 'node:crypto' import { readFileSync } from 'node:fs' import { expect, test } from '@playwright/test' -import React from 'react' import { type Fixture, useFixture } from './fixture' import { expectNoReload, testNoJs, waitForHydration } from './helper' test.describe('dev-default', () => { - test.skip(/canary|experimental/.test(React.version)) - const f = useFixture({ root: 'examples/react-router', mode: 'dev' }) defineTest(f) }) @@ -18,8 +15,6 @@ test.describe('build-default', () => { }) test.describe('dev-cloudflare', () => { - test.skip(/canary|experimental/.test(React.version)) - const f = useFixture({ root: 'examples/react-router', mode: 'dev', diff --git a/scripts/override-react.sh b/scripts/override-react.sh new file mode 100755 index 000000000..3a399fa34 --- /dev/null +++ b/scripts/override-react.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ $# -ne 1 ]]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +if ! command -v yq >/dev/null 2>&1; then + echo "yq is required to update pnpm-workspace.yaml" >&2 + exit 1 +fi + +react_version=$1 +script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd) +repo_root=$(cd -- "$script_dir/.." && pwd) + +yq -i " + .overrides.react = \"$react_version\" | + .overrides[\"react-dom\"] = \"$react_version\" | + .overrides[\"react-server-dom-webpack\"] = \"$react_version\" +" "$repo_root/pnpm-workspace.yaml"