fix(api-server): prevent race condition in server restart process #33839
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: ⚙️ CI | |
on: | |
pull_request: | |
push: | |
branches: ['next', 'release/**'] | |
# Cancel in-progress runs of this workflow. | |
# See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-only-cancel-in-progress-jobs-or-runs-for-the-current-workflow. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: {} | |
env: | |
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} | |
YARN_ENABLE_HARDENED_MODE: 0 | |
jobs: | |
detect-changes: | |
if: github.repository == 'redwoodjs/redwood' | |
name: 🔍 Detect changes | |
runs-on: ubuntu-latest | |
outputs: | |
code: ${{ steps.detect-changes.outputs.code }} | |
rsc: ${{ steps.detect-changes.outputs.rsc }} | |
ssr: ${{ steps.detect-changes.outputs.ssr }} | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
with: | |
set-up-yarn-cache: false | |
yarn-install-directory: ./.github/actions/detect-changes | |
build: false | |
- name: 🔍 Detect changes | |
id: detect-changes | |
uses: ./.github/actions/detect-changes | |
check: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.code == 'true' | |
name: ✅ Check constraints, dependencies, and package.json's | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
with: | |
set-up-yarn-cache: false | |
yarn-install-directory: . | |
build: false | |
- name: ✅ Check constraints, dependencies, and package.json's | |
run: yarn check | |
check-skip: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.code == 'false' | |
name: ✅ Check constraints, dependencies, and package.json's | |
runs-on: ubuntu-latest | |
steps: | |
- run: echo "Skipped" | |
formatting-check: | |
name: 📝 Check formatting (prettier) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
with: | |
set-up-yarn-cache: false | |
yarn-install-directory: . | |
build: false | |
- name: 📝 Check formatting (prettier) | |
run: yarn format:check | |
build-lint-test: | |
needs: check | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 🏗 Build, lint, test / ${{ matrix.os }} / node 20 latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Remove the tsc problem matcher if not ubuntu-latest | |
if: matrix.os != 'ubuntu-latest' | |
run: echo "echo "::remove-matcher owner=tsc::"" | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
- name: 🔎 Lint | |
run: yarn lint | |
# TODO(jgmw): Re-enable when it doesn't hang | |
# - name: 🥡 Check packaging and attw | |
# run: yarn check:package | |
- name: 🌡 Test Types | |
run: yarn test:types | |
- name: Get number of CPU cores | |
if: always() | |
id: cpu-cores | |
uses: SimenB/github-actions-cpu-cores@97ba232459a8e02ff6121db9362b09661c875ab8 # v2 | |
- name: 🧪 Test | |
run: yarn test-ci --minWorkers=1 --maxWorkers=${{ steps.cpu-cores.outputs.count }} | |
build-lint-test-skip: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.code == 'false' | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 🏗 Build, lint, test / ${{ matrix.os }} / node 20 latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- run: echo "Skipped" | |
tutorial-e2e: | |
needs: check | |
name: 🌲 Tutorial E2E / node 20 latest | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
- name: 🌲 Install Cypress | |
run: yarn cypress install | |
- name: 🌲 Create a Redwood App | |
id: crwa | |
env: | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
run: | | |
project_path=$(mktemp -d -t redwood.XXXXXX) | |
echo "project-path=$project_path" >> $GITHUB_OUTPUT | |
git config --global user.email "[email protected]" | |
git config --global user.name "Your Name" | |
./tasks/run-e2e "$project_path" \ | |
--no-build-framework \ | |
--no-start | |
- name: Start the dev server in the background | |
run: | | |
yarn rw dev --no-generate --fwd="--no-open" 2>&1 | tee dev_server.log & | |
working-directory: ${{ steps.crwa.outputs.project-path }} | |
- name: 🌲 Run Cypress | |
uses: cypress-io/github-action@df7484c5ba85def7eef30db301afa688187bc378 # v6 | |
env: | |
CYPRESS_RW_PATH: ${{ steps.crwa.outputs.project-path }} | |
with: | |
browser: chrome | |
env: true | |
install: false | |
wait-on: 'http://[::1]:8910' | |
working-directory: ./tasks/e2e | |
spec: | | |
cypress/e2e/01-tutorial/*.cy.js | |
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 | |
if: always() | |
with: | |
name: logs | |
path: | | |
${{ steps.crwa.outputs.project-path }}/dev_server.log | |
${{ steps.crwa.outputs.project-path }}/e2e.log | |
tutorial-e2e-skip: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.code == 'false' | |
name: 🌲 Tutorial E2E / node 20 latest | |
runs-on: ubuntu-latest | |
steps: | |
- run: echo "Skipped" | |
smoke-tests: | |
needs: check | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 🔄 Smoke tests / ${{ matrix.os }} / node 20 latest | |
runs-on: ${{ matrix.os }} | |
env: | |
REDWOOD_CI: 1 | |
REDWOOD_VERBOSE_TELEMETRY: 1 | |
steps: | |
- name: Checkout the framework code | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
- name: 🌲 Set up test project | |
id: set-up-test-project | |
uses: ./.github/actions/set-up-test-project | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
- name: 🎭 Install playwright dependencies | |
run: npx playwright install --with-deps chromium | |
- name: 🧑💻 Run dev smoke tests | |
working-directory: ./tasks/smoke-tests/dev | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: '${{ steps.set-up-test-project.outputs.test-project-path }}' | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: 🔐 Run auth smoke tests | |
working-directory: ./tasks/smoke-tests/auth | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: Run `rw build --no-prerender` | |
run: | | |
yarn rw build --no-prerender | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run `rw prerender` | |
run: | | |
yarn rw prerender --verbose | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: 🖥️ Run serve smoke tests | |
working-directory: tasks/smoke-tests/serve | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: 📄 Run prerender smoke tests | |
working-directory: tasks/smoke-tests/prerender | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: 📕 Run Storybook smoke tests | |
working-directory: tasks/smoke-tests/storybook | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
smoke-tests-skip: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.code == 'false' | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 🔄 Smoke tests / ${{ matrix.os }} / node 20 latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- run: echo "Skipped" | |
smoke-tests-react-18: | |
needs: check | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 🔄 Smoke tests React 18 / ${{ matrix.os }} / node 20 latest | |
runs-on: ${{ matrix.os }} | |
env: | |
REDWOOD_CI: 1 | |
REDWOOD_VERBOSE_TELEMETRY: 1 | |
steps: | |
- name: Checkout the framework code | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
with: | |
build: false | |
- name: Downgrade to React 18 | |
run: | | |
yarn tsx ./tasks/downgradeToReact18.mts | |
# One of our dependencies is on GitHub instead of NPM and without authentication | |
# we'll get rate limited and this step becomes flaky. | |
- name: 🐈 Yarn install | |
shell: bash | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
run: yarn install --inline-builds | |
- name: 🏗️ Build | |
shell: bash | |
run: yarn build | |
- name: 🌲 Set up test project for React 18 | |
id: set-up-test-project-react-18 | |
uses: ./.github/actions/set-up-test-project | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
- name: 🎭 Install playwright dependencies | |
run: npx playwright install --with-deps chromium | |
- name: 🧑💻 Run dev smoke tests | |
working-directory: ./tasks/smoke-tests/dev | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: '${{ steps.set-up-test-project-react-18.outputs.test-project-path }}' | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: 🔐 Run auth smoke tests | |
working-directory: ./tasks/smoke-tests/auth | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project-react-18.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: Run `rw build --no-prerender` | |
run: | | |
yarn rw build --no-prerender | |
working-directory: ${{ steps.set-up-test-project-react-18.outputs.test-project-path }} | |
- name: Run `rw prerender` | |
run: | | |
yarn rw prerender --verbose | |
working-directory: ${{ steps.set-up-test-project-react-18.outputs.test-project-path }} | |
- name: 🖥️ Run serve smoke tests | |
working-directory: tasks/smoke-tests/serve | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project-react-18.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: 📄 Run prerender smoke tests | |
working-directory: tasks/smoke-tests/prerender | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project-react-18.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: 📕 Run Storybook smoke tests | |
working-directory: tasks/smoke-tests/storybook | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project-react-18.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
smoke-tests-react-18-skip: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.code == 'false' | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 🔄 Smoke tests React 18 / ${{ matrix.os }} / node 20 latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- run: echo "Skipped" | |
cli-smoke-tests: | |
needs: check | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 🔄 CLI smoke tests / ${{ matrix.os }} / node 20 latest | |
runs-on: ${{ matrix.os }} | |
env: | |
REDWOOD_CI: 1 | |
REDWOOD_VERBOSE_TELEMETRY: 1 | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
- name: 🌲 Set up test project | |
id: set-up-test-project | |
uses: ./.github/actions/set-up-test-project | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
- name: Run `rw info` | |
run: yarn rw info | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run `rw lint` | |
run: yarn rw lint ./api/src --fix | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run "rw test api" | |
run: yarn rw test api --no-watch | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run "rw test web" | |
run: yarn rw test web --no-watch | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run "rw check" | |
run: yarn rw check | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run "rw storybook" | |
run: yarn rw sb --smoke-test | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run "rw exec" | |
run: yarn rw g script testScript && yarn rw exec testScript | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run "prisma generate" | |
run: yarn rw prisma generate | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run "rw data-migrate" | |
run: yarn rw data-migrate up | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run "data-migrate install" | |
run: yarn rw data-migrate install | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run "prisma migrate" | |
run: yarn rw prisma migrate dev --name ci-test | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run `rw deploy --help` | |
run: yarn rw setup deploy --help && yarn rw deploy --help | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run `rw setup ui --help` | |
run: yarn rw setup --help && yarn rw setup ui --help | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run "g page" | |
run: yarn rw g page ciTest | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run "g sdl" | |
run: yarn rw g sdl userExample | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Run "rw type-check" | |
run: yarn rw type-check | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
- name: Throw Error | Run `rw g sdl <model>` | |
run: yarn rw g sdl DoesNotExist | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
continue-on-error: true | |
cli-smoke-tests-skip: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.code == 'false' | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 🔄 CLI smoke tests / ${{ matrix.os }} / node 20 latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- run: echo "Skipped" | |
telemetry-check: | |
needs: check | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 🔭 Telemetry check / ${{ matrix.os }} / node 20 latest | |
runs-on: ${{ matrix.os }} | |
env: | |
REDWOOD_REDIRECT_TELEMETRY: 'http://127.0.0.1:48619' # Random port | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
- name: 📢 Listen for telemetry (CRWA) | |
run: node ./.github/actions/telemetry_check/check.mjs --mode crwa | |
- name: 📢 Listen for telemetry (CLI) | |
run: node ./.github/actions/telemetry_check/check.mjs --mode cli | |
env: | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
telemetry-check-skip: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.code == 'false' | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 🔭 Telemetry check / ${{ matrix.os }} / node 20 latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- run: echo "Skipped" | |
rsc-smoke-tests: | |
needs: [check, detect-changes] | |
if: needs.detect-changes.outputs.rsc == 'true' | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 🔄🐘 RSC Smoke tests / ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
env: | |
REDWOOD_CI: 1 | |
REDWOOD_VERBOSE_TELEMETRY: 1 | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
- name: 🌲 Set up RSC project | |
id: set-up-rsc-project | |
uses: ./.github/actions/set-up-rsc-project | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
- name: 🎭 Install playwright dependencies | |
run: npx playwright install --with-deps chromium | |
- name: 🐘 Run RSC serve smoke tests | |
working-directory: tasks/smoke-tests/rsc | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-rsc-project.outputs.rsc-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
# TODO (RSC): This workflow times out on Windows. It looks as if the dev | |
# server starts up ok, but it doesn't seem like the browser is rendering | |
# what it should be. And now it's also started failing on Ubuntu. So I've | |
# disabled it for now. The error on Ubuntu is: | |
# Failed to read a RSC payload created by a development version of | |
# React on the server while using a production version on the client. | |
# Always use matching versions on the server and the client. | |
- name: 🐘 Run RSC dev smoke tests | |
if: matrix.os == 'false__ubuntu-latest' | |
working-directory: tasks/smoke-tests/rsc-dev | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-rsc-project.outputs.rsc-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: 🌲 Set up RSA smoke test | |
id: set-up-rsa-project | |
uses: ./.github/actions/set-up-rsa-project | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
- name: 🐘 Run RSA smoke tests | |
working-directory: tasks/smoke-tests/rsa | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-rsa-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: 🌲 Set up RSC Kitchen Sink smoke test | |
id: set-up-rsc-kitchen-sink-project | |
uses: ./.github/actions/set-up-rsc-kitchen-sink-project | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
- name: 🐘 Run RSC Kitchen Sink smoke tests | |
working-directory: tasks/smoke-tests/rsc-kitchen-sink | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-rsc-kitchen-sink-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
rsc-smoke-tests-skip: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.rsc == 'false' | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 🔄🐘 RSC Smoke tests / ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
steps: | |
- run: echo "Skipped" | |
ssr-smoke-tests: | |
needs: [check, detect-changes] | |
if: needs.detect-changes.outputs.ssr == 'true' | |
strategy: | |
matrix: | |
# TODO: add `windows-latest`. | |
os: [ubuntu-latest] | |
name: 🔁 SSR Smoke tests / ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
env: | |
REDWOOD_CI: 1 | |
REDWOOD_VERBOSE_TELEMETRY: 1 | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
- name: 🌲 Set up test project | |
id: set-up-test-project | |
uses: ./.github/actions/set-up-test-project | |
with: | |
canary: true | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
- name: Run SSR codemods on test project | |
run: ./tasks/test-project/convert-to-ssr-fixture ${{ steps.set-up-test-project.outputs.test-project-path }} | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: 🎭 Install playwright dependencies | |
run: npx playwright install --with-deps chromium | |
- name: Run SSR [DEV] smoke tests | |
working-directory: ./tasks/smoke-tests/streaming-ssr-dev | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: '${{ steps.set-up-test-project.outputs.test-project-path }}' | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: Build for production | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
run: yarn rw build --no-prerender --verbose | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: Run SSR [PROD] smoke tests | |
working-directory: ./tasks/smoke-tests/streaming-ssr-prod | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: '${{ steps.set-up-test-project.outputs.test-project-path }}' | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
ssr-smoke-tests-skip: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.ssr == 'false' | |
strategy: | |
matrix: | |
# TODO: add `windows-latest`. | |
os: [ubuntu-latest] | |
name: 🔁 SSR Smoke tests / ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
steps: | |
- run: echo "Skipped" | |
fragments-smoke-tests: | |
needs: check | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 📄 Fragments Smoke tests / ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
env: | |
REDWOOD_CI: 1 | |
REDWOOD_VERBOSE_TELEMETRY: 1 | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
- name: 🌲 Set up test project | |
id: set-up-test-project | |
uses: ./.github/actions/set-up-test-project | |
with: | |
canary: true | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
- name: Run Fragments codemods on test project | |
run: npx -y tsx ./tasks/test-project/add-gql-fragments ${{ steps.set-up-test-project.outputs.test-project-path }} | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: 🎭 Install playwright dependencies | |
run: npx playwright install --with-deps chromium | |
- name: Run Fragments dev smoke tests | |
working-directory: ./tasks/smoke-tests/fragments-dev | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: '${{ steps.set-up-test-project.outputs.test-project-path }}' | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: Build for production | |
working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
run: yarn rw build | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: Run Fragments serve smoke tests | |
working-directory: ./tasks/smoke-tests/fragments-serve | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: '${{ steps.set-up-test-project.outputs.test-project-path }}' | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: Enable trusted-documents in Fragments test project | |
run: npx -y tsx ./tasks/test-project/set-up-trusted-documents ${{ steps.set-up-test-project.outputs.test-project-path }} | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
- name: 📄 Run prerender smoke tests against Fragments test project (with trusted-documents enabled) | |
working-directory: tasks/smoke-tests/prerender | |
run: npx playwright test | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
fragments-smoke-tests-skip: | |
needs: detect-changes | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: 📄 Fragments Smoke tests / ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
steps: | |
- run: echo "Skipped" | |
crwa: | |
needs: check | |
name: 🌲 Create Redwood App | |
runs-on: ubuntu-latest | |
env: | |
REDWOOD_CI: 1 | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
- name: Set up test project | |
run: | | |
yarn build:pack | |
PROJECT_PATH=$(yarn set-up-test-project) | |
echo "PROJECT_PATH=$PROJECT_PATH" >> $GITHUB_ENV | |
working-directory: ./packages/create-redwood-app | |
env: | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
- name: Set up git | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "Your Name" | |
- name: e2e test | |
run: yarn test:e2e | |
working-directory: ./packages/create-redwood-app | |
env: | |
PROJECT_PATH: ${{ env.PROJECT_PATH }} | |
- name: Install expect | |
run: | | |
sudo apt-get update | |
sudo apt-get install expect | |
- name: Prompt tests | |
run: | | |
./tests/e2e_prompts.sh | |
./tests/e2e_prompts_git.sh | |
./tests/e2e_prompts_m.sh | |
./tests/e2e_prompts_ts.sh | |
./tests/e2e_prompts_overwrite.sh | |
working-directory: ./packages/create-redwood-app | |
env: | |
PROJECT_PATH: ${{ env.PROJECT_PATH }} | |
- name: ⬢ Set up Node.js | |
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4 | |
with: | |
node-version: 18 | |
- name: Prompt tests | |
run: ./tests/e2e_prompts_node_less.sh | |
working-directory: ./packages/create-redwood-app | |
env: | |
PROJECT_PATH: ${{ env.PROJECT_PATH }} | |
- name: ⬢ Set up Node.js | |
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4 | |
with: | |
node-version: 21 | |
- name: Prompt tests | |
run: ./tests/e2e_prompts_node_greater.sh | |
working-directory: ./packages/create-redwood-app | |
env: | |
PROJECT_PATH: ${{ env.PROJECT_PATH }} | |
crwa-skip: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.code == 'false' | |
name: 🌲 Create Redwood App | |
runs-on: ubuntu-latest | |
steps: | |
- run: echo "Skipped" | |
server-tests: | |
needs: check | |
name: Server tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
- run: yarn vitest run | |
working-directory: ./tasks/server-tests | |
server-tests-skip: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.code == 'false' | |
name: Server tests | |
runs-on: ubuntu-latest | |
steps: | |
- run: echo "Skipped" | |
background-jobs-e2e: | |
needs: check | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: Background jobs E2E test / ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
env: | |
REDWOOD_CI: 1 | |
REDWOOD_VERBOSE_TELEMETRY: 1 | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
- name: 🌲 Set up test project | |
id: set-up-test-project | |
uses: ./.github/actions/set-up-test-project | |
with: | |
canary: true | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
- name: Run E2E test script | |
run: yarn e2e:background-jobs ${{ steps.set-up-test-project.outputs.test-project-path }} | |
env: | |
REDWOOD_VERBOSE_TELEMETRY: '' | |
background-jobs-e2e-skip: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.code == 'false' | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
name: Background jobs E2E test / ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
steps: | |
- run: echo "Skipped" |