froth-webdriverio-framework 7.0.82 → 7.0.84

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.
@@ -47,59 +47,75 @@ console.log('====> PLATFORM NAME :', platformName);
47
47
  console.log('====> BS SESSION TYPE :', process.env.BS_SESSION_TYPE);
48
48
 
49
49
 
50
- // Export a promise for WDIO to wait
51
- exports.config = (async () => {
52
- // Wait for async setup to complete
53
- await setAllDetails.setExecutionDetails();
54
-
55
- // Determine platform
56
- const platformName = (bsCaps.platformName || 'web').toLowerCase();
57
- process.env.BS_SESSION_TYPE =
58
- platformName === 'android' || platformName === 'ios' ? 'app-automate' : 'automate';
59
- const OS = platformName === 'android' || platformName === 'ios' ? 'mobile' : 'web';
60
-
61
- // Load environment-specific config
62
- let envConfig;
63
- if (PLATFORM === 'browserstack' || PLATFORM === 'browserstacklocal') {
64
- envConfig = OS === 'web'
65
- ? require('./browserstack/web.config')
66
- : require('./browserstack/mobile.config');
67
- } else {
68
- envConfig = OS === 'web'
69
- ? require('./local/web.config')
70
- : require('./local/mobile.config');
71
- }
50
+ // --------------------
51
+ // Load environment-specific config
52
+ // --------------------
53
+ let envConfigFn;
54
+ if (PLATFORM === 'browserstack' || PLATFORM === 'browserstacklocal') {
55
+ envConfigFn = OS === 'web'
56
+ ? require('./browserstack/web.config')
57
+ : require('./browserstack/mobile.config');
58
+ } else {
59
+ envConfigFn = OS === 'web'
60
+ ? require('./local/web.config')
61
+ : require('./local/mobile.config');
62
+ }
72
63
 
73
- // Inject BrowserStack media files
74
- function getBrowserStackCapabilities(baseCaps) {
75
- const isArray = Array.isArray(baseCaps);
76
- const capsArray = isArray ? baseCaps : [baseCaps];
77
-
78
- const updatedCaps = capsArray.map((capability) => {
79
- capability['bstack:options'] = capability['bstack:options'] || {};
80
- const bsOpts = capability['bstack:options'];
81
-
82
- // Inject media from ENV variable
83
- if (process.env.MEDIA_FILES) {
84
- try {
85
- const mediaFiles = JSON.parse(process.env.MEDIA_FILES);
86
- if (Array.isArray(mediaFiles)) bsOpts.uploadMedia = mediaFiles;
87
- } catch (err) {
88
- console.error('Failed to parse BS_UPLOAD_MEDIA env variable:', err.message);
64
+ // --------------------
65
+ // Function to inject BrowserStack media files into capabilities
66
+ // --------------------
67
+ function getBrowserStackCapabilities(baseCaps) {
68
+ if (!baseCaps) return baseCaps;
69
+
70
+ const isArray = Array.isArray(baseCaps);
71
+ const capsArray = isArray ? baseCaps : [baseCaps];
72
+
73
+ const updatedCaps = capsArray.map((capability) => {
74
+ capability['bstack:options'] = capability['bstack:options'] || {};
75
+ const bsOpts = capability['bstack:options'];
76
+
77
+
78
+
79
+ // Inject media from ENV variable
80
+ const bsMediaEnv = process.env.MEDIA_FILES;
81
+ if (bsMediaEnv) {
82
+ try {
83
+ const mediaFiles = JSON.parse(bsMediaEnv);
84
+ if (Array.isArray(mediaFiles)) {
85
+ bsOpts.uploadMedia = mediaFiles;
86
+ console.log('🟢 Uploading media files from ENV:', bsOpts.uploadMedia);
89
87
  }
88
+ } catch (err) {
89
+ console.error('❌ Failed to parse BS_UPLOAD_MEDIA env variable:', err.message);
90
90
  }
91
+ }
91
92
 
92
- capability['bstack:options'] = bsOpts;
93
- return capability;
94
- });
93
+ capability['bstack:options'] = bsOpts;
94
+ return capability;
95
+ });
95
96
 
96
- return isArray ? updatedCaps : updatedCaps[0];
97
- }
97
+ return isArray ? updatedCaps : updatedCaps[0];
98
+ }
98
99
 
99
- envConfig = await getBrowserStackCapabilities(envConfig);
100
+ // --------------------
101
+ // Export WDIO config as async promise (WDIO supports this)
102
+ // --------------------
103
+ exports.config = (async () => {
104
+ // Await your async setup
105
+ await setAllDetails.setExecutionDetails();
106
+
107
+ // Get environment-specific config object
108
+ const envConfigObj = envConfigFn(bsCaps);
109
+
110
+ // Ensure capabilities exist
111
+ envConfigObj.capabilities = getBrowserStackCapabilities(envConfigObj.capabilities, bsCaps);
100
112
 
101
113
  // Merge with base config
102
- return deepmerge(baseConfig, envConfig(bsCaps));
114
+ const finalConfig = deepmerge(baseConfig, envConfigObj);
115
+
116
+ console.log('====> Final merged config ready for WDIO');
117
+
118
+ return finalConfig;
103
119
  })();
104
120
  // // --------------------
105
121
  // // Inject media files into BrowserStack capabilities
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "froth-webdriverio-framework",
3
- "version": "7.0.82",
3
+ "version": "7.0.84",
4
4
  "readme": "WebdriverIO Integration",
5
5
  "description": "WebdriverIO and BrowserStack App Automate",
6
6
  "license": "MIT",