@testingbot/cli 1.0.6 → 1.0.8

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.
Files changed (45) hide show
  1. package/README.md +25 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +79 -50
  4. package/dist/config/constants.d.ts +15 -0
  5. package/dist/config/constants.d.ts.map +1 -0
  6. package/dist/config/constants.js +17 -0
  7. package/dist/index.js +2 -0
  8. package/dist/models/espresso_options.d.ts +11 -4
  9. package/dist/models/espresso_options.d.ts.map +1 -1
  10. package/dist/models/espresso_options.js +24 -7
  11. package/dist/models/maestro_options.d.ts +13 -3
  12. package/dist/models/maestro_options.d.ts.map +1 -1
  13. package/dist/models/maestro_options.js +25 -2
  14. package/dist/models/xcuitest_options.d.ts +11 -4
  15. package/dist/models/xcuitest_options.d.ts.map +1 -1
  16. package/dist/models/xcuitest_options.js +24 -7
  17. package/dist/providers/base_provider.d.ts +28 -2
  18. package/dist/providers/base_provider.d.ts.map +1 -1
  19. package/dist/providers/base_provider.js +70 -2
  20. package/dist/providers/espresso.d.ts +1 -0
  21. package/dist/providers/espresso.d.ts.map +1 -1
  22. package/dist/providers/espresso.js +82 -35
  23. package/dist/providers/maestro.d.ts +21 -0
  24. package/dist/providers/maestro.d.ts.map +1 -1
  25. package/dist/providers/maestro.js +320 -72
  26. package/dist/providers/xcuitest.d.ts +1 -0
  27. package/dist/providers/xcuitest.d.ts.map +1 -1
  28. package/dist/providers/xcuitest.js +79 -35
  29. package/dist/ui/banner.d.ts +3 -0
  30. package/dist/ui/banner.d.ts.map +1 -0
  31. package/dist/ui/banner.js +82 -0
  32. package/dist/ui/spinner.d.ts +32 -0
  33. package/dist/ui/spinner.d.ts.map +1 -0
  34. package/dist/ui/spinner.js +92 -0
  35. package/dist/ui/terminal-title.d.ts +8 -0
  36. package/dist/ui/terminal-title.d.ts.map +1 -0
  37. package/dist/ui/terminal-title.js +57 -0
  38. package/dist/upload.d.ts +4 -0
  39. package/dist/upload.d.ts.map +1 -1
  40. package/dist/upload.js +70 -12
  41. package/dist/utils/connectivity.js +5 -3
  42. package/dist/utils.d.ts +6 -0
  43. package/dist/utils.d.ts.map +1 -1
  44. package/dist/utils.js +10 -0
  45. package/package.json +5 -3
package/README.md CHANGED
@@ -113,6 +113,7 @@ testingbot maestro <app> <flows...> [options]
113
113
  | `--include-tags <tags>` | Only run flows with these tags (comma-separated) |
114
114
  | `--exclude-tags <tags>` | Exclude flows with these tags (comma-separated) |
115
115
  | `-e, --env <KEY=VALUE>` | Environment variable for flows (can be repeated) |
116
+ | `--config <path>` | Path to a custom Maestro config file (default: config.yaml in project root) |
116
117
  | `--maestro-version <version>` | Maestro version to use (e.g., "2.0.10") |
117
118
 
118
119
  **Network & Location:**
@@ -122,6 +123,13 @@ testingbot maestro <app> <flows...> [options]
122
123
  | `--throttle-network <speed>` | Network throttling: 4G, 3G, Edge, airplane, or disable |
123
124
  | `--geo-country-code <code>` | Geographic IP location (ISO country code, e.g., "US", "DE") |
124
125
 
126
+ **Tunnel:**
127
+
128
+ | Option | Description |
129
+ |--------|-------------|
130
+ | `-t, --tunnel` | Start a TestingBot tunnel for this test run (cannot be combined with `--async`) |
131
+ | `--tunnel-identifier <id>` | Identifier for the tunnel, allowing multiple tunnels in parallel |
132
+
125
133
  **Output Options:**
