Files
better-auth/.github/workflows/e2e.yml
T

197 lines
6.4 KiB
YAML

name: E2E
on:
push:
branches: [ main, next ]
merge_group:
pull_request:
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM || github.repository_owner }}
BETTER_AUTH_TELEMETRY_ENDPOINT: ${{ vars.BETTER_AUTH_TELEMETRY_ENDPOINT }}
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.event.merge_group.head_ref || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
smoke:
name: Smoke test (${{ matrix.node-version }})
timeout-minutes: 30
runs-on: ${{ github.repository == 'better-auth/better-auth' && 'starsling-ubuntu-24.04' || 'ubuntu-24.04' }}
strategy:
fail-fast: false
matrix:
node-version: [22.x, 24.x]
permissions:
contents: read
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0
persist-credentials: false
- name: Cache turbo build setup
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.sha }}
restore-keys: |
${{ runner.os }}-turbo-
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version: ${{ matrix.node-version }}
registry-url: 'https://registry.npmjs.org'
cache: pnpm
- name: Install
run: pnpm install
- name: Build
run: pnpm build
- name: Reset Docker Containers
run: docker compose down --volumes --remove-orphans
- name: Start Docker Containers
run: docker compose up -d --wait --wait-timeout 60
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
- uses: denoland/setup-deno@e95548e56dfa95d4e1a28d6f422fafe75c4c26fb # v2.0.3
with:
deno-version: 2.6.4
- name: Smoke
run: pnpm e2e:smoke
- name: Docker Compose Diagnostics
if: failure() && hashFiles('docker-compose.yml') != ''
run: |
docker compose ps --all || true
docker compose logs --no-color mssql || true
- name: Stop Docker Containers
if: always() && hashFiles('docker-compose.yml') != ''
run: docker compose down --volumes --remove-orphans
integration:
name: Integration test
timeout-minutes: 60
runs-on: ${{ github.repository == 'better-auth/better-auth' && 'starsling-ubuntu-24.04' || 'ubuntu-24.04' }}
permissions:
contents: read
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0
persist-credentials: false
- name: Cache turbo build setup
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.sha }}
restore-keys: |
${{ runner.os }}-turbo-
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
cache: pnpm
- name: Install
run: pnpm install
- name: Install Playwright Browsers
uses: ./.github/actions/setup-playwright
- name: Reset Docker Containers
run: docker compose down --volumes --remove-orphans
- name: Start Docker Containers
run: docker compose up -d --wait --wait-timeout 60
- name: Integration
run: pnpm e2e:integration --filter=./e2e/integration
- name: Docker Compose Diagnostics
if: failure() && hashFiles('docker-compose.yml') != ''
run: |
docker compose ps --all || true
docker compose logs --no-color mssql || true
- name: Stop Docker Containers
if: always() && hashFiles('docker-compose.yml') != ''
run: docker compose down --volumes --remove-orphans
adapter-integration:
name: ${{ matrix.packages }} Integration Test
runs-on: ${{ github.repository == 'better-auth/better-auth' && 'starsling-ubuntu-24.04' || 'ubuntu-24.04' }}
permissions:
contents: read
strategy:
fail-fast: false
matrix:
packages: [ "@better-auth-test/adapter-factory", "@better-auth-test/drizzle-adapter", "@better-auth-test/kysely-prisma-adapter", "@better-auth-test/memory-adapter", "@better-auth-test/mongo-adapter", "@better-auth-test/prisma-adapter" ]
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0
persist-credentials: false
- name: Cache turbo build setup
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.sha }}
restore-keys: |
${{ runner.os }}-turbo-
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
cache: pnpm
- name: Install
run: pnpm install
- name: Reset Docker Containers
run: docker compose down --volumes --remove-orphans
- name: Start Docker Containers
run: docker compose up -d --wait --wait-timeout 60
- name: Adapter Integration
env:
FILTER: ${{ matrix.packages }}
run: pnpm e2e:integration --filter="$FILTER"
- name: Docker Compose Diagnostics
if: failure() && hashFiles('docker-compose.yml') != ''
run: |
docker compose ps --all || true
docker compose logs --no-color mssql || true
- name: Stop Docker Containers
if: always() && hashFiles('docker-compose.yml') != ''
run: docker compose down --volumes --remove-orphans
e2e:
runs-on: ubuntu-latest
needs: [smoke, integration, adapter-integration]
if: always()
steps:
- uses: re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe # v1.2.2
with:
jobs: ${{ toJSON(needs) }}