diff --git a/src/lib/integrationTests/testRunner.ts b/src/lib/integrationTests/testRunner.ts index 97d4a9e5..c19063f3 100644 --- a/src/lib/integrationTests/testRunner.ts +++ b/src/lib/integrationTests/testRunner.ts @@ -51,9 +51,18 @@ export class IntegrationTestRunner { private isRunning = false; private shouldStop = false; private onProgress?: (result: TestResult) => void; + private delayBetweenTests: number; - constructor(onProgress?: (result: TestResult) => void) { + constructor(onProgress?: (result: TestResult) => void, delayBetweenTests: number = 2500) { this.onProgress = onProgress; + this.delayBetweenTests = delayBetweenTests; // Default 2.5 seconds to prevent rate limiting + } + + /** + * Wait for specified milliseconds (for rate limiting prevention) + */ + private async delay(ms: number): Promise { + return new Promise(resolve => setTimeout(resolve, ms)); } /** @@ -123,13 +132,19 @@ export class IntegrationTestRunner { async runSuite(suite: TestSuite): Promise { const suiteResults: TestResult[] = []; - for (const test of suite.tests) { + for (let i = 0; i < suite.tests.length; i++) { + const test = suite.tests[i]; const result = await this.runTest(test, suite.name); suiteResults.push(result); if (this.shouldStop) { break; } + + // Add delay between tests to prevent rate limiting (except after the last test) + if (i < suite.tests.length - 1 && this.delayBetweenTests > 0) { + await this.delay(this.delayBetweenTests); + } } return suiteResults;