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:
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user