Cypress Deployment Checks #3710
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 Deployment Checks | |
on: | |
deployment_status: | |
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_on_deployment: | |
name: Website tests | |
runs-on: ubuntu-latest | |
needs: percy-batch-id | |
if: github.event_name == 'deployment_status' && github.event.deployment_status.state == 'success' && startsWith(github.event.deployment_status.environment_url, 'https://paste-docs') | |
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 }} | |
OPENAI_API_SECRET: ${{ secrets.OPENAI_API_SECRET }} | |
USE_CYPRESS_VRT: false | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v4 | |
- name: Setup Node.js 20.5 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.5.x | |
- name: Dump GitHub context | |
env: | |
GITHUB_CONTEXT: ${{ toJson(github) }} | |
run: echo "$GITHUB_CONTEXT" | |
# Run cypress on preview deployments as integration tests, but without VRT | |
# We only want to run VRT on demand, not on every preview deployment | |
# The deployment_status event though, has no PR related context, so we can't conditionally run VRT | |
# So we run VRT on every merge to main, and on every PR (on_pull_request_cypress) if requested via a label | |
- name: Cypress run website preview | |
uses: cypress-io/github-action@v4 | |
if: github.event.deployment.environment == 'Preview – paste-docs' | |
with: | |
record: true | |
parallel: true | |
group: "Paste Docsite integration tests" | |
config: baseUrl=${{ github.event.deployment_status.environment_url }} | |
# this config excludes the VRT tests. Those are run on the pull_request event if requested | |
config-file: cypress.config.e2e.ts | |
env: | |
CYPRESS_BASE_URL: ${{ github.event.deployment_status.environment_url }} | |
# Run cypress on merge to main aong with VRT to create our new baselines | |
- name: Cypress run with site VRT on main | |
uses: cypress-io/github-action@v4 | |
if: github.event.deployment.environment == 'Production – paste-docs' | |
with: | |
record: true | |
parallel: true | |
group: "Paste Docsite VRT Baseline Creation" | |
config: baseUrl=${{ github.event.deployment_status.environment_url }} | |
# enabled percy to run cypress for VRT | |
command-prefix: "percy exec --parallel -- npx" | |
env: | |
USE_CYPRESS_VRT: true | |
PERCY_PARALLEL_NONCE: ${{ needs.percy-batch-id.outputs.result }} | |
PERCY_PARALLEL_TOTAL: 3 | |
CYPRESS_BASE_URL: ${{ github.event.deployment_status.environment_url }} |