mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
Hermetic E2E harness targeting pricing integrity and backoffice config: - e2e/ docker Postgres (5544) + prepare.sh/run.sh one-command runner + HTML report - 6 suites / 23 tests reproducing pricing, FX, wallet, refund, config and auth defects (see docs/ISSUES.md); docs/e2e-test-matrix.md documents the matrix - two-tier harness (slim module boot + direct service instantiation) to work around the IAM/RabbitMQ/file-type boot wall - .env.test.example tracked; loader falls back to it for fresh checkouts Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
40 lines
1.6 KiB
TypeScript
40 lines
1.6 KiB
TypeScript
/**
|
|
* Loads apps/edr-passenger-api/.env.test into process.env BEFORE the Nest AppModule boots.
|
|
* Registered as a jest `setupFile` (runs per test file, before the framework and before any
|
|
* `Test.createTestingModule`). Zero-dependency KEY=VALUE parser — dotenv is not a direct dep here.
|
|
* Existing process.env values win (so CI can override the DB URL without editing the file).
|
|
*/
|
|
import { existsSync, readFileSync } from "node:fs";
|
|
import { join } from "node:path";
|
|
|
|
// Prefer a local (gitignored) .env.test; fall back to the tracked .env.test.example so a fresh
|
|
// checkout of the branch runs the suites without a manual copy step.
|
|
const localPath = join(__dirname, "..", "..", ".env.test");
|
|
const examplePath = join(__dirname, "..", "..", ".env.test.example");
|
|
const envPath = existsSync(localPath) ? localPath : examplePath;
|
|
|
|
try {
|
|
const raw = readFileSync(envPath, "utf8");
|
|
for (const line of raw.split("\n")) {
|
|
const trimmed = line.trim();
|
|
if (!trimmed || trimmed.startsWith("#")) continue;
|
|
const eq = trimmed.indexOf("=");
|
|
if (eq === -1) continue;
|
|
const key = trimmed.slice(0, eq).trim();
|
|
let value = trimmed.slice(eq + 1).trim();
|
|
// strip surrounding quotes if present
|
|
if (
|
|
(value.startsWith('"') && value.endsWith('"')) ||
|
|
(value.startsWith("'") && value.endsWith("'"))
|
|
) {
|
|
value = value.slice(1, -1);
|
|
}
|
|
if (process.env[key] === undefined) process.env[key] = value;
|
|
}
|
|
} catch (err) {
|
|
// Surface loudly — a missing .env.test means every suite would boot against the wrong DB.
|
|
throw new Error(
|
|
`[load-env] could not read ${envPath}: ${(err as Error).message}`,
|
|
);
|
|
}
|