export function integTestWorker()

in packages/@aws-cdk/integ-runner/lib/workers/extract/extract_worker.ts [18:92]


export function integTestWorker(request: IntegTestBatchRequest): IntegTestWorkerConfig[] {
  const failures: IntegTestInfo[] = [];
  const verbosity = request.verbosity ?? 0;

  for (const testInfo of request.tests) {
    const test = new IntegTest({
      ...testInfo,
      watch: request.watch,
    }); // Hydrate from data
    const start = Date.now();

    try {
      const runner = new IntegTestRunner({
        test,
        profile: request.profile,
        env: {
          AWS_REGION: request.region,
          CDK_DOCKER: process.env.CDK_DOCKER ?? 'docker',
        },
        showOutput: verbosity >= 2,
      }, testInfo.destructiveChanges);

      const tests = runner.actualTests();

      if (!tests || Object.keys(tests).length === 0) {
        throw new Error(`No tests defined for ${runner.testName}`);
      }
      for (const testCaseName of Object.keys(tests)) {
        try {
          const results = runner.runIntegTestCase({
            testCaseName,
            clean: request.clean,
            dryRun: request.dryRun,
            updateWorkflow: request.updateWorkflow,
            verbosity,
          });
          if (results && Object.values(results).some(result => result.status === 'fail')) {
            failures.push(testInfo);
            workerpool.workerEmit({
              reason: DiagnosticReason.ASSERTION_FAILED,
              testName: `${runner.testName}-${testCaseName} (${request.profile}/${request.region})`,
              message: formatAssertionResults(results),
              duration: (Date.now() - start) / 1000,
            });
          } else {
            workerpool.workerEmit({
              reason: DiagnosticReason.TEST_SUCCESS,
              testName: `${runner.testName}-${testCaseName}`,
              message: results ? formatAssertionResults(results) : 'NO ASSERTIONS',
              duration: (Date.now() - start) / 1000,
            });
          }
        } catch (e) {
          failures.push(testInfo);
          workerpool.workerEmit({
            reason: DiagnosticReason.TEST_FAILED,
            testName: `${runner.testName}-${testCaseName} (${request.profile}/${request.region})`,
            message: `Integration test failed: ${e}`,
            duration: (Date.now() - start) / 1000,
          });
        }
      }
    } catch (e) {
      failures.push(testInfo);
      workerpool.workerEmit({
        reason: DiagnosticReason.TEST_ERROR,
        testName: `${testInfo.fileName} (${request.profile}/${request.region})`,
        message: `Error during integration test: ${e}`,
        duration: (Date.now() - start) / 1000,
      });
    }
  }

  return failures;
}