Skip to content

nvm no reusable setup #4594

nvm no reusable setup

nvm no reusable setup #4594

Workflow file for this run

name: Test
on: [push]
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
jobs:
coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Get contract addresses
run: 'parallel --lb --halt now,success=1,fail=1 ::: \
"pnpm tenv start --no-graph --no-scripts --no-build --exit-after-deploy" \
"pnpm wait-on ./.env.local"'
- run: pnpm test:coverage
build:
runs-on: ubuntu-latest-16-cores
strategy:
matrix:
type: [stateless, stateful]
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Get contract addresses
if: matrix.type == 'stateless'
run: 'parallel --lb --halt now,success=1,fail=1 ::: \
"pnpm tenv start --no-graph --no-scripts --no-build --exit-after-deploy" \
"pnpm wait-on ./.env.local"'
- name: Build and export
run: |
if [ "${{ matrix.type }}" = "stateless" ]; then
pnpm build:glocal && pnpm export
else
pnpm build && pnpm export
fi
- name: Compress build
run: tar -czf ${{ matrix.type }}-build.tar.gz out
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.type }}-build
path: ${{ matrix.type }}-build.tar.gz
compression-level: 0 # Already compressed with gzip
stateless:
name: stateless (${{matrix.shard}})
needs: build
timeout-minutes: 20
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Cache Playwright browsers
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-playwright-
- name: Download build
uses: actions/download-artifact@v4
with:
name: stateless-build
merge-multiple: true
- name: Extract build
run: tar -xzf stateless-build.tar.gz
- name: Install playwright
run: pnpm dlx playwright install chromium --with-deps
- name: Run tests
run: |
PLAYWRIGHT_SHARD=${{matrix.shard}} PLAYWRIGHT_TOTAL=${{strategy.job-total}} pnpm e2e:ci --no-build
- uses: actions/upload-artifact@v4
if: always()
with:
name: stateless-report-${{matrix.shard}}
path: playwright-report/
retention-days: 30
overwrite: true
stateful:
name: stateful (${{matrix.shard}})
needs: build
timeout-minutes: 10
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
shard: [1, 2, 3]
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- run: ./scripts/check-chrome.sh
- name: Cache Playwright browsers
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-playwright-
- name: Download build
uses: actions/download-artifact@v4
with:
name: stateful-build
- name: Extract build
run: tar -xzf stateful-build.tar.gz
- name: Install playwright
run: pnpm dlx playwright install chromium --with-deps
- name: Run tests
run: |
parallel --lb --halt now,success=1,fail=1 ::: \
"pnpm wrangle" \
"pnpm wait-on http://127.0.0.1:8788 && npx playwright test --shard=${{matrix.shard}}/${{strategy.job-total}} --project=stateful"
env:
SECRET_WORDS: ${{ secrets.SECRET_WORDS }}
- uses: actions/upload-artifact@v4
if: always()
with:
name: stateful-report-${{matrix.shard}}
path: playwright-report/
retention-days: 30