froth-webdriverio-framework 7.0.80 → 7.0.82

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.
@@ -21,8 +21,8 @@ try {
21
21
  process.env.BROWSERSTACK_USERNAME = bsCaps.userName
22
22
  process.env.BROWSERSTACK_ACCESS_KEY = Buffer.from(bsCaps.accessKey, 'base64').toString('utf-8')
23
23
  // Merge chrome-specific options if applicable
24
- await setAllDetails.setExecutionDetails()
25
-
24
+ //await setAllDetails.setExecutionDetails()
25
+
26
26
  } catch (e) {
27
27
  console.error('❌ Failed to load capability YAML:', err.message);
28
28
  process.exit(1);
@@ -47,68 +47,101 @@ 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';
50
60
 
51
- // --------------------
52
- // Load env-specific config
53
- // --------------------
54
- if (PLATFORM === 'browserstack' || PLATFORM === 'browserstacklocal') {
55
- envConfig =
56
- OS === 'web'
61
+ // Load environment-specific config
62
+ let envConfig;
63
+ if (PLATFORM === 'browserstack' || PLATFORM === 'browserstacklocal') {
64
+ envConfig = OS === 'web'
57
65
  ? require('./browserstack/web.config')
58
66
  : require('./browserstack/mobile.config');
59
- } else {
60
- envConfig =
61
- OS === 'web'
67
+ } else {
68
+ envConfig = OS === 'web'
62
69
  ? require('./local/web.config')
63
70
  : require('./local/mobile.config');
64
- }
71
+ }
72
+
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);
89
+ }
90
+ }
65
91
 
66
- console.log('====> envConfig :', envConfig);
67
- envConfig = await getBrowserStackCapabilities(envConfig)
68
- async function getBrowserStackCapabilities(baseCaps) {
69
- if (
70
- process.env.PLATFORM !== 'browserstack' &&
71
- process.env.PLATFORM !== 'browserstacklocal'
72
- ) {
73
- return baseCaps;
92
+ capability['bstack:options'] = bsOpts;
93
+ return capability;
94
+ });
95
+
96
+ return isArray ? updatedCaps : updatedCaps[0];
74
97
  }
75
98
 
76
- console.log('🟡 Raw Capabilities (Before):');
77
- console.log(JSON.stringify(baseCaps, null, 2));
99
+ envConfig = await getBrowserStackCapabilities(envConfig);
78
100
 
79
- // Normalize to array
80
- const isArray = Array.isArray(baseCaps);
81
- const capsArray = isArray ? baseCaps : [baseCaps];
101
+ // Merge with base config
102
+ return deepmerge(baseConfig, envConfig(bsCaps));
103
+ })();
104
+ // // --------------------
105
+ // // Inject media files into BrowserStack capabilities
106
+ // // --------------------
107
+ // async function getBrowserStackCapabilities(baseCaps) {
108
+ // if (
109
+ // process.env.PLATFORM !== 'browserstack' &&
110
+ // process.env.PLATFORM !== 'browserstacklocal'
111
+ // ) {
112
+ // return baseCaps;
113
+ // }
82
114
 
83
- const updatedCaps = await Promise.all(
84
- capsArray.map(async (capabilities) => {
85
- const bsOpts = capabilities['bstack:options'] || {};
115
+ // console.log('🟡 Raw Capabilities (Before):');
116
+ // console.log(JSON.stringify(baseCaps, null, 2));
86
117
 
87
- console.log('🟢 Existing bstack:options (Before Modification):');
88
- console.log(JSON.stringify(bsOpts, null, 2));
118
+ // const isArray = Array.isArray(baseCaps);
119
+ // const capsArray = isArray ? baseCaps : [baseCaps];
89
120
 
90
- // ⚠️ NEVER assign env vars like this inside code
91
- // process.env.BS_UPLOAD_MEDIA = "..."
92
- process.env.BS_UPLOAD_MEDIA = "media://8440f686585de9b46e1c966ce764703836f918bc,media://2952ee7b9b7f0751624b0d4208d7c00b56d4e49b"
93
- if (process.env.BS_UPLOAD_MEDIA) {
94
- bsOpts.uploadMedia = process.env.BS_UPLOAD_MEDIA
95
- .split(',')
96
- .map(x => x.trim());
97
- }
98
- // capabilities['browserstack.uploadMedia'] = '{"media://8440f686585de9b46e1c966ce764703836f918bc","media://2952ee7b9b7f0751624b0d4208d7c00b56d4e49b"}'
121
+ // const updatedCaps = capsArray.map(async (capability) => {
122
+ // capability['bstack:options'] = capability['bstack:options'] || {};
123
+ // const bsOpts = capability['bstack:options'];
99
124
 
100
- capabilities['bstack:options'] = bsOpts;
101
125
 
102
- console.log('🟢 Existing bstack:options (After Modification):');
103
- console.log(JSON.stringify(bsOpts, null, 2));
126
+ // const mediaFiles = JSON.parse(process.env.MEDIA_FILES);
104
127
 
105
- return capabilities;
106
- })
107
- );
128
+ // // ✅ Inject media files from YAML if present
129
+ // if (Array.isArray(mediaFiles) && mediaFiles.length > 0) {
130
+ // bsOpts.uploadMedia = mediaFiles;
131
+ // console.log('🟢 Uploading media files:', bsOpts.uploadMedia);
132
+ // }
108
133
 
109
- // Return in original shape
110
- return isArray ? updatedCaps : updatedCaps[0];
111
- }
134
+ // capability['bstack:options'] = bsOpts;
135
+
136
+ // return capability;
137
+ // });
138
+
139
+ // // return isArray ? updatedCaps : updatedCaps[0];
140
+ // }
141
+
142
+ // // Apply media injection
143
+ // envConfig = await getBrowserStackCapabilities(envConfig, bsCaps);
112
144
 
113
- exports.config = deepmerge(baseConfig, envConfig(bsCaps));
145
+ // console.log('====> Final Env Config:', JSON.stringify(envConfig, null, 2));
146
+ // exports.config = deepmerge(baseConfig, envConfig(bsCaps));
114
147
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "froth-webdriverio-framework",
3
- "version": "7.0.80",
3
+ "version": "7.0.82",
4
4
  "readme": "WebdriverIO Integration",
5
5
  "description": "WebdriverIO and BrowserStack App Automate",
6
6
  "license": "MIT",