Skip to content
This repository was archived by the owner on Sep 11, 2025. It is now read-only.

Commit 24e910f

Browse files
authored
Change logic of useDefaultBrowserType (#588)
* Change logic of useDefaultBrowserType close #586 * Fix getDeviceBrowserType * Fix getDeviceBrowserType test * Fix PlaywrightEnv
1 parent 3ed46e4 commit 24e910f

File tree

4 files changed

+44
-65
lines changed

4 files changed

+44
-65
lines changed

src/PlaywrightEnvironment.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ export const getPlaywrightEnv = (basicEnv = 'node'): unknown => {
282282
const { device } = config
283283
const browserName =
284284
config.useDefaultBrowserType && device
285-
? getDeviceBrowserType(device, devices)
285+
? getDeviceBrowserType(device, devices) || CHROMIUM
286286
: config.browser || browserType
287287
const deviceName = device ? getDeviceName(device) : null
288288
checkDevice(deviceName, devices)

src/PlaywrightRunner.ts

Lines changed: 39 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -129,73 +129,52 @@ class PlaywrightRunner extends JestRunner {
129129
const { browsers, devices, connectOptions, useDefaultBrowserType } = config
130130
const pwTests: Test[] = []
131131
for (const test of tests) {
132-
if (useDefaultBrowserType) {
133-
const { devices: availableDevices, instance } = getPlaywrightInstance()
132+
for (const browser of browsers) {
133+
const browserType = getBrowserType(
134+
typeof browser === 'string' ? browser : browser.name,
135+
)
136+
const browserConfig =
137+
typeof browser === 'string'
138+
? config
139+
: deepMerge(config, browser || {})
140+
checkBrowserEnv(browserType)
141+
const { devices: availableDevices, instance } = getPlaywrightInstance(
142+
browserType,
143+
)
134144
const resultDevices = getDevices(devices, availableDevices)
145+
const key =
146+
typeof browser === 'string'
147+
? browser
148+
: generateKey(browser.name, browserConfig)
149+
const wsEndpoint: WsEndpointType = await this.launchServer(
150+
browserConfig,
151+
getBrowserOptions(browserType, connectOptions)?.wsEndpoint || null,
152+
browserType,
153+
key,
154+
instance as GenericBrowser,
155+
)
135156

136157
const browserTest = {
137158
test: test as JestPlaywrightTest,
138-
config,
159+
config: browserConfig,
160+
wsEndpoint,
161+
browser: browserType,
139162
}
140-
if (resultDevices.length) {
141-
for (const device of resultDevices) {
142-
const browser = getDeviceBrowserType(device, availableDevices)
143-
const wsEndpoint: WsEndpointType = await this.launchServer(
144-
config,
145-
getBrowserOptions(browser, connectOptions)?.wsEndpoint || null,
146-
browser,
147-
browser,
148-
(instance as Record<BrowserType, GenericBrowser>)[browser],
149-
)
150163

164+
if (resultDevices.length) {
165+
resultDevices.forEach((device: DeviceType) => {
151166
checkDevice(device, availableDevices)
152-
153-
pwTests.push(
154-
getBrowserTest({ ...browserTest, browser, wsEndpoint, device }),
155-
)
156-
}
157-
}
158-
} else {
159-
for (const browser of browsers) {
160-
const browserType = getBrowserType(
161-
typeof browser === 'string' ? browser : browser.name,
162-
)
163-
const browserConfig =
164-
typeof browser === 'string'
165-
? config
166-
: deepMerge(config, browser || {})
167-
checkBrowserEnv(browserType)
168-
const { devices: availableDevices, instance } = getPlaywrightInstance(
169-
browserType,
170-
)
171-
const resultDevices = getDevices(devices, availableDevices)
172-
const key =
173-
typeof browser === 'string'
174-
? browser
175-
: generateKey(browser.name, browserConfig)
176-
const wsEndpoint: WsEndpointType = await this.launchServer(
177-
browserConfig,
178-
getBrowserOptions(browserType, connectOptions)?.wsEndpoint || null,
179-
browserType,
180-
key,
181-
instance as GenericBrowser,
182-
)
183-
184-
const browserTest = {
185-
test: test as JestPlaywrightTest,
186-
config: browserConfig,
187-
wsEndpoint,
188-
browser: browserType,
189-
}
190-
191-
if (resultDevices.length) {
192-
resultDevices.forEach((device: DeviceType) => {
193-
checkDevice(device, availableDevices)
194-
pwTests.push(getBrowserTest({ ...browserTest, device }))
195-
})
196-
} else {
197-
pwTests.push(getBrowserTest({ ...browserTest, device: null }))
198-
}
167+
if (useDefaultBrowserType) {
168+
const deviceBrowser = getDeviceBrowserType(
169+
device!,
170+
availableDevices,
171+
)
172+
if (deviceBrowser !== null && deviceBrowser !== browser) return
173+
}
174+
pwTests.push(getBrowserTest({ ...browserTest, device }))
175+
})
176+
} else {
177+
pwTests.push(getBrowserTest({ ...browserTest, device: null }))
199178
}
200179
}
201180
}

src/utils.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,11 +284,11 @@ describe('getDeviceBrowserType', () => {
284284
},
285285
} as Playwright['devices']
286286

287-
it('should return "chromium" as default', async () => {
287+
it('should return "null" as default', async () => {
288288
const device = {
289289
name: 'Custom',
290290
}
291-
expect(getDeviceBrowserType(device, devices)).toBe(CHROMIUM)
291+
expect(getDeviceBrowserType(device, devices)).toBe(null)
292292
})
293293

294294
it('should return default browser if it is defined', async () => {

src/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,12 @@ export const generateKey = (
113113
export const getDeviceBrowserType = (
114114
device: ConfigDeviceType,
115115
availableDevices: Playwright['devices'],
116-
): BrowserType => {
116+
): BrowserType | null => {
117117
if (typeof device === 'string') {
118118
return availableDevices[device].defaultBrowserType as BrowserType
119119
}
120120

121-
return device?.defaultBrowserType || CHROMIUM
121+
return device?.defaultBrowserType || null
122122
}
123123

124124
export const getPlaywrightInstance = (

0 commit comments

Comments
 (0)