@testingbot/cli 1.0.7 → 1.0.9

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 +29 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +79 -46
  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 +7 -0
  9. package/dist/models/espresso_options.d.ts.map +1 -1
  10. package/dist/models/espresso_options.js +18 -0
  11. package/dist/models/maestro_options.d.ts +20 -2
  12. package/dist/models/maestro_options.d.ts.map +1 -1
  13. package/dist/models/maestro_options.js +38 -1
  14. package/dist/models/xcuitest_options.d.ts +7 -0
  15. package/dist/models/xcuitest_options.d.ts.map +1 -1
  16. package/dist/models/xcuitest_options.js +18 -0
  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 +31 -0
  24. package/dist/providers/maestro.d.ts.map +1 -1
  25. package/dist/providers/maestro.js +399 -149
  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
@@ -110,9 +110,11 @@ testingbot maestro <app> <flows...> [options]
110
110
  |--------|-------------|
111
111
  | `--name <name>` | Test name for dashboard identification |
112
112
  | `--build <build>` | Build identifier for grouping test runs |
113
+ | `--groups <names>` | Tag the test session with one or more groups (comma-separated). Groups appear on the test in the TestingBot dashboard |
113
114
  | `--include-tags <tags>` | Only run flows with these tags (comma-separated) |
114
115
  | `--exclude-tags <tags>` | Exclude flows with these tags (comma-separated) |
115
116
  | `-e, --env <KEY=VALUE>` | Environment variable for flows (can be repeated) |
117
+ | `--config <path>` | Path to a custom Maestro config file (default: config.yaml in project root) |
116
118
  | `--maestro-version <version>` | Maestro version to use (e.g., "2.0.10") |
117
119
 
118
120
  **Network & Location:**
@@ -122,6 +124,13 @@ testingbot maestro <app> <flows...> [options]
122
124
  | `--throttle-network <speed>` | Network throttling: 4G, 3G, Edge, airplane, or disable |
123
125
  | `--geo-country-code <code>` | Geographic IP location (ISO country code, e.g., "US", "DE") |
124
126
 
127
+ **Tunnel:**
128
+
129
+ | Option | Description |
130
+ |--------|-------------|
131
+ | `-t, --tunnel` | Start a TestingBot tunnel for this test run (cannot be combined with `--async`) |
132
+ | `--tunnel-identifier <id>` | Identifier for the tunnel, allowing multiple tunnels in parallel |
133
+
125
134
  **Output Options:**
126
135
 
127
136
  | Option | Description |
@@ -164,6 +173,9 @@ testingbot maestro app.apk ./flows --device "Pixel 8" --deviceVersion "14"
164
173
  # Android app on real device with tags
165
174
  testingbot maestro app.apk ./flows --device "Samsung Galaxy S24" --real-device --include-tags "smoke,regression"
166
175
 
176
+ # Tag the test session with groups (visible in the dashboard)
177
+ testingbot maestro app.apk ./flows --groups "smoke,critical"
178
+
167
179
  # With environment variables
168
180
  testingbot maestro app.apk ./flows -e API_URL=https://staging.example.com -e API_KEY=secret
169
181
 
@@ -176,6 +188,9 @@ testingbot maestro app.apk ./flows --download-artifacts --build "build-123"
176
188
  # Download artifacts only for failed tests
177
189
  testingbot maestro app.apk ./flows --download-artifacts failed --artifacts-output-dir ./artifacts
178
190
 
191
+ # Use a custom config file
192
+ testingbot maestro app.apk ./flows --config .maestro/ci-config.yaml
193
+
179
194
  # Run in background (async)
180
195
  testingbot maestro app.apk ./flows --async
181
196
 
@@ -246,6 +261,13 @@ testingbot espresso [appFile] [testAppFile] [options]
246
261
  | `--throttle-network <speed>` | Network throttling: 4G, 3G, Edge, or airplane |
247
262
  | `--geo-location <code>` | Geographic IP location (ISO country code, e.g., "US", "DE") |
248
263
 
264
+ **Tunnel:**
265
+
266
+ | Option | Description |
267
+ |--------|-------------|
268
+ | `-t, --tunnel` | Start a TestingBot tunnel for this test run (cannot be combined with `--async`) |
269
+ | `--tunnel-identifier <id>` | Identifier for the tunnel, allowing multiple tunnels in parallel |
270
+
249
271
  **Output Options:**
250
272
 
251
273
  | Option | Description |
@@ -339,6 +361,13 @@ testingbot xcuitest [appFile] [testAppFile] [options]
339
361
  | `--throttle-network <speed>` | Network throttling: 4G, 3G, Edge, or airplane |
340
362
  | `--geo-location <code>` | Geographic IP location (ISO country code, e.g., "US", "DE") |
