@testim/testim-cli 3.253.0 → 3.255.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/OverrideTestDataBuilder.js +1 -1
- package/agent/routers/cliJsCode/index.js +4 -4
- package/agent/routers/cliJsCode/router.js +46 -42
- package/agent/routers/cliJsCode/service.js +18 -13
- package/agent/routers/codim/router.js +14 -17
- package/agent/routers/codim/router.test.js +19 -21
- package/agent/routers/codim/service.js +16 -16
- package/agent/routers/general/index.js +4 -8
- package/agent/routers/hybrid/registerRoutes.js +18 -18
- package/agent/routers/index.js +7 -7
- package/agent/routers/playground/router.js +11 -10
- package/agent/routers/playground/service.js +22 -23
- package/agent/routers/standalone-browser/registerRoutes.js +10 -10
- package/cdpTestRunner.js +4 -3
- package/chromiumInstaller.js +4 -5
- package/cli/onExit.js +2 -2
- package/cli.js +11 -10
- package/cliAgentMode.js +8 -8
- package/codim/codim-cli.js +20 -17
- package/codim/hybrid-utils.js +1 -1
- package/codim/measure-perf.js +9 -6
- package/codim/template.js/tests/examples/01-simple-text-validation.test.js +6 -6
- package/codim/template.js/tests/examples/02-using-locators.test.js +13 -15
- package/codim/template.js/tests/examples/03-using-hooks.test.js +17 -19
- package/codim/template.js/tests/examples/04-skip-and-only.test.js +16 -17
- package/codim/template.js/tests/examples/05-multiple-windows.test.js +16 -17
- package/codim/template.js/webpack.config.js +1 -1
- package/codim/template.ts/webpack.config.js +3 -3
- package/commons/AbortError.js +4 -4
- package/commons/detectDebugger.js +4 -2
- package/commons/featureFlags.js +8 -0
- package/commons/httpRequest.js +5 -1
- package/commons/httpRequestCounters.js +21 -10
- package/commons/lazyRequire.js +14 -12
- package/commons/logger.js +4 -4
- package/commons/performance-logger.js +14 -8
- package/commons/preloadTests.js +2 -2
- package/commons/prepareRunner.js +4 -2
- package/commons/prepareRunnerAndTestimStartUtils.js +40 -42
- package/commons/runnerFileCache.js +1 -1
- package/commons/socket/baseSocketServiceSocketIO.js +32 -34
- package/commons/socket/realDataService.js +6 -5
- package/commons/socket/realDataServiceSocketIO.js +4 -4
- package/commons/socket/remoteStepService.js +4 -3
- package/commons/socket/remoteStepServiceSocketIO.js +11 -12
- package/commons/socket/socketService.js +50 -52
- package/commons/socket/testResultServiceSocketIO.js +11 -11
- package/commons/testimDesiredCapabilitiesBuilder.js +3 -2
- package/commons/testimNgrok.js +2 -2
- package/commons/testimNgrok.test.js +1 -1
- package/commons/testimServicesApi.js +27 -20
- package/commons/testimTunnel.test.js +2 -1
- package/commons/xhr2.js +97 -100
- package/coverage/SummaryToObjectReport.js +0 -1
- package/coverage/jsCoverage.js +12 -10
- package/errors.js +5 -0
- package/fixLocalBuild.js +2 -0
- package/inputFileUtils.js +11 -9
- package/npm-shrinkwrap.json +2286 -1284
- package/package.json +9 -8
- package/player/appiumTestPlayer.js +1 -1
- package/player/chromeLauncherTestPlayer.js +0 -1
- package/player/services/tabService.js +15 -1
- package/player/services/tabServiceMock.js +166 -0
- package/player/stepActions/locateStepAction.js +2 -0
- package/player/stepActions/navigationStepAction.js +11 -10
- package/player/stepActions/sleepStepAction.js +4 -5
- package/player/stepActions/textStepAction.js +4 -11
- package/player/utils/imageCaptureUtils.js +81 -120
- package/player/utils/windowUtils.js +4 -3
- package/player/webdriver.js +26 -23
- package/processHandler.js +3 -3
- package/processHandler.test.js +1 -1
- package/reports/consoleReporter.js +3 -2
- package/reports/junitReporter.js +7 -9
- package/reports/reporter.js +34 -39
- package/runOptions.d.ts +260 -0
- package/runOptions.js +59 -44
- package/runner.js +14 -0
- package/runners/ParallelWorkerManager.js +9 -10
- package/runners/TestPlanRunner.js +142 -78
- package/runners/buildCodeTests.js +38 -37
- package/runners/runnerUtils.js +3 -3
- package/services/gridService.js +36 -40
- package/services/lambdatestService.js +3 -5
- package/stepPlayers/cliJsStepPlayback.js +22 -17
- package/testRunHandler.js +8 -0
- package/testRunStatus.js +9 -6
- package/utils/argsUtils.js +86 -0
- package/utils/argsUtils.test.js +32 -0
- package/utils/fsUtils.js +154 -0
- package/{utils.js → utils/index.js} +19 -262
- package/utils/promiseUtils.js +89 -0
- package/utils/stringUtils.js +98 -0
- package/utils/stringUtils.test.js +22 -0
- package/utils/timeUtils.js +25 -0
- package/utils/utils.test.js +27 -0
- package/workers/BaseWorker.js +16 -14
- package/workers/WorkerAppium.js +1 -1
- package/workers/WorkerExtension.js +6 -7
- package/workers/WorkerExtensionSingleBrowser.js +4 -4
- package/workers/WorkerSelenium.js +5 -2
- package/utils.test.js +0 -68
package/reports/reporter.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const logger = require('../commons/logger').getLogger('reporter');
|
|
4
|
-
const Promise = require('bluebird');
|
|
5
4
|
|
|
6
5
|
class Reporter {
|
|
7
6
|
setOptions(options, branchToUse) {
|
|
@@ -46,7 +45,7 @@ class Reporter {
|
|
|
46
45
|
}
|
|
47
46
|
}
|
|
48
47
|
|
|
49
|
-
onTestPlanFinished(testResults, testPlanName, startTime, executionId, isAnonymous, isCodeMode, childTestResults) {
|
|
48
|
+
async onTestPlanFinished(testResults, testPlanName, startTime, executionId, isAnonymous, isCodeMode, childTestResults) {
|
|
50
49
|
let results = {};
|
|
51
50
|
|
|
52
51
|
// TODO: remove mutation of testResults from the Reporter
|
|
@@ -68,62 +67,55 @@ class Reporter {
|
|
|
68
67
|
} else {
|
|
69
68
|
results = testResults;
|
|
70
69
|
}
|
|
71
|
-
|
|
72
|
-
return Promise.each(this.reporters, reporter => {
|
|
70
|
+
for (const reporter of this.reporters) {
|
|
73
71
|
if (reporter?.onTestPlanFinished) {
|
|
74
72
|
const duration = Date.now() - (startTime || 0);
|
|
75
|
-
|
|
73
|
+
await reporter.onTestPlanFinished(results, testPlanName, duration, executionId, isAnonymous, isCodeMode);
|
|
76
74
|
}
|
|
77
|
-
|
|
78
|
-
});
|
|
75
|
+
}
|
|
79
76
|
}
|
|
80
77
|
|
|
81
|
-
onTestPlanStarted(beforeTests, tests, afterTests, testPlanName, executionId, isAnonymous, configName, isCodeMode) {
|
|
82
|
-
|
|
78
|
+
async onTestPlanStarted(beforeTests, tests, afterTests, testPlanName, executionId, isAnonymous, configName, isCodeMode) {
|
|
79
|
+
for (const reporter of this.reporters) {
|
|
83
80
|
if (reporter?.onTestPlanStarted) {
|
|
84
|
-
|
|
81
|
+
await reporter.onTestPlanStarted(beforeTests, tests, afterTests, testPlanName, executionId, isAnonymous, configName, isCodeMode);
|
|
85
82
|
}
|
|
86
|
-
|
|
87
|
-
});
|
|
83
|
+
}
|
|
88
84
|
}
|
|
89
85
|
|
|
90
|
-
onGetSlot(workerId, browser) {
|
|
91
|
-
|
|
86
|
+
async onGetSlot(workerId, browser) {
|
|
87
|
+
for (const reporter of this.reporters) {
|
|
92
88
|
if (reporter?.onGetSlot) {
|
|
93
|
-
|
|
89
|
+
await reporter.onGetSlot(workerId, browser);
|
|
94
90
|
}
|
|
95
|
-
|
|
96
|
-
});
|
|
91
|
+
}
|
|
97
92
|
}
|
|
98
93
|
|
|
99
|
-
onGetSession(workerId, testName, mode) {
|
|
100
|
-
|
|
94
|
+
async onGetSession(workerId, testName, mode) {
|
|
95
|
+
for (const reporter of this.reporters) {
|
|
101
96
|
if (reporter?.onGetSession) {
|
|
102
|
-
|
|
97
|
+
await reporter.onGetSession(workerId, testName, mode);
|
|
103
98
|
}
|
|
104
|
-
|
|
105
|
-
});
|
|
99
|
+
}
|
|
106
100
|
}
|
|
107
101
|
|
|
108
|
-
onWaitToTestComplete(workerId, isCodeMode, debuggerAddress) {
|
|
109
|
-
|
|
102
|
+
async onWaitToTestComplete(workerId, isCodeMode, debuggerAddress) {
|
|
103
|
+
for (const reporter of this.reporters) {
|
|
110
104
|
if (reporter?.onWaitToTestComplete) {
|
|
111
|
-
|
|
105
|
+
await reporter.onWaitToTestComplete(workerId, isCodeMode, debuggerAddress);
|
|
112
106
|
}
|
|
113
|
-
|
|
114
|
-
});
|
|
107
|
+
}
|
|
115
108
|
}
|
|
116
109
|
|
|
117
|
-
onWaitToTestStart(workerId) {
|
|
118
|
-
|
|
110
|
+
async onWaitToTestStart(workerId) {
|
|
111
|
+
for (const reporter of this.reporters) {
|
|
119
112
|
if (reporter?.onWaitToTestStart) {
|
|
120
|
-
|
|
113
|
+
await reporter.onWaitToTestStart(workerId);
|
|
121
114
|
}
|
|
122
|
-
|
|
123
|
-
});
|
|
115
|
+
}
|
|
124
116
|
}
|
|
125
117
|
|
|
126
|
-
onAllTestPlansFinished(testPlanResults) {
|
|
118
|
+
async onAllTestPlansFinished(testPlanResults) {
|
|
127
119
|
// TODO: remove mutation of testPlanResults from the Reporter
|
|
128
120
|
for (const result of testPlanResults) {
|
|
129
121
|
if (result.childTestResults) {
|
|
@@ -140,18 +132,21 @@ class Reporter {
|
|
|
140
132
|
}
|
|
141
133
|
}
|
|
142
134
|
|
|
143
|
-
|
|
135
|
+
for (const reporter of this.reporters) {
|
|
144
136
|
if (reporter?.onAllTestPlansFinished) {
|
|
145
|
-
|
|
137
|
+
await reporter.onAllTestPlansFinished(testPlanResults);
|
|
146
138
|
}
|
|
147
|
-
|
|
148
|
-
});
|
|
139
|
+
}
|
|
149
140
|
}
|
|
150
141
|
}
|
|
151
142
|
|
|
152
143
|
function addHook(name) {
|
|
153
|
-
Reporter.prototype[name] = function (...args) {
|
|
154
|
-
|
|
144
|
+
Reporter.prototype[name] = async function (...args) {
|
|
145
|
+
for (const reporter of this.reporters) {
|
|
146
|
+
if (reporter?.[name]) {
|
|
147
|
+
await reporter[name](...args);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
155
150
|
};
|
|
156
151
|
}
|
|
157
152
|
|
package/runOptions.d.ts
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
interface LoginModeOptions {
|
|
2
|
+
loginMode: true;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
interface InitModeOptions {
|
|
6
|
+
initCodimMode: true;
|
|
7
|
+
initTestProject: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface AgentModeOptions {
|
|
11
|
+
agentMode: true;
|
|
12
|
+
project?: string;
|
|
13
|
+
token?: string;
|
|
14
|
+
agentPort: number;
|
|
15
|
+
agentBind?: string;
|
|
16
|
+
openEditor?: boolean;
|
|
17
|
+
installPlaygroundPlaywrightDeps: boolean;
|
|
18
|
+
installPlaygroundPuppeteerDeps: boolean;
|
|
19
|
+
installPlaygroundSeleniumDeps: boolean;
|
|
20
|
+
startTestimBrowser: boolean;
|
|
21
|
+
ext?: string;
|
|
22
|
+
extensionPath?: string;
|
|
23
|
+
playerLocation: string;
|
|
24
|
+
canary?: boolean;
|
|
25
|
+
playerPath?: string;
|
|
26
|
+
playerRequirePath?: string;
|
|
27
|
+
downloadBrowser: boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
interface TunnelDaemonOptions {
|
|
31
|
+
tunnelOnlyMode: true;
|
|
32
|
+
tunnelRoutes: string[];
|
|
33
|
+
tunnelRoutesOutput: string;
|
|
34
|
+
tunnelHostHeader?: string;
|
|
35
|
+
tunnelRegion?: string;
|
|
36
|
+
}
|
|
37
|
+
interface NgrokTunnelOptions {
|
|
38
|
+
tunnelPort: number;
|
|
39
|
+
tunnelDiagnostics?: boolean;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
type TunnelOptions = (TunnelDaemonOptions | NgrokTunnelOptions) & {
|
|
43
|
+
tunnel: true;
|
|
44
|
+
tunnelUseHttpAddress?: boolean;
|
|
45
|
+
token: string;
|
|
46
|
+
project: string;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
type CodeCoverageReporter = 'clover' | 'html' | 'json-summary' | 'json' | 'lcov' | 'lcovonly' | 'teamcity' | 'text-lcov' | 'text-summary' | 'text';
|
|
50
|
+
|
|
51
|
+
interface LightweightSettings {
|
|
52
|
+
type: 'lightweight' | 'turboMode';
|
|
53
|
+
general: boolean;
|
|
54
|
+
disableLabs: boolean;
|
|
55
|
+
disableFeatureFlags: boolean;
|
|
56
|
+
disableAssets: boolean;
|
|
57
|
+
disablePixelValidation: boolean;
|
|
58
|
+
disableResults: boolean;
|
|
59
|
+
disableStepDelay: boolean;
|
|
60
|
+
disableRemoteStep: boolean;
|
|
61
|
+
assumePreloadedSharedSteps: boolean;
|
|
62
|
+
disableVisibilityCheck: boolean;
|
|
63
|
+
disableLocators: boolean;
|
|
64
|
+
bypassSetup: boolean;
|
|
65
|
+
disableAutoImprove: boolean;
|
|
66
|
+
disableQuotaBlocking: boolean;
|
|
67
|
+
onlyTestIdsNoSuite: boolean;
|
|
68
|
+
uploadAssetsAndResultsOnFailure: boolean;
|
|
69
|
+
preloadTests: boolean;
|
|
70
|
+
disableProjectDefaults: boolean;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// TODO: consider typing better, based on the validations we do (example: must have one of grid/grid-id/host&port/test plan)
|
|
74
|
+
interface RunnerOptions extends Partial<Omit<TunnelOptions, 'tunnelOnlyMode' | 'tunnel'>> {
|
|
75
|
+
token: string;
|
|
76
|
+
project: string;
|
|
77
|
+
user?: string;
|
|
78
|
+
webpackConfig?: string;
|
|
79
|
+
headless?: boolean;
|
|
80
|
+
disableNativeEvents?: boolean;
|
|
81
|
+
baseUrl?: string;
|
|
82
|
+
branch: string;
|
|
83
|
+
autoDetect: boolean;
|
|
84
|
+
userParamsData: object;
|
|
85
|
+
mode: 'selenium' | 'extension';
|
|
86
|
+
isRegressionBaselineRun?: boolean;
|
|
87
|
+
canary?: boolean;
|
|
88
|
+
rerunFailedByRunId?: string;
|
|
89
|
+
disableTimeoutRetry?: boolean;
|
|
90
|
+
resultLabels: string[];
|
|
91
|
+
path?: string;
|
|
92
|
+
protocol?: string;
|
|
93
|
+
testobjectSauce: { testobjectApiKey?: string };
|
|
94
|
+
overrideExecutionName?: string;
|
|
95
|
+
passZeroTests: boolean;
|
|
96
|
+
runQuarantinedTests: boolean;
|
|
97
|
+
downloadBrowser: boolean;
|
|
98
|
+
disableSockets: boolean;
|
|
99
|
+
disableCookiesSameSiteNoneRequiresSecure: boolean;
|
|
100
|
+
shouldMonitorPerformance?: boolean;
|
|
101
|
+
exitCodeIgnoreFailingTests?: boolean;
|
|
102
|
+
seleniumCapsFileContent: object;
|
|
103
|
+
retentionDays?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
|
|
104
|
+
retries?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20;
|
|
105
|
+
|
|
106
|
+
// #region What to execute
|
|
107
|
+
testId: string[];
|
|
108
|
+
name: string[];
|
|
109
|
+
label: string[];
|
|
110
|
+
suites: string[];
|
|
111
|
+
suiteIds: string[];
|
|
112
|
+
testPlan: string[];
|
|
113
|
+
testPlanIds: string[];
|
|
114
|
+
files: string[];
|
|
115
|
+
// #endregion
|
|
116
|
+
|
|
117
|
+
// #region Test config to use
|
|
118
|
+
testConfigNames?: string[];
|
|
119
|
+
testConfigIds?: string[];
|
|
120
|
+
// #endregion
|
|
121
|
+
|
|
122
|
+
// #region Grid details
|
|
123
|
+
grid?: string;
|
|
124
|
+
gridId?: string;
|
|
125
|
+
host?: string;
|
|
126
|
+
port?: number;
|
|
127
|
+
gridUsername?: string;
|
|
128
|
+
gridPassword?: string;
|
|
129
|
+
useLocalChromeDriver?: boolean;
|
|
130
|
+
chromeBinaryLocation?: string;
|
|
131
|
+
useChromeLauncher?: boolean;
|
|
132
|
+
|
|
133
|
+
disableGridCheck: boolean;
|
|
134
|
+
browser?: 'ie11' | 'ie' | 'internet explorer' | 'edge' | 'edge-chromium' | 'firefox' | 'safari' | 'chrome';
|
|
135
|
+
|
|
136
|
+
proxyForGrid: string;
|
|
137
|
+
|
|
138
|
+
experitestToken?: string;
|
|
139
|
+
saucelabs: { username: string; accessKey: string };
|
|
140
|
+
perfecto: { securityToken?: string; location?: string };
|
|
141
|
+
browserstack: { 'browserstack.user': string; 'browserstack.key': string };
|
|
142
|
+
// #endregion
|
|
143
|
+
|
|
144
|
+
// #region Report settings
|
|
145
|
+
reportFile?: string;
|
|
146
|
+
reportFileClassname?: string;
|
|
147
|
+
reporters?: string[];
|
|
148
|
+
// #endregion
|
|
149
|
+
|
|
150
|
+
// #region Parallel settings
|
|
151
|
+
beforeParallel: number;
|
|
152
|
+
parallel: number;
|
|
153
|
+
afterParallel: number;
|
|
154
|
+
//#endregion
|
|
155
|
+
|
|
156
|
+
// #region TMS
|
|
157
|
+
tmsSuppressReporting: boolean;
|
|
158
|
+
tmsRunId?: string;
|
|
159
|
+
tmsCustomFields?: string;
|
|
160
|
+
// #endregion
|
|
161
|
+
|
|
162
|
+
// #region Extension debugging
|
|
163
|
+
ext?: string;
|
|
164
|
+
extensionLocation?: string[];
|
|
165
|
+
extensionPath?: string;
|
|
166
|
+
// #endregion
|
|
167
|
+
|
|
168
|
+
// #region Session Player debugging
|
|
169
|
+
playerLocation: string;
|
|
170
|
+
playerPath?: string;
|
|
171
|
+
playerRequirePath?: string;
|
|
172
|
+
// #endregion
|
|
173
|
+
|
|
174
|
+
// #region Tunnel
|
|
175
|
+
tunnel?: boolean;
|
|
176
|
+
externalLambdatestTunnelId?: string;
|
|
177
|
+
externalLambdatestUseWss?: string;
|
|
178
|
+
externalLambdatestDisableAutomationTunneling: boolean;
|
|
179
|
+
externalLambdatestMitm: boolean;
|
|
180
|
+
// #endregion
|
|
181
|
+
|
|
182
|
+
// #region Hooks
|
|
183
|
+
beforeTest?: Function;
|
|
184
|
+
afterTest?: Function;
|
|
185
|
+
beforeSuite?: Function;
|
|
186
|
+
afterSuite?: Function;
|
|
187
|
+
// #endregion
|
|
188
|
+
|
|
189
|
+
// #region Timeouts
|
|
190
|
+
testStartTimeout: number;
|
|
191
|
+
timeout: number;
|
|
192
|
+
timeoutWasGiven: boolean;
|
|
193
|
+
browserTimeout: number;
|
|
194
|
+
newBrowserWaitTimeout: number;
|
|
195
|
+
getBrowserTimeout: number;
|
|
196
|
+
getBrowserRetries: number;
|
|
197
|
+
getSessionTimeout: number;
|
|
198
|
+
getSessionRetries: number;
|
|
199
|
+
driverRequestTimeout: number;
|
|
200
|
+
driverRequestRetries: number;
|
|
201
|
+
// #endregion
|
|
202
|
+
|
|
203
|
+
// #region Mock network
|
|
204
|
+
overrideMappingFile?: string;
|
|
205
|
+
mockNetworkRules?: object;
|
|
206
|
+
disableMockNetwork?: boolean;
|
|
207
|
+
// #endregion
|
|
208
|
+
|
|
209
|
+
// #region Code coverage
|
|
210
|
+
codeCoverageUrlFilter?: string;
|
|
211
|
+
collectCodeCoverage?: boolean;
|
|
212
|
+
codeCoverageReportPath?: string;
|
|
213
|
+
codeCoverageSourceMapPath?: string;
|
|
214
|
+
codeCoverageReporter: CodeCoverageReporter[];
|
|
215
|
+
codeCoverageInclude: string[];
|
|
216
|
+
// #endregion
|
|
217
|
+
|
|
218
|
+
// #region Remote run options
|
|
219
|
+
executionId?: string;
|
|
220
|
+
remoteRunId?: string;
|
|
221
|
+
schedulerId?: string;
|
|
222
|
+
source?: string;
|
|
223
|
+
resultId?: string;
|
|
224
|
+
// #endregion
|
|
225
|
+
|
|
226
|
+
// #region Customer Extension
|
|
227
|
+
installCustomExtension?: string;
|
|
228
|
+
// #endregion
|
|
229
|
+
|
|
230
|
+
// #region Capabilities format
|
|
231
|
+
w3cCapabilities: boolean;
|
|
232
|
+
oldCapabilities: boolean;
|
|
233
|
+
// #endregion
|
|
234
|
+
|
|
235
|
+
// #region Chrome specific settings
|
|
236
|
+
chromeBlockLocation: boolean;
|
|
237
|
+
chromeUserDataDir: false | string;
|
|
238
|
+
chromeExtraPrefs: object;
|
|
239
|
+
chromeExtraArgs: string[];
|
|
240
|
+
// #endregion
|
|
241
|
+
|
|
242
|
+
// #region Lightweight / Turbo Mode
|
|
243
|
+
lightweightMode?: LightweightSettings;
|
|
244
|
+
createPrefechedData?: boolean;
|
|
245
|
+
saveRCALocally?: boolean | string;
|
|
246
|
+
// #endregion
|
|
247
|
+
|
|
248
|
+
// #region intersections
|
|
249
|
+
intersections: { labels?: string[]; suiteNames?: string[]; suiteIds?: string[] };
|
|
250
|
+
// #endregion
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
type Options = |
|
|
254
|
+
LoginModeOptions |
|
|
255
|
+
InitModeOptions |
|
|
256
|
+
AgentModeOptions |
|
|
257
|
+
TunnelOptions |
|
|
258
|
+
RunnerOptions;
|
|
259
|
+
|
|
260
|
+
export function process(): Promise<Options>;
|