Skip to content

add cypress tests

add cypress tests #14

Workflow file for this run

name: CI Pipeline
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
setup:
runs-on: ubuntu-latest
outputs:
node_version: ${{ steps.nvmrc.outputs.NODE_VERSION }}
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Read Node.js version from .nvmrc
id: nvmrc
run: echo "NODE_VERSION=$(cat .nvmrc)" >> $GITHUB_ENV && echo "::set-output name=NODE_VERSION::$(cat .nvmrc)"
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ steps.nvmrc.outputs.NODE_VERSION }}
- name: Cache node modules
id: cache-node-modules
uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ steps.nvmrc.outputs.NODE_VERSION }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ steps.nvmrc.outputs.NODE_VERSION }}-
- name: Install dependencies
run: npm install
- name: Save node_modules
if: steps.cache-node-modules.outputs.cache-hit != 'true'
uses: actions/upload-artifact@v2
with:
name: node-modules
path: node_modules
unit-tests:
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ needs.setup.outputs.node_version }}
- name: Restore node_modules
uses: actions/download-artifact@v2
with:
name: node-modules
path: node_modules
- name: Run unit tests
run: npm test
lint:
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ needs.setup.outputs.node_version }}
- name: Restore node_modules
uses: actions/download-artifact@v2
with:
name: node-modules
path: node_modules
- name: Lint code
run: npm run lint
build:
needs: [unit-tests, lint]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ needs.setup.outputs.node_version }}
- name: Restore node_modules
uses: actions/download-artifact@v2
with:
name: node-modules
path: node_modules
- name: Build project
run: npm run build
- name: Save build output
uses: actions/upload-artifact@v2
with:
name: build-output
path: build
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ needs.setup.outputs.node_version }}
- name: Restore build output
uses: actions/download-artifact@v2
with:
name: build-output
path: build
- name: Deploy to Netlify
run: |
npm install netlify-cli -g
netlify deploy --dir=build --prodIfUnlocked=false --json > netlify-output.json
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
- name: Extract Netlify deploy URL
id: extract_url
run: echo "DEPLOY_URL=$(cat netlify-output.json | jq -r '.deploy_url')" >> $GITHUB_ENV && echo "::set-output name=DEPLOY_URL::$(cat netlify-output.json | jq -r '.deploy_url')"
cypress-tests:
needs: deploy
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ needs.setup.outputs.node_version }}
- name: Restore node_modules
uses: actions/download-artifact@v2
with:
name: node-modules
path: node_modules
- name: Install Cypress
run: npm install cypress --save-dev
- name: Run Cypress tests
run: npx cypress run --env baseUrl=${{ needs.deploy.outputs.DEPLOY_URL }}
env:
CYPRESS_baseUrl: ${{ needs.deploy.outputs.DEPLOY_URL }}