feat: 🎸 adding playwright #226
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: Github Actions CI | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
types: [opened, synchronize, reopened] | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.os }}-modules-${{ hashFiles('**/package-lock.json') }} | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: "npm" | |
cache-dependency-path: "**/package-lock.json" | |
- run: npm ci | |
lint: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20] | |
needs: [build] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/cache@v4 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
- name: Install npm | |
if: steps.npm-cache.outputs.cache-hit != 'true' | |
run: npm install | |
- name: Run lint | |
run: npm run lint | |
- name: Run format | |
run: npm run format | |
test: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20] | |
needs: [build] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/cache@v4 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
- name: Install npm | |
if: steps.npm-cache.outputs.cache-hit != 'true' | |
run: npm install | |
- name: Run Coverage | |
run: npm run coverage | |
e2e_visual_a11y: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20] | |
needs: [build] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/cache@v4 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
- name: Install npm | |
if: steps.npm-cache.outputs.cache-hit != 'true' | |
run: npm install | |
- name: Run Build | |
run: npm run build | |
- name: Playwright install | |
run: npx playwright install --with-deps | |
- name: Install Percy CLI | |
run: npm install --save-dev @percy/cli | |
- name: Run Percy Snapshot | |
run: npx percy snapshot dist/ | |
- name: Run e2e | |
run: npm run e2e:test | |
- uses: actions/upload-artifact@v4 | |
if: ${{ !cancelled() }} | |
with: | |
name: playwright-report | |
path: playwright-report/ | |
retention-days: 30 | |
env: | |
PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }} | |
sonarcloud: | |
name: SonarCloud | |
runs-on: ubuntu-latest | |
needs: [build] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Get main | |
run: git fetch origin main | |
- name: Install dependencies | |
run: npm install | |
- name: Install Jest globally | |
run: sudo npm install -g jest | |
- name: Run Tests | |
run: npm run browserupdate-coverage | |
- name: SonarCloud Scan | |
uses: sonarsource/sonarcloud-github-action@master | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
lighthouseci: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20] | |
needs: [build] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- run: npm install && npm install -g @lhci/[email protected] | |
- run: npm run build | |
- run: lhci autorun | |
env: | |
LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }} | |
deploy: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20] | |
needs: [lint, test, e2e_visual_a11y, lighthouseci, sonarcloud] | |
steps: | |
- name: Checkout 🛎️ | |
uses: actions/checkout@v4 | |
- name: Install and Build 🔧 # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built. | |
run: | | |
npm install | |
npm run build | |
- name: Deploy 🚀 | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
branch: gh-pages # The branch the action should deploy to. | |
folder: dist # The folder the action should deploy. | |
clean: true # Automatically remove deleted files from the deploy branch |