diff --git a/src/platform/packages/shared/kbn-test/src/functional_test_runner/functional_test_runner.ts b/src/platform/packages/shared/kbn-test/src/functional_test_runner/functional_test_runner.ts index 85ff59632bc75..e902ad5d9f6cf 100644 --- a/src/platform/packages/shared/kbn-test/src/functional_test_runner/functional_test_runner.ts +++ b/src/platform/packages/shared/kbn-test/src/functional_test_runner/functional_test_runner.ts @@ -44,13 +44,12 @@ export class FunctionalTestRunner { async run(abortSignal?: AbortSignal) { const testStats = await this.getTestStats(); + const realServices = + !testStats || (testStats.testCount > 0 && testStats.nonSkippedTestCount > 0); - return await this.runHarness(async (lifecycle, coreProviders) => { + return await this.runHarness({ realServices }, async (lifecycle, coreProviders) => { SuiteTracker.startTracking(lifecycle, this.config.path); - const realServices = - !testStats || (testStats.testCount > 0 && testStats.nonSkippedTestCount > 0); - const providers = realServices ? new ProviderCollection(this.log, [ ...coreProviders, @@ -113,10 +112,12 @@ export class FunctionalTestRunner { return; } - await lifecycle.beforeTests.trigger(mocha.suite); - if (abortSignal?.aborted) { - this.log.warning('run aborted'); - return; + if (realServices) { + await lifecycle.beforeTests.trigger(mocha.suite); + if (abortSignal?.aborted) { + this.log.warning('run aborted'); + return; + } } this.log.info('Starting tests'); @@ -152,7 +153,7 @@ export class FunctionalTestRunner { } async getTestStats() { - return await this.runHarness(async (lifecycle, coreProviders) => { + return await this.runHarness({ realServices: false }, async (lifecycle, coreProviders) => { if (this.config.get('testRunner')) { return; } @@ -222,6 +223,11 @@ export class FunctionalTestRunner { } private async runHarness( + { + realServices, + }: { + realServices: boolean; + }, handler: (lifecycle: Lifecycle, coreProviders: Providers) => Promise ): Promise { let runErrorOccurred = false; @@ -239,7 +245,8 @@ export class FunctionalTestRunner { const dockerServers = new DockerServersService( this.config.get('dockerServers'), this.log, - lifecycle + lifecycle, + !realServices ); // base level services that functional_test_runner exposes diff --git a/src/platform/packages/shared/kbn-test/src/functional_test_runner/lib/docker_servers/docker_servers_service.ts b/src/platform/packages/shared/kbn-test/src/functional_test_runner/lib/docker_servers/docker_servers_service.ts index 60f398d1fa5d0..916381b3c45c6 100644 --- a/src/platform/packages/shared/kbn-test/src/functional_test_runner/lib/docker_servers/docker_servers_service.ts +++ b/src/platform/packages/shared/kbn-test/src/functional_test_runner/lib/docker_servers/docker_servers_service.ts @@ -28,7 +28,8 @@ export class DockerServersService { [name: string]: DockerServerSpec; }, private log: ToolingLog, - private lifecycle: Lifecycle + private lifecycle: Lifecycle, + private disabled?: boolean ) { this.servers = Object.entries(configs).map(([name, config]) => ({ ...config, @@ -208,6 +209,10 @@ export class DockerServersService { } private async startServers() { + if (this.disabled) { + return; + } + await Promise.all( this.servers.map(async (server) => { if (server.enabled) {