Skip to content

Commit ac8d803

Browse files
committed
ci: split external db sync tests into separate steps
1 parent b1936af commit ac8d803

9 files changed

Lines changed: 74 additions & 37 deletions

.github/workflows/e2e-api-tests.yaml

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -175,16 +175,27 @@ jobs:
175175
sleep 2
176176
done
177177
178-
- name: Run tests
179-
run: pnpm test run ${{ matrix.freestyle-mode == 'prod' && '--min-workers=1 --max-workers=1' || '' }}
178+
- name: Run tests (excluding external DB sync)
179+
run: pnpm test run ${{ matrix.freestyle-mode == 'prod' && '--min-workers=1 --max-workers=1' || '' }} --exclude "**/external-db-sync*.test.ts"
180180

181-
- name: Run tests again, to make sure they are stable (attempt 1)
181+
- name: Run external DB sync tests (single worker)
182+
run: pnpm test run --min-workers=1 --max-workers=1 "**/external-db-sync*.test.ts"
183+
184+
- name: Run tests again (excluding external DB sync, attempt 1)
185+
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
186+
run: pnpm test run ${{ matrix.freestyle-mode == 'prod' && '--min-workers=1 --max-workers=1' || '' }} --exclude "**/external-db-sync*.test.ts"
187+
188+
- name: Run external DB sync tests again (single worker, attempt 1)
189+
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
190+
run: pnpm test run --min-workers=1 --max-workers=1 "**/external-db-sync*.test.ts"
191+
192+
- name: Run tests again (excluding external DB sync, attempt 2)
182193
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
183-
run: pnpm test run ${{ matrix.freestyle-mode == 'prod' && '--min-workers=1 --max-workers=1' || '' }}
194+
run: pnpm test run ${{ matrix.freestyle-mode == 'prod' && '--min-workers=1 --max-workers=1' || '' }} --exclude "**/external-db-sync*.test.ts"
184195

185-
- name: Run tests again, to make sure they are stable (attempt 2)
196+
- name: Run external DB sync tests again (single worker, attempt 2)
186197
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
187-
run: pnpm test run ${{ matrix.freestyle-mode == 'prod' && '--min-workers=1 --max-workers=1' || '' }}
198+
run: pnpm test run --min-workers=1 --max-workers=1 "**/external-db-sync*.test.ts"
188199

189200
- name: Verify data integrity
190201
run: pnpm run verify-data-integrity --no-bail

.github/workflows/e2e-custom-base-port-api-tests.yaml

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -168,16 +168,27 @@ jobs:
168168
sleep 2
169169
done
170170
171-
- name: Run tests
172-
run: pnpm test run
171+
- name: Run tests (excluding external DB sync)
172+
run: pnpm test run --exclude "**/external-db-sync*.test.ts"
173173

174-
- name: Run tests again, to make sure they are stable (attempt 1)
174+
- name: Run external DB sync tests (single worker)
175+
run: pnpm test run --min-workers=1 --max-workers=1 "**/external-db-sync*.test.ts"
176+
177+
- name: Run tests again (excluding external DB sync, attempt 1)
178+
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
179+
run: pnpm test run --exclude "**/external-db-sync*.test.ts"
180+
181+
- name: Run external DB sync tests again (single worker, attempt 1)
182+
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
183+
run: pnpm test run --min-workers=1 --max-workers=1 "**/external-db-sync*.test.ts"
184+
185+
- name: Run tests again (excluding external DB sync, attempt 2)
175186
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
176-
run: pnpm test run
187+
run: pnpm test run --exclude "**/external-db-sync*.test.ts"
177188

178-
- name: Run tests again, to make sure they are stable (attempt 2)
189+
- name: Run external DB sync tests again (single worker, attempt 2)
179190
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
180-
run: pnpm test run
191+
run: pnpm test run --min-workers=1 --max-workers=1 "**/external-db-sync*.test.ts"
181192

182193
- name: Verify data integrity
183194
run: pnpm run verify-data-integrity --no-bail

.github/workflows/e2e-source-of-truth-api-tests.yaml

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -175,16 +175,27 @@ jobs:
175175
sleep 2
176176
done
177177
178-
- name: Run tests
179-
run: pnpm test run
178+
- name: Run tests (excluding external DB sync)
179+
run: pnpm test run --exclude "**/external-db-sync*.test.ts"
180180

181-
- name: Run tests again, to make sure they are stable (attempt 1)
181+
- name: Run external DB sync tests (single worker)
182+
run: pnpm test run --min-workers=1 --max-workers=1 "**/external-db-sync*.test.ts"
183+
184+
- name: Run tests again (excluding external DB sync, attempt 1)
185+
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
186+
run: pnpm test run --exclude "**/external-db-sync*.test.ts"
187+
188+
- name: Run external DB sync tests again (single worker, attempt 1)
189+
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
190+
run: pnpm test run --min-workers=1 --max-workers=1 "**/external-db-sync*.test.ts"
191+
192+
- name: Run tests again (excluding external DB sync, attempt 2)
182193
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
183-
run: pnpm test run
194+
run: pnpm test run --exclude "**/external-db-sync*.test.ts"
184195