341
363
 
364
+ **Tunnel:**
365
+
366
+ | Option | Description |
367
+ |--------|-------------|
368
+ | `-t, --tunnel` | Start a TestingBot tunnel for this test run (cannot be combined with `--async`) |
369
+ | `--tunnel-identifier <id>` | Identifier for the tunnel, allowing multiple tunnels in parallel |
370
+
342
371
  **Output Options:**
343
372
 
344
373
  | 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;AAspB9B,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')
@@ -91,6 +91,9 @@ const espressoCommand = program
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
  ? {
@@ -139,6 +157,8 @@ const espressoCommand = program
139
157
  timeZone: args.timezone,
140
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)')
@@ -181,11 +190,13 @@ const maestroCommand = program
181
190
  .option('--platform <platform>', 'Platform name: Android or iOS.', (val) => val)
182
191
  .option('--deviceVersion <version>', 'OS version (e.g., "14", "17.2").')
183
192
  .option('--real-device', 'Use a real device instead of an emulator/simulator.')
193
+ .option('--google-play', 'Use the Google Play Store-enabled version (Android emulator only).')
184
194
  .option('--orientation <orientation>', 'Screen orientation: PORTRAIT or LANDSCAPE.', (val) => val.toUpperCase())
185
195
  .option('--device-locale <locale>', 'Device locale (e.g., "en_US", "de_DE").')
186
196
  .option('--timezone <timezone>', 'Device timezone (e.g., "America/New_York", "Europe/London").')
187
197
  // Test metadata
188
198
  .option('--name <name>', 'Name for this Maestro run.')
199
+ .option('--groups <names>', 'Tag the test session with one or more groups (comma-separated).', (val) => val.split(',').map((g) => g.trim()).filter((g) => g.length > 0))
189
200
  // Network and geo
190
201
  .option('--throttle-network <speed>', 'Network throttling: 4G, 3G, Edge, airplane, or disable.', (val) => val)
191
202
  .option('--geo-country-code <code>', 'Geographic IP location (ISO country code, e.g., "US", "DE").')
@@ -198,13 +209,17 @@ const maestroCommand = program
198
209
  return acc;
199
210
  }, [])
200
211
  // Maestro configuration
212
+ .option('--config <path>', 'Path to a custom Maestro config file (default: config.yaml in project root).')
201
213
  .option('--maestro-version <version>', 'Maestro version to use (e.g., "2.0.10").')
202
214
  // Execution mode
203
215
  .option('-q, --quiet', 'Quieter console output without progress updates.')
204
216
  .option('--async', 'Start tests and exit immediately without waiting for results.')
205
217
  .option('--dry-run', 'Validate and prepare everything but skip HTTP calls. Shows what would be sent.')
218
+ // Tunnel
219
+ .option('-t, --tunnel', 'Start a TestingBot tunnel for this test run.')
220
+ .option('--tunnel-identifier <id>', 'Identifier for the tunnel (allows multiple tunnels).')
206
221
  // Report options
207
- .option('--report <format>', 'Download test report after completion: html or junit.', (val) => val.toLowerCase())
222
+ .option('--report <format>', 'Download test report after completion: html, html-detailed, or junit.', (val) => val.toLowerCase())
208
223
  .option('--report-output-dir <path>', 'Directory to save test reports (required when --report is used).')
209
224
  // Artifact download
210
225
  .option('--download-artifacts [mode]', 'Download test artifacts after completion. Mode: all (default) or failed.', (val) => (val === 'failed' ? 'failed' : 'all'))
@@ -236,9 +251,24 @@ const maestroCommand = program
236
251
  app = appFileArg;
237
252
  flows = flowsArgs || [];
238
253
  }
