From a237dfbf435c92d38b5edc23436c228c691d5884 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Wed, 24 Jul 2024 10:50:50 +0200 Subject: [PATCH] fix: setup plugins and provide proper config options --- packages/playwright-ct-core/src/vitePlugin.ts | 8 ++++---- packages/playwright/src/plugins/index.ts | 2 +- packages/playwright/src/runner/runner.ts | 9 +++++++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/playwright-ct-core/src/vitePlugin.ts b/packages/playwright-ct-core/src/vitePlugin.ts index e4a0a43266..dbe31310c2 100644 --- a/packages/playwright-ct-core/src/vitePlugin.ts +++ b/packages/playwright-ct-core/src/vitePlugin.ts @@ -48,6 +48,10 @@ export function createPlugin(): TestRunnerPlugin { configDir = configDirectory; }, + populateDependencies: async (config: FullConfig, configDir: string) => { + await buildBundle(config, configDir); + }, + begin: async (suite: Suite) => { const result = await buildBundle(config, configDir); if (!result) @@ -69,10 +73,6 @@ export function createPlugin(): TestRunnerPlugin { if (stoppableServer) await new Promise(f => stoppableServer.stop(f)); }, - - populateDependencies: async () => { - await buildBundle(config, configDir); - }, }; } diff --git a/packages/playwright/src/plugins/index.ts b/packages/playwright/src/plugins/index.ts index 3502d90966..e1c7355600 100644 --- a/packages/playwright/src/plugins/index.ts +++ b/packages/playwright/src/plugins/index.ts @@ -20,7 +20,7 @@ import type { ReporterV2 } from '../reporters/reporterV2'; export interface TestRunnerPlugin { name: string; setup?(config: FullConfig, configDir: string, reporter: ReporterV2): Promise; - populateDependencies?(): Promise; + populateDependencies?(config: FullConfig, configDir: string): Promise; begin?(suite: Suite): Promise; end?(): Promise; teardown?(): Promise; diff --git a/packages/playwright/src/runner/runner.ts b/packages/playwright/src/runner/runner.ts index 5f5b5bf145..da2c1052f0 100644 --- a/packages/playwright/src/runner/runner.ts +++ b/packages/playwright/src/runner/runner.ts @@ -143,8 +143,13 @@ export class Runner { return { errors: result.errors, testFiles: [] }; const resolvedFiles = (files as string[]).map(file => path.resolve(process.cwd(), file)); - for (const plugin of this._config.plugins) - await plugin.instance?.populateDependencies?.(); + + for (const plugin of this._config.plugins) { + if (!plugin.instance) + plugin.instance = typeof plugin.factory === 'function' ? await plugin.factory() : plugin.factory; + + await plugin.instance.populateDependencies?.(this._config.config, this._config.configDir); + } return { testFiles: affectedTestFiles(resolvedFiles) }; } }