Skip to content

Codecov CI

Codecov CI #121

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions: read-all
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: yarn
- name: Install deps
run: yarn install --frozen-lockfile
- name: Check code formatting
run: yarn run prettier --check .
- name: Lint code
run: yarn run eslint .
- name: Run type checks
run: yarn run tsc --noEmit
test:
name: Test
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: yarn
- name: Install deps
run: yarn install --frozen-lockfile
- name: Run tests
run: yarn run test
- name: Upload test results to codecov
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
files: junit.xml
flags: unit
- name: Upload coverage report
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
files: coverage/clover.xml
flags: unit
e2e-test:
name: E2E Test
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: yarn
- name: Install deps
run: yarn install --frozen-lockfile
# https://github.com/microsoft/playwright/issues/7249
- name: Store Playwright version as env
run: |
PLAYWRIGHT_VERSION="$(yarn run --silent playwright --version | cut -d' ' -f2)"
echo "Playwright version is ${PLAYWRIGHT_VERSION}"
echo "PLAYWRIGHT_VERSION=${PLAYWRIGHT_VERSION}" >> ${GITHUB_ENV}
- name: Cache Playwright browsers
id: cache-playwright-browsers
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: playwright-browsers-${{ env.PLAYWRIGHT_VERSION }}
- name: Install Playwright browsers
if: ${{ steps.cache-playwright-browsers.outputs.cache-hit != 'true' }}
run: yarn run playwright install --with-deps
- name: Run end-to-end tests
env:
# NOTE: E2E includes build step, so it will upload the bundle analysis report
# if the upload token is provided.
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
run: yarn run e2e
- name: Upload test results to codecov
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
files: junit.xml
flags: e2e
- name: Upload Playwright reports
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-artifacts
path: |
playwright-report/
test-results/
retention-days: 7