05ec9feaf9
Once the ESM transform fix (8e125799) let the four previously-unparseable
int-specs run, the server integration suite stopped exiting: all 66 tests pass,
then jest prints "Jest did not exit one second after the test run has
completed." and idles until the 20-minute job timeout kills it. Separately,
ai-chat-stream.int-spec.ts failed because its afterAll (destroyTestDb) hit the
60s hook timeout — postgres.js .end() waits for in-flight queries forever, so a
leaked/stuck pooled connection hung teardown.
Pragmatic unblock (the underlying open-handle leak is tracked in #382):
- jest-integration.json: add forceExit so jest always exits after the run even
if a suite leaves an open handle.
- db.ts: capture the singleton's raw postgres sql instance and bound the pool
shutdown with sql.end({ timeout: 5 }) (the same bounded-end pattern already
used in global-setup.ts) instead of Kysely.destroy(), so destroyTestDb can no
longer hang the afterAll hook.
forceExit masks residual handle leaks rather than fixing them; the proper
investigation (run with --detectOpenHandles on a pg+redis stand, close the
leaking timers/sockets, then drop forceExit) is filed as #382.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
29 lines
1011 B
JSON
29 lines
1011 B
JSON
{
|
|
"moduleFileExtensions": ["js", "json", "ts", "tsx"],
|
|
"rootDir": "..",
|
|
"testRegex": ".*\\.int-spec\\.ts$",
|
|
"testPathIgnorePatterns": ["/node_modules/"],
|
|
"transform": {
|
|
"prosemirror-markdown/build/.+\\.js$": [
|
|
"babel-jest",
|
|
{ "presets": [["@babel/preset-env", { "targets": { "node": "current" } }]] }
|
|
],
|
|
"^.+\\.(t|j)sx?$": "ts-jest"
|
|
},
|
|
"transformIgnorePatterns": [
|
|
"/node_modules/(?!(\\.pnpm/)?(nanoid|uuid|image-dimensions|marked|happy-dom|lib0|@docmost/prosemirror-markdown)(@|/))"
|
|
],
|
|
"testEnvironment": "node",
|
|
"testTimeout": 60000,
|
|
"maxWorkers": 1,
|
|
"forceExit": true,
|
|
"globalSetup": "<rootDir>/test/integration/global-setup.ts",
|
|
"globalTeardown": "<rootDir>/test/integration/global-teardown.ts",
|
|
"moduleNameMapper": {
|
|
"^@docmost/db/(.*)$": "<rootDir>/src/database/$1",
|
|
"^@docmost/transactional/(.*)$": "<rootDir>/src/integrations/transactional/$1",
|
|
"^@docmost/ee/(.*)$": "<rootDir>/src/ee/$1",
|
|
"^src/(.*)$": "<rootDir>/src/$1"
|
|
}
|
|
}
|