126
134
 
127
135
  | Option | Description |
@@ -176,6 +184,9 @@ testingbot maestro app.apk ./flows --download-artifacts --build "build-123"
176
184
  # Download artifacts only for failed tests
177
185
  testingbot maestro app.apk ./flows --download-artifacts failed --artifacts-output-dir ./artifacts
178
186
 
187
+ # Use a custom config file
188
+ testingbot maestro app.apk ./flows --config .maestro/ci-config.yaml
189
+
179
190
  # Run in background (async)
180
191
  testingbot maestro app.apk ./flows --async
181
192
 
@@ -246,6 +257,13 @@ testingbot espresso [appFile] [testAppFile] [options]
246
257
  | `--throttle-network <speed>` | Network throttling: 4G, 3G, Edge, or airplane |
247
258
  | `--geo-location <code>` | Geographic IP location (ISO country code, e.g., "US", "DE") |
248
259
 
260
+ **Tunnel:**
261
+
262
+ | Option | Description |
263
+ |--------|-------------|
264
+ | `-t, --tunnel` | Start a TestingBot tunnel for this test run (cannot be combined with `--async`) |
265
+ | `--tunnel-identifier <id>` | Identifier for the tunnel, allowing multiple tunnels in parallel |
266
+
249
267
  **Output Options:**
250
268
 
251
269
  | Option | Description |
@@ -339,6 +357,13 @@ testingbot xcuitest [appFile] [testAppFile] [options]
339
357
  | `--throttle-network <speed>` | Network throttling: 4G, 3G, Edge, or airplane |
340
358
  | `--geo-location <code>` | Geographic IP location (ISO country code, e.g., "US", "DE") |
341
359
 
360
+ **Tunnel:**
361
+
362
+ | Option | Description |
363
+ |--------|-------------|
364
+ | `-t, --tunnel` | Start a TestingBot tunnel for this test run (cannot be combined with `--async`) |
365
+ | `--tunnel-identifier <id>` | Identifier for the tunnel, allowing multiple tunnels in parallel |
366
+
342
367
  **Output Options:**
343
368
 
344
369
  | Option | Description |
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA4lB9B,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA2oB9B,eAAe,OAAO,CAAC"}
package/dist/cli.js CHANGED
@@ -53,7 +53,7 @@ program
53
53
  .name('testingbot')
54
54
  .version(package_json_1.default.version, '-v, --version', 'Show version number')
55
55
  .description('CLI tool to run Espresso, XCUITest and Maestro tests on TestingBot cloud');
56
- const espressoCommand = program
56
+ program
57
57
  .command('espresso')
58
58
  .description('Run Espresso tests on TestingBot.')
59
59
  .argument('[appFile]', 'Path to application APK file')
@@ -84,13 +84,16 @@ const espressoCommand = program
84
84
  // Localization
85
85
  .option('--language <lang>', 'App language (ISO 639-1 code, e.g., "en", "fr", "de").')
86
86
  // Geolocation
87
- .option('--geo-location <code>', 'Geographic IP location (ISO country code, e.g., "US", "DE").')
87
+ .option('--geo-country-code <code>', 'Geographic IP location (ISO country code, e.g., "US", "DE").')
88
88
  // Network throttling
89
89
  .option('--throttle-network <speed>', 'Network throttling: 4G, 3G, Edge, or airplane.', (val) => val)
90
90
  // Execution mode
91
91
  .option('-q, --quiet', 'Quieter console output without progress updates.')
92
92
  .option('--async', 'Start tests and exit immediately without waiting for results.')
93
93
  .option('--dry-run', 'Validate and prepare everything but skip HTTP calls. Shows what would be sent.')
94
+ // Tunnel
95
+ .option('-t, --tunnel', 'Start a TestingBot tunnel for this test run.')
96
+ .option('--tunnel-identifier <id>', 'Identifier for the tunnel (allows multiple tunnels).')
94
97
  // Report options
