Skip to content

fix(db): require all or() branches to be index-optimizable #2961

fix(db): require all or() branches to be index-optimizable

fix(db): require all or() branches to be index-optimizable #2961

Workflow file for this run

name: E2E Tests
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
jobs:
e2e-tests:
name: Run E2E Tests
runs-on: ubuntu-latest
timeout-minutes: 35
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@739bfe42ca9233c5e6aca07c1a25a9d34aca49b0 # v6.0.7
with:
cache: false
- name: Setup Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '22.13'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Start Docker services
run: |
cd packages/db-collection-e2e/docker
docker compose up -d
echo "Waiting for services to be healthy..."
timeout 60 bash -c 'until docker compose ps | grep -q "healthy"; do sleep 2; done'
- name: Build packages
run: |
pnpm --filter @tanstack/db-ivm build
pnpm --filter @tanstack/db build
pnpm --filter @tanstack/electric-db-collection build
pnpm --filter @tanstack/offline-transactions build
pnpm --filter @tanstack/query-db-collection build
- name: Run Electric E2E tests
run: |
cd packages/electric-db-collection
pnpm test:e2e
env:
ELECTRIC_URL: http://localhost:3000
POSTGRES_HOST: localhost
POSTGRES_PORT: 54321
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: e2e_test
- name: Run Query E2E tests
run: |
cd packages/query-db-collection
pnpm test:e2e
env:
ELECTRIC_URL: http://localhost:3000
- name: Run Node SQLite persisted collection E2E tests
run: |
cd packages/node-db-sqlite-persistence
pnpm test:e2e
- name: Run Electron SQLite persisted collection E2E tests
run: |
cd packages/electron-db-sqlite-persistence
pnpm test:e2e
- name: Run Cloudflare Durable Object persisted collection E2E tests
run: |
cd packages/cloudflare-durable-objects-db-sqlite-persistence
pnpm test:e2e
- name: Run React Native/Expo persisted collection E2E tests
run: |
cd packages/react-native-db-sqlite-persistence
pnpm test:e2e
- name: Run React Native/Expo runtime E2E lane
run: |
is_fork_pr=false
require_runtime_lane=${TANSTACK_DB_REQUIRE_MOBILE_RUNTIME_LANE:-0}
if [ "${GITHUB_EVENT_NAME}" = "pull_request" ]; then
is_fork_pr=$(jq -r '.pull_request.head.repo.fork' "${GITHUB_EVENT_PATH}")
fi
if [ "${is_fork_pr}" = "true" ]; then
echo "Skipping runtime mobile lane for fork PR (repo vars are unavailable)."
exit 0
fi
if [ -z "${TANSTACK_DB_MOBILE_SQLITE_FACTORY_MODULE}" ]; then
if [ "${require_runtime_lane}" = "1" ]; then
echo "::error::Missing repository variable TANSTACK_DB_MOBILE_SQLITE_FACTORY_MODULE while TANSTACK_DB_REQUIRE_MOBILE_RUNTIME_LANE=1."
echo "::error::Set TANSTACK_DB_MOBILE_SQLITE_FACTORY_MODULE (and optional TANSTACK_DB_MOBILE_SQLITE_FACTORY_EXPORT)."
exit 1
fi
echo "Skipping runtime mobile lane (no TANSTACK_DB_MOBILE_SQLITE_FACTORY_MODULE configured)."
echo "Set TANSTACK_DB_REQUIRE_MOBILE_RUNTIME_LANE=1 to enforce this lane."
exit 0
fi
cd packages/react-native-db-sqlite-persistence
pnpm test:e2e:runtime
env:
TANSTACK_DB_MOBILE_SQLITE_FACTORY_MODULE: ${{ vars.TANSTACK_DB_MOBILE_SQLITE_FACTORY_MODULE }}
TANSTACK_DB_MOBILE_SQLITE_FACTORY_EXPORT: ${{ vars.TANSTACK_DB_MOBILE_SQLITE_FACTORY_EXPORT }}
TANSTACK_DB_REQUIRE_MOBILE_RUNTIME_LANE: ${{ vars.TANSTACK_DB_REQUIRE_MOBILE_RUNTIME_LANE }}
- name: Stop Docker services
if: always()
run: |
cd packages/db-collection-e2e/docker
docker compose down -v
- name: Upload test results
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: test-results
path: packages/db-collection-e2e/junit/
retention-days: 7