@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.
- package/README.md +29 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +79 -46
- package/dist/config/constants.d.ts +15 -0
- package/dist/config/constants.d.ts.map +1 -0
- package/dist/config/constants.js +17 -0
- package/dist/index.js +2 -0
- package/dist/models/espresso_options.d.ts +7 -0
- package/dist/models/espresso_options.d.ts.map +1 -1
- package/dist/models/espresso_options.js +18 -0
- package/dist/models/maestro_options.d.ts +20 -2
- package/dist/models/maestro_options.d.ts.map +1 -1
- package/dist/models/maestro_options.js +38 -1
- package/dist/models/xcuitest_options.d.ts +7 -0
- package/dist/models/xcuitest_options.d.ts.map +1 -1
- package/dist/models/xcuitest_options.js +18 -0
- package/dist/providers/base_provider.d.ts +28 -2
- package/dist/providers/base_provider.d.ts.map +1 -1
- package/dist/providers/base_provider.js +70 -2
- package/dist/providers/espresso.d.ts +1 -0
- package/dist/providers/espresso.d.ts.map +1 -1
- package/dist/providers/espresso.js +82 -35
- package/dist/providers/maestro.d.ts +31 -0
- package/dist/providers/maestro.d.ts.map +1 -1
- package/dist/providers/maestro.js +399 -149
- package/dist/providers/xcuitest.d.ts +1 -0
- package/dist/providers/xcuitest.d.ts.map +1 -1
- package/dist/providers/xcuitest.js +79 -35
- package/dist/ui/banner.d.ts +3 -0
- package/dist/ui/banner.d.ts.map +1 -0
- package/dist/ui/banner.js +82 -0
- package/dist/ui/spinner.d.ts +32 -0
- package/dist/ui/spinner.d.ts.map +1 -0
- package/dist/ui/spinner.js +92 -0
- package/dist/ui/terminal-title.d.ts +8 -0
- package/dist/ui/terminal-title.d.ts.map +1 -0
- package/dist/ui/terminal-title.js +57 -0
- package/dist/upload.d.ts +4 -0
- package/dist/upload.d.ts.map +1 -1
- package/dist/upload.js +70 -12
- package/dist/utils/connectivity.js +5 -3
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +10 -0
- 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;
|
|
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
|
-
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
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
|
-
|
|
240
|
-
|
|
241
|
-
|
|
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
|
-
|
|
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
|
-
|
|
362
|
-
|
|
363
|
-
|
|
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":"
|
|
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
|
-
|
|
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":"
|
|
1
|
+
{"version":3,"file":"maestro_options.d.ts","sourceRoot":"","sources":["../../src/models/maestro_options.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CACtC;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;AACnD,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,eAAe,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,YAAY,CAAC,CAAW;IAChC,OAAO,CAAC,YAAY,CAAC,CAAW;IAChC,OAAO,CAAC,aAAa,CAAC,CAAoB;IAC1C,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,IAAI,CAAC,CAAyB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAS;IAEjC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAC,CAAe;IAC/B,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,kBAAkB,CAAC,CAAuB;IAClD,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,oBAAoB,CAAU;IACtC,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAW;IAC3B,OAAO,CAAC,gBAAgB,CAAU;IAElC,OAAO,CAAC,SAAS,CAAC,CAAc;gBAG9B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,YAAY,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;QACjC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;QACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,QAAQ,CAAC,EAAE,WAAW,CAAC;KACxB;IA0CH,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,KAAK,IAAI,MAAM,EAAE,CAE3B;IAED,IAAW,MAAM,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,IAAW,WAAW,IAAI,MAAM,EAAE,GAAG,SAAS,CAE7C;IAED,IAAW,WAAW,IAAI,MAAM,EAAE,GAAG,SAAS,CAE7C;IAED,IAAW,YAAY,IAAI,SAAS,GAAG,KAAK,GAAG,SAAS,CAEvD;IAED,IAAW,OAAO,IAAI,MAAM,GAAG,SAAS,CAEvC;IAED,IAAW,IAAI,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED,IAAW,WAAW,IAAI,WAAW,GAAG,SAAS,CAEhD;IAED,IAAW,MAAM,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,IAAW,QAAQ,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,IAAW,eAAe,IAAI,eAAe,GAAG,SAAS,CAExD;IAED,IAAW,cAAc,IAAI,MAAM,GAAG,SAAS,CAE9C;IAED,IAAW,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAEnD;IAED,IAAW,cAAc,IAAI,MAAM,GAAG,SAAS,CAE9C;IAED,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAEhD;IAED,IAAW,KAAK,IAAI,OAAO,CAE1B;IAED,IAAW,KAAK,IAAI,OAAO,CAE1B;IAED,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,MAAM,IAAI,YAAY,GAAG,SAAS,CAE5C;IAED,IAAW,eAAe,IAAI,MAAM,GAAG,SAAS,CAE/C;IAED,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAW,iBAAiB,IAAI,oBAAoB,GAAG,SAAS,CAE/D;IAED,IAAW,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAElD;IAED,IAAW,mBAAmB,IAAI,OAAO,CAExC;IAED,IAAW,UAAU,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,IAAW,KAAK,IAAI,OAAO,CAE1B;IAED,IAAW,UAAU,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,IAAW,QAAQ,IAAI,WAAW,GAAG,SAAS,CAE7C;IAED,IAAW,MAAM,IAAI,MAAM,EAAE,GAAG,SAAS,CAExC;IAED,IAAW,eAAe,IAAI,OAAO,CAEpC;IAEM,iBAAiB,IAAI,iBAAiB,GAAG,SAAS;IAmBlD,eAAe,CACpB,gBAAgB,CAAC,EAAE,SAAS,GAAG,KAAK,GACnC,mBAAmB;CAqCvB"}
|