Skip to content

Commit 76be954

Browse files
authored
chore: split playwright.fixtures into files (2) (#3983)
1 parent 5b9f489 commit 76be954

File tree

2 files changed

+59
-26
lines changed

2 files changed

+59
-26
lines changed

test/platform.fixtures.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/**
2+
* Copyright Microsoft Corporation. All rights reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
import { fixtures as baseFixtures } from '@playwright/test-runner';
18+
19+
type PlatformParameters = {
20+
platform: 'win32' | 'linux' | 'darwin'
21+
};
22+
23+
type PlatformWorkerFixtures = {
24+
isWindows: boolean;
25+
isMac: boolean;
26+
isLinux: boolean;
27+
};
28+
29+
export const fixtures = baseFixtures
30+
.declareParameters<PlatformParameters>()
31+
.declareWorkerFixtures<PlatformWorkerFixtures>();
32+
const { defineWorkerFixture, defineParameter, generateParametrizedTests } = fixtures;
33+
34+
export const options = {
35+
MAC: (parameters: PlatformParameters) => parameters.platform === 'darwin',
36+
LINUX: (parameters: PlatformParameters) => parameters.platform === 'linux',
37+
WIN: (parameters: PlatformParameters) => parameters.platform === 'win32',
38+
};
39+
40+
defineParameter('platform', 'Operating system', process.platform as ('win32' | 'linux' | 'darwin'));
41+
42+
generateParametrizedTests(
43+
'platform',
44+
process.env.PWTESTREPORT ? ['win32', 'darwin', 'linux'] : [process.platform as ('win32' | 'linux' | 'darwin')]);
45+
46+
defineWorkerFixture('isWindows', async ({platform}, test) => {
47+
await test(platform === 'win32');
48+
});
49+
50+
defineWorkerFixture('isMac', async ({platform}, test) => {
51+
await test(platform === 'darwin');
52+
});
53+
54+
defineWorkerFixture('isLinux', async ({platform}, test) => {
55+
await test(platform === 'linux');
56+
});

test/playwright.fixtures.ts

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import { expect } from '@playwright/test';
1818
import { config } from '@playwright/test-runner';
1919
import { fixtures as httpFixtures } from './http.fixtures';
20+
import { fixtures as platformFixtures, options as platformOptions } from './platform.fixtures';
2021
import assert from 'assert';
2122
import childProcess from 'child_process';
2223
import fs from 'fs';
@@ -34,7 +35,6 @@ const mkdtempAsync = util.promisify(fs.mkdtemp);
3435
const removeFolderAsync = util.promisify(require('rimraf'));
3536

3637
type PlaywrightParameters = {
37-
platform: 'win32' | 'linux' | 'darwin'
3838
browserName: string;
3939
};
4040

@@ -49,9 +49,6 @@ type PlaywrightWorkerFixtures = {
4949
isChromium: boolean;
5050
isFirefox: boolean;
5151
isWebKit: boolean;
52-
isWindows: boolean;
53-
isMac: boolean;
54-
isLinux: boolean;
5552
expectedSSLError: string;
5653
};
5754

@@ -65,7 +62,7 @@ type PlaywrightTestFixtures = {
6562
launchPersistent: (options?: Parameters<BrowserType<Browser>['launchPersistentContext']>[1]) => Promise<{context: BrowserContext, page: Page}>;
6663
};
6764

68-
const fixtures = httpFixtures
65+
const fixtures = httpFixtures.union(platformFixtures)
6966
.declareParameters<PlaywrightParameters>()
7067
.declareWorkerFixtures<PlaywrightWorkerFixtures>()
7168
.declareTestFixtures<PlaywrightTestFixtures>();
@@ -87,13 +84,11 @@ export const options = {
8784
CHROMIUM: (parameters: PlaywrightParameters) => parameters.browserName === 'chromium',
8885
FIREFOX: (parameters: PlaywrightParameters) => parameters.browserName === 'firefox',
8986
WEBKIT: (parameters: PlaywrightParameters) => parameters.browserName === 'webkit',
90-
MAC: (parameters: PlaywrightParameters) => parameters.platform === 'darwin',
91-
LINUX: (parameters: PlaywrightParameters) => parameters.platform === 'linux',
92-
WIN: (parameters: PlaywrightParameters) => parameters.platform === 'win32',
9387
HEADLESS: !!valueFromEnv('HEADLESS', true),
9488
WIRE: !!process.env.PWWIRE,
9589
SLOW_MO: valueFromEnv('SLOW_MO', 0),
9690
TRACING: valueFromEnv('TRACING', false),
91+
...platformOptions,
9792
};
9893

9994
const getExecutablePath = browserName => {
@@ -169,16 +164,10 @@ defineWorkerFixture('browserType', async ({playwright, browserName}, test) => {
169164

170165
defineParameter('browserName', 'Browser type name', '');
171166

172-
defineParameter('platform', 'Operating system', process.platform as ('win32' | 'linux' | 'darwin'));
173-
174167
generateParametrizedTests(
175168
'browserName',
176169
process.env.BROWSER ? [process.env.BROWSER] : ['chromium', 'webkit', 'firefox']);
177170

178-
generateParametrizedTests(
179-
'platform',
180-
process.env.PWTESTREPORT ? ['win32', 'darwin', 'linux'] : [process.platform as ('win32' | 'linux' | 'darwin')]);
181-
182171
defineWorkerFixture('isChromium', async ({browserName}, test) => {
183172
await test(browserName === 'chromium');
184173
});
@@ -191,18 +180,6 @@ defineWorkerFixture('isWebKit', async ({browserName}, test) => {
191180
await test(browserName === 'webkit');
192181
});
193182

194-
defineWorkerFixture('isWindows', async ({platform}, test) => {
195-
await test(platform === 'win32');
196-
});
197-
198-
defineWorkerFixture('isMac', async ({platform}, test) => {
199-
await test(platform === 'darwin');
200-
});
201-
202-
defineWorkerFixture('isLinux', async ({platform}, test) => {
203-
await test(platform === 'linux');
204-
});
205-
206183
defineWorkerFixture('browser', async ({browserType, defaultBrowserOptions}, test) => {
207184
const browser = await browserType.launch(defaultBrowserOptions);
208185
await test(browser);

0 commit comments

Comments
 (0)