chore(ci): fast playwright install #9509
Workflow file for this run
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: Tests and Checks | |
env: | |
NODE_NO_WARNINGS: true | |
on: | |
push: | |
branches: | |
- 'main' | |
pull_request: | |
paths-ignore: | |
- 'website/**' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
check: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.node-version' | |
- name: Setup Bun Runtime | |
uses: antongolub/action-setup-bun@v1 | |
- name: Setup Deno Runtime | |
uses: denoland/setup-deno@v1 | |
with: | |
deno-version: v1.x | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4.0.0 | |
- name: Get pnpm store path | |
id: pnpm-store | |
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
- name: Cache pnpm | |
uses: actions/cache@v4 | |
with: | |
path: | | |
${{ steps.pnpm-store.outputs.PATH }} | |
key: ${{ runner.os }}-pnpm-store-graphql-v16-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store-graphql-v16- | |
- name: Install Dependencies | |
run: pnpm i --no-frozen-lockfile # no frozen-lockfile because we change the resolutions | |
- name: Prettier | |
run: pnpm prettier:check | |
- name: Lint | |
run: pnpm lint | |
env: | |
NODE_OPTIONS: '--max-old-space-size=8192' | |
NODE_NO_WARNINGS: true | |
- name: Build Packages | |
run: pnpm build | |
- name: Typecheck | |
run: pnpm run check | |
- name: Test ESM & CJS exports integrity | |
run: pnpm bob check | |
- name: ESM Integration test | |
run: pnpm --filter example-node-esm run test | |
unit: | |
name: unit / nodejs v${{ matrix.node-version }} / graphql v${{ matrix.graphql-version }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [18, 20, 22] | |
graphql-version: ['15.8.0', '16.9.0'] | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4.0.0 | |
- name: Get pnpm store path | |
id: pnpm-store | |
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
- name: Cache pnpm | |
uses: actions/cache@v4 | |
with: | |
path: | | |
${{ steps.pnpm-store.outputs.PATH }} | |
key: | |
${{ runner.os }}-pnpm-store-graphql-v${{ matrix.graphql-version }}-${{ | |
hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store-graphql-v${{ matrix.graphql-version }}- | |
- name: Set GraphQL Version | |
run: node scripts/override-graphql-version.js ${{ matrix.graphql-version }} | |
- name: Install Dependencies | |
run: pnpm i --no-frozen-lockfile # no frozen-lockfile because we change the resolutions | |
- name: Build Packages | |
run: pnpm build | |
- name: Run Unit Tests | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: pnpm run test --ci | |
- name: Run Leak Tests | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: pnpm run test:unit:leaks --ci | |
integration: | |
name: integration / nodejs v${{ matrix.node-version }} / graphql v${{ matrix.graphql-version }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [18, 20, 22] | |
graphql-version: ['15.8.0', '16.6.0'] | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4.0.0 | |
- name: Get pnpm store path | |
id: pnpm-store | |
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
- name: Cache pnpm | |
uses: actions/cache@v4 | |
with: | |
path: | | |
${{ steps.pnpm-store.outputs.PATH }} | |
key: | |
${{ runner.os }}-pnpm-store-graphql-v${{ matrix.graphql-version }}-${{ | |
hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store-graphql-v${{ matrix.graphql-version }}- | |
- name: Set GraphQL Version | |
run: node scripts/override-graphql-version.js ${{ matrix.graphql-version }} | |
- name: Install Playwright | |
uses: ./.github/actions/install-playwright/action.yml | |
with: | |
browsers: chromium | |
- name: Install Dependencies | |
run: pnpm i --no-frozen-lockfile # no frozen-lockfile because we change the resolutions | |
- name: Build Packages | |
run: pnpm build | |
- name: Run Integration Tests | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: pnpm test:integration --ci | |
- name: Run Leak Tests | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: pnpm test:integration:leaks --ci | |
apollo-federation-compatibility: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.node-version' | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4.0.0 | |
- name: Get pnpm store path | |
id: pnpm-store | |
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
- name: Cache pnpm | |
uses: actions/cache@v4 | |
with: | |
path: | | |
${{ steps.pnpm-store.outputs.PATH }} | |
key: ${{ runner.os }}-pnpm-store-graphql-v16-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store-graphql-v16- | |
- name: Install Dependencies | |
run: pnpm i --no-frozen-lockfile | |
- name: Build Packages | |
run: pnpm build | |
- name: Bundle Apollo Federation Subgraph Example | |
run: pnpm --filter=example-apollo-federation-compatibility build | |
- name: Install Rover | |
run: curl -sSL https://rover.apollo.dev/nix/latest | sh | |
- name: Add Rover to PATH | |
run: echo "$HOME/.rover/bin" >> $GITHUB_PATH | |
- name: Apollo Federation Subgraph Compatibility | |
uses: apollographql/federation-subgraph-compatibility@v2 | |
with: | |
workingDirectory: examples/apollo-federation-compatibility | |
compose: docker-compose.yaml | |
schema: schema.graphql | |
path: /graphql | |
token: ${{ secrets.GITHUB_TOKEN }} | |
failOnWarning: true | |
failOnRequired: true | |
debug: true | |
e2e: | |
strategy: | |
fail-fast: false | |
matrix: | |
plan: | |
- 'cf-worker' | |
- 'cf-modules' | |
- 'azure-function' | |
- 'aws-lambda' | |
# - 'vercel-function' # Disabled because vercel API is not actually documented | |
- 'docker-node' | |
name: e2e / ${{ matrix.plan }} | |
runs-on: ubuntu-latest | |
if: github.event.pull_request.head.repo.full_name == github.repository | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.node-version' | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4.0.0 | |
- name: Get pnpm store path | |
id: pnpm-store | |
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
- name: Cache pnpm | |
uses: actions/cache@v4 | |
with: | |
path: | | |
${{ steps.pnpm-store.outputs.PATH }} | |
key: ${{ runner.os }}-pnpm-store-graphql-v16-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store-graphql-v16- | |
- name: Install Dependencies | |
run: pnpm i --no-frozen-lockfile # no frozen-lockfile because we change the resolutions | |
- name: Build Packages | |
run: pnpm build | |
- name: Install pulumi | |
uses: pulumi/setup-pulumi@v2 | |
- name: Set outputs | |
id: vars | |
run: | | |
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | |
echo "docker_host=$(docker context inspect --format '{{.Endpoints.docker.Host}}')" >> $GITHUB_OUTPUT | |
- name: Provision & Test | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 10 | |
command: cd e2e && pnpm start | |
retry_wait_seconds: 30 | |
env: | |
# General | |
TEST_PLAN_NAME: ${{ matrix.plan }} | |
COMMIT_ID: ${{ steps.vars.outputs.sha_short }} | |
# CloudFlare | |
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} | |
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} | |
CLOUDFLARE_ZONE_ID: ${{ secrets.CLOUDFLARE_ZONE_ID }} | |
# Azure | |
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} | |
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} | |
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} | |
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | |
# AWS | |
AWS_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY }} | |
AWS_SECRET_KEY: ${{ secrets.AWS_SECRET_KEY }} | |
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} | |
AWS_REGION: ${{ secrets.AWS_REGION }} | |
# Vercel | |
VERCEL_AUTH_TOKEN: ${{ secrets.VERCEL_AUTH_TOKEN }} |