95
98
  .option('--report <format>', 'Download test report after completion: html or junit.', (val) => val.toLowerCase())
96
99
  .option('--report-output-dir <path>', 'Directory to save test reports (required when --report is used).')
@@ -107,9 +110,24 @@ const espressoCommand = program
107
110
  // Positional arguments take precedence, fall back to options
108
111
  const app = appFileArg || args.app;
109
112
  const testApp = testAppFileArg || args.testApp;
110
- if (!app || !testApp) {
111
- espressoCommand.help();
112
- return;
113
+ const missing = [];
114
+ if (!app)
115
+ missing.push('<appFile> or --app');
116
+ if (!testApp)
117
+ missing.push('<testAppFile> or --test-app');
118
+ if (missing.length > 0) {
119
+ throw new testingbot_error_1.default(`Missing required argument: ${missing.join(', ')}. Run "testingbot espresso --help" for usage.`);
120
+ }
121
+ const credentials = await auth_1.default.getCredentials({
122
+ apiKey: args.apiKey,
123
+ apiSecret: args.apiSecret,
124
+ });
125
+ if (credentials === null) {
126
+ throw new testingbot_error_1.default('No TestingBot credentials found. Please authenticate using one of these methods:\n' +
127
+ ' 1. Run "testingbot login" to authenticate via browser (recommended)\n' +
128
+ ' 2. Use --api-key and --api-secret options\n' +
129
+ ' 3. Set TB_KEY and TB_SECRET environment variables\n' +
130
+ ' 4. Create ~/.testingbot file with content: key:secret');
113
131
  }
114
132
  const metadata = args.commitSha || args.pullRequestId || args.repoName || args.repoOwner
115
133
  ? {
@@ -137,8 +155,10 @@ const espressoCommand = program
137
155
  language: args.language,
138
156
  locale: args.locale,
139
157
  timeZone: args.timezone,
140
- geoLocation: args.geoLocation,
158
+ geoCountryCode: args.geoCountryCode,
141
159
  throttleNetwork: args.throttleNetwork,
160
+ tunnel: args.tunnel,
161
+ tunnelIdentifier: args.tunnelIdentifier,
142
162
  quiet: args.quiet,
143
163
  async: args.async,
144
164
  dryRun: args.dryRun,
@@ -146,17 +166,6 @@ const espressoCommand = program
146
166
  reportOutputDir: args.reportOutputDir,
147
167
  metadata,
148
168
  });
149
- const credentials = await auth_1.default.getCredentials({
150
- apiKey: args.apiKey,
151
- apiSecret: args.apiSecret,
152
- });
153
- if (credentials === null) {
154
- throw new testingbot_error_1.default('No TestingBot credentials found. Please authenticate using one of these methods:\n' +
155
- ' 1. Run "testingbot login" to authenticate via browser (recommended)\n' +
156
- ' 2. Use --api-key and --api-secret options\n' +
157
- ' 3. Set TB_KEY and TB_SECRET environment variables\n' +
158
- ' 4. Create ~/.testingbot file with content: key:secret');
159
- }
160
169
  const espresso = new espresso_1.default(credentials, options);
161
170
  const result = await espresso.run();
162
171
  if (!result.success) {
@@ -169,7 +178,7 @@ const espressoCommand = program
169
178
  }
170
179
  })
171
180
  .showHelpAfterError(true);
172
- const maestroCommand = program
181
+ program
173
182
  .command('maestro')
174
183
  .description('Run Maestro flows on TestingBot.')
175
184
  .argument('[appFile]', 'Path to application under test (.apk, .ipa, .app or .zip)')
@@ -198,13 +207,17 @@ const maestroCommand = program
198
207
  return acc;
199
208
  }, [])
200
209
  // Maestro configuration
210
+ .option('--config <path>', 'Path to a custom Maestro config file (default: config.yaml in project root).')
201
211
  .option('--maestro-version <version>', 'Maestro version to use (e.g., "2.0.10").')
202
212
  // Execution mode
203
213
  .option('-q, --quiet', 'Quieter console output without progress updates.')
