froth-webdriverio-framework 7.0.119-dev1.4 → 7.0.119-dev1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,51 +1,104 @@
1
1
  module.exports = (bsCaps) => {
2
2
  const browserName = (bsCaps.browserName || 'chrome').toLowerCase();
3
3
 
4
- // Map browser names to their driver services (these packages auto-download drivers)
5
- const browserServiceMap = {
6
- chrome: 'chromedriver',
7
- firefox: 'geckodriver',
8
- edge: 'edgedriver',
9
- safari: 'safaridriver',
10
- ie: 'iedriver',
11
- 'internet explorer': 'iedriver'
4
+ // Normalize browser names for WebDriver
5
+ const browserNameMap = {
6
+ chrome: 'chrome',
7
+ chromium: 'chrome',
8
+ firefox: 'firefox',
9
+ edge: 'MicrosoftEdge',
10
+ msedge: 'MicrosoftEdge',
11
+ 'microsoft edge': 'MicrosoftEdge',
12
+ safari: 'safari',
13
+ ie: 'internet explorer',
14
+ 'internet explorer': 'internet explorer',
15
+ 'internet-explorer': 'internet explorer'
12
16
  };
13
17
 
14
- const service = browserServiceMap[browserName] || 'chromedriver';
18
+ const normalizedBrowserName = browserNameMap[browserName] || 'chrome';
15
19
 
16
20
  const config = {
17
- services: [[service, {
18
- // Driver will auto-download to node_modules/ (no admin needed)
19
- // Drivers are cached locally after first download
21
+ // selenium-standalone-service automatically handles all browser drivers
22
+ // - Downloads Selenium Server JAR to node_modules/ (no admin needed)
23
+ // - Auto-downloads chromedriver, geckodriver, etc. on first run
24
+ // - Caches drivers locally after first download
25
+ // - Supports: Chrome, Firefox, Edge, Safari, IE
26
+ services: [['selenium-standalone', {
27
+ // Check for updates (set to false to use cached version)
28
+ checkArgs: false,
29
+ // Skip Selenium installation if already present (speeds up subsequent runs)
30
+ skipSeleniumInstall: false,
31
+ // Custom arguments for Selenium Server
32
+ seleniumArgs: [],
33
+ // Custom arguments for drivers
34
+ drivers: {
35
+ chrome: {
36
+ version: 'LATEST', // Always use latest ChromeDriver
37
+ baseURL: 'https://chromedriver.storage.googleapis.com'
38
+ },
39
+ firefox: {
40
+ version: 'LATEST', // Always use latest GeckoDriver
41
+ baseURL: 'https://github.com/mozilla/geckodriver/releases'
42
+ },
43
+ edge: {
44
+ version: 'LATEST' // Always use latest Edge Driver
45
+ }
46
+ }
20
47
  }]]
21
48
  };
22
49
 
23
- // Add browser-specific capabilities
24
- if (browserName === 'chrome') {
50
+ // Configure browser-specific capabilities
51
+ if (normalizedBrowserName === 'chrome') {
25
52
  config.capabilities = [{
26
53
  browserName: 'chrome',
27
54
  'goog:chromeOptions': {
28
- args: ['--no-sandbox', '--disable-dev-shm-usage', '--disable-gpu']
55
+ args: [
56
+ '--no-sandbox',
57
+ '--disable-dev-shm-usage',
58
+ '--disable-gpu',
59
+ '--disable-web-security',
60
+ '--disable-features=VizDisplayCompositor'
61
+ ]
29
62
  }
30
63
  }];
31
- } else if (browserName === 'firefox') {
64
+ } else if (normalizedBrowserName === 'firefox') {
32
65
  config.capabilities = [{
33
66
  browserName: 'firefox',
34
67
  'moz:firefoxOptions': {
35
- args: ['-headless']
68
+ args: ['-headless'],
69
+ prefs: {
70
+ 'dom.webdriver.enabled': false,
71
+ 'useAutomationExtension': false
72
+ }
36
73
  }
37
74
  }];
38
- } else if (browserName === 'edge') {
75
+ } else if (normalizedBrowserName === 'MicrosoftEdge') {
39
76
  config.capabilities = [{
40
- browserName: 'MicrosoftEdge'
77
+ browserName: 'MicrosoftEdge',
78
+ 'ms:edgeOptions': {
79
+ args: [
80
+ '--no-sandbox',
81
+ '--disable-dev-shm-usage',
82
+ '--disable-gpu'
83
+ ]
84
+ }
41
85
  }];
42
- } else if (browserName === 'safari') {
86
+ } else if (normalizedBrowserName === 'safari') {
43
87
  config.capabilities = [{
44
- browserName: 'safari'
88
+ browserName: 'safari',
89
+ 'safari:options': {
90
+ // Safari requires manual driver enablement in Safari > Preferences > Advanced > "Show Develop menu"
91
+ // Ensure "Allow Remote Automation" is enabled in Develop menu
92
+ }
45
93
  }];
46
- } else if (browserName === 'ie' || browserName === 'internet explorer') {
94
+ } else if (normalizedBrowserName === 'internet explorer') {
47
95
  config.capabilities = [{
48
- browserName: 'internet explorer'
96
+ browserName: 'internet explorer',
97
+ 'se:ieOptions': {
98
+ ignoreProtectedModeSettings: true,
99
+ ignoreZoomSetting: true,
100
+ initialBrowserUrl: 'about:blank'
101
+ }
49
102
  }];
50
103
  } else {
51
104
  // Default to Chrome for unsupported browsers
@@ -57,7 +110,8 @@ module.exports = (bsCaps) => {
57
110
  }];
58
111
  }
59
112
 
60
- console.log(`🌐 Local execution configured for: ${browserName} using service: ${service}`);
113
+ console.log(`🌐 Local execution configured for: ${normalizedBrowserName} using selenium-standalone-service`);
114
+ console.log(`📦 Drivers will auto-download to node_modules/ on first run (no admin permission needed)`);
61
115
 
62
116
  return config;
63
117
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "froth-webdriverio-framework",
3
- "version": "7.0.119-dev1.4",
3
+ "version": "7.0.119-dev1.6",
4
4
  "readme": "WebdriverIO Integration",
5
5
  "description": "WebdriverIO and BrowserStack App Automate",
6
6
  "license": "MIT",
@@ -22,6 +22,7 @@
22
22
  "@wdio/cli": "9.23.0",
23
23
  "@wdio/local-runner": "9.23.0",
24
24
  "@wdio/mocha-framework": "9.23.0",
25
+ "@wdio/selenium-standalone-service": "^8.14.0",
25
26
  "@wdio/spec-reporter": "^9.20.0",
26
27
  "appium": "^3.1.2",
27
28
  "appium-uiautomator2-driver": "^6.7.8",
@@ -43,11 +44,6 @@
43
44
  "randexp": "^0.5.3",
44
45
  "ts-node": "^10.9.2",
45
46
  "typescript": "^5.9.3",
46
- "vm": "^0.1.0",
47
- "wdio-chromedriver-service": "^8.1.1",
48
- "wdio-geckodriver-service": "^5.0.2",
49
- "wdio-edgedriver-service": "^3.0.3",
50
- "wdio-iedriver-service": "^0.1.0",
51
- "wdio-safaridriver-service": "^2.1.1"
47
+ "vm": "^0.1.0"
52
48
  }
53
49
  }
package/web.conf.js ADDED
@@ -0,0 +1 @@
1
+ exports.config = require('./froth_configs/wdio.common.conf').config;