farm-runner 1.1.0
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.
- package/README.md +80 -0
- package/dist/src/bundle.js +1 -0
- package/dist/src/common/middleware/trace.middleware.d.ts.map +1 -0
- package/dist/src/common/middleware/trace.middleware.js +56 -0
- package/dist/src/common/middleware/trace.middleware.js.map +1 -0
- package/dist/src/scripts/prepare-wda-cli.d.ts +14 -0
- package/dist/src/scripts/prepare-wda-cli.d.ts.map +1 -0
- package/dist/src/scripts/prepare-wda-cli.js +71 -0
- package/dist/src/scripts/prepare-wda-cli.js.map +1 -0
- package/dist/src/scripts/prepare-wda.d.ts +22 -0
- package/dist/src/scripts/prepare-wda.d.ts.map +1 -0
- package/dist/src/scripts/prepare-wda.js +539 -0
- package/dist/src/scripts/prepare-wda.js.map +1 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js +394 -0
- package/dist/src/server.js.map +1 -0
- package/dist/src/services/tracingUtils.d.ts.map +1 -0
- package/dist/src/services/tracingUtils.js +73 -0
- package/dist/src/services/tracingUtils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1,539 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* WebDriverAgent (WDA) Preparation Script
|
|
4
|
+
*
|
|
5
|
+
* This script builds, signs, and packages WebDriverAgent for iOS devices.
|
|
6
|
+
* It can be run as a CLI command: `node prepare-wda`
|
|
7
|
+
*
|
|
8
|
+
* Options:
|
|
9
|
+
* --mobile-provisioning-file, -m Path to the mobile provisioning file
|
|
10
|
+
* --wda-project-path, -p Path to WebDriverAgent xcode project
|
|
11
|
+
* --platform Platform type: ios, tvos, or both (default: ios)
|
|
12
|
+
*/
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
30
|
+
var ownKeys = function(o) {
|
|
31
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
32
|
+
var ar = [];
|
|
33
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
34
|
+
return ar;
|
|
35
|
+
};
|
|
36
|
+
return ownKeys(o);
|
|
37
|
+
};
|
|
38
|
+
return function (mod) {
|
|
39
|
+
if (mod && mod.__esModule) return mod;
|
|
40
|
+
var result = {};
|
|
41
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
42
|
+
__setModuleDefault(result, mod);
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
})();
|
|
46
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
47
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.prepareWda = prepareWda;
|
|
51
|
+
const child_process_1 = require("child_process");
|
|
52
|
+
const fs_1 = __importDefault(require("fs"));
|
|
53
|
+
const http_1 = __importDefault(require("http"));
|
|
54
|
+
const https_1 = __importDefault(require("https"));
|
|
55
|
+
const os_1 = __importDefault(require("os"));
|
|
56
|
+
const path_1 = __importDefault(require("path"));
|
|
57
|
+
const util_1 = __importDefault(require("util"));
|
|
58
|
+
const form_data_1 = __importDefault(require("form-data"));
|
|
59
|
+
const node_config_1 = require("../config/node.config");
|
|
60
|
+
const execAsync = util_1.default.promisify(child_process_1.exec);
|
|
61
|
+
const WDA_BUILD_PATH = '/appium_wda_ios/Build/Products/Debug-iphoneos';
|
|
62
|
+
let bundleIdName = null;
|
|
63
|
+
let freeBundleID = null;
|
|
64
|
+
let isFreeAccount = false;
|
|
65
|
+
let customOutputFileName = null;
|
|
66
|
+
let generatedIpaPath = null;
|
|
67
|
+
/**
|
|
68
|
+
* Get Xcode major version
|
|
69
|
+
*/
|
|
70
|
+
async function getXcodeMajorVersion() {
|
|
71
|
+
const { stdout } = await execAsync('xcodebuild -version');
|
|
72
|
+
const match = stdout.match(/Xcode (\d+)\./);
|
|
73
|
+
if (!match) {
|
|
74
|
+
throw new Error('Unable to determine Xcode version');
|
|
75
|
+
}
|
|
76
|
+
return parseInt(match[1], 10);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get provisioning profile path based on Xcode version
|
|
80
|
+
*/
|
|
81
|
+
async function getProvisioningProfilePath() {
|
|
82
|
+
const xcodeVersion = await getXcodeMajorVersion();
|
|
83
|
+
if (xcodeVersion <= 15) {
|
|
84
|
+
return path_1.default.join(os_1.default.homedir(), 'Library/MobileDevice/Provisioning Profiles');
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
return path_1.default.join(os_1.default.homedir(), 'Library/Developer/Xcode/UserData/Provisioning Profiles');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Load required modules dynamically
|
|
92
|
+
*/
|
|
93
|
+
async function loadDependencies() {
|
|
94
|
+
try {
|
|
95
|
+
// Dynamic imports to handle optional dependencies
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
97
|
+
const Applesign = require('applesign');
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
99
|
+
const archiver = require('archiver');
|
|
100
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
101
|
+
const { provision } = require('ios-mobileprovision-finder');
|
|
102
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
103
|
+
const Listr = require('listr');
|
|
104
|
+
const { Observable } = await Promise.resolve().then(() => __importStar(require('rxjs')));
|
|
105
|
+
const { select, input } = await Promise.resolve().then(() => __importStar(require('@inquirer/prompts')));
|
|
106
|
+
return { Applesign, archiver, provision, Listr, Observable, select, input };
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
console.error('โ Missing required dependencies for prepare-wda command.');
|
|
110
|
+
console.error('Please install them:');
|
|
111
|
+
console.error(' npm install applesign archiver ios-mobileprovision-finder listr rxjs @inquirer/prompts');
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get mobile provisioning file (interactive selection if not provided)
|
|
117
|
+
*/
|
|
118
|
+
async function getMobileProvisioningFile(provision, select, mobileProvisioningFile) {
|
|
119
|
+
if (mobileProvisioningFile) {
|
|
120
|
+
if (!fs_1.default.existsSync(mobileProvisioningFile) || !fs_1.default.statSync(mobileProvisioningFile).isFile()) {
|
|
121
|
+
throw new Error(`Mobile provisioning file ${mobileProvisioningFile} does not exist`);
|
|
122
|
+
}
|
|
123
|
+
return mobileProvisioningFile;
|
|
124
|
+
}
|
|
125
|
+
const provisionFileDir = await getProvisioningProfilePath();
|
|
126
|
+
if (!fs_1.default.existsSync(provisionFileDir)) {
|
|
127
|
+
throw new Error(`Provisioning directory does not exist: ${provisionFileDir}`);
|
|
128
|
+
}
|
|
129
|
+
const files = fs_1.default
|
|
130
|
+
.readdirSync(provisionFileDir, { encoding: 'utf8' })
|
|
131
|
+
.filter(file => file.endsWith('.mobileprovision'));
|
|
132
|
+
const provisioningFiles = files.map(file => {
|
|
133
|
+
const fullPath = path_1.default.join(provisionFileDir, file);
|
|
134
|
+
const mp = provision.readFromFile(fullPath);
|
|
135
|
+
return { ...mp, _filePath: fullPath };
|
|
136
|
+
});
|
|
137
|
+
if (!provisioningFiles || !provisioningFiles.length) {
|
|
138
|
+
throw new Error('No mobileprovision file found on the machine');
|
|
139
|
+
}
|
|
140
|
+
const prompt = await select({
|
|
141
|
+
message: 'Select the mobileprovision to use for signing',
|
|
142
|
+
choices: provisioningFiles.map(file => ({
|
|
143
|
+
value: file.UUID,
|
|
144
|
+
name: `${file.Name.split(':')[1] || file.Name} (Team: ${file.TeamName}) (${file.UUID})`,
|
|
145
|
+
})),
|
|
146
|
+
});
|
|
147
|
+
isFreeAccount = await select({
|
|
148
|
+
message: 'Is this a free or enterprise account provisioning profile?',
|
|
149
|
+
choices: [
|
|
150
|
+
{ value: true, name: 'Free Account' },
|
|
151
|
+
{ value: false, name: 'Enterprise Account' },
|
|
152
|
+
],
|
|
153
|
+
});
|
|
154
|
+
if (isFreeAccount) {
|
|
155
|
+
bundleIdName = provisioningFiles.map(file => ({
|
|
156
|
+
uuid: file.UUID,
|
|
157
|
+
name: `${file.Name.split(':')[1] || file.Name}`,
|
|
158
|
+
}));
|
|
159
|
+
}
|
|
160
|
+
freeBundleID = bundleIdName?.find(d => d.uuid === prompt) || null;
|
|
161
|
+
return path_1.default.join(await getProvisioningProfilePath(), `${prompt}.mobileprovision`);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get WebDriverAgent project path
|
|
165
|
+
*/
|
|
166
|
+
async function getWdaProject(wdaProjectPath) {
|
|
167
|
+
if (wdaProjectPath) {
|
|
168
|
+
if (!fs_1.default.existsSync(wdaProjectPath) || !fs_1.default.statSync(wdaProjectPath).isDirectory()) {
|
|
169
|
+
throw new Error(`Unable to find webdriver agent project in path ${wdaProjectPath}`);
|
|
170
|
+
}
|
|
171
|
+
return wdaProjectPath;
|
|
172
|
+
}
|
|
173
|
+
try {
|
|
174
|
+
const { stdout } = await execAsync('find $HOME/.appium -name WebDriverAgent.xcodeproj');
|
|
175
|
+
const projectPath = stdout.trim().split('\n')[0];
|
|
176
|
+
if (!projectPath) {
|
|
177
|
+
throw new Error('WebDriverAgent.xcodeproj not found');
|
|
178
|
+
}
|
|
179
|
+
return path_1.default.dirname(projectPath);
|
|
180
|
+
}
|
|
181
|
+
catch (err) {
|
|
182
|
+
throw new Error('Unable to find WebDriverAgent project');
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Build WebDriverAgent
|
|
187
|
+
*/
|
|
188
|
+
async function buildWebDriverAgent(projectDir, logger, _bundleId) {
|
|
189
|
+
try {
|
|
190
|
+
let buildCommand = 'xcodebuild clean build-for-testing -project WebDriverAgent.xcodeproj -derivedDataPath appium_wda_ios -scheme WebDriverAgentRunner -destination generic/platform=iOS CODE_SIGNING_ALLOWED=NO';
|
|
191
|
+
if (isFreeAccount && freeBundleID) {
|
|
192
|
+
buildCommand += ` PRODUCT_BUNDLE_IDENTIFIER=${freeBundleID.name.replace(/^\s+|\s+$/g, '')}`;
|
|
193
|
+
}
|
|
194
|
+
logger(buildCommand);
|
|
195
|
+
await execAsync(buildCommand, { cwd: projectDir, maxBuffer: 1024 * 1024 * 100 });
|
|
196
|
+
return `${projectDir}/${WDA_BUILD_PATH}/WebDriverAgentRunner-Runner.app`;
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
console.error(error);
|
|
200
|
+
throw new Error(`โ Error building WebDriverAgent: ${error?.message}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Zip payload directory
|
|
205
|
+
*/
|
|
206
|
+
async function zipPayloadDirectory(archiver, outputZipPath, folderPath, observer) {
|
|
207
|
+
return new Promise((resolve, reject) => {
|
|
208
|
+
const output = fs_1.default.createWriteStream(outputZipPath);
|
|
209
|
+
const archive = archiver('zip', { zlib: { level: 9 } });
|
|
210
|
+
output.on('close', () => {
|
|
211
|
+
observer.next(`Zipped ${archive.pointer()} total bytes`);
|
|
212
|
+
observer.next(`Archive has been written to ${outputZipPath}`);
|
|
213
|
+
resolve();
|
|
214
|
+
});
|
|
215
|
+
archive.on('error', (err) => {
|
|
216
|
+
reject(err);
|
|
217
|
+
});
|
|
218
|
+
archive.pipe(output);
|
|
219
|
+
archive.directory(folderPath, 'Payload');
|
|
220
|
+
archive.finalize();
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Upload WDA IPA to hub
|
|
225
|
+
*/
|
|
226
|
+
async function uploadWdaToHub(hubUrl, authHeader, ipaPath, bundleId, setAsDefault = false) {
|
|
227
|
+
return new Promise((resolve, reject) => {
|
|
228
|
+
const url = new URL('/api/wda/upload', hubUrl);
|
|
229
|
+
const client = url.protocol === 'https:' ? https_1.default : http_1.default;
|
|
230
|
+
const form = new form_data_1.default();
|
|
231
|
+
form.append('file', fs_1.default.createReadStream(ipaPath));
|
|
232
|
+
form.append('bundleId', bundleId);
|
|
233
|
+
form.append('setAsDefault', setAsDefault.toString());
|
|
234
|
+
const headers = {
|
|
235
|
+
...form.getHeaders(),
|
|
236
|
+
Authorization: authHeader,
|
|
237
|
+
};
|
|
238
|
+
const req = client.request({
|
|
239
|
+
method: 'POST',
|
|
240
|
+
hostname: url.hostname,
|
|
241
|
+
port: url.port,
|
|
242
|
+
path: url.pathname,
|
|
243
|
+
headers,
|
|
244
|
+
}, res => {
|
|
245
|
+
let data = '';
|
|
246
|
+
res.on('data', chunk => (data += chunk));
|
|
247
|
+
res.on('end', () => {
|
|
248
|
+
if (res.statusCode === 200 || res.statusCode === 201) {
|
|
249
|
+
try {
|
|
250
|
+
const response = JSON.parse(data);
|
|
251
|
+
resolve({
|
|
252
|
+
success: true,
|
|
253
|
+
message: 'WDA uploaded successfully',
|
|
254
|
+
wdaId: response.wda?.id,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
resolve({ success: true, message: 'WDA uploaded successfully' });
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
resolve({ success: false, message: `Upload failed: HTTP ${res.statusCode}` });
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
req.on('error', error => {
|
|
267
|
+
reject(error);
|
|
268
|
+
});
|
|
269
|
+
form.pipe(req);
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Check if hub server is running
|
|
274
|
+
*/
|
|
275
|
+
async function isHubRunning(hubUrl) {
|
|
276
|
+
return new Promise(resolve => {
|
|
277
|
+
const url = new URL('/health', hubUrl);
|
|
278
|
+
const client = url.protocol === 'https:' ? https_1.default : http_1.default;
|
|
279
|
+
const req = client.get(url.href, { timeout: 3000 }, res => {
|
|
280
|
+
resolve(res.statusCode === 200);
|
|
281
|
+
});
|
|
282
|
+
req.on('error', () => resolve(false));
|
|
283
|
+
req.on('timeout', () => {
|
|
284
|
+
req.destroy();
|
|
285
|
+
resolve(false);
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Main function to prepare WDA
|
|
291
|
+
*/
|
|
292
|
+
async function prepareWda(options) {
|
|
293
|
+
console.log('๐ Starting WebDriverAgent preparation...\n');
|
|
294
|
+
const { Applesign, archiver, provision, Listr, Observable, select, input } = await loadDependencies();
|
|
295
|
+
const mobileProvisioningFile = await getMobileProvisioningFile(provision, select, options.mobileProvisioningFile);
|
|
296
|
+
const platform = options.platform || 'ios';
|
|
297
|
+
// Ask user for custom output filename
|
|
298
|
+
const defaultFileName = platform === 'tvos' ? 'wda-resign_tvos' : 'wda-resign';
|
|
299
|
+
customOutputFileName = await input({
|
|
300
|
+
message: 'Enter output filename (without .ipa extension):',
|
|
301
|
+
default: defaultFileName,
|
|
302
|
+
});
|
|
303
|
+
const tasks = new Listr([
|
|
304
|
+
{
|
|
305
|
+
title: '๐ Searching for WebDriverAgent.xcodeproj',
|
|
306
|
+
task: async (context, task) => {
|
|
307
|
+
context.wdaProjectPath = await getWdaProject(options.wdaProjectPath);
|
|
308
|
+
task.title = `Found WebDriverAgent.xcodeproj at: ${context.wdaProjectPath}`;
|
|
309
|
+
},
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
title: '๐๏ธ Building WebDriverAgent',
|
|
313
|
+
task: (context, task) => {
|
|
314
|
+
return new Observable((observer) => {
|
|
315
|
+
buildWebDriverAgent(context.wdaProjectPath, observer.next.bind(observer))
|
|
316
|
+
.then(wdaAppPath => {
|
|
317
|
+
context.wdaAppPath = wdaAppPath;
|
|
318
|
+
task.title = 'Successfully built WebDriverAgent';
|
|
319
|
+
observer.complete();
|
|
320
|
+
})
|
|
321
|
+
.catch((err) => {
|
|
322
|
+
observer.error(err);
|
|
323
|
+
});
|
|
324
|
+
});
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
title: '๐ฆ Preparing WebDriverAgent IPA',
|
|
329
|
+
task: (context) => {
|
|
330
|
+
return new Observable((observer) => {
|
|
331
|
+
const wdaBuildPath = path_1.default.join(context.wdaProjectPath, WDA_BUILD_PATH);
|
|
332
|
+
const payloadDirectory = path_1.default.join(wdaBuildPath, 'Payload');
|
|
333
|
+
observer.next('Removing framework directory');
|
|
334
|
+
const frameworksPath = `${context.wdaAppPath}/Frameworks`;
|
|
335
|
+
if (fs_1.default.existsSync(frameworksPath)) {
|
|
336
|
+
fs_1.default.readdirSync(frameworksPath).forEach(f => fs_1.default.rmSync(`${frameworksPath}/${f}`, { recursive: true }));
|
|
337
|
+
}
|
|
338
|
+
const infoPlistPath = path_1.default.join(context.wdaAppPath, 'Info.plist');
|
|
339
|
+
const bundleId = freeBundleID?.name.replace(/^\s+|\s+$/g, '') || '';
|
|
340
|
+
// Read and update Info.plist
|
|
341
|
+
if (fs_1.default.existsSync(infoPlistPath) && bundleId) {
|
|
342
|
+
let infoPlistContent = fs_1.default.readFileSync(infoPlistPath, 'utf8');
|
|
343
|
+
infoPlistContent = infoPlistContent.replace(/<key>CFBundleIdentifier<\/key>\n\s*<string>(.*?)<\/string>/, `<key>CFBundleIdentifier</key>\n<string>${bundleId}</string>`);
|
|
344
|
+
fs_1.default.writeFileSync(infoPlistPath, infoPlistContent, 'utf8');
|
|
345
|
+
}
|
|
346
|
+
observer.next('Creating Payload directory');
|
|
347
|
+
execAsync(`mkdir -p ${payloadDirectory}`)
|
|
348
|
+
.then(() => {
|
|
349
|
+
observer.next('Payload directory created successfully');
|
|
350
|
+
})
|
|
351
|
+
.then(() => {
|
|
352
|
+
observer.next('๐ Moving .app file to Payload directory...');
|
|
353
|
+
return execAsync(`mv ${context.wdaAppPath} ${payloadDirectory}`);
|
|
354
|
+
})
|
|
355
|
+
.then(() => {
|
|
356
|
+
observer.next('Packing Payload directory...');
|
|
357
|
+
return zipPayloadDirectory(archiver, `${wdaBuildPath}/wda-resign.zip`, payloadDirectory, observer);
|
|
358
|
+
})
|
|
359
|
+
.then(() => observer.complete())
|
|
360
|
+
.catch((err) => {
|
|
361
|
+
observer.error(err);
|
|
362
|
+
});
|
|
363
|
+
});
|
|
364
|
+
},
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
title: 'โ๏ธ Signing WebDriverAgent IPA',
|
|
368
|
+
task: async (context, task) => {
|
|
369
|
+
const wdaBuildPath = path_1.default.join(context.wdaProjectPath, WDA_BUILD_PATH);
|
|
370
|
+
if (platform === 'both') {
|
|
371
|
+
const platforms = ['ios', 'tvos'];
|
|
372
|
+
const results = [];
|
|
373
|
+
for (const p of platforms) {
|
|
374
|
+
const wdaFileName = p === 'tvos' ? `${customOutputFileName}_tvos.ipa` : `${customOutputFileName}.ipa`;
|
|
375
|
+
const ipaPath = `${wdaBuildPath}/${wdaFileName}`;
|
|
376
|
+
const appleOptions = {
|
|
377
|
+
mobileprovision: mobileProvisioningFile,
|
|
378
|
+
outfile: ipaPath,
|
|
379
|
+
};
|
|
380
|
+
if (freeBundleID) {
|
|
381
|
+
appleOptions.bundleId = freeBundleID.name.replace(/^\s+|\s+$/g, '');
|
|
382
|
+
}
|
|
383
|
+
const as = new Applesign(appleOptions);
|
|
384
|
+
await as.signIPA(path_1.default.join(wdaBuildPath, 'wda-resign.zip'));
|
|
385
|
+
results.push(`${p}: ${ipaPath}`);
|
|
386
|
+
// Store the iOS IPA path for deployment
|
|
387
|
+
if (p === 'ios') {
|
|
388
|
+
generatedIpaPath = ipaPath;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
task.title = `Successfully signed WebDriverAgent files for both platforms: ${results.join(', ')}`;
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
const wdaFileName = `${customOutputFileName}.ipa`;
|
|
395
|
+
const ipaPath = `${wdaBuildPath}/${wdaFileName}`;
|
|
396
|
+
const appleOptions = {
|
|
397
|
+
mobileprovision: mobileProvisioningFile,
|
|
398
|
+
outfile: ipaPath,
|
|
399
|
+
};
|
|
400
|
+
if (freeBundleID) {
|
|
401
|
+
appleOptions.bundleId = freeBundleID.name.replace(/^\s+|\s+$/g, '');
|
|
402
|
+
}
|
|
403
|
+
const as = new Applesign(appleOptions);
|
|
404
|
+
await as.signIPA(path_1.default.join(wdaBuildPath, 'wda-resign.zip'));
|
|
405
|
+
generatedIpaPath = ipaPath;
|
|
406
|
+
task.title = `Successfully signed WebDriverAgent file for ${platform}: ${ipaPath}`;
|
|
407
|
+
}
|
|
408
|
+
},
|
|
409
|
+
},
|
|
410
|
+
], { exitOnError: true });
|
|
411
|
+
await tasks.run();
|
|
412
|
+
console.log('\nโ
WebDriverAgent preparation complete!\n');
|
|
413
|
+
// Get hub URL and credentials from config
|
|
414
|
+
const config = (0, node_config_1.getMergedConfig)();
|
|
415
|
+
const hubUrl = config.hubUrl;
|
|
416
|
+
const accessKey = config.accessKey;
|
|
417
|
+
const secretToken = config.token;
|
|
418
|
+
if (!hubUrl || !accessKey || !secretToken) {
|
|
419
|
+
console.log('โ ๏ธ Hub URL or credentials not configured in node.config.json');
|
|
420
|
+
console.log(' Please configure hubUrl, accessKey, and token to upload WDA to hub.\n');
|
|
421
|
+
console.log(`๐ WDA IPA file created locally: ${generatedIpaPath}\n`);
|
|
422
|
+
}
|
|
423
|
+
else {
|
|
424
|
+
// Check if hub is running
|
|
425
|
+
const hubRunning = await isHubRunning(hubUrl);
|
|
426
|
+
if (!hubRunning) {
|
|
427
|
+
console.log('โ ๏ธ Hub server is not running or not reachable');
|
|
428
|
+
console.log(` Hub URL: ${hubUrl}\n`);
|
|
429
|
+
console.log(`๐ WDA IPA file created locally: ${generatedIpaPath}\n`);
|
|
430
|
+
}
|
|
431
|
+
else {
|
|
432
|
+
// Offer to upload to hub
|
|
433
|
+
console.log('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
|
|
434
|
+
console.log('๐ Hub server detected! Upload WDA to hub?');
|
|
435
|
+
console.log('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n');
|
|
436
|
+
const shouldUpload = await select({
|
|
437
|
+
message: 'Would you like to upload WDA to the hub?',
|
|
438
|
+
choices: [
|
|
439
|
+
{ value: true, name: 'Yes, upload to hub' },
|
|
440
|
+
{ value: false, name: 'No, keep local only' },
|
|
441
|
+
],
|
|
442
|
+
});
|
|
443
|
+
if (shouldUpload) {
|
|
444
|
+
// Ask if this should be the default WDA
|
|
445
|
+
const setAsDefault = await select({
|
|
446
|
+
message: 'Set this as the default WDA for the platform?',
|
|
447
|
+
choices: [
|
|
448
|
+
{ value: true, name: 'Yes, set as default' },
|
|
449
|
+
{ value: false, name: 'No, upload as alternative' },
|
|
450
|
+
],
|
|
451
|
+
});
|
|
452
|
+
const basicAuth = Buffer.from(`${accessKey}:${secretToken}`).toString('base64');
|
|
453
|
+
const authHeader = `Basic ${basicAuth}`;
|
|
454
|
+
// Get bundle ID from free account or prompt
|
|
455
|
+
const bundleId = freeBundleID?.name.replace(/^\s+|\s+$/g, '') || 'com.facebook.WebDriverAgentRunner';
|
|
456
|
+
console.log('\n๐ค Uploading WDA to hub...');
|
|
457
|
+
console.log(` Hub URL: ${hubUrl}`);
|
|
458
|
+
console.log(` Bundle ID: ${bundleId}`);
|
|
459
|
+
console.log(` Set as default: ${setAsDefault ? 'Yes' : 'No'}\n`);
|
|
460
|
+
try {
|
|
461
|
+
if (!generatedIpaPath || !fs_1.default.existsSync(generatedIpaPath)) {
|
|
462
|
+
throw new Error('Generated IPA file not found');
|
|
463
|
+
}
|
|
464
|
+
const result = await uploadWdaToHub(hubUrl, authHeader, generatedIpaPath, bundleId, setAsDefault);
|
|
465
|
+
if (result.success) {
|
|
466
|
+
console.log('โ
WDA uploaded successfully to hub!');
|
|
467
|
+
if (result.wdaId) {
|
|
468
|
+
console.log(` WDA ID: ${result.wdaId}`);
|
|
469
|
+
console.log(` Set as default: ${setAsDefault ? 'Yes' : 'No'}\n`);
|
|
470
|
+
// Store WDA ID for later use
|
|
471
|
+
generatedIpaPath = result.wdaId; // Reuse variable to pass WDA ID
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
console.log(`โ Failed to upload WDA: ${result.message}\n`);
|
|
476
|
+
console.log(`๐ WDA IPA file is still available locally: ${generatedIpaPath}\n`);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
catch (uploadError) {
|
|
480
|
+
console.log(`โ Upload error: ${uploadError.message}\n`);
|
|
481
|
+
console.log(`๐ WDA IPA file is still available locally: ${generatedIpaPath}\n`);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
console.log(`\n๐ WDA IPA file created locally: ${generatedIpaPath}\n`);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
// Print post-installation instructions
|
|
490
|
+
console.log('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
|
|
491
|
+
console.log('๐ฑ Next Steps: Install and Trust WebDriverAgent on your device');
|
|
492
|
+
console.log('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n');
|
|
493
|
+
console.log('1๏ธโฃ Install the signed WDA IPA on your iOS device:');
|
|
494
|
+
console.log(' Using Xcode:');
|
|
495
|
+
console.log(' โข Open Xcode โ Window โ Devices and Simulators');
|
|
496
|
+
console.log(' โข Select your device โ Click "+" under "Installed Apps"');
|
|
497
|
+
console.log(` โข Select: ${generatedIpaPath}\n`);
|
|
498
|
+
console.log(' Using xcrun devicectl (recommended):');
|
|
499
|
+
console.log(' $ xcrun devicectl device install app --device <udid> <path-to-wda.ipa>\n');
|
|
500
|
+
console.log('2๏ธโฃ Trust the developer certificate on your iOS device:');
|
|
501
|
+
console.log(' โข Go to Settings โ General โ VPN & Device Management');
|
|
502
|
+
console.log(' โข Under "Developer App", tap on your developer/team name');
|
|
503
|
+
console.log(' โข Tap "Trust <Developer Name>" and confirm\n');
|
|
504
|
+
console.log('3๏ธโฃ Verify WDA is installed:');
|
|
505
|
+
console.log(' โข Look for "WebDriverAgentRunner" app on your device');
|
|
506
|
+
console.log(' โข The app icon may be blank/white - this is normal\n');
|
|
507
|
+
// Check if WDA was uploaded to hub (generatedIpaPath will contain WDA ID if uploaded)
|
|
508
|
+
const isWdaId = generatedIpaPath && generatedIpaPath.length === 36 && generatedIpaPath.includes('-');
|
|
509
|
+
if (isWdaId) {
|
|
510
|
+
console.log('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
|
|
511
|
+
console.log('๐งช Use WDA in Your Test Automation');
|
|
512
|
+
console.log('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n');
|
|
513
|
+
console.log('Add this capability to your test configuration:\n');
|
|
514
|
+
console.log('JavaScript/WebdriverIO:');
|
|
515
|
+
console.log(' const capabilities = {');
|
|
516
|
+
console.log(" platformName: 'iOS',");
|
|
517
|
+
console.log(" 'appium:automationName': 'XCUITest',");
|
|
518
|
+
console.log(` 'df:wdaID': '${generatedIpaPath}',`);
|
|
519
|
+
console.log(" 'df:runsOn': 'real' // or 'simulated' for simulators");
|
|
520
|
+
console.log(' };\n');
|
|
521
|
+
console.log('Python:');
|
|
522
|
+
console.log(' desired_caps = {');
|
|
523
|
+
console.log(" 'platformName': 'iOS',");
|
|
524
|
+
console.log(" 'appium:automationName': 'XCUITest',");
|
|
525
|
+
console.log(` 'df:wdaID': '${generatedIpaPath}',`);
|
|
526
|
+
console.log(" 'df:runsOn': 'real' # or 'simulated' for simulators");
|
|
527
|
+
console.log(' }\n');
|
|
528
|
+
console.log('Java:');
|
|
529
|
+
console.log(' DesiredCapabilities capabilities = new DesiredCapabilities();');
|
|
530
|
+
console.log(' capabilities.setCapability("platformName", "iOS");');
|
|
531
|
+
console.log(' capabilities.setCapability("appium:automationName", "XCUITest");');
|
|
532
|
+
console.log(` capabilities.setCapability("df:wdaID", "${generatedIpaPath}");`);
|
|
533
|
+
console.log(' capabilities.setCapability("df:runsOn", "real"); // or "simulated"\n');
|
|
534
|
+
}
|
|
535
|
+
console.log('๐ก Tip: For free Apple Developer accounts, the certificate expires');
|
|
536
|
+
console.log(' after 7 days. You will need to re-sign and reinstall WDA.\n');
|
|
537
|
+
console.log('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
|
|
538
|
+
}
|
|
539
|
+
//# sourceMappingURL=prepare-wda.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-wda.js","sourceRoot":"","sources":["../../../src/scripts/prepare-wda.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":""}
|