204
214
  .option('--async', 'Start tests and exit immediately without waiting for results.')
205
215
  .option('--dry-run', 'Validate and prepare everything but skip HTTP calls. Shows what would be sent.')
216
+ // Tunnel
217
+ .option('-t, --tunnel', 'Start a TestingBot tunnel for this test run.')
218
+ .option('--tunnel-identifier <id>', 'Identifier for the tunnel (allows multiple tunnels).')
206
219
  // Report options
207
- .option('--report <format>', 'Download test report after completion: html or junit.', (val) => val.toLowerCase())
220
+ .option('--report <format>', 'Download test report after completion: html, html-detailed, or junit.', (val) => val.toLowerCase())
208
221
  .option('--report-output-dir <path>', 'Directory to save test reports (required when --report is used).')
209
222
  // Artifact download
210
223
  .option('--download-artifacts [mode]', 'Download test artifacts after completion. Mode: all (default) or failed.', (val) => (val === 'failed' ? 'failed' : 'all'))
@@ -236,9 +249,24 @@ const maestroCommand = program
236
249
  app = appFileArg;
237
250
  flows = flowsArgs || [];
238
251
  }
239
- if (!app || flows.length === 0) {
240
- maestroCommand.help();
241
- return;
252
+ const missing = [];
253
+ if (!app)
254
+ missing.push('<appFile> or --app');
255
+ if (flows.length === 0)
256
+ missing.push('<flows...> (one or more flow files, directories, or globs)');
257
+ if (missing.length > 0) {
258
+ throw new testingbot_error_1.default(`Missing required argument: ${missing.join(', ')}. Run "testingbot maestro --help" for usage.`);
259
+ }
260
+ const credentials = await auth_1.default.getCredentials({
261
+ apiKey: args.apiKey,
262
+ apiSecret: args.apiSecret,
263
+ });
264
+ if (credentials === null) {
265
+ throw new testingbot_error_1.default('No TestingBot credentials found. Please authenticate using one of these methods:\n' +
266
+ ' 1. Run "testingbot login" to authenticate via browser (recommended)\n' +
267
+ ' 2. Use --api-key and --api-secret options\n' +
268
+ ' 3. Set TB_KEY and TB_SECRET environment variables\n' +
269
+ ' 4. Create ~/.testingbot file with content: key:secret');
242
270
  }
243
271
  // Parse environment variables from -e KEY=VALUE format
244
272
  const env = {};
@@ -271,6 +299,8 @@ const maestroCommand = program
271
299
  geoCountryCode: args.geoCountryCode,
272
300
  env: Object.keys(env).length > 0 ? env : undefined,
273
301
  maestroVersion: args.maestroVersion,
302
+ tunnel: args.tunnel,
303
+ tunnelIdentifier: args.tunnelIdentifier,
274
304
  quiet: args.quiet,
275
305
  async: args.async,
276
306
  dryRun: args.dryRun,
@@ -284,19 +314,9 @@ const maestroCommand = program
284
314
  ignoreChecksumCheck: args.ignoreChecksumCheck,
285
315
  shardSplit: args.shardSplit,
286
316
  debug: args.debug,
317
+ configFile: args.config,
287
318
  metadata,
288
319
  });
289
- const credentials = await auth_1.default.getCredentials({
290
- apiKey: args.apiKey,
291
- apiSecret: args.apiSecret,
292
- });
293
- if (credentials === null) {
294
- throw new testingbot_error_1.default('No TestingBot credentials found. Please authenticate using one of these methods:\n' +
295
- ' 1. Run "testingbot login" to authenticate via browser (recommended)\n' +
296
- ' 2. Use --api-key and --api-secret options\n' +
297
- ' 3. Set TB_KEY and TB_SECRET environment variables\n' +
298
- ' 4. Create ~/.testingbot file with content: key:secret');
299
- }
300
320
  if (args.debug) {
301
321
  (0, logger_1.enableDebugLogging)();
302
322
  }
@@ -312,7 +332,7 @@ const maestroCommand = program
312
332
  }
