Skip to content

In useOgImage() hook adds searchParams option for setting arbitrary query string vars to generated URL #31248

In useOgImage() hook adds searchParams option for setting arbitrary query string vars to generated URL

In useOgImage() hook adds searchParams option for setting arbitrary query string vars to generated URL #31248

Workflow file for this run

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
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: 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]
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
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: 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@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: 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@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: 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@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"