239
- if (!app || flows.length === 0) {
240
- maestroCommand.help();
241
- return;
254
+ const missing = [];
255
+ if (!app)
256
+ missing.push('<appFile> or --app');
257
+ if (flows.length === 0)
258
+ missing.push('<flows...> (one or more flow files, directories, or globs)');
259
+ if (missing.length > 0) {
260
+ throw new testingbot_error_1.default(`Missing required argument: ${missing.join(', ')}. Run "testingbot maestro --help" for usage.`);
261
+ }
262
+ const credentials = await auth_1.default.getCredentials({
263
+ apiKey: args.apiKey,
264
+ apiSecret: args.apiSecret,
265
+ });
266
+ if (credentials === null) {
267
+ throw new testingbot_error_1.default('No TestingBot credentials found. Please authenticate using one of these methods:\n' +
268
+ ' 1. Run "testingbot login" to authenticate via browser (recommended)\n' +
269
+ ' 2. Use --api-key and --api-secret options\n' +
270
+ ' 3. Set TB_KEY and TB_SECRET environment variables\n' +
271
+ ' 4. Create ~/.testingbot file with content: key:secret');
242
272
  }
243
273
  // Parse environment variables from -e KEY=VALUE format
244
274
  const env = {};
@@ -271,6 +301,8 @@ const maestroCommand = program
271
301
  geoCountryCode: args.geoCountryCode,
272
302
  env: Object.keys(env).length > 0 ? env : undefined,
273
303
  maestroVersion: args.maestroVersion,
304
+ tunnel: args.tunnel,
305
+ tunnelIdentifier: args.tunnelIdentifier,
274
306
  quiet: args.quiet,
275
307
  async: args.async,
276
308
  dryRun: args.dryRun,
@@ -284,19 +316,11 @@ const maestroCommand = program
284
316
  ignoreChecksumCheck: args.ignoreChecksumCheck,
285
317
  shardSplit: args.shardSplit,
286
318
  debug: args.debug,
319
+ googlePlayStore: args.googlePlay,
320
+ configFile: args.config,
321
+ groups: args.groups,
287
322
  metadata,
288
323
  });
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
324
  if (args.debug) {
301
325
  (0, logger_1.enableDebugLogging)();
302
326
  }
@@ -312,7 +336,7 @@ const maestroCommand = program
312
336
  }
313
337
  })
314
338
  .showHelpAfterError(true);
315
- const xcuitestCommand = program
339
+ program
316
340
  .command('xcuitest')
317
341
  .description('Run XCUITest tests on TestingBot.')
318
342
  .argument('[appFile]', 'Path to application IPA file')
@@ -342,6 +366,9 @@ const xcuitestCommand = program
342
366
  .option('-q, --quiet', 'Quieter console output without progress updates.')
343
367
  .option('--async', 'Start tests and exit immediately without waiting for results.')
344
368
  .option('--dry-run', 'Validate and prepare everything but skip HTTP calls. Shows what would be sent.')
369
+ // Tunnel
370
+ .option('-t, --tunnel', 'Start a TestingBot tunnel for this test run.')
371
+ .option('--tunnel-identifier <id>', 'Identifier for the tunnel (allows multiple tunnels).')
345
372
  // Report options
346
373
  .option('--report <format>', 'Download test report after completion: html or junit.', (val) => val.toLowerCase())
347
374
  .option('--report-output-dir <path>', 'Directory to save test reports (required when --report is used).')
@@ -358,9 +385,24 @@ const xcuitestCommand = program
358
385
  // Positional arguments take precedence, fall back to options
359
386
  const app = appFileArg || args.app;
360
387
  const testApp = testAppFileArg || args.testApp;
361
- if (!app || !testApp) {
362
- xcuitestCommand.help();
363
- return;
388
+ const missing = [];
389
+ if (!app)
390
+ missing.push('<appFile> or --app');
391
+ if (!testApp)
392
+ missing.push('<testAppFile> or --test-app');
393
+ if (missing.length > 0) {
394
+ throw new testingbot_error_1.default(`Missing required argument: ${missing.join(', ')}. Run "testingbot xcuitest --help" for usage.`);
395
+ }
396
+ const credentials = await auth_1.default.getCredentials({
397
+ apiKey: args.apiKey,
398
+ apiSecret: args.apiSecret,
399
+ });
400
+ if (credentials === null) {
401
+ throw new testingbot_error_1.default('No TestingBot credentials found. Please authenticate using one of these methods:\n' +
402
+ ' 1. Run "testingbot login" to authenticate via browser (recommended)\n' +
403
+ ' 2. Use --api-key and --api-secret options\n' +
404
+ ' 3. Set TB_KEY and TB_SECRET environment variables\n' +
405
+ ' 4. Create ~/.testingbot file with content: key:secret');
364
406
  }
365
407
  const metadata = args.commitSha || args.pullRequestId || args.repoName || args.repoOwner
366
408
  ? {
@@ -383,6 +425,8 @@ const xcuitestCommand = program
383
425
  timeZone: args.timezone,
384
426
  geoCountryCode: args.geoCountryCode,
385
427
  throttleNetwork: args.throttleNetwork,
428
+ tunnel: args.tunnel,
429
+ tunnelIdentifier: args.tunnelIdentifier,
386
430
  quiet: args.quiet,
387
431
  async: args.async,
388
432
  dryRun: args.dryRun,
@@ -390,17 +434,6 @@ const xcuitestCommand = program
390
434
  reportOutputDir: args.reportOutputDir,
391
435
  metadata,
392
436
  });
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
437
  const xcuitest = new xcuitest_1.default(credentials, options);
405
438
  const result = await xcuitest.run();
406
439
  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);
