Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
name: E2E & Unit Tests | |
on: | |
push: | |
branches: [ main, master ] | |
pull_request: | |
branches: [ main, master ] | |
jobs: | |
test: | |
timeout-minutes: 60 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: 'npm' | |
# the day we use a monorepo we should do this: | |
# cache-dependency-path: subdir/package-lock.json | |
# see https://github.com/actions/setup-node#caching-global-packages-data | |
- name: Get installed Playwright version | |
id: playwright-version | |
run: echo "PLAYWRIGHT_VERSION=$(node -e "console.log(require('./package-lock.json').dependencies['@playwright/test'].version)")" >> $GITHUB_ENV | |
- name: Cache playwright binaries | |
uses: actions/cache@v4 | |
id: playwright-cache | |
with: | |
path: /home/runner/.cache/ms-playwright | |
key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }}-${{ inputs.browser }} | |
- name: Cache NextJS dependencies | |
uses: actions/cache@v4 | |
with: | |
# See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node | |
path: | | |
~/.npm | |
${{ github.workspace }}/.next/cache | |
# Generate a new cache whenever packages or source files change. | |
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }} | |
# If source files changed but packages didn't, rebuild from a prior cache. | |
restore-keys: | | |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}- | |
- name: Install dependencies | |
run: npm ci | |
- name: Install Playwright | |
run: npm install @playwright/test@${{ env.PLAYWRIGHT_VERSION }} | |
- name: Install Playwright Browsers | |
run: npx playwright install --with-deps ${{ inputs.browser }} | |
# disabled for now as we have caching issues: | |
#_if: steps.playwright-cache.outputs.cache-hit != 'true' | |
- name: Install system dependencies for WebKit | |
# Some WebKit dependencies seem to lay outside the cache and will need to be installed separately | |
# disabled for now as we have caching issues: | |
#_if: ${{ inputs.browser == 'webkit' && steps.playwright-cache.outputs.cache-hit == 'true' }} | |
run: npx playwright install-deps webkit | |
- name: Run build | |
run: npm run build:ci | |
- name: Run unit tests | |
run: npm run test:unit:ci | |
- name: Run E2E tests | |
run: npm run test:e2e | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: playwright-report | |
path: playwright-report/ | |
retention-days: 30 | |