-
Notifications
You must be signed in to change notification settings - Fork 203
130 lines (109 loc) · 4.2 KB
/
e2e-tests.yml
File metadata and controls
130 lines (109 loc) · 4.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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/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@v4
with:
name: test-results
path: packages/db-collection-e2e/junit/
retention-days: 7