feat: add Capacitor SQLite persisted collection package #2304
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: E2E Tests | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| jobs: | |
| e2e-tests: | |
| name: Run E2E Tests | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 35 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6.0.1 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 10.27.0 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| 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/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/db-node-sqlite-persisted-collection | |
| pnpm test:e2e | |
| - name: Run Electron SQLite persisted collection E2E tests (full bridge) | |
| run: | | |
| cd packages/db-electron-sqlite-persisted-collection | |
| TANSTACK_DB_ELECTRON_E2E_ALL=1 pnpm test:e2e | |
| - name: Run React Native/Expo persisted collection E2E tests | |
| run: | | |
| cd packages/db-react-native-sqlite-persisted-collection | |
| 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/db-react-native-sqlite-persisted-collection | |
| 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@v4 | |
| with: | |
| name: test-results | |
| path: packages/db-collection-e2e/junit/ | |
| retention-days: 7 |