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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
77
|
-
console.log(JSON.stringify(baseCaps, null, 2));
|
|
99
|
+
envConfig = await getBrowserStackCapabilities(envConfig);
|
|
78
100
|
|
|
79
|
-
//
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
const bsOpts = capabilities['bstack:options'] || {};
|
|
115
|
+
// console.log('🟡 Raw Capabilities (Before):');
|
|
116
|
+
// console.log(JSON.stringify(baseCaps, null, 2));
|
|
86
117
|
|
|
87
|
-
|
|
88
|
-
|
|
118
|
+
// const isArray = Array.isArray(baseCaps);
|
|
119
|
+
// const capsArray = isArray ? baseCaps : [baseCaps];
|
|
89
120
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
103
|
-
console.log(JSON.stringify(bsOpts, null, 2));
|
|
126
|
+
// const mediaFiles = JSON.parse(process.env.MEDIA_FILES);
|
|
104
127
|
|
|
105
|
-
|
|
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
|
-
|
|
110
|
-
|
|
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
|
-
|
|
145
|
+
// console.log('====> Final Env Config:', JSON.stringify(envConfig, null, 2));
|
|
146
|
+
// exports.config = deepmerge(baseConfig, envConfig(bsCaps));
|
|
114
147
|
|