Browse Source

fix(test-runner): support passing slowMo option (#6991)

Fixes #6984
Reverts #6967
pull/7003/head
Max Schmitt 6 days ago
committed by GitHub
parent
commit
178489d091
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      src/test/index.ts
  2. 6
      tests/playwright-test/fixtures.spec.ts
  3. 20
      types/test.d.ts

10
src/test/index.ts

@ -28,9 +28,10 @@ export const test = _baseTest.extend<PlaywrightTestArgs & PlaywrightTestOptions,
playwright: [ require('../inprocess'), { scope: 'worker' } ],
headless: [ undefined, { scope: 'worker' } ],
channel: [ undefined, { scope: 'worker' } ],
slowMo: [ undefined, { scope: 'worker' } ],
launchOptions: [ {}, { scope: 'worker' } ],
browser: [ async ({ playwright, browserName, headless, channel, launchOptions }, use) => {
browser: [ async ({ playwright, browserName, headless, channel, slowMo, launchOptions }, use) => {
if (!['chromium', 'firefox', 'webkit'].includes(browserName))
throw new Error(`Unexpected browserName "${browserName}", must be one of "chromium", "firefox" or "webkit"`);
const options: LaunchOptions = {
@ -41,6 +42,8 @@ export const test = _baseTest.extend<PlaywrightTestArgs & PlaywrightTestOptions,
options.headless = headless;
if (channel !== undefined)
options.channel = channel;
if (slowMo !== undefined)
options.slowMo = slowMo;
const browser = await playwright[browserName].launch(options);
await use(browser);
await browser.close();
@ -52,6 +55,7 @@ export const test = _baseTest.extend<PlaywrightTestArgs & PlaywrightTestOptions,
acceptDownloads: undefined,
bypassCSP: undefined,
colorScheme: undefined,
reducedMotion: undefined,
deviceScaleFactor: undefined,
extraHTTPHeaders: undefined,
geolocation: undefined,
@ -70,7 +74,7 @@ export const test = _baseTest.extend<PlaywrightTestArgs & PlaywrightTestOptions,
viewport: undefined,
contextOptions: {},
context: async ({ browser, screenshot, trace, video, acceptDownloads, bypassCSP, colorScheme, deviceScaleFactor, extraHTTPHeaders, hasTouch, geolocation, httpCredentials, ignoreHTTPSErrors, isMobile, javaScriptEnabled, locale, offline, permissions, proxy, storageState, viewport, timezoneId, userAgent, contextOptions }, use, testInfo) => {
context: async ({ browser, screenshot, trace, video, acceptDownloads, bypassCSP, colorScheme, reducedMotion, deviceScaleFactor, extraHTTPHeaders, hasTouch, geolocation, httpCredentials, ignoreHTTPSErrors, isMobile, javaScriptEnabled, locale, offline, permissions, proxy, storageState, viewport, timezoneId, userAgent, contextOptions }, use, testInfo) => {
testInfo.snapshotSuffix = process.platform;
if (process.env.PWDEBUG)
testInfo.setTimeout(0);
@ -87,6 +91,8 @@ export const test = _baseTest.extend<PlaywrightTestArgs & PlaywrightTestOptions,
options.bypassCSP = bypassCSP;
if (colorScheme !== undefined)
options.colorScheme = colorScheme;
if (reducedMotion !== undefined)
options.reducedMotion = reducedMotion;
if (deviceScaleFactor !== undefined)
options.deviceScaleFactor = deviceScaleFactor;
if (extraHTTPHeaders !== undefined)

6
tests/playwright-test/fixtures.spec.ts

@ -529,7 +529,7 @@ test('should create a new worker for worker fixtures', async ({ runInlineTest })
'a.test.ts': `
const { test } = pwt;
test('base test', async ({}, testInfo) => {
expect(testInfo.workerIndex).toBe(0);
expect(testInfo.workerIndex).toBe(1);
});
const test2 = test.extend({
@ -539,7 +539,7 @@ test('should create a new worker for worker fixtures', async ({ runInlineTest })
}, { scope: 'worker' }],
});
test2('a test', async ({ foo }, testInfo) => {
expect(testInfo.workerIndex).toBe(1);
expect(testInfo.workerIndex).toBe(0);
});
`,
'b.test.ts': `
@ -551,7 +551,7 @@ test('should create a new worker for worker fixtures', async ({ runInlineTest })
},
});
test2('b test', async ({ bar }, testInfo) => {
expect(testInfo.workerIndex).toBe(0);
expect(testInfo.workerIndex).toBe(1);
});
`,
}, { workers: 1 });

20
types/test.d.ts

@ -882,6 +882,13 @@ type BrowserChannel = Exclude<LaunchOptions['channel'], undefined>;
*/
type ColorScheme = Exclude<BrowserContextOptions['colorScheme'], undefined>;
/**
* Emulates `'prefers-reduced-motion'` media feature,
* supported values are `'reduce'`, `'no-preference'`.
* @see BrowserContextOptions
*/
type ReducedMotion = Exclude<BrowserContextOptions['reducedMotion'], undefined>;
/**
* An object containing additional HTTP headers to be sent with every request. All header values must be strings.
* @see BrowserContextOptions
@ -932,6 +939,13 @@ export type PlaywrightWorkerOptions = {
*/
channel: BrowserChannel | undefined;
/**
* Slows down Playwright operations by the specified amount of milliseconds.
* Useful so that you can see what is going on.
* @see LaunchOptions
*/
slowMo: number | undefined;
/**
* Options used to launch the browser. Other options above (e.g. `headless`) take priority.
* @see LaunchOptions
@ -997,6 +1011,12 @@ export type PlaywrightTestOptions = {
*/
colorScheme: ColorScheme | undefined;
/**
* Emulates `'prefers-reduced-motion'` media feature, supported values are `'reduce'`, `'no-preference'`.
* @see BrowserContextOptions
*/
reducedMotion: ReducedMotion | undefined;
/**
* Specify device scale factor (can be thought of as dpr). Defaults to `1`.
* @see BrowserContextOptions

Loading…
Cancel
Save