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 timeout-minutes: 30 runs-on: starsling-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@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - 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: Build run: pnpm build - 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: Stop Docker Containers run: docker compose down integration: name: Integration test timeout-minutes: 60 runs-on: starsling-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@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - 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: Start Docker Containers run: docker compose up -d --wait --wait-timeout 60 - name: Integration run: pnpm e2e:integration --filter=./e2e/integration - name: Stop Docker Containers run: docker compose down adapter-integration: name: ${{ matrix.packages }} Integration Test runs-on: starsling-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@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - 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: 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: Stop Docker Containers run: docker compose down 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) }}