313
333
  })
314
334
  .showHelpAfterError(true);
315
- const xcuitestCommand = program
335
+ program
316
336
  .command('xcuitest')
317
337
  .description('Run XCUITest tests on TestingBot.')
318
338
  .argument('[appFile]', 'Path to application IPA file')
@@ -335,13 +355,16 @@ const xcuitestCommand = program
335
355
  // Localization
336
356
  .option('--language <lang>', 'App language (ISO 639-1 code, e.g., "en", "fr", "de").')
337
357
  // Geolocation
338
- .option('--geo-location <code>', 'Geographic IP location (ISO country code, e.g., "US", "DE").')
358
+ .option('--geo-country-code <code>', 'Geographic IP location (ISO country code, e.g., "US", "DE").')
339
359
  // Network throttling
340
360
  .option('--throttle-network <speed>', 'Network throttling: 4G, 3G, Edge, or airplane.', (val) => val)
341
361
  // Execution mode
342
362
  .option('-q, --quiet', 'Quieter console output without progress updates.')
343
363
  .option('--async', 'Start tests and exit immediately without waiting for results.')
344
364
  .option('--dry-run', 'Validate and prepare everything but skip HTTP calls. Shows what would be sent.')
365
+ // Tunnel
366
+ .option('-t, --tunnel', 'Start a TestingBot tunnel for this test run.')
367
+ .option('--tunnel-identifier <id>', 'Identifier for the tunnel (allows multiple tunnels).')
345
368
  // Report options
346
369
  .option('--report <format>', 'Download test report after completion: html or junit.', (val) => val.toLowerCase())
347
370
  .option('--report-output-dir <path>', 'Directory to save test reports (required when --report is used).')
@@ -358,9 +381,24 @@ const xcuitestCommand = program
358
381
  // Positional arguments take precedence, fall back to options
359
382
  const app = appFileArg || args.app;
360
383
  const testApp = testAppFileArg || args.testApp;
361
- if (!app || !testApp) {
362
- xcuitestCommand.help();
363
- return;
384
+ const missing = [];
385
+ if (!app)
386
+ missing.push('<appFile> or --app');
387
+ if (!testApp)
388
+ missing.push('<testAppFile> or --test-app');
389
+ if (missing.length > 0) {
390
+ throw new testingbot_error_1.default(`Missing required argument: ${missing.join(', ')}. Run "testingbot xcuitest --help" for usage.`);
391
+ }
392
+ const credentials = await auth_1.default.getCredentials({
393
+ apiKey: args.apiKey,
394
+ apiSecret: args.apiSecret,
395
+ });
396
+ if (credentials === null) {
397
+ throw new testingbot_error_1.default('No TestingBot credentials found. Please authenticate using one of these methods:\n' +
398
+ ' 1. Run "testingbot login" to authenticate via browser (recommended)\n' +
399
+ ' 2. Use --api-key and --api-secret options\n' +
400
+ ' 3. Set TB_KEY and TB_SECRET environment variables\n' +
401
+ ' 4. Create ~/.testingbot file with content: key:secret');
364
402
  }
365
403
  const metadata = args.commitSha || args.pullRequestId || args.repoName || args.repoOwner
366
404
  ? {
@@ -381,8 +419,10 @@ const xcuitestCommand = program
381
419
  language: args.language,
382
420
  locale: args.locale,
383
421
  timeZone: args.timezone,
384
- geoLocation: args.geoLocation,
422
+ geoCountryCode: args.geoCountryCode,
385
423
  throttleNetwork: args.throttleNetwork,
424
+ tunnel: args.tunnel,
425
+ tunnelIdentifier: args.tunnelIdentifier,
386
426
  quiet: args.quiet,
387
427
  async: args.async,
388
428
  dryRun: args.dryRun,
@@ -390,17 +430,6 @@ const xcuitestCommand = program
390
430
  reportOutputDir: args.reportOutputDir,
391
431
  metadata,
392
432
  });
