Use Replay for smoke tests #31288
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 | |
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@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@v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
with: | |
set-up-yarn-cache: false | |
yarn-install-directory: ./tasks/check | |
build: false | |
- name: β Check constraints, dependencies, and package.json's | |
uses: ./tasks/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" | |
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@v4 | |
- name: Set up job | |
uses: ./.github/actions/set-up-job | |
- name: π Lint | |
run: yarn lint | |
- name: π‘ Test Types | |
run: yarn test:types | |
- name: Get number of CPU cores | |
if: always() | |
id: cpu-cores | |
uses: SimenB/github-actions-cpu-cores@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 | |
strategy: | |
matrix: | |
bundler: [vite, webpack] | |
name: π² Tutorial E2E / ${{ matrix.bundler }} / node 20 latest | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@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" \ | |
--bundler ${{ matrix.bundler }} \ | |
--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@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@v4 | |
if: always() | |
with: | |
name: ${{ matrix.bundler }}-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' | |
strategy: | |
matrix: | |
bundler: [vite, webpack] | |
name: π² Tutorial E2E / ${{ matrix.bundler }} / node 20 latest | |
runs-on: ubuntu-latest | |
steps: | |
- run: echo "Skipped" | |
smoke-tests: | |
needs: check | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
bundler: [vite, webpack] | |
name: π Smoke tests / ${{ matrix.os }} / ${{ matrix.bundler }} / node 20 latest | |
runs-on: ${{ matrix.os }} | |
env: | |
REDWOOD_CI: 1 | |
REDWOOD_VERBOSE_TELEMETRY: 1 | |
BROWSER_INSTALL_CMD: ${{ matrix.os == 'windows-latest' && 'npx playwright install --with-deps chromium' || 'npx replayio install' }} | |
PLAYWRIGHT_CMD: ${{ matrix.os == 'windows-latest' && 'npx playwright test --project chromium' || 'npx playwright test --project replay-chromium' }} | |
steps: | |
- uses: actions/checkout@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: | |
bundler: ${{ matrix.bundler }} | |
env: | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
- name: π Install Playwright dependencies | |
run: ${{ env.BROWSER_INSTALL_CMD }} | |
- name: π§βπ» Run dev smoke tests | |
working-directory: ./tasks/smoke-tests/dev | |
run: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: '${{ steps.set-up-test-project.outputs.test-project-path }}' | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
- name: π Run auth smoke tests | |
working-directory: ./tasks/smoke-tests/auth | |
run: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
- 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: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
- name: π Run prerender smoke tests | |
working-directory: tasks/smoke-tests/prerender | |
run: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
- name: π Run Storybook smoke tests | |
working-directory: tasks/smoke-tests/storybook | |
run: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
smoke-tests-skip: | |
needs: detect-changes | |
if: needs.detect-changes.outputs.code == 'false' | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
bundler: [vite, webpack] | |
name: π Smoke tests / ${{ matrix.os }} / ${{ matrix.bundler }} / 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@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@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 | |
BROWSER_INSTALL_CMD: ${{ matrix.os == 'windows-latest' && 'npx playwright install --with-deps chromium' || 'npx replayio install' }} | |
PLAYWRIGHT_CMD: ${{ matrix.os == 'windows-latest' && 'npx playwright test --project chromium' || 'npx playwright test --project replay-chromium' }} | |
steps: | |
- uses: actions/checkout@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: ${{ env.BROWSER_INSTALL_CMD }} | |
- name: π Run RSC serve smoke tests | |
working-directory: tasks/smoke-tests/rsc | |
run: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-rsc-project.outputs.rsc-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
# 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: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-rsc-project.outputs.rsc-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
- 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: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-rsa-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
- 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: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-rsc-kitchen-sink-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
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 | |
# Temp workaround for Replay specific failing tests | |
BROWSER_INSTALL_CMD: npx playwright install --with-deps chromium | |
PLAYWRIGHT_CMD: npx playwright test --project chromium | |
steps: | |
- uses: actions/checkout@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: | |
bundler: vite | |
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: ${{ env.BROWSER_INSTALL_CMD }} | |
- name: Run SSR [DEV] smoke tests | |
working-directory: ./tasks/smoke-tests/streaming-ssr-dev | |
run: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: '${{ steps.set-up-test-project.outputs.test-project-path }}' | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
# Temp workaround for Replay specific failing tests | |
DISABLE_REPLAY_UPLOAD: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
- 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: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: '${{ steps.set-up-test-project.outputs.test-project-path }}' | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
# Temp workaround for Replay specific failing tests | |
DISABLE_REPLAY_UPLOAD: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
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 | |
BROWSER_INSTALL_CMD: ${{ matrix.os == 'windows-latest' && 'npx playwright install --with-deps chromium' || 'npx replayio install' }} | |
PLAYWRIGHT_CMD: ${{ matrix.os == 'windows-latest' && 'npx playwright test --project chromium' || 'npx playwright test --project replay-chromium' }} | |
steps: | |
- uses: actions/checkout@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: | |
bundler: vite | |
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: ${{ env.BROWSER_INSTALL_CMD }} | |
- name: Run Fragments dev smoke tests | |
working-directory: ./tasks/smoke-tests/fragments-dev | |
run: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: '${{ steps.set-up-test-project.outputs.test-project-path }}' | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
- 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: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: '${{ steps.set-up-test-project.outputs.test-project-path }}' | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
- 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: ${{ env.PLAYWRIGHT_CMD }} | |
env: | |
REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-test-project.outputs.test-project-path }} | |
REDWOOD_DISABLE_TELEMETRY: 1 | |
REPLAY_API_KEY: ${{ secrets.REPLAY_API_KEY }} | |
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@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@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@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@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" |