Skip to content

Commit

Permalink
cherry-pick(release-1.12): support passing slowMo option (#6999)
Browse files Browse the repository at this point in the history
PR #6991 SHA 178489d

References #6984

Co-authored-by: Max Schmitt <max@schmitt.mx>
  • Loading branch information
aslushnikov and mxschmitt authored Jun 9, 2021
1 parent af4d008 commit 576cf68
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 5 deletions.
10 changes: 8 additions & 2 deletions src/test/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand All @@ -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();
Expand All @@ -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,
Expand All @@ -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);
Expand All @@ -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)
Expand Down
6 changes: 3 additions & 3 deletions tests/playwright-test/fixtures.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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({
Expand All @@ -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': `
Expand All @@ -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 });
Expand Down
20 changes: 20 additions & 0 deletions types/test.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 576cf68

Please sign in to comment.