-
-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathwdio.browserChoice.conf.js
More file actions
84 lines (74 loc) · 2.3 KB
/
wdio.browserChoice.conf.js
File metadata and controls
84 lines (74 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import path from 'path'
import { fileURLToPath } from 'url'
import fs from 'fs'
import { config as baseConfig } from './wdio.conf.js'
// Create downloads directory if it doesn't exist
export const downloadsDir = path.join(path.dirname(fileURLToPath(import.meta.url)), 'downloads')
if (!fs.existsSync(downloadsDir)){
fs.mkdirSync(downloadsDir);
}
// Get custom Firefox binary path from environment variable if set
const { FIREFOX_BINARY_PATH } = process.env
const chromeOptions = {
capabilities: {
browserName: 'chrome',
acceptInsecureCerts: true,
"goog:chromeOptions": {
args: process.env.CI ? ['headless', 'disable-gpu'] : [],
prefs: {
"download.default_directory": downloadsDir
}
}
}
}
const firefoxOptions = {
capabilities: {
browserName: 'firefox',
"moz:debuggerAddress": true,
"moz:firefoxOptions": {
args: process.env.CI ? ['-headless'] : [],
prefs: {
"dom.events.asyncClipboard.readText": true, // Allow clipboard read
"browser.download.dir": downloadsDir,
"browser.download.folderList": 2,
"browser.download.manager.showWhenStarting": false,
"browser.helperApps.neverAsk.saveToDisk": "*/*"
}
}
}
}
// Set custom Firefox binary path if provided, e.g., for using Nightly or a specific version
if (FIREFOX_BINARY_PATH) {
firefoxOptions.capabilities['moz:firefoxOptions'].binary = FIREFOX_BINARY_PATH;
}
const edgeOptions = {
capabilities: {
browserName: 'edge',
"ms:edgeOptions": {
args: process.env.CI ? ['--headless'] : [],
prefs: {
"download.default_directory": downloadsDir
}
}
}
}
const safariOptions = {
capabilities: {
browserName: 'safari'
}
}
const browserCapabilities = {
chrome: chromeOptions.capabilities,
firefox: firefoxOptions.capabilities,
edge: edgeOptions.capabilities,
safari: safariOptions.capabilities
}
const capabilities = [
process.env.BROWSER && browserCapabilities[process.env.BROWSER]
? browserCapabilities[process.env.BROWSER]
: browserCapabilities['chrome']
]
export const config = {
...baseConfig,
capabilities
}