chore: have pretty error if CT config has no defineConfig (#21318)

Fixes https://github.com/microsoft/playwright/issues/21312
This commit is contained in:
Max Schmitt 2023-03-02 00:47:05 +01:00 коммит произвёл GitHub
Родитель d9b0c58b96
Коммит 6a7347f134
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
4 изменённых файлов: 14 добавлений и 3 удалений

Просмотреть файл

@ -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);