From 1b65f26f0287c0352e76673bc5f85bc36c934b55 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Mon, 11 Nov 2024 21:15:05 -0800 Subject: [PATCH] chore: apply rebaselines in a task (#33549) --- packages/playwright/src/runner/runner.ts | 6 ++---- packages/playwright/src/runner/tasks.ts | 10 ++++++++++ packages/playwright/src/runner/testServer.ts | 3 ++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/playwright/src/runner/runner.ts b/packages/playwright/src/runner/runner.ts index 94b4095e6c..5a015ec755 100644 --- a/packages/playwright/src/runner/runner.ts +++ b/packages/playwright/src/runner/runner.ts @@ -19,12 +19,11 @@ import type { FullResult, TestError } from '../../types/testReporter'; import { webServerPluginsForConfig } from '../plugins/webServerPlugin'; import { collectFilesForProject, filterProjects } from './projectUtils'; import { createErrorCollectingReporter, createReporters } from './reporters'; -import { TestRun, createClearCacheTask, createGlobalSetupTasks, createLoadTask, createPluginSetupTasks, createReportBeginTask, createRunTestsTasks, createStartDevServerTask, runTasks } from './tasks'; +import { TestRun, createApplyRebaselinesTask, createClearCacheTask, createGlobalSetupTasks, createLoadTask, createPluginSetupTasks, createReportBeginTask, createRunTestsTasks, createStartDevServerTask, runTasks } from './tasks'; import type { FullConfigInternal } from '../common/config'; import { affectedTestFiles } from '../transform/compilationCache'; import { InternalReporter } from '../reporters/internalReporter'; import { LastRunReporter } from './lastRun'; -import { applySuggestedRebaselines } from './rebase'; type ProjectConfigWithFiles = { name: string; @@ -83,14 +82,13 @@ export class Runner { createLoadTask('in-process', { failOnLoadErrors: true, filterOnly: false }), createReportBeginTask(), ] : [ + createApplyRebaselinesTask(), ...createGlobalSetupTasks(config), createLoadTask('in-process', { filterOnly: true, failOnLoadErrors: true }), ...createRunTestsTasks(config), ]; const status = await runTasks(new TestRun(config, reporter), tasks, config.config.globalTimeout); - await applySuggestedRebaselines(config, reporter); - // Calling process.exit() might truncate large stdout/stderr output. // See https://github.com/nodejs/node/issues/6456. // See https://github.com/nodejs/node/issues/12921 diff --git a/packages/playwright/src/runner/tasks.ts b/packages/playwright/src/runner/tasks.ts index 97f9ce4dc2..84cffac573 100644 --- a/packages/playwright/src/runner/tasks.ts +++ b/packages/playwright/src/runner/tasks.ts @@ -34,6 +34,7 @@ import { detectChangedTestFiles } from './vcs'; import type { InternalReporter } from '../reporters/internalReporter'; import { cacheDir } from '../transform/compilationCache'; import type { FullResult } from '../../types/testReporter'; +import { applySuggestedRebaselines } from './rebase'; const readDirAsync = promisify(fs.readdir); @@ -280,6 +281,15 @@ export function createLoadTask(mode: 'out-of-process' | 'in-process', options: { }; } +export function createApplyRebaselinesTask(): Task { + return { + title: 'apply rebaselines', + teardown: async ({ config, reporter }) => { + await applySuggestedRebaselines(config, reporter); + }, + }; +} + function createPhasesTask(): Task { return { title: 'create phases', diff --git a/packages/playwright/src/runner/testServer.ts b/packages/playwright/src/runner/testServer.ts index ff37da717c..981a1580f0 100644 --- a/packages/playwright/src/runner/testServer.ts +++ b/packages/playwright/src/runner/testServer.ts @@ -23,7 +23,7 @@ import type * as reporterTypes from '../../types/testReporter'; import { affectedTestFiles, collectAffectedTestFiles, dependenciesForTestFile } from '../transform/compilationCache'; import type { ConfigLocation, FullConfigInternal } from '../common/config'; import { createErrorCollectingReporter, createReporterForTestServer, createReporters } from './reporters'; -import { TestRun, runTasks, createLoadTask, createRunTestsTasks, createReportBeginTask, createListFilesTask, runTasksDeferCleanup, createClearCacheTask, createGlobalSetupTasks, createStartDevServerTask } from './tasks'; +import { TestRun, runTasks, createLoadTask, createRunTestsTasks, createReportBeginTask, createListFilesTask, runTasksDeferCleanup, createClearCacheTask, createGlobalSetupTasks, createStartDevServerTask, createApplyRebaselinesTask } from './tasks'; import { open } from 'playwright-core/lib/utilsBundle'; import ListReporter from '../reporters/list'; import { SigIntWatcher } from './sigIntWatcher'; @@ -336,6 +336,7 @@ export class TestServerDispatcher implements TestServerInterface { const reporter = new InternalReporter([...configReporters, wireReporter]); const stop = new ManualPromise(); const tasks = [ + createApplyRebaselinesTask(), createLoadTask('out-of-process', { filterOnly: true, failOnLoadErrors: false, doNotRunDepsOutsideProjectFilter: true }), ...createRunTestsTasks(config), ];