Skip to content

Cypress nightly tests (Preview Deployment) #78

Cypress nightly tests (Preview Deployment)

Cypress nightly tests (Preview Deployment) #78

Workflow file for this run

name: Cypress nightly tests (Preview Deployment)
on:
schedule:
# runs tests every day at 4am
- cron: '0 4 * * *'
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: '18.18.0'
- name: Install dependencies
run: npm ci
- name: Write environment variables
run: |
echo "${{ secrets.ENV_PREVIEW }}" > .env
echo "" > cypress.config.json
- name: ESLint
run: npm run lint
- name: Prettier
run: npx prettier . --check
deploy-preview:
name: Deploy Preview
runs-on: ubuntu-latest
needs: [ lint ]
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
steps:
- uses: actions/checkout@v4
- name: Install Vercel CLI
run: npm install --global vercel@latest
- name: Pull Vercel Environment Information
run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }}
- name: Write .env
run: |
echo "${{ secrets.ENV_PREVIEW }}" > .env
- name: Build Project Artifacts
run: vercel build --token=${{ secrets.VERCEL_TOKEN }}
- name: Deploy Project Artifacts to Vercel
run: |
url="$(vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }})"
vercel alias --token=${{ secrets.VERCEL_TOKEN }} set "$url" ubco-capstone-team-3.vercel.app
setup-preview-db:
name: Set up Preview database
runs-on: ubuntu-latest
needs: [ deploy-preview ]
steps:
- uses: actions/checkout@v4
- name: Write environment variables
run: |
echo "${{ secrets.ENV_PREVIEW }}" > .env
- name: Migrate Database
run: npx prisma migrate deploy &> prisma_migrate.log
cypress-e2e:
name: Run cypress E2E tests on Preview deployment
runs-on: ubuntu-latest
needs: [ deploy-preview, setup-preview-db ]
steps:
- uses: actions/checkout@v4
- name: Write environment variables
run: |
echo "${{ secrets.ENV_PREVIEW }}" > .env
- name: Cypress Run E2E Tests
uses: cypress-io/github-action@v6
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.PERSONAL_GITHUB_ACCESS_TOKEN }}
with:
wait-on: ${{ secrets.CYPRESS_BASE_URL }}
browser: chrome
record: true
headed: true
config: baseUrl=${{ secrets.CYPRESS_BASE_URL }}
group: 'E2E Tests on Production workflow'
cypress-component:
name: Cypress Run Component tests on Preview deployment
runs-on: ubuntu-latest
needs: [ deploy-preview, setup-preview-db ]
steps:
- uses: actions/checkout@v4
- name: Write environment variables
run: |
echo "${{ secrets.ENV_PREVIEW }}" > .env
- name: Run Component Tests
uses: cypress-io/github-action@v6
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.PERSONAL_GITHUB_ACCESS_TOKEN }}
with:
browser: chrome
component: true