chore: have pretty error if CT config has no defineConfig (#21318)
Fixes https://github.com/microsoft/playwright/issues/21312
This commit is contained in:
Родитель
d9b0c58b96
Коммит
6a7347f134
|
@ -15,8 +15,8 @@
|
|||
*/
|
||||
|
||||
const pwt = require('./lib/index');
|
||||
const { defineConfig } = require('./lib/common/configLoader');
|
||||
const playwright = require('playwright-core');
|
||||
const defineConfig = config => config;
|
||||
const combinedExports = {
|
||||
...playwright,
|
||||
...pwt,
|
||||
|
|
|
@ -26,6 +26,12 @@ import { setCurrentConfig } from './globals';
|
|||
|
||||
export const defaultTimeout = 30000;
|
||||
|
||||
const kDefineConfigWasUsed = Symbol('defineConfigWasUsed');
|
||||
export const defineConfig = (config: any) => {
|
||||
config[kDefineConfigWasUsed] = true;
|
||||
return config;
|
||||
};
|
||||
|
||||
export class ConfigLoader {
|
||||
private _fullConfig: FullConfigInternal;
|
||||
|
||||
|
@ -125,6 +131,7 @@ export class ConfigLoader {
|
|||
this._fullConfig._internal.ignoreSnapshots = takeFirst(config.ignoreSnapshots, baseFullConfig._internal.ignoreSnapshots);
|
||||
this._fullConfig.updateSnapshots = takeFirst(config.updateSnapshots, baseFullConfig.updateSnapshots);
|
||||
this._fullConfig._internal.plugins = ((config as any)._plugins || []).map((p: any) => ({ factory: p }));
|
||||
this._fullConfig._internal.defineConfigWasUsed = !!(config as any)[kDefineConfigWasUsed];
|
||||
|
||||
const workers = takeFirst(config.workers, '50%');
|
||||
if (typeof workers === 'string') {
|
||||
|
@ -457,6 +464,7 @@ export const baseFullConfig: FullConfigInternal = {
|
|||
cliGrep: undefined,
|
||||
cliGrepInvert: undefined,
|
||||
listOnly: false,
|
||||
defineConfigWasUsed: false,
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@ type ConfigInternal = {
|
|||
cliProjectFilter?: string[];
|
||||
testIdMatcher?: Matcher;
|
||||
passWithNoTests?: boolean;
|
||||
defineConfigWasUsed: boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import type { Fixtures, Locator, Page, BrowserContextOptions, PlaywrightTestArgs, PlaywrightTestOptions, PlaywrightWorkerArgs, PlaywrightWorkerOptions, BrowserContext, ContextReuseMode } from './common/types';
|
||||
import type { Fixtures, Locator, Page, BrowserContextOptions, PlaywrightTestArgs, PlaywrightTestOptions, PlaywrightWorkerArgs, PlaywrightWorkerOptions, BrowserContext, ContextReuseMode, FullConfigInternal } from './common/types';
|
||||
import type { Component, JsxComponent, MountOptions } from '../types/component';
|
||||
|
||||
let boundCallbacksForMount: Function[] = [];
|
||||
|
@ -37,7 +37,9 @@ export const fixtures: Fixtures<
|
|||
|
||||
_ctWorker: [{ context: undefined, hash: '' }, { scope: 'worker' }],
|
||||
|
||||
page: async ({ page }, use) => {
|
||||
page: async ({ page }, use, info) => {
|
||||
if (!(info.config as FullConfigInternal)._internal.defineConfigWasUsed)
|
||||
throw new Error('Component testing requires the use of the defineConfig() in your playwright-ct.config.{ts,js}: https://aka.ms/playwright/ct-define-config');
|
||||
await (page as any)._wrapApiCall(async () => {
|
||||
await page.exposeFunction('__ct_dispatch', (ordinal: number, args: any[]) => {
|
||||
boundCallbacksForMount[ordinal](...args);
|
||||
|
|
Загрузка…
Ссылка в новой задаче