@@ -23,6 +23,7 @@ export interface EspressoCapabilities {
23
23
  name?: string;
24
24
  build?: string;
25
25
  'testingbot.geoCountryCode'?: string;
26
+ tunnelIdentifier?: string;
26
27
  }
27
28
  export interface EspressoRunOptions {
28
29
  testRunner?: string;
@@ -61,6 +62,8 @@ export default class EspressoOptions {
61
62
  private _timeZone?;
62
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;
@@ -87,6 +90,8 @@ export default class EspressoOptions {
87
90
  timeZone?: string;
88
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;
@@ -116,6 +121,8 @@ export default class EspressoOptions {
116
121
  get timeZone(): string | undefined;
117
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;
@@ -31,6 +32,9 @@ class EspressoOptions {
31
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;
@@ -66,6 +70,12 @@ class EspressoOptions {
66
70
  this._timeZone = options?.timeZone;
67
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;
@@ -139,6 +149,12 @@ class EspressoOptions {
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
  }
@@ -176,6 +192,8 @@ class EspressoOptions {
176
192
  caps.build = this._build;
177
193
  if (this._geoCountryCode)
178
194
  caps['testingbot.geoCountryCode'] = this._geoCountryCode;
195
+ if (this._tunnelIdentifier)
196
+ caps.tunnelIdentifier = this._tunnelIdentifier;
179
197
  return caps;
180
198
  }
181
199
  getEspressoOptions() {
@@ -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,9 +22,12 @@ export interface MaestroCapabilities {
22
22
  orientation?: Orientation;
23
23
  locale?: string;
24
24
  timeZone?: string;
25
- throttleNetwork?: ThrottleNetwork;
25
+ throttle_network?: ThrottleNetwork;
26
26
  'testingbot.geoCountryCode'?: string;
27
+ tunnelIdentifier?: string;
27
28
  realDevice?: string;
29
+ groups?: string[];
30
+ googlePlayStore?: boolean;
28
31
  }
29
32
  export interface MaestroRunOptions {
30
33
  includeTags?: string[];
@@ -49,6 +52,8 @@ export default class MaestroOptions {
49
52
  private _geoCountryCode?;
50
53
  private _env?;
51
54
  private _maestroVersion?;
55
+ private _tunnel;
56
+ private _tunnelIdentifier?;
52
57
  private _quiet;
53
58
  private _async;
54
59
  private _dryRun;
@@ -60,6 +65,9 @@ export default class MaestroOptions {
60
65
  private _ignoreChecksumCheck;
61
66
  private _shardSplit?;
62
67
  private _debug;
68
+ private _configFile?;
69
+ private _groups?;
70
+ private _googlePlayStore;
63
71
  private _metadata?;
64
72
  constructor(app: string, flows: string | string[], device?: string, options?: {
65
73
  includeTags?: string[];
@@ -74,6 +82,8 @@ export default class MaestroOptions {
74
82
  geoCountryCode?: string;
75
83
  env?: Record<string, string>;
76
84
  maestroVersion?: string;
85
+ tunnel?: boolean;
86
+ tunnelIdentifier?: string;
77
87
  quiet?: boolean;
78
88
  async?: boolean;
79
89
  dryRun?: boolean;
@@ -85,6 +95,9 @@ export default class MaestroOptions {
85
95
  ignoreChecksumCheck?: boolean;
86
96
  shardSplit?: number;
87
97
  debug?: boolean;
98
+ configFile?: string;
99
+ groups?: string[];
100
+ googlePlayStore?: boolean;
88
101
  metadata?: RunMetadata;
89
102
  });
90
103
  get app(): string;
@@ -102,6 +115,8 @@ export default class MaestroOptions {
102
115
  get geoCountryCode(): string | undefined;
103
116
  get env(): Record<string, string> | undefined;
104
117
  get maestroVersion(): string | undefined;
118
+ get tunnel(): boolean;
119
+ get tunnelIdentifier(): string | undefined;
105
120
  get quiet(): boolean;
106
121
  get async(): boolean;
107
122
  get dryRun(): boolean;
@@ -113,7 +128,10 @@ export default class MaestroOptions {
113
128
  get ignoreChecksumCheck(): boolean;
114
129
  get shardSplit(): number | undefined;
115
130
  get debug(): boolean;
131
+ get configFile(): string | undefined;
116
132
  get metadata(): RunMetadata | undefined;
133
+ get groups(): string[] | undefined;
134
+ get googlePlayStore(): boolean;
117
135
  getMaestroOptions(): MaestroRunOptions | undefined;
118
136
  getCapabilities(detectedPlatform?: 'Android' | 'iOS'): MaestroCapabilities;
119
137
  }
@@ -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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"}