Skip to content

chore: promote develop to main #266

chore: promote develop to main

chore: promote develop to main #266

Workflow file for this run

name: Client
on:
push:
branches: [main, develop]
paths:
- "package.json"
- "bun.lock"
- "biome.json"
- ".env.schema"
- "playwright.config.ts"
- "tests/**"
- "packages/client/**"
- "packages/shared/**"
- "packages/contracts/src/**"
- "packages/contracts/abis/**"
- "packages/contracts/deployments/**"
- "scripts/ops/upload-sourcemaps.js"
- ".github/workflows/client.yml"
pull_request:
branches: [main, develop]
paths:
- "package.json"
- "bun.lock"
- "biome.json"
- ".env.schema"
- "playwright.config.ts"
- "tests/**"
- "packages/client/**"
- "packages/shared/**"
- "packages/contracts/src/**"
- "packages/contracts/abis/**"
- "packages/contracts/deployments/**"
- "scripts/ops/upload-sourcemaps.js"
- ".github/workflows/client.yml"
workflow_dispatch:
inputs:
operation:
description: "Client operation to run"
required: true
type: choice
options:
- ci
- lighthouse
- all
default: ci
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
name: Test
if: github.event_name != 'workflow_dispatch' || inputs.operation == 'ci' || inputs.operation == 'all'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: "22"
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Run client tests with coverage
working-directory: packages/client
run: bun run coverage
env:
CI: true
lint-build:
name: Lint And Build
if: github.event_name != 'workflow_dispatch' || inputs.operation == 'ci' || inputs.operation == 'all'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: "22"
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Run client lint
working-directory: packages/client
run: bun run lint
- name: Check formatting
run: bun run format:check
- name: Build client
working-directory: packages/client
run: bun run build
env:
VITE_USE_HASH_ROUTER: "false"
VITE_CHAIN_ID: "11155111"
VITE_WALLETCONNECT_PROJECT_ID: ${{ secrets.VITE_WALLETCONNECT_PROJECT_ID || 'test' }}
VITE_PIMLICO_API_KEY: ${{ secrets.VITE_PIMLICO_API_KEY || 'test' }}
VITE_ENVIO_INDEXER_URL: ${{ secrets.VITE_ENVIO_INDEXER_URL || 'http://localhost:3006/v1/graphql' }}
VITE_PINATA_GATEWAY_URL: ${{ vars.VITE_PINATA_GATEWAY_URL || 'https://greengoods.mypinata.cloud' }}
VITE_PINATA_API_URL: ${{ vars.VITE_PINATA_API_URL || 'https://api.pinata.cloud' }}
sourcemaps:
name: Upload Client Source Maps
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: lint-build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: "22"
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Upload client source maps
run: node scripts/ops/upload-sourcemaps.js --app client --env production --version "${{ github.sha }}"
env:
CI: true
POSTHOG_CLI_TOKEN: ${{ secrets.POSTHOG_CLI_TOKEN }}
POSTHOG_CLIENT_ENV_ID: ${{ secrets.POSTHOG_CLIENT_ENV_ID }}
VITE_USE_HASH_ROUTER: "false"
VITE_CHAIN_ID: "42161"
VITE_WALLETCONNECT_PROJECT_ID: ${{ secrets.VITE_WALLETCONNECT_PROJECT_ID || 'test' }}
VITE_PIMLICO_API_KEY: ${{ secrets.VITE_PIMLICO_API_KEY || 'test' }}
VITE_ENVIO_INDEXER_URL: ${{ secrets.VITE_ENVIO_INDEXER_URL || 'http://localhost:3006/v1/graphql' }}
VITE_PINATA_GATEWAY_URL: ${{ vars.VITE_PINATA_GATEWAY_URL || 'https://greengoods.mypinata.cloud' }}
VITE_PINATA_API_URL: ${{ vars.VITE_PINATA_API_URL || 'https://api.pinata.cloud' }}
e2e:
name: Playwright Client CI
if: github.event_name != 'workflow_dispatch' || inputs.operation == 'ci' || inputs.operation == 'all'
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: "22"
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Setup pnpm
uses: pnpm/action-setup@v6
with:
version: 9
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Setup indexer generated code
working-directory: packages/indexer
run: |
bun run codegen
bun run setup-generated
- name: Install Playwright Chromium
run: bunx playwright install --with-deps chromium
- name: Run client Playwright project
run: PLAYWRIGHT_APP=client APP_ENV=test bunx playwright test --project=client-ci
env:
CI: true
SKIP_INDEXER: "true"
VITE_CHAIN_ID: "11155111"
VITE_WALLETCONNECT_PROJECT_ID: ${{ secrets.VITE_WALLETCONNECT_PROJECT_ID || 'test' }}
VITE_PIMLICO_API_KEY: ${{ secrets.VITE_PIMLICO_API_KEY || 'test' }}
VITE_ENVIO_INDEXER_URL: ${{ secrets.VITE_ENVIO_INDEXER_URL || 'http://localhost:3006/v1/graphql' }}
VITE_PINATA_GATEWAY_URL: ${{ vars.VITE_PINATA_GATEWAY_URL || 'https://greengoods.mypinata.cloud' }}
VITE_PINATA_API_URL: ${{ vars.VITE_PINATA_API_URL || 'https://api.pinata.cloud' }}
- name: Upload Playwright report
uses: actions/upload-artifact@v7
if: always()
with:
name: client-playwright-report
path: tests/playwright-report/
retention-days: 14
- name: Upload test results
uses: actions/upload-artifact@v7
if: always()
with:
name: client-playwright-results
path: tests/test-results/
retention-days: 14
lighthouse:
name: Lighthouse Client Advisory
if: github.event_name == 'workflow_dispatch' && (inputs.operation == 'lighthouse' || inputs.operation == 'all')
runs-on: ubuntu-latest
timeout-minutes: 20
continue-on-error: true
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: "22"
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Run Lighthouse advisory
run: bun run lighthouse:client
env:
VITE_CHAIN_ID: "11155111"
VITE_WALLETCONNECT_PROJECT_ID: ${{ secrets.VITE_WALLETCONNECT_PROJECT_ID || 'test' }}
VITE_PIMLICO_API_KEY: ${{ secrets.VITE_PIMLICO_API_KEY || 'test' }}
VITE_ENVIO_INDEXER_URL: ${{ secrets.VITE_ENVIO_INDEXER_URL || 'http://localhost:3006/v1/graphql' }}
VITE_PINATA_GATEWAY_URL: ${{ vars.VITE_PINATA_GATEWAY_URL || 'https://greengoods.mypinata.cloud' }}
VITE_PINATA_API_URL: ${{ vars.VITE_PINATA_API_URL || 'https://api.pinata.cloud' }}
LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }}
- name: Upload Lighthouse results
if: always()
uses: actions/upload-artifact@v7
with:
name: lighthouse-client-results
path: packages/client/.lighthouseci/
retention-days: 30