Create blockquote #6658
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: Cypress PR Checks | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened, labeled] | |
jobs: | |
# run this job first to create a single timestamped id for all percy batches on parallel machines | |
percy-batch-id: | |
runs-on: ubuntu-latest | |
# persist job results to other jobs in the workflow | |
outputs: | |
result: ${{ steps.percy-batch-id.outputs.result }} | |
steps: | |
# persist step results to other steps in the job | |
- name: Create Percy Batch ID | |
id: percy-batch-id | |
# adding a timestamp makes the batch id more unique for re-runs | |
run: echo "result=${{ github.run_id }}-$(date +%s)" >> $GITHUB_OUTPUT | |
cypress: | |
name: Website vrt | |
runs-on: ubuntu-latest | |
needs: percy-batch-id | |
if: ${{ contains(github.event.pull_request.labels.*.name, '🕵🏻♀️ Run website visual regression') }} | |
strategy: | |
fail-fast: false | |
matrix: | |
containers: [1, 2, 3] | |
env: | |
CYPRESS_CACHE_FOLDER: ./node_modules/cypress | |
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }} | |
AIRTABLE_APIKEY: ${{ secrets.AIRTABLE_APIKEY }} | |
AIRTABLE_BASEID: ${{ secrets.AIRTABLE_BASEID }} | |
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
OPENAI_API_SECRET: ${{ secrets.OPENAI_API_SECRET }} | |
CYPRESS_BASE_URL: http://localhost:3000 | |
SUPABASE_KEY: ${{ secrets.SUPABASE_STAGING_KEY }} | |
SUPABASE_URL: ${{ secrets.SUPABASE_STAGING_URL }} | |
USE_CYPRESS_VRT: false | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: nrwl/nx-set-shas@v4 | |
- name: Setup Node.js 20.5 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.5.x | |
- name: Get yarn cache directory path | |
id: yarn-cache-dir-path | |
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT | |
- name: Load Yarn cache | |
uses: actions/cache@v3 | |
id: yarn_cache_id | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn | |
- name: Node modules cache | |
uses: actions/cache@v3 | |
id: node_modules_cache_id | |
with: | |
path: | | |
node_modules | |
*/*/node_modules | |
key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} | |
- name: Install Dependencies | |
if: steps.yarn_cache_id.outputs.cache-hit != 'true' || steps.node_modules_cache_id.outputs.cache-hit != 'true' | |
run: yarn install --immutable | |
- name: Build packages | |
run: yarn build | |
- name: Percy Batch ID | |
run: echo "${{ needs.percy-batch-id.outputs.result }}" | |
# run cypress via a config that only runs the percy tests | |
- name: Cypress run with site VRT | |
uses: cypress-io/github-action@v4 | |
with: | |
record: true | |
parallel: true | |
start: yarn start:website | |
wait-on: "http://localhost:3000" | |
group: "Paste Docsite VRT" | |
config: baseUrl=http://localhost:3000 | |
# enabled percy to run cypress for VRT | |
command-prefix: "percy exec --parallel -- npx" | |
# this only includes the tests that run percy snapshots, so we can only call them when we need to | |
config-file: cypress.config.vrt.ts | |
env: | |
USE_CYPRESS_VRT: true | |
PERCY_PARALLEL_NONCE: ${{ needs.percy-batch-id.outputs.result }} | |
PERCY_PARALLEL_TOTAL: 3 |