fix: resolve test hanging issue in CI

- Reduce CI reporters to prevent resource contention (removed json/html)
- Optimize coverage settings with all:false and skipFull:true
- Fix MSW waitForRequest memory leak by adding timeout and cleanup
- Add teardownTimeout to vitest config
- Add 10-minute timeout to GitHub Actions job
- Create emergency test script without coverage for debugging

The main issues were:
1. Coverage collection with multiple reporters causing exhaustion
2. MSW event listener that could hang indefinitely
3. Too many simultaneous reporters (4 at once)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
czlonkowski
2025-07-29 13:40:18 +02:00
parent 115bb6f36c
commit b9eda61729
5 changed files with 37 additions and 13 deletions

View File

@@ -60,14 +60,26 @@ export function useHandlers(...handlers: RequestHandler[]) {
* Utility to wait for a specific request to be made
* Useful for testing async operations
*/
export function waitForRequest(method: string, url: string | RegExp): Promise<Request> {
return new Promise((resolve) => {
server.events.on('request:match', ({ request }) => {
export function waitForRequest(method: string, url: string | RegExp, timeout = 5000): Promise<Request> {
return new Promise((resolve, reject) => {
let timeoutId: NodeJS.Timeout;
const handler = ({ request }: { request: Request }) => {
if (request.method === method &&
(typeof url === 'string' ? request.url === url : url.test(request.url))) {
clearTimeout(timeoutId);
server.events.removeListener('request:match', handler);
resolve(request);
}
});
};
// Set timeout
timeoutId = setTimeout(() => {
server.events.removeListener('request:match', handler);
reject(new Error(`Timeout waiting for ${method} request to ${url}`));
}, timeout);
server.events.on('request:match', handler);
});
}