Skip to content

Native iOS app: History, announcements and account tools #164

Native iOS app: History, announcements and account tools

Native iOS app: History, announcements and account tools #164

Workflow file for this run

name: Live provider E2E
# Real OpenRouter, Jev, and Exa behind the local stack. Every run spends
# provider credit, so pull requests run it only when AI or research code
# changes. Nightly runs catch provider drift without code changes.
on:
pull_request:
paths:
- "supabase/functions/**"
- "src/lib/ai/**"
- "packages/**"
- "e2e/live/**"
- "e2e/full-stack/fake-openrouter.mjs"
- ".superset/db-gate.sh"
- ".github/workflows/live-e2e.yml"
schedule:
- cron: "17 3 * * *"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: live-e2e-${{ github.ref }}
cancel-in-progress: true
jobs:
live-e2e:
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- name: Checkout code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Set up Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22
- name: Set up Supabase CLI
uses: supabase/setup-cli@46f7f98c7f948ad727d22c1e67fab04c223a0520 # v3.0.0
with:
version: 2.116.0
- name: Install dependencies
run: npm ci
- name: Install Chromium
run: npx playwright install --with-deps chromium
# db-gate.sh fails before starting anything when either key is missing.
# Accepted risk (2026-09-24): pull-request code runs with these keys, so
# anyone who can push a branch here could read them. Keep them low-limit.
- name: Live provider journeys
env:
LIVE_PROVIDERS: 1
# Repository variable override; empty falls back to db-gate.sh's default.
LIVE_MODEL: ${{ vars.LIVE_MODEL }}
LIVE_OPENROUTER_API_KEY: ${{ secrets.LIVE_OPENROUTER_API_KEY }}
LIVE_EXA_API_KEY: ${{ secrets.LIVE_EXA_API_KEY }}
SUPABASE_INTERNAL_IMAGE_REGISTRY: public.ecr.aws
WORKSPACE_GATE_ARTIFACT_ROOT: ${{ runner.temp }}/workspace-gate
run: ./.superset/db-gate.sh
- name: Upload live failure artifacts
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: live-e2e-failure-${{ github.run_id }}
path: |
${{ runner.temp }}/workspace-gate/
test-results/
playwright-report/
if-no-files-found: ignore
retention-days: 7