393
- const credentials = await auth_1.default.getCredentials({
394
- apiKey: args.apiKey,
395
- apiSecret: args.apiSecret,
396
- });
397
- if (credentials === null) {
398
- throw new testingbot_error_1.default('No TestingBot credentials found. Please authenticate using one of these methods:\n' +
399
- ' 1. Run "testingbot login" to authenticate via browser (recommended)\n' +
400
- ' 2. Use --api-key and --api-secret options\n' +
401
- ' 3. Set TB_KEY and TB_SECRET environment variables\n' +
402
- ' 4. Create ~/.testingbot file with content: key:secret');
403
- }
404
433
  const xcuitest = new xcuitest_1.default(credentials, options);
405
434
  const result = await xcuitest.run();
406
435
  if (!result.success) {
@@ -0,0 +1,15 @@
1
+ export declare const POLLING: {
2
+ readonly MIN_INTERVAL_MS: 5000;
3
+ readonly MAX_INTERVAL_MS: 15000;
4
+ readonly BACKOFF_MULTIPLIER: 1.3;
5
+ readonly MAX_DURATION_MS: number;
6
+ };
7
+ export declare const HTTP: {
8
+ readonly TIMEOUT_MS: 30000;
9
+ };
10
+ export declare const SOCKET: {
11
+ readonly RECONNECTION_ATTEMPTS: 3;
12
+ readonly RECONNECTION_DELAY_MS: 1000;
13
+ readonly TIMEOUT_MS: 10000;
14
+ };
15
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO;;;;;CAKV,CAAC;AAEX,eAAO,MAAM,IAAI;;CAEP,CAAC;AAEX,eAAO,MAAM,MAAM;;;;CAIT,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SOCKET = exports.HTTP = exports.POLLING = void 0;
4
+ exports.POLLING = {
5
+ MIN_INTERVAL_MS: 5000,
6
+ MAX_INTERVAL_MS: 15000,
7
+ BACKOFF_MULTIPLIER: 1.3,
8
+ MAX_DURATION_MS: 60 * 60 * 1000,
9
+ };
10
+ exports.HTTP = {
11
+ TIMEOUT_MS: 30000,
12
+ };
13
+ exports.SOCKET = {
14
+ RECONNECTION_ATTEMPTS: 3,
15
+ RECONNECTION_DELAY_MS: 1000,
16
+ TIMEOUT_MS: 10000,
17
+ };
package/dist/index.js CHANGED
@@ -5,4 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  const cli_1 = __importDefault(require("./cli"));
8
+ const banner_1 = require("./ui/banner");
9
+ (0, banner_1.printBanner)();
8
10
  cli_1.default.parse(process.argv);
@@ -22,6 +22,8 @@ export interface EspressoCapabilities {
22
22
  phoneOnly?: boolean;
23
23
  name?: string;
24
24
  build?: string;
25
+ 'testingbot.geoCountryCode'?: string;
26
+ tunnelIdentifier?: string;
25
27
  }
26
28
  export interface EspressoRunOptions {
27
29
  testRunner?: string;
@@ -35,7 +37,6 @@ export interface EspressoRunOptions {
35
37
  language?: string;
36
38
  locale?: string;
37
39
  timeZone?: string;
38
- geoLocation?: string;
39
40
  throttle_network?: ThrottleNetwork | CustomNetworkProfile;
40
41
  }
41
42
  export default class EspressoOptions {
@@ -59,8 +60,10 @@ export default class EspressoOptions {
59
60
  private _language?;
60
61
  private _locale?;
61
62
  private _timeZone?;
62
- private _geoLocation?;
63
+ private _geoCountryCode?;
63
64
  private _throttleNetwork?;
65
+ private _tunnel;
66
+ private _tunnelIdentifier?;
64
67
  private _quiet;
65
68
  private _async;
66
69
  private _dryRun;
@@ -85,8 +88,10 @@ export default class EspressoOptions {
85
88
  language?: string;
86
89
  locale?: string;
87
90
  timeZone?: string;
88
- geoLocation?: string;
91
+ geoCountryCode?: string;
89
92
  throttleNetwork?: ThrottleNetwork | CustomNetworkProfile;
93
+ tunnel?: boolean;
94
+ tunnelIdentifier?: string;
90
95
  quiet?: boolean;
91
96
  async?: boolean;
92
97
  dryRun?: boolean;
@@ -114,8 +119,10 @@ export default class EspressoOptions {
114
119
  get language(): string | undefined;
115
120
  get locale(): string | undefined;
116
121
  get timeZone(): string | undefined;
117
- get geoLocation(): string | undefined;
122
+ get geoCountryCode(): string | undefined;
118
123
  get throttleNetwork(): ThrottleNetwork | CustomNetworkProfile | undefined;
124
+ get tunnel(): boolean;
125
+ get tunnelIdentifier(): string | undefined;
119
126
  get quiet(): boolean;
120
127
  get async(): boolean;
121
128
  get dryRun(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"espresso_options.d.ts","sourceRoot":"","sources":["../../src/models/espresso_options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"espresso_options.d.ts","sourceRoot":"","sources":["../../src/models/espresso_options.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_crypto_1 = require("node:crypto");
6
7
  const testingbot_error_1 = __importDefault(require("./testingbot_error"));
7
8
  class EspressoOptions {
8
9
  _app;
@@ -28,9 +29,12 @@ class EspressoOptions {
28
29
  _locale;
29
30
  _timeZone;
30
31
  // Geolocation
31
- _geoLocation;
32
+ _geoCountryCode;
32
33
  // Network throttling
33
34
  _throttleNetwork;
35
+ // Tunnel
36
+ _tunnel;
37
+ _tunnelIdentifier;
34
38
  // Execution mode
35
39
  _quiet;
36
40
  _async;
@@ -64,8 +68,14 @@ class EspressoOptions {
64
68
  this._language = options?.language;
65
69
  this._locale = options?.locale;
66
70
  this._timeZone = options?.timeZone;
67
- this._geoLocation = options?.geoLocation;
71
+ this._geoCountryCode = options?.geoCountryCode;
68
72
  this._throttleNetwork = options?.throttleNetwork;
73
+ this._tunnel = options?.tunnel ?? false;
74
+ this._tunnelIdentifier =
75
+ options?.tunnelIdentifier ??
76
+ (this._tunnel
77
+ ? `espresso-testing-${(0, node_crypto_1.randomUUID)().slice(0, 8)}`
78
+ : undefined);
69
79
  this._quiet = options?.quiet ?? false;
70
80
  this._async = options?.async ?? false;
71
81
  this._dryRun = options?.dryRun ?? false;
@@ -133,12 +143,18 @@ class EspressoOptions {
133
143
  get timeZone() {
134
144
  return this._timeZone;
135
145
  }
136
- get geoLocation() {
137
- return this._geoLocation;
146
+ get geoCountryCode() {
147
+ return this._geoCountryCode;
138
148
  }
139
149
  get throttleNetwork() {
140
150
  return this._throttleNetwork;
141
151
  }
152
+ get tunnel() {
153
+ return this._tunnel;
154
+ }
155
+ get tunnelIdentifier() {
156
+ return this._tunnelIdentifier;
157
+ }
142
158
  get quiet() {
143
159
  return this._quiet;
144
160
  }
@@ -174,6 +190,10 @@ class EspressoOptions {
174
190
  caps.name = this._name;
175
191
  if (this._build)
176
192
  caps.build = this._build;
193
+ if (this._geoCountryCode)
194
+ caps['testingbot.geoCountryCode'] = this._geoCountryCode;
195
+ if (this._tunnelIdentifier)
196
+ caps.tunnelIdentifier = this._tunnelIdentifier;
177
197
  return caps;
178
198
  }
179
199
  getEspressoOptions() {
@@ -201,9 +221,6 @@ class EspressoOptions {
201
221
  opts.locale = this._locale;
202
222
  if (this._timeZone)
203
223
  opts.timeZone = this._timeZone;
204
- // Geolocation
205
- if (this._geoLocation)
206
- opts.geoLocation = this._geoLocation;
207
224
  // Network throttling
208
225
  if (this._throttleNetwork)
209
226
  opts.throttle_network = this._throttleNetwork;
@@ -6,7 +6,7 @@ export interface MaestroConfig {
6
6
  }
7
7
  export type Orientation = 'PORTRAIT' | 'LANDSCAPE';
8
8
  export type ThrottleNetwork = '4G' | '3G' | 'Edge' | 'airplane' | 'disable';
9
- export type ReportFormat = 'html' | 'junit';
9
+ export type ReportFormat = 'html' | 'html-detailed' | 'junit';
10
10
  export type ArtifactDownloadMode = 'all' | 'failed';
11
11
  export interface RunMetadata {
12
12
  commitSha?: string;
@@ -22,8 +22,9 @@ export interface MaestroCapabilities {
22
22
  orientation?: Orientation;
23
23
  locale?: string;
24
24
  timeZone?: string;
25
- throttleNetwork?: ThrottleNetwork;
26
- geoCountryCode?: string;
25
+ throttle_network?: ThrottleNetwork;
26
+ 'testingbot.geoCountryCode'?: string;
27
+ tunnelIdentifier?: string;
27
28
  realDevice?: string;
28
29
  }
29
30
  export interface MaestroRunOptions {
@@ -49,6 +50,8 @@ export default class MaestroOptions {
49
50
  private _geoCountryCode?;
50
51
  private _env?;
51
52
  private _maestroVersion?;
53
+ private _tunnel;
54
+ private _tunnelIdentifier?;
52
55
  private _quiet;
53
56
  private _async;
54
57
  private _dryRun;
@@ -60,6 +63,7 @@ export default class MaestroOptions {
60
63
  private _ignoreChecksumCheck;
61
64
  private _shardSplit?;
62
65
  private _debug;
66
+ private _configFile?;
63
67
  private _metadata?;
64
68
  constructor(app: string, flows: string | string[], device?: string, options?: {
65
69
  includeTags?: string[];
@@ -74,6 +78,8 @@ export default class MaestroOptions {
74
78
  geoCountryCode?: string;
75
79
  env?: Record<string, string>;
76
80
  maestroVersion?: string;
81
+ tunnel?: boolean;
82
+ tunnelIdentifier?: string;
77
83
  quiet?: boolean;
78
84
  async?: boolean;
79
85
  dryRun?: boolean;
@@ -85,6 +91,7 @@ export default class MaestroOptions {
85
91
  ignoreChecksumCheck?: boolean;
86
92
  shardSplit?: number;
87
93
  debug?: boolean;
94
+ configFile?: string;
88
95
  metadata?: RunMetadata;
89
96
  });
90
97
  get app(): string;
@@ -102,6 +109,8 @@ export default class MaestroOptions {
102
109
  get geoCountryCode(): string | undefined;
103
110
  get env(): Record<string, string> | undefined;
104
111
  get maestroVersion(): string | undefined;
112
+ get tunnel(): boolean;
113
+ get tunnelIdentifier(): string | undefined;
105
114
  get quiet(): boolean;
106
115
  get async(): boolean;
107
116
  get dryRun(): boolean;
@@ -113,6 +122,7 @@ export default class MaestroOptions {
113
122
  get ignoreChecksumCheck(): boolean;
114
123
  get shardSplit(): number | undefined;
115
124
  get debug(): boolean;
125
+ get configFile(): string | undefined;
116
126
  get metadata(): RunMetadata | undefined;
117
127
  getMaestroOptions(): MaestroRunOptions | undefined;
118
128
  getCapabilities(detectedPlatform?: 'Android' | 'iOS'): MaestroCapabilities;
@@ -1 +1 @@
1
- {"version":3,"file":"maestro_options.d.ts","sourceRoot":"","sources":["../../src/models/maestro_options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"maestro_options.d.ts","sourceRoot":"","sources":["../../src/models/maestro_options.ts"],"names":[],"mappings":"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"}