185-
- name: Run tests again, to make sure they are stable (attempt 2)
196+
- name: Run external DB sync tests again (single worker, attempt 2)
186197
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
187-
run: pnpm test run
198+
run: pnpm test run --min-workers=1 --max-workers=1 "**/external-db-sync*.test.ts"
188199

189200
- name: Verify data integrity
190201
run: pnpm run verify-data-integrity --no-bail

.github/workflows/restart-dev-and-test-with-custom-base-port.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,11 @@ jobs:
4040
- name: Start dev environment
4141
run: pnpm run restart-dev-environment
4242

43-
- name: Run tests
44-
run: pnpm run test run --reporter=verbose
43+
- name: Run tests (excluding external DB sync)
44+
run: pnpm run test run --reporter=verbose --exclude "**/external-db-sync*.test.ts"
45+
46+
- name: Run external DB sync tests (single worker)
47+
run: pnpm run test run --reporter=verbose --min-workers=1 --max-workers=1 "**/external-db-sync*.test.ts"
4548

4649
- name: Print dev server logs
4750
run: cat dev-server.log.untracked.txt

.github/workflows/restart-dev-and-test.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,11 @@ jobs:
3939
- name: Start dev environment
4040
run: pnpm run restart-dev-environment
4141

42-
- name: Run tests
43-
run: pnpm run test run --reporter=verbose
42+
- name: Run tests (excluding external DB sync)
43+
run: pnpm run test run --reporter=verbose --exclude "**/external-db-sync*.test.ts"
44+
45+
- name: Run external DB sync tests (single worker)
46+
run: pnpm run test run --reporter=verbose --min-workers=1 --max-workers=1 "**/external-db-sync*.test.ts"
4447

4548
- name: Print dev server logs
4649
run: cat dev-server.log.untracked.txt

.github/workflows/setup-tests-with-custom-base-port.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,8 @@ jobs:
4949
tail: true
5050
wait-for: 120s
5151
log-output-if: true
52-
- run: pnpm run test run --reporter=verbose
52+
- name: Run tests (excluding external DB sync)
53+
run: pnpm run test run --reporter=verbose --exclude "**/external-db-sync*.test.ts"
54+
55+
- name: Run external DB sync tests (single worker)
56+
run: pnpm run test run --reporter=verbose --min-workers=1 --max-workers=1 "**/external-db-sync*.test.ts"

.github/workflows/setup-tests.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,8 @@ jobs:
4747
tail: true
4848
wait-for: 120s
4949
log-output-if: true
50-
- run: pnpm run test run --reporter=verbose
50+
- name: Run tests (excluding external DB sync)
51+
run: pnpm run test run --reporter=verbose --exclude "**/external-db-sync*.test.ts"
52+
53+
- name: Run external DB sync tests (single worker)
54+
run: pnpm run test run --reporter=verbose --min-workers=1 --max-workers=1 "**/external-db-sync*.test.ts"

apps/e2e/vitest.config.ts

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,6 @@ export default mergeConfig(
1414
"./tests/setup.ts",
1515
],
1616
snapshotSerializers: ["./tests/snapshot-serializer.ts"],
17-
poolMatchGlobs: [
18-
['**/tests/backend/endpoints/api/v1/external-db-sync*.test.ts', 'forks'],
19-
],
20-
poolOptions: {
21-
forks: {
22-
maxForks: 1,
23-
minForks: 1,
24-
},
25-
threads: {
26-
maxThreads: 8,
27-
minThreads: 1,
28-
},
29-
},
3017
},
3118
}),
3219
)

claude/CLAUDE-KNOWLEDGE.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,6 @@ A: The first calls to `/api/latest/internal/external-db-sync/sequencer` and `/po
1414

1515
Q: How can we serialize only the external DB sync Vitest files while keeping the rest parallel?
1616
A: Use `poolMatchGlobs` to route the external DB sync test globs to the `forks` pool and set `poolOptions.forks.{minForks,maxForks}=1` in `apps/e2e/vitest.config.ts`; keep the default threads pool for all other tests.
17+
18+
Q: How can CI keep most tests parallel while isolating external DB sync tests?
19+
A: Split workflow test runs into two steps: run the full suite with `--exclude "**/external-db-sync*.test.ts"`, then run only external DB sync tests with `--min-workers=1 --max-workers=1`.

0 commit comments

Comments
 (0)