n8n/packages/cli/test/setup-testcontainers.js
2026-02-16 16:44:50 +00:00

38 lines
1.3 KiB
JavaScript

/**
* Jest global setup - plain JS to bypass Jest's transform system.
* Uses createServiceStack from n8n-containers for unified service management.
*/
const { createServiceStack } = require('n8n-containers');
const { randomBytes } = require('crypto');
module.exports = async () => {
const suffix = randomBytes(4).toString('hex');
const stack = await createServiceStack({
services: ['postgres'],
projectName: `n8n-integration-test-${suffix}`,
});
const pgResult = stack.serviceResults.postgres;
if (!pgResult) {
throw new Error('Failed to start postgres container');
}
const container = pgResult.container;
process.env.DB_TYPE = 'postgresdb';
process.env.DB_POSTGRESDB_HOST = container.getHost();
process.env.DB_POSTGRESDB_PORT = String(container.getMappedPort(5432));
process.env.DB_POSTGRESDB_DATABASE = pgResult.meta.database;
process.env.DB_POSTGRESDB_USER = pgResult.meta.username;
process.env.DB_POSTGRESDB_PASSWORD = pgResult.meta.password;
process.env.DB_POSTGRESDB_SCHEMA = 'alt_schema';
process.env.DB_TABLE_PREFIX = 'test_';
process.env.DB_POSTGRESDB_POOL_SIZE = '1'; // Detect connection pooling deadlocks
globalThis.__TESTCONTAINERS_STACK__ = stack;
console.log(
`\n✓ Postgres ready at ${process.env.DB_POSTGRESDB_HOST}:${process.env.DB_POSTGRESDB_PORT}\n`,
);
};