Files
metamask-integration/chain138-snap/.github/workflows/build-lint-test.yml

111 lines
3.1 KiB
YAML

name: Build, Lint, and Test
on:
workflow_call:
jobs:
prepare:
name: Prepare
runs-on: ubuntu-latest
steps:
- name: Checkout and setup environment
uses: MetaMask/action-checkout-and-setup@v1
with:
is-high-risk-environment: false
cache-node-modules: true
- name: Enable pnpm
run: corepack enable && corepack prepare pnpm@9.15.0 --activate
- name: Install dependencies
run: pnpm install --frozen-lockfile
build:
name: Build
runs-on: ubuntu-latest
needs:
- prepare
steps:
- name: Checkout and setup environment
uses: MetaMask/action-checkout-and-setup@v1
with:
is-high-risk-environment: false
- name: Enable pnpm
run: corepack enable && corepack prepare pnpm@9.15.0 --activate
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm run build
- name: Upload Snap build artifact
uses: actions/upload-artifact@v4
with:
name: snap-${{ runner.os }}-${{ github.sha }}
path: ./packages/snap/dist
retention-days: 1
- name: Require clean working directory
shell: bash
run: |
if ! git diff --exit-code; then
echo "Working tree dirty at end of job"
exit 1
fi
lint:
name: Lint
runs-on: ubuntu-latest
needs:
- prepare
steps:
- name: Checkout and setup environment
uses: MetaMask/action-checkout-and-setup@v1
with:
is-high-risk-environment: false
- name: Enable pnpm
run: corepack enable && corepack prepare pnpm@9.15.0 --activate
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Lint
run: pnpm run lint
- name: Require clean working directory
shell: bash
run: |
if ! git diff --exit-code; then
echo "Working tree dirty at end of job"
exit 1
fi
e2e-test:
name: End-to-end Test
runs-on: ubuntu-latest
needs:
- prepare
- build
steps:
- name: Checkout and setup environment
uses: MetaMask/action-checkout-and-setup@v1
with:
is-high-risk-environment: false
- name: Download Snap build artifact
uses: actions/download-artifact@v4
with:
name: snap-${{ runner.os }}-${{ github.sha }}
path: ./packages/snap/dist
- name: Enable pnpm
run: corepack enable && corepack prepare pnpm@9.15.0 --activate
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run Snap unit tests
run: pnpm --filter snap run test
- name: Install Playwright browsers
run: npx playwright install chromium --with-deps
- name: Run Playwright E2E (companion site)
run: pnpm run test:e2e
env:
CI: true
timeout-minutes: 8
- name: Require clean working directory
shell: bash
run: |
if ! git diff --exit-code; then
echo "Working tree dirty at end of job"
exit 1
fi