test: Backend-e2e in CI stabil (eigene Jahre, Sperren, ein Server je App)
- daily-evaluation nutzt die Jahre 2011/2012 statt 2001, damit der Job nicht die Daten von autopilot und reminders liest und verändert. - throttler: app.listen(0) einmal je App statt eines Servers je Anfrage (ECONNRESET bei 40 parallelen Anfragen). - outbox-claims: 120 s Zeitlimit für 2000 sequentielle Anweisungen. - migration-harness: eine `migrate deploy` zur Zeit über eine eigene Advisory-Sperre (P1002 bei parallelen Migrations-Suites). - authority-notices und authority-notices-herd laufen über exclusive-suite nacheinander; Herd-Wiederholung räumt eigene Entwürfe. Refs #32 Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
1 parent
258e90828f
commit
6edae3efec
7 files changed
+217
-140
No files matched your search
@@ -6,6 +6,7 @@ import { loadHerdApiaryRows } from '../src/compliance/herd-snapshot';
|
||||
import { PrismaService } from '../src/prisma/prisma.service';
|
||||
import { login } from './utils/api';
|
||||
import { createTestApp } from './utils/create-test-app';
|
||||
import { acquireExclusive, EXCLUSIVE_KEYS } from './utils/exclusive-suite';
|
||||
|
||||
interface NoticeBody {
|
||||
id: string;
|
||||
@@ -38,7 +39,11 @@ describe('Authority notices (e2e)', () => {
|
||||
const nextKey = () =>
|
||||
`notices-e2e-${suffix}-${(keyCounter += 1).toString().padStart(4, '0')}`;
|
||||
|
||||
let releaseExclusive: () => Promise<void>;
|
||||
|
||||
beforeAll(async () => {
|
||||
// Suites that clear or create the global open notice drafts take turns.
|
||||
releaseExclusive = await acquireExclusive(EXCLUSIVE_KEYS.authorityNotices);
|
||||
app = await createTestApp();
|
||||
prisma = app.get(PrismaService);
|
||||
const passwordHash = await bcrypt.hash(password, 12);
|
||||
@@ -99,6 +104,7 @@ describe('Authority notices (e2e)', () => {
|
||||
await prisma.user.deleteMany({ where: { roleId: noRightsRoleId } });
|
||||
await prisma.role.deleteMany({ where: { id: noRightsRoleId } });
|
||||
await app.close();
|
||||
await releaseExclusive();
|
||||
});
|
||||
|
||||
async function livingCount(): Promise<number> {
|
||||
|
||||
Reference in new issue
Block a user