@azure/microsoft-playwright-testing 1.0.0-alpha.20250716.1 → 1.0.0-alpha.20250721.1
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/dist/browser/common/constants.js +100 -100
- package/dist/browser/common/constants.js.map +1 -1
- package/dist/browser/common/customerConfig.js +3 -0
- package/dist/browser/common/customerConfig.js.map +1 -1
- package/dist/browser/common/entraIdAccessToken.js +46 -43
- package/dist/browser/common/entraIdAccessToken.js.map +1 -1
- package/dist/browser/common/environmentVariables.js +8 -0
- package/dist/browser/common/environmentVariables.js.map +1 -1
- package/dist/browser/common/executor.js +1 -2
- package/dist/browser/common/executor.js.map +1 -1
- package/dist/browser/common/multimap.js +1 -0
- package/dist/browser/common/multimap.js.map +1 -1
- package/dist/browser/common/playwrightServiceConfig.js +34 -28
- package/dist/browser/common/playwrightServiceConfig.js.map +1 -1
- package/dist/browser/core/playwrightService.js +13 -8
- package/dist/browser/core/playwrightService.js.map +1 -1
- package/dist/browser/core/playwrightServiceEntra.js +36 -33
- package/dist/browser/core/playwrightServiceEntra.js.map +1 -1
- package/dist/browser/model/entraTokenDetails.js +4 -0
- package/dist/browser/model/entraTokenDetails.js.map +1 -1
- package/dist/browser/model/mptTokenDetails.js +8 -0
- package/dist/browser/model/mptTokenDetails.js.map +1 -1
- package/dist/browser/model/shard.js +10 -0
- package/dist/browser/model/shard.js.map +1 -1
- package/dist/browser/model/storageUri.js +4 -0
- package/dist/browser/model/storageUri.js.map +1 -1
- package/dist/browser/model/testResult.js +18 -0
- package/dist/browser/model/testResult.js.map +1 -1
- package/dist/browser/model/testRun.js +8 -3
- package/dist/browser/model/testRun.js.map +1 -1
- package/dist/browser/reporter/mptReporter.js +53 -47
- package/dist/browser/reporter/mptReporter.js.map +1 -1
- package/dist/browser/utils/cIInfoProvider.js +8 -9
- package/dist/browser/utils/cIInfoProvider.js.map +1 -1
- package/dist/browser/utils/packageManager.js +21 -27
- package/dist/browser/utils/packageManager.js.map +1 -1
- package/dist/browser/utils/reporterUtils.js +34 -31
- package/dist/browser/utils/reporterUtils.js.map +1 -1
- package/dist/browser/utils/serviceClient.js +7 -2
- package/dist/browser/utils/serviceClient.js.map +1 -1
- package/dist/browser/utils/utils.js +1 -1
- package/dist/browser/utils/utils.js.map +1 -1
- package/dist/commonjs/common/constants.js +101 -101
- package/dist/commonjs/common/constants.js.map +1 -1
- package/dist/commonjs/common/customerConfig.js +3 -0
- package/dist/commonjs/common/customerConfig.js.map +1 -1
- package/dist/commonjs/common/entraIdAccessToken.js +46 -43
- package/dist/commonjs/common/entraIdAccessToken.js.map +1 -1
- package/dist/commonjs/common/environmentVariables.js +8 -0
- package/dist/commonjs/common/environmentVariables.js.map +1 -1
- package/dist/commonjs/common/executor.js +1 -2
- package/dist/commonjs/common/executor.js.map +1 -1
- package/dist/commonjs/common/multimap.js +1 -0
- package/dist/commonjs/common/multimap.js.map +1 -1
- package/dist/commonjs/common/playwrightServiceConfig.js +34 -28
- package/dist/commonjs/common/playwrightServiceConfig.js.map +1 -1
- package/dist/commonjs/core/playwrightService.js +13 -8
- package/dist/commonjs/core/playwrightService.js.map +1 -1
- package/dist/commonjs/core/playwrightServiceEntra.js +36 -33
- package/dist/commonjs/core/playwrightServiceEntra.js.map +1 -1
- package/dist/commonjs/model/entraTokenDetails.js +4 -0
- package/dist/commonjs/model/entraTokenDetails.js.map +1 -1
- package/dist/commonjs/model/mptTokenDetails.js +8 -0
- package/dist/commonjs/model/mptTokenDetails.js.map +1 -1
- package/dist/commonjs/model/shard.js +10 -0
- package/dist/commonjs/model/shard.js.map +1 -1
- package/dist/commonjs/model/storageUri.js +4 -0
- package/dist/commonjs/model/storageUri.js.map +1 -1
- package/dist/commonjs/model/testResult.js +18 -0
- package/dist/commonjs/model/testResult.js.map +1 -1
- package/dist/commonjs/model/testRun.js +8 -3
- package/dist/commonjs/model/testRun.js.map +1 -1
- package/dist/commonjs/reporter/mptReporter.js +53 -47
- package/dist/commonjs/reporter/mptReporter.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +11 -11
- package/dist/commonjs/utils/cIInfoProvider.js +8 -9
- package/dist/commonjs/utils/cIInfoProvider.js.map +1 -1
- package/dist/commonjs/utils/packageManager.js +21 -27
- package/dist/commonjs/utils/packageManager.js.map +1 -1
- package/dist/commonjs/utils/reporterUtils.js +34 -31
- package/dist/commonjs/utils/reporterUtils.js.map +1 -1
- package/dist/commonjs/utils/serviceClient.js +7 -2
- package/dist/commonjs/utils/serviceClient.js.map +1 -1
- package/dist/commonjs/utils/utils.js +1 -1
- package/dist/commonjs/utils/utils.js.map +1 -1
- package/dist/esm/common/constants.js +100 -100
- package/dist/esm/common/constants.js.map +1 -1
- package/dist/esm/common/customerConfig.js +3 -0
- package/dist/esm/common/customerConfig.js.map +1 -1
- package/dist/esm/common/entraIdAccessToken.js +46 -43
- package/dist/esm/common/entraIdAccessToken.js.map +1 -1
- package/dist/esm/common/environmentVariables.js +8 -0
- package/dist/esm/common/environmentVariables.js.map +1 -1
- package/dist/esm/common/executor.js +1 -2
- package/dist/esm/common/executor.js.map +1 -1
- package/dist/esm/common/multimap.js +1 -0
- package/dist/esm/common/multimap.js.map +1 -1
- package/dist/esm/common/playwrightServiceConfig.js +34 -28
- package/dist/esm/common/playwrightServiceConfig.js.map +1 -1
- package/dist/esm/core/playwrightService.js +13 -8
- package/dist/esm/core/playwrightService.js.map +1 -1
- package/dist/esm/core/playwrightServiceEntra.js +36 -33
- package/dist/esm/core/playwrightServiceEntra.js.map +1 -1
- package/dist/esm/model/entraTokenDetails.js +4 -0
- package/dist/esm/model/entraTokenDetails.js.map +1 -1
- package/dist/esm/model/mptTokenDetails.js +8 -0
- package/dist/esm/model/mptTokenDetails.js.map +1 -1
- package/dist/esm/model/shard.js +10 -0
- package/dist/esm/model/shard.js.map +1 -1
- package/dist/esm/model/storageUri.js +4 -0
- package/dist/esm/model/storageUri.js.map +1 -1
- package/dist/esm/model/testResult.js +18 -0
- package/dist/esm/model/testResult.js.map +1 -1
- package/dist/esm/model/testRun.js +8 -3
- package/dist/esm/model/testRun.js.map +1 -1
- package/dist/esm/reporter/mptReporter.js +53 -47
- package/dist/esm/reporter/mptReporter.js.map +1 -1
- package/dist/esm/utils/cIInfoProvider.js +8 -9
- package/dist/esm/utils/cIInfoProvider.js.map +1 -1
- package/dist/esm/utils/packageManager.js +21 -27
- package/dist/esm/utils/packageManager.js.map +1 -1
- package/dist/esm/utils/reporterUtils.js +34 -31
- package/dist/esm/utils/reporterUtils.js.map +1 -1
- package/dist/esm/utils/serviceClient.js +7 -2
- package/dist/esm/utils/serviceClient.js.map +1 -1
- package/dist/esm/utils/utils.js +1 -1
- package/dist/esm/utils/utils.js.map +1 -1
- package/dist/react-native/common/constants.js +100 -100
- package/dist/react-native/common/constants.js.map +1 -1
- package/dist/react-native/common/customerConfig.js +3 -0
- package/dist/react-native/common/customerConfig.js.map +1 -1
- package/dist/react-native/common/entraIdAccessToken.js +46 -43
- package/dist/react-native/common/entraIdAccessToken.js.map +1 -1
- package/dist/react-native/common/environmentVariables.js +8 -0
- package/dist/react-native/common/environmentVariables.js.map +1 -1
- package/dist/react-native/common/executor.js +1 -2
- package/dist/react-native/common/executor.js.map +1 -1
- package/dist/react-native/common/multimap.js +1 -0
- package/dist/react-native/common/multimap.js.map +1 -1
- package/dist/react-native/common/playwrightServiceConfig.js +34 -28
- package/dist/react-native/common/playwrightServiceConfig.js.map +1 -1
- package/dist/react-native/core/playwrightService.js +13 -8
- package/dist/react-native/core/playwrightService.js.map +1 -1
- package/dist/react-native/core/playwrightServiceEntra.js +36 -33
- package/dist/react-native/core/playwrightServiceEntra.js.map +1 -1
- package/dist/react-native/model/entraTokenDetails.js +4 -0
- package/dist/react-native/model/entraTokenDetails.js.map +1 -1
- package/dist/react-native/model/mptTokenDetails.js +8 -0
- package/dist/react-native/model/mptTokenDetails.js.map +1 -1
- package/dist/react-native/model/shard.js +10 -0
- package/dist/react-native/model/shard.js.map +1 -1
- package/dist/react-native/model/storageUri.js +4 -0
- package/dist/react-native/model/storageUri.js.map +1 -1
- package/dist/react-native/model/testResult.js +18 -0
- package/dist/react-native/model/testResult.js.map +1 -1
- package/dist/react-native/model/testRun.js +8 -3
- package/dist/react-native/model/testRun.js.map +1 -1
- package/dist/react-native/reporter/mptReporter.js +53 -47
- package/dist/react-native/reporter/mptReporter.js.map +1 -1
- package/dist/react-native/utils/cIInfoProvider.js +8 -9
- package/dist/react-native/utils/cIInfoProvider.js.map +1 -1
- package/dist/react-native/utils/packageManager.js +21 -27
- package/dist/react-native/utils/packageManager.js.map +1 -1
- package/dist/react-native/utils/reporterUtils.js +34 -31
- package/dist/react-native/utils/reporterUtils.js.map +1 -1
- package/dist/react-native/utils/serviceClient.js +7 -2
- package/dist/react-native/utils/serviceClient.js.map +1 -1
- package/dist/react-native/utils/utils.js +1 -1
- package/dist/react-native/utils/utils.js.map +1 -1
- package/package.json +2 -2
|
@@ -6,35 +6,13 @@ exports.PlaywrightServiceConfig = void 0;
|
|
|
6
6
|
const constants_js_1 = require("./constants.js");
|
|
7
7
|
const utils_js_1 = require("../utils/utils.js");
|
|
8
8
|
class PlaywrightServiceConfig {
|
|
9
|
+
serviceOs;
|
|
10
|
+
runId;
|
|
11
|
+
timeout;
|
|
12
|
+
slowMo;
|
|
13
|
+
exposeNetwork;
|
|
14
|
+
runName;
|
|
9
15
|
constructor() {
|
|
10
|
-
this.setOptions = (options) => {
|
|
11
|
-
if (options === null || options === void 0 ? void 0 : options.exposeNetwork) {
|
|
12
|
-
this.exposeNetwork = options.exposeNetwork;
|
|
13
|
-
}
|
|
14
|
-
if (!process.env[constants_js_1.InternalEnvironmentVariables.MPT_SERVICE_RUN_ID]) {
|
|
15
|
-
if (options === null || options === void 0 ? void 0 : options.runId) {
|
|
16
|
-
this.runId = options.runId;
|
|
17
|
-
process.env[constants_js_1.InternalEnvironmentVariables.MPT_SERVICE_RUN_ID] = this.runId;
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
this.runId = (0, utils_js_1.getAndSetRunId)();
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
if (!process.env[constants_js_1.InternalEnvironmentVariables.MPT_SERVICE_RUN_NAME] && (options === null || options === void 0 ? void 0 : options.runName)) {
|
|
24
|
-
this.runName = options.runName;
|
|
25
|
-
process.env[constants_js_1.InternalEnvironmentVariables.MPT_SERVICE_RUN_NAME] = this.runName;
|
|
26
|
-
}
|
|
27
|
-
if (options === null || options === void 0 ? void 0 : options.os) {
|
|
28
|
-
this.serviceOs = options.os;
|
|
29
|
-
process.env[constants_js_1.InternalEnvironmentVariables.MPT_SERVICE_OS] = this.serviceOs;
|
|
30
|
-
}
|
|
31
|
-
if (options === null || options === void 0 ? void 0 : options.slowMo) {
|
|
32
|
-
this.slowMo = options.slowMo;
|
|
33
|
-
}
|
|
34
|
-
if (options === null || options === void 0 ? void 0 : options.timeout) {
|
|
35
|
-
this.timeout = options.timeout;
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
16
|
this.serviceOs = (process.env[constants_js_1.InternalEnvironmentVariables.MPT_SERVICE_OS] ||
|
|
39
17
|
constants_js_1.DefaultConnectOptionsConstants.DEFAULT_SERVICE_OS);
|
|
40
18
|
this.runName = process.env[constants_js_1.InternalEnvironmentVariables.MPT_SERVICE_RUN_NAME] || "";
|
|
@@ -43,6 +21,34 @@ class PlaywrightServiceConfig {
|
|
|
43
21
|
this.slowMo = constants_js_1.DefaultConnectOptionsConstants.DEFAULT_SLOW_MO;
|
|
44
22
|
this.exposeNetwork = constants_js_1.DefaultConnectOptionsConstants.DEFAULT_EXPOSE_NETWORK;
|
|
45
23
|
}
|
|
24
|
+
setOptions = (options) => {
|
|
25
|
+
if (options?.exposeNetwork) {
|
|
26
|
+
this.exposeNetwork = options.exposeNetwork;
|
|
27
|
+
}
|
|
28
|
+
if (!process.env[constants_js_1.InternalEnvironmentVariables.MPT_SERVICE_RUN_ID]) {
|
|
29
|
+
if (options?.runId) {
|
|
30
|
+
this.runId = options.runId;
|
|
31
|
+
process.env[constants_js_1.InternalEnvironmentVariables.MPT_SERVICE_RUN_ID] = this.runId;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.runId = (0, utils_js_1.getAndSetRunId)();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (!process.env[constants_js_1.InternalEnvironmentVariables.MPT_SERVICE_RUN_NAME] && options?.runName) {
|
|
38
|
+
this.runName = options.runName;
|
|
39
|
+
process.env[constants_js_1.InternalEnvironmentVariables.MPT_SERVICE_RUN_NAME] = this.runName;
|
|
40
|
+
}
|
|
41
|
+
if (options?.os) {
|
|
42
|
+
this.serviceOs = options.os;
|
|
43
|
+
process.env[constants_js_1.InternalEnvironmentVariables.MPT_SERVICE_OS] = this.serviceOs;
|
|
44
|
+
}
|
|
45
|
+
if (options?.slowMo) {
|
|
46
|
+
this.slowMo = options.slowMo;
|
|
47
|
+
}
|
|
48
|
+
if (options?.timeout) {
|
|
49
|
+
this.timeout = options.timeout;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
46
52
|
}
|
|
47
53
|
exports.PlaywrightServiceConfig = PlaywrightServiceConfig;
|
|
48
54
|
//# sourceMappingURL=playwrightServiceConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwrightServiceConfig.js","sourceRoot":"","sources":["../../../src/common/playwrightServiceConfig.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,iDAA8F;AAE9F,gDAAmD;AAEnD,MAAM,uBAAuB;
|
|
1
|
+
{"version":3,"file":"playwrightServiceConfig.js","sourceRoot":"","sources":["../../../src/common/playwrightServiceConfig.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,iDAA8F;AAE9F,gDAAmD;AAEnD,MAAM,uBAAuB;IACpB,SAAS,CAAS;IAClB,KAAK,CAAS;IACd,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,aAAa,CAAS;IACtB,OAAO,CAAS;IACvB;QACE,IAAI,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,2CAA4B,CAAC,cAAc,CAAC;YACxE,6CAA8B,CAAC,kBAAkB,CAAW,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,2CAA4B,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;QACpF,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,2CAA4B,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAChF,IAAI,CAAC,OAAO,GAAG,6CAA8B,CAAC,eAAe,CAAC;QAC9D,IAAI,CAAC,MAAM,GAAG,6CAA8B,CAAC,eAAe,CAAC;QAC7D,IAAI,CAAC,aAAa,GAAG,6CAA8B,CAAC,sBAAsB,CAAC;IAC7E,CAAC;IAED,UAAU,GAAG,CAAC,OAA4C,EAAQ,EAAE;QAClE,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,2CAA4B,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAClE,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,2CAA4B,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,GAAG,IAAA,yBAAc,GAAE,CAAC;YAChC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,2CAA4B,CAAC,oBAAoB,CAAC,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YACxF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,2CAA4B,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAChF,CAAC;QACD,IAAI,OAAO,EAAE,EAAE,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,2CAA4B,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5E,CAAC;QACD,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC/B,CAAC;QACD,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACjC,CAAC;IACH,CAAC,CAAC;CACH;AAEQ,0DAAuB","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DefaultConnectOptionsConstants, InternalEnvironmentVariables } from \"./constants.js\";\nimport type { PlaywrightServiceAdditionalOptions, OsType } from \"./types.js\";\nimport { getAndSetRunId } from \"../utils/utils.js\";\n\nclass PlaywrightServiceConfig {\n public serviceOs: OsType;\n public runId: string;\n public timeout: number;\n public slowMo: number;\n public exposeNetwork: string;\n public runName: string;\n constructor() {\n this.serviceOs = (process.env[InternalEnvironmentVariables.MPT_SERVICE_OS] ||\n DefaultConnectOptionsConstants.DEFAULT_SERVICE_OS) as OsType;\n this.runName = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_NAME] || \"\";\n this.runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID] || \"\";\n this.timeout = DefaultConnectOptionsConstants.DEFAULT_TIMEOUT;\n this.slowMo = DefaultConnectOptionsConstants.DEFAULT_SLOW_MO;\n this.exposeNetwork = DefaultConnectOptionsConstants.DEFAULT_EXPOSE_NETWORK;\n }\n\n setOptions = (options?: PlaywrightServiceAdditionalOptions): void => {\n if (options?.exposeNetwork) {\n this.exposeNetwork = options.exposeNetwork;\n }\n if (!process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID]) {\n if (options?.runId) {\n this.runId = options.runId;\n process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID] = this.runId;\n } else {\n this.runId = getAndSetRunId();\n }\n }\n if (!process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_NAME] && options?.runName) {\n this.runName = options.runName;\n process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_NAME] = this.runName;\n }\n if (options?.os) {\n this.serviceOs = options.os;\n process.env[InternalEnvironmentVariables.MPT_SERVICE_OS] = this.serviceOs;\n }\n if (options?.slowMo) {\n this.slowMo = options.slowMo;\n }\n if (options?.timeout) {\n this.timeout = options.timeout;\n }\n };\n}\n\nexport { PlaywrightServiceConfig };\n"]}
|
|
@@ -16,7 +16,7 @@ const performOneTimeOperation = (options) => {
|
|
|
16
16
|
if (oneTimeOperationFlag)
|
|
17
17
|
return;
|
|
18
18
|
process.env[constants_js_1.InternalEnvironmentVariables.ONE_TIME_OPERATION_FLAG] = "true";
|
|
19
|
-
if (
|
|
19
|
+
if (options?.serviceAuthType === constants_js_1.ServiceAuth.ACCESS_TOKEN) {
|
|
20
20
|
(0, utils_js_1.warnIfAccessTokenCloseToExpiry)();
|
|
21
21
|
}
|
|
22
22
|
};
|
|
@@ -55,7 +55,7 @@ const getServiceConfig = (config, options) => {
|
|
|
55
55
|
(0, utils_js_1.validateServiceUrl)();
|
|
56
56
|
const playwrightVersionInfo = (0, utils_js_1.getVersionInfo)((0, utils_js_1.getPlaywrightVersion)());
|
|
57
57
|
const isMultipleGlobalFileSupported = playwrightVersionInfo.major >= 1 && playwrightVersionInfo.minor >= 49;
|
|
58
|
-
if (options
|
|
58
|
+
if (options?.credential) {
|
|
59
59
|
playwrightServiceEntra_js_1.default.entraIdAccessToken = options.credential;
|
|
60
60
|
}
|
|
61
61
|
// if global setup/teardown is string -
|
|
@@ -100,7 +100,7 @@ const getServiceConfig = (config, options) => {
|
|
|
100
100
|
playwrightServiceConfig.setOptions(options);
|
|
101
101
|
(0, utils_js_1.emitReportingUrl)();
|
|
102
102
|
const globalFunctions = {};
|
|
103
|
-
if (
|
|
103
|
+
if (options?.serviceAuthType === constants_js_1.ServiceAuth.ACCESS_TOKEN) {
|
|
104
104
|
// mpt PAT requested and set by the customer, no need to setup entra lifecycle handlers
|
|
105
105
|
(0, utils_js_1.validateMptPAT)(utils_js_1.exitWithFailureMessage);
|
|
106
106
|
}
|
|
@@ -125,14 +125,17 @@ const getServiceConfig = (config, options) => {
|
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
performOneTimeOperation(options);
|
|
128
|
-
if (
|
|
129
|
-
return
|
|
128
|
+
if (options?.useCloudHostedBrowsers === false) {
|
|
129
|
+
return {
|
|
130
|
+
...globalFunctions,
|
|
131
|
+
};
|
|
130
132
|
}
|
|
131
133
|
if (!process.env[constants_js_1.InternalEnvironmentVariables.MPT_CLOUD_HOSTED_BROWSER_USED]) {
|
|
132
134
|
process.env[constants_js_1.InternalEnvironmentVariables.MPT_CLOUD_HOSTED_BROWSER_USED] = "true";
|
|
133
135
|
console.log("\nRunning tests using Microsoft Playwright Testing service.");
|
|
134
136
|
}
|
|
135
|
-
return
|
|
137
|
+
return {
|
|
138
|
+
use: {
|
|
136
139
|
connectOptions: {
|
|
137
140
|
wsEndpoint: (0, utils_js_1.getServiceWSEndpoint)(playwrightServiceConfig.runId, playwrightServiceConfig.serviceOs),
|
|
138
141
|
headers: {
|
|
@@ -143,7 +146,9 @@ const getServiceConfig = (config, options) => {
|
|
|
143
146
|
exposeNetwork: playwrightServiceConfig.exposeNetwork,
|
|
144
147
|
slowMo: playwrightServiceConfig.slowMo,
|
|
145
148
|
},
|
|
146
|
-
}
|
|
149
|
+
},
|
|
150
|
+
...globalFunctions,
|
|
151
|
+
};
|
|
147
152
|
};
|
|
148
153
|
exports.getServiceConfig = getServiceConfig;
|
|
149
154
|
/**
|
|
@@ -177,7 +182,7 @@ exports.getServiceConfig = getServiceConfig;
|
|
|
177
182
|
const getConnectOptions = async (options) => {
|
|
178
183
|
const playwrightServiceConfig = new playwrightServiceConfig_js_1.PlaywrightServiceConfig();
|
|
179
184
|
playwrightServiceConfig.setOptions(options);
|
|
180
|
-
const token = await (0, utils_js_1.fetchOrValidateAccessToken)(options
|
|
185
|
+
const token = await (0, utils_js_1.fetchOrValidateAccessToken)(options?.credential);
|
|
181
186
|
return {
|
|
182
187
|
wsEndpoint: (0, utils_js_1.getServiceWSEndpoint)(playwrightServiceConfig.runId, playwrightServiceConfig.serviceOs),
|
|
183
188
|
options: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwrightService.js","sourceRoot":"","sources":["../../../src/core/playwrightService.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { InternalEnvironmentVariables, ServiceAuth } from \"../common/constants.js\";\nimport customerConfig from \"../common/customerConfig.js\";\nimport { PlaywrightServiceConfig } from \"../common/playwrightServiceConfig.js\";\nimport playwrightServiceEntra from \"./playwrightServiceEntra.js\";\nimport type { PlaywrightServiceAdditionalOptions, BrowserConnectOptions } from \"../common/types.js\";\nimport {\n emitReportingUrl,\n fetchOrValidateAccessToken,\n getAccessToken,\n getServiceWSEndpoint,\n validateMptPAT,\n warnIfAccessTokenCloseToExpiry,\n validatePlaywrightVersion,\n validateServiceUrl,\n exitWithFailureMessage,\n getPackageVersion,\n getPlaywrightVersion,\n getVersionInfo,\n} from \"../utils/utils.js\";\nimport { ServiceErrorMessageConstants } from \"../common/messages.js\";\nimport type { PlaywrightTestConfig } from \"@playwright/test\";\nimport { globalSetupPath, globalTeardownPath } from \"./playwrightServiceUtils.js\";\n\nconst performOneTimeOperation = (options?: PlaywrightServiceAdditionalOptions): void => {\n const oneTimeOperationFlag =\n process.env[InternalEnvironmentVariables.ONE_TIME_OPERATION_FLAG] === \"true\";\n if (oneTimeOperationFlag) return;\n process.env[InternalEnvironmentVariables.ONE_TIME_OPERATION_FLAG] = \"true\";\n if (options?.serviceAuthType === ServiceAuth.ACCESS_TOKEN) {\n warnIfAccessTokenCloseToExpiry();\n }\n};\n/**\n * @public\n *\n * Generate playwright configuration integrated with Microsoft Playwright Testing.\n *\n * @param config - base playwright configuration\n * @param options - additional options for the service\n * @returns PlaywrightConfig\n *\n * @example\n * ```\n * import { defineConfig } from \"playwright/test\";\n * import { getServiceConfig } from \"@azure/microsoft-playwright-testing\";\n * import playwrightConfig from \"./playwright.config\";\n *\n * export default defineConfig(playwrightConfig, getServiceConfig(playwrightConfig));\n * ```\n *\n * @example\n * ```\n * import { defineConfig } from \"playwright/test\";\n * import { getServiceConfig, ServiceOS } from \"@azure/microsoft-playwright-testing\";\n * import playwrightConfig from \"./playwright.config\";\n *\n * export default defineConfig(playwrightConfig, getServiceConfig(playwrightConfig, {\n * runId: \"custom run id\",\n * os: ServiceOS.WINDOWS\n * }));\n * ```\n */\nconst getServiceConfig = (\n config: PlaywrightTestConfig,\n options?: PlaywrightServiceAdditionalOptions,\n): PlaywrightTestConfig => {\n validatePlaywrightVersion();\n validateServiceUrl();\n const playwrightVersionInfo = getVersionInfo(getPlaywrightVersion());\n const isMultipleGlobalFileSupported =\n playwrightVersionInfo.major >= 1 && playwrightVersionInfo.minor >= 49;\n if (options?.credential) {\n playwrightServiceEntra.entraIdAccessToken = options.credential;\n }\n\n // if global setup/teardown is string -\n // 1. if multiple global file is supported, convert it to array\n // 2. wrap playwright-service global setup/teardown with customer provided global setup/teardown\n\n // if global setup/teardown is array -\n // 1. if multiple global file is not supported, throw error\n // 2. append playwright-service global setup/teardown with customer provided global setup/teardown\n if (config && config.globalSetup) {\n if (typeof config.globalSetup === \"string\") {\n if (isMultipleGlobalFileSupported) {\n customerConfig.globalSetup = [config.globalSetup];\n } else {\n customerConfig.globalSetup = config.globalSetup;\n }\n } else {\n if (!isMultipleGlobalFileSupported) {\n throw new Error(\n ServiceErrorMessageConstants.MULTIPLE_SETUP_FILE_PLAYWRIGHT_VERSION_ERROR.message,\n );\n }\n customerConfig.globalSetup = config.globalSetup;\n }\n }\n\n if (config && config.globalTeardown) {\n if (typeof config.globalTeardown === \"string\") {\n if (isMultipleGlobalFileSupported) {\n customerConfig.globalTeardown = [config.globalTeardown];\n } else {\n customerConfig.globalTeardown = config.globalTeardown;\n }\n } else {\n if (!isMultipleGlobalFileSupported) {\n throw new Error(\n ServiceErrorMessageConstants.MULTIPLE_SETUP_FILE_PLAYWRIGHT_VERSION_ERROR.message,\n );\n }\n customerConfig.globalTeardown = config.globalTeardown;\n }\n }\n\n const playwrightServiceConfig = new PlaywrightServiceConfig();\n playwrightServiceConfig.setOptions(options);\n emitReportingUrl();\n\n const globalFunctions: any = {};\n\n if (options?.serviceAuthType === ServiceAuth.ACCESS_TOKEN) {\n // mpt PAT requested and set by the customer, no need to setup entra lifecycle handlers\n validateMptPAT(exitWithFailureMessage);\n } else {\n // If multiple global file is supported, append playwright-service global setup/teardown with customer provided global setup/teardown\n if (isMultipleGlobalFileSupported) {\n globalFunctions.globalSetup = [] as string[];\n globalFunctions.globalTeardown = [] as string[];\n if (customerConfig.globalSetup) {\n globalFunctions.globalSetup.push(...(customerConfig.globalSetup as string[]));\n }\n if (customerConfig.globalTeardown) {\n globalFunctions.globalTeardown.push(...(customerConfig.globalTeardown as string[]));\n }\n globalFunctions.globalSetup.push(globalSetupPath);\n globalFunctions.globalTeardown.push(globalTeardownPath);\n } else {\n // If multiple global file is not supported, wrap playwright-service global setup/teardown with customer provided global setup/teardown\n globalFunctions.globalSetup = globalSetupPath;\n globalFunctions.globalTeardown = globalTeardownPath;\n }\n }\n performOneTimeOperation(options);\n if (options?.useCloudHostedBrowsers === false) {\n return {\n ...globalFunctions,\n };\n }\n if (!process.env[InternalEnvironmentVariables.MPT_CLOUD_HOSTED_BROWSER_USED]) {\n process.env[InternalEnvironmentVariables.MPT_CLOUD_HOSTED_BROWSER_USED] = \"true\";\n console.log(\"\\nRunning tests using Microsoft Playwright Testing service.\");\n }\n\n return {\n use: {\n connectOptions: {\n wsEndpoint: getServiceWSEndpoint(\n playwrightServiceConfig.runId,\n playwrightServiceConfig.serviceOs,\n ),\n headers: {\n Authorization: `Bearer ${getAccessToken()}`,\n \"x-ms-package-version\": `@azure/microsoft-playwright-testing/${getPackageVersion()}`,\n },\n timeout: playwrightServiceConfig.timeout,\n exposeNetwork: playwrightServiceConfig.exposeNetwork,\n slowMo: playwrightServiceConfig.slowMo,\n },\n },\n ...globalFunctions,\n };\n};\n\n/**\n * @public\n *\n * Get connect options required to connect to Microsoft Playwright Testing's cloud hosted browsers.\n *\n * @param options - additional options for the service\n * @returns BrowserConnectOptions\n *\n * @example\n * ```\n * import playwright, { test, expect, BrowserType } from \"@playwright/test\";\n * import { getConnectOptions } from \"@azure/microsoft-playwright-testing\";\n *\n * test('has title', async ({ browserName }) => {\n * const { wsEndpoint, options } = await getConnectOptions();\n * const browser = await (playwright[browserName] as BrowserType).connect(wsEndpoint, options);\n * const context = await browser.newContext();\n * const page = await context.newPage();\n *\n * await page.goto('https://playwright.dev/');\n * await expect(page).toHaveTitle(/Playwright/);\n *\n * await page.close();\n * await context.close();\n * await browser.close();\n * });\n * ```\n */\nconst getConnectOptions = async (\n options?: Omit<PlaywrightServiceAdditionalOptions, \"serviceAuthType\">,\n): Promise<BrowserConnectOptions> => {\n const playwrightServiceConfig = new PlaywrightServiceConfig();\n playwrightServiceConfig.setOptions(options);\n\n const token = await fetchOrValidateAccessToken(options?.credential);\n return {\n wsEndpoint: getServiceWSEndpoint(\n playwrightServiceConfig.runId,\n playwrightServiceConfig.serviceOs,\n ),\n options: {\n headers: {\n Authorization: `Bearer ${token}`,\n \"x-ms-package-version\": `@azure/microsoft-playwright-testing/${getPackageVersion()}`,\n },\n timeout: playwrightServiceConfig.timeout,\n exposeNetwork: playwrightServiceConfig.exposeNetwork,\n slowMo: playwrightServiceConfig.slowMo,\n },\n };\n};\n\nexport { getServiceConfig, getConnectOptions };\n"]}
|
|
1
|
+
{"version":3,"file":"playwrightService.js","sourceRoot":"","sources":["../../../src/core/playwrightService.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { InternalEnvironmentVariables, ServiceAuth } from \"../common/constants.js\";\nimport customerConfig from \"../common/customerConfig.js\";\nimport { PlaywrightServiceConfig } from \"../common/playwrightServiceConfig.js\";\nimport playwrightServiceEntra from \"./playwrightServiceEntra.js\";\nimport type { PlaywrightServiceAdditionalOptions, BrowserConnectOptions } from \"../common/types.js\";\nimport {\n emitReportingUrl,\n fetchOrValidateAccessToken,\n getAccessToken,\n getServiceWSEndpoint,\n validateMptPAT,\n warnIfAccessTokenCloseToExpiry,\n validatePlaywrightVersion,\n validateServiceUrl,\n exitWithFailureMessage,\n getPackageVersion,\n getPlaywrightVersion,\n getVersionInfo,\n} from \"../utils/utils.js\";\nimport { ServiceErrorMessageConstants } from \"../common/messages.js\";\nimport type { PlaywrightTestConfig } from \"@playwright/test\";\nimport { globalSetupPath, globalTeardownPath } from \"./playwrightServiceUtils.js\";\n\nconst performOneTimeOperation = (options?: PlaywrightServiceAdditionalOptions): void => {\n const oneTimeOperationFlag =\n process.env[InternalEnvironmentVariables.ONE_TIME_OPERATION_FLAG] === \"true\";\n if (oneTimeOperationFlag) return;\n process.env[InternalEnvironmentVariables.ONE_TIME_OPERATION_FLAG] = \"true\";\n if (options?.serviceAuthType === ServiceAuth.ACCESS_TOKEN) {\n warnIfAccessTokenCloseToExpiry();\n }\n};\n/**\n * @public\n *\n * Generate playwright configuration integrated with Microsoft Playwright Testing.\n *\n * @param config - base playwright configuration\n * @param options - additional options for the service\n * @returns PlaywrightConfig\n *\n * @example\n * ```\n * import { defineConfig } from \"playwright/test\";\n * import { getServiceConfig } from \"@azure/microsoft-playwright-testing\";\n * import playwrightConfig from \"./playwright.config\";\n *\n * export default defineConfig(playwrightConfig, getServiceConfig(playwrightConfig));\n * ```\n *\n * @example\n * ```\n * import { defineConfig } from \"playwright/test\";\n * import { getServiceConfig, ServiceOS } from \"@azure/microsoft-playwright-testing\";\n * import playwrightConfig from \"./playwright.config\";\n *\n * export default defineConfig(playwrightConfig, getServiceConfig(playwrightConfig, {\n * runId: \"custom run id\",\n * os: ServiceOS.WINDOWS\n * }));\n * ```\n */\nconst getServiceConfig = (\n config: PlaywrightTestConfig,\n options?: PlaywrightServiceAdditionalOptions,\n): PlaywrightTestConfig => {\n validatePlaywrightVersion();\n validateServiceUrl();\n const playwrightVersionInfo = getVersionInfo(getPlaywrightVersion());\n const isMultipleGlobalFileSupported =\n playwrightVersionInfo.major >= 1 && playwrightVersionInfo.minor >= 49;\n if (options?.credential) {\n playwrightServiceEntra.entraIdAccessToken = options.credential;\n }\n\n // if global setup/teardown is string -\n // 1. if multiple global file is supported, convert it to array\n // 2. wrap playwright-service global setup/teardown with customer provided global setup/teardown\n\n // if global setup/teardown is array -\n // 1. if multiple global file is not supported, throw error\n // 2. append playwright-service global setup/teardown with customer provided global setup/teardown\n if (config && config.globalSetup) {\n if (typeof config.globalSetup === \"string\") {\n if (isMultipleGlobalFileSupported) {\n customerConfig.globalSetup = [config.globalSetup];\n } else {\n customerConfig.globalSetup = config.globalSetup;\n }\n } else {\n if (!isMultipleGlobalFileSupported) {\n throw new Error(\n ServiceErrorMessageConstants.MULTIPLE_SETUP_FILE_PLAYWRIGHT_VERSION_ERROR.message,\n );\n }\n customerConfig.globalSetup = config.globalSetup;\n }\n }\n\n if (config && config.globalTeardown) {\n if (typeof config.globalTeardown === \"string\") {\n if (isMultipleGlobalFileSupported) {\n customerConfig.globalTeardown = [config.globalTeardown];\n } else {\n customerConfig.globalTeardown = config.globalTeardown;\n }\n } else {\n if (!isMultipleGlobalFileSupported) {\n throw new Error(\n ServiceErrorMessageConstants.MULTIPLE_SETUP_FILE_PLAYWRIGHT_VERSION_ERROR.message,\n );\n }\n customerConfig.globalTeardown = config.globalTeardown;\n }\n }\n\n const playwrightServiceConfig = new PlaywrightServiceConfig();\n playwrightServiceConfig.setOptions(options);\n emitReportingUrl();\n\n const globalFunctions: any = {};\n\n if (options?.serviceAuthType === ServiceAuth.ACCESS_TOKEN) {\n // mpt PAT requested and set by the customer, no need to setup entra lifecycle handlers\n validateMptPAT(exitWithFailureMessage);\n } else {\n // If multiple global file is supported, append playwright-service global setup/teardown with customer provided global setup/teardown\n if (isMultipleGlobalFileSupported) {\n globalFunctions.globalSetup = [] as string[];\n globalFunctions.globalTeardown = [] as string[];\n if (customerConfig.globalSetup) {\n globalFunctions.globalSetup.push(...(customerConfig.globalSetup as string[]));\n }\n if (customerConfig.globalTeardown) {\n globalFunctions.globalTeardown.push(...(customerConfig.globalTeardown as string[]));\n }\n globalFunctions.globalSetup.push(globalSetupPath);\n globalFunctions.globalTeardown.push(globalTeardownPath);\n } else {\n // If multiple global file is not supported, wrap playwright-service global setup/teardown with customer provided global setup/teardown\n globalFunctions.globalSetup = globalSetupPath;\n globalFunctions.globalTeardown = globalTeardownPath;\n }\n }\n performOneTimeOperation(options);\n if (options?.useCloudHostedBrowsers === false) {\n return {\n ...globalFunctions,\n };\n }\n if (!process.env[InternalEnvironmentVariables.MPT_CLOUD_HOSTED_BROWSER_USED]) {\n process.env[InternalEnvironmentVariables.MPT_CLOUD_HOSTED_BROWSER_USED] = \"true\";\n console.log(\"\\nRunning tests using Microsoft Playwright Testing service.\");\n }\n\n return {\n use: {\n connectOptions: {\n wsEndpoint: getServiceWSEndpoint(\n playwrightServiceConfig.runId,\n playwrightServiceConfig.serviceOs,\n ),\n headers: {\n Authorization: `Bearer ${getAccessToken()}`,\n \"x-ms-package-version\": `@azure/microsoft-playwright-testing/${getPackageVersion()}`,\n },\n timeout: playwrightServiceConfig.timeout,\n exposeNetwork: playwrightServiceConfig.exposeNetwork,\n slowMo: playwrightServiceConfig.slowMo,\n },\n },\n ...globalFunctions,\n };\n};\n\n/**\n * @public\n *\n * Get connect options required to connect to Microsoft Playwright Testing's cloud hosted browsers.\n *\n * @param options - additional options for the service\n * @returns BrowserConnectOptions\n *\n * @example\n * ```\n * import playwright, { test, expect, BrowserType } from \"@playwright/test\";\n * import { getConnectOptions } from \"@azure/microsoft-playwright-testing\";\n *\n * test('has title', async ({ browserName }) => {\n * const { wsEndpoint, options } = await getConnectOptions();\n * const browser = await (playwright[browserName] as BrowserType).connect(wsEndpoint, options);\n * const context = await browser.newContext();\n * const page = await context.newPage();\n *\n * await page.goto('https://playwright.dev/');\n * await expect(page).toHaveTitle(/Playwright/);\n *\n * await page.close();\n * await context.close();\n * await browser.close();\n * });\n * ```\n */\nconst getConnectOptions = async (\n options?: Omit<PlaywrightServiceAdditionalOptions, \"serviceAuthType\">,\n): Promise<BrowserConnectOptions> => {\n const playwrightServiceConfig = new PlaywrightServiceConfig();\n playwrightServiceConfig.setOptions(options);\n\n const token = await fetchOrValidateAccessToken(options?.credential);\n return {\n wsEndpoint: getServiceWSEndpoint(\n playwrightServiceConfig.runId,\n playwrightServiceConfig.serviceOs,\n ),\n options: {\n headers: {\n Authorization: `Bearer ${token}`,\n \"x-ms-package-version\": `@azure/microsoft-playwright-testing/${getPackageVersion()}`,\n },\n timeout: playwrightServiceConfig.timeout,\n exposeNetwork: playwrightServiceConfig.exposeNetwork,\n slowMo: playwrightServiceConfig.slowMo,\n },\n };\n};\n\nexport { getServiceConfig, getConnectOptions };\n"]}
|
|
@@ -6,46 +6,49 @@ const constants_js_1 = require("../common/constants.js");
|
|
|
6
6
|
const logger_js_1 = require("../common/logger.js");
|
|
7
7
|
const entraIdAccessToken_js_1 = require("../common/entraIdAccessToken.js");
|
|
8
8
|
class PlaywrightServiceEntra {
|
|
9
|
+
_entraIdAccessTokenRotationInterval;
|
|
10
|
+
static instance;
|
|
11
|
+
_entraIdAccessToken;
|
|
12
|
+
static getInstance = () => {
|
|
13
|
+
if (!PlaywrightServiceEntra.instance) {
|
|
14
|
+
PlaywrightServiceEntra.instance = new PlaywrightServiceEntra();
|
|
15
|
+
}
|
|
16
|
+
return PlaywrightServiceEntra.instance;
|
|
17
|
+
};
|
|
9
18
|
set entraIdAccessToken(credential) {
|
|
10
19
|
this._entraIdAccessToken = new entraIdAccessToken_js_1.EntraIdAccessToken(credential);
|
|
11
20
|
}
|
|
12
21
|
constructor() {
|
|
13
|
-
this.globalSetup = async () => {
|
|
14
|
-
logger_js_1.coreLogger.info("Entra id access token setup start");
|
|
15
|
-
await this._entraIdAccessToken.fetchEntraIdAccessToken();
|
|
16
|
-
this.entraIdGlobalSetupRotationHandler();
|
|
17
|
-
};
|
|
18
|
-
this.globalTeardown = () => {
|
|
19
|
-
logger_js_1.coreLogger.info("Entra id access token teardown start");
|
|
20
|
-
if (this._entraIdAccessTokenRotationInterval) {
|
|
21
|
-
clearInterval(this._entraIdAccessTokenRotationInterval);
|
|
22
|
-
logger_js_1.coreLogger.info("Entra id access token rotation interval cleared");
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
this.entraIdGlobalSetupRotationHandler = () => {
|
|
26
|
-
this._entraIdAccessTokenRotationInterval = setInterval(this.entraIdAccessTokenRotation, constants_js_1.EntraIdAccessTokenConstants.ROTATION_INTERVAL_PERIOD_IN_MINUTES * 60 * 1000);
|
|
27
|
-
logger_js_1.coreLogger.info("Entra id access token rotation handler setup done");
|
|
28
|
-
};
|
|
29
|
-
this.entraIdAccessTokenRotation = async () => {
|
|
30
|
-
logger_js_1.coreLogger.info("Entra id access token rotation handler");
|
|
31
|
-
try {
|
|
32
|
-
if (this._entraIdAccessToken.doesEntraIdAccessTokenNeedRotation()) {
|
|
33
|
-
await this._entraIdAccessToken.fetchEntraIdAccessToken();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
catch (err) {
|
|
37
|
-
logger_js_1.coreLogger.error(err); // log error and continue if it's an intermittent issue (optimistic approach)
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
22
|
this._entraIdAccessToken = new entraIdAccessToken_js_1.EntraIdAccessToken();
|
|
41
23
|
}
|
|
24
|
+
globalSetup = async () => {
|
|
25
|
+
logger_js_1.coreLogger.info("Entra id access token setup start");
|
|
26
|
+
await this._entraIdAccessToken.fetchEntraIdAccessToken();
|
|
27
|
+
this.entraIdGlobalSetupRotationHandler();
|
|
28
|
+
};
|
|
29
|
+
globalTeardown = () => {
|
|
30
|
+
logger_js_1.coreLogger.info("Entra id access token teardown start");
|
|
31
|
+
if (this._entraIdAccessTokenRotationInterval) {
|
|
32
|
+
clearInterval(this._entraIdAccessTokenRotationInterval);
|
|
33
|
+
logger_js_1.coreLogger.info("Entra id access token rotation interval cleared");
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
entraIdGlobalSetupRotationHandler = () => {
|
|
37
|
+
this._entraIdAccessTokenRotationInterval = setInterval(this.entraIdAccessTokenRotation, constants_js_1.EntraIdAccessTokenConstants.ROTATION_INTERVAL_PERIOD_IN_MINUTES * 60 * 1000);
|
|
38
|
+
logger_js_1.coreLogger.info("Entra id access token rotation handler setup done");
|
|
39
|
+
};
|
|
40
|
+
entraIdAccessTokenRotation = async () => {
|
|
41
|
+
logger_js_1.coreLogger.info("Entra id access token rotation handler");
|
|
42
|
+
try {
|
|
43
|
+
if (this._entraIdAccessToken.doesEntraIdAccessTokenNeedRotation()) {
|
|
44
|
+
await this._entraIdAccessToken.fetchEntraIdAccessToken();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
logger_js_1.coreLogger.error(err); // log error and continue if it's an intermittent issue (optimistic approach)
|
|
49
|
+
}
|
|
50
|
+
};
|
|
42
51
|
}
|
|
43
|
-
PlaywrightServiceEntra.getInstance = () => {
|
|
44
|
-
if (!PlaywrightServiceEntra.instance) {
|
|
45
|
-
PlaywrightServiceEntra.instance = new PlaywrightServiceEntra();
|
|
46
|
-
}
|
|
47
|
-
return PlaywrightServiceEntra.instance;
|
|
48
|
-
};
|
|
49
52
|
const instance = PlaywrightServiceEntra.getInstance();
|
|
50
53
|
exports.default = instance;
|
|
51
54
|
//# sourceMappingURL=playwrightServiceEntra.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwrightServiceEntra.js","sourceRoot":"","sources":["../../../src/core/playwrightServiceEntra.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAElC,yDAAqE;AACrE,mDAAiD;AACjD,2EAAqE;AAGrE,MAAM,sBAAsB;
|
|
1
|
+
{"version":3,"file":"playwrightServiceEntra.js","sourceRoot":"","sources":["../../../src/core/playwrightServiceEntra.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAElC,yDAAqE;AACrE,mDAAiD;AACjD,2EAAqE;AAGrE,MAAM,sBAAsB;IAClB,mCAAmC,CAAkB;IACrD,MAAM,CAAC,QAAQ,CAAyB;IACxC,mBAAmB,CAAqB;IAEhD,MAAM,CAAC,WAAW,GAAG,GAA2B,EAAE;QAChD,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YACrC,sBAAsB,CAAC,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;QACjE,CAAC;QACD,OAAO,sBAAsB,CAAC,QAAQ,CAAC;IACzC,CAAC,CAAC;IAEF,IAAI,kBAAkB,CAAC,UAA2B;QAChD,IAAI,CAAC,mBAAmB,GAAG,IAAI,0CAAkB,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC;IAED;QACE,IAAI,CAAC,mBAAmB,GAAG,IAAI,0CAAkB,EAAE,CAAC;IACtD,CAAC;IAEM,WAAW,GAAG,KAAK,IAAmB,EAAE;QAC7C,sBAAU,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC;QACzD,IAAI,CAAC,iCAAiC,EAAE,CAAC;IAC3C,CAAC,CAAC;IAEK,cAAc,GAAG,GAAS,EAAE;QACjC,sBAAU,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,mCAAmC,EAAE,CAAC;YAC7C,aAAa,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACxD,sBAAU,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC;IAEM,iCAAiC,GAAG,GAAS,EAAE;QACrD,IAAI,CAAC,mCAAmC,GAAG,WAAW,CACpD,IAAI,CAAC,0BAA0B,EAC/B,0CAA2B,CAAC,mCAAmC,GAAG,EAAE,GAAG,IAAI,CAC5E,CAAC;QACF,sBAAU,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC,CAAC;IAEM,0BAA0B,GAAG,KAAK,IAAmB,EAAE;QAC7D,sBAAU,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAC1D,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,mBAAmB,CAAC,kCAAkC,EAAE,EAAE,CAAC;gBAClE,MAAM,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC;YAC3D,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sBAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,6EAA6E;QACtG,CAAC;IACH,CAAC,CAAC;;AAGJ,MAAM,QAAQ,GAAG,sBAAsB,CAAC,WAAW,EAAE,CAAC;AACtD,kBAAe,QAAQ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { EntraIdAccessTokenConstants } from \"../common/constants.js\";\nimport { coreLogger } from \"../common/logger.js\";\nimport { EntraIdAccessToken } from \"../common/entraIdAccessToken.js\";\nimport type { TokenCredential } from \"@azure/identity\";\n\nclass PlaywrightServiceEntra {\n private _entraIdAccessTokenRotationInterval?: NodeJS.Timeout;\n private static instance: PlaywrightServiceEntra;\n private _entraIdAccessToken: EntraIdAccessToken;\n\n static getInstance = (): PlaywrightServiceEntra => {\n if (!PlaywrightServiceEntra.instance) {\n PlaywrightServiceEntra.instance = new PlaywrightServiceEntra();\n }\n return PlaywrightServiceEntra.instance;\n };\n\n set entraIdAccessToken(credential: TokenCredential) {\n this._entraIdAccessToken = new EntraIdAccessToken(credential);\n }\n\n constructor() {\n this._entraIdAccessToken = new EntraIdAccessToken();\n }\n\n public globalSetup = async (): Promise<void> => {\n coreLogger.info(\"Entra id access token setup start\");\n await this._entraIdAccessToken.fetchEntraIdAccessToken();\n this.entraIdGlobalSetupRotationHandler();\n };\n\n public globalTeardown = (): void => {\n coreLogger.info(\"Entra id access token teardown start\");\n if (this._entraIdAccessTokenRotationInterval) {\n clearInterval(this._entraIdAccessTokenRotationInterval);\n coreLogger.info(\"Entra id access token rotation interval cleared\");\n }\n };\n\n private entraIdGlobalSetupRotationHandler = (): void => {\n this._entraIdAccessTokenRotationInterval = setInterval(\n this.entraIdAccessTokenRotation,\n EntraIdAccessTokenConstants.ROTATION_INTERVAL_PERIOD_IN_MINUTES * 60 * 1000,\n );\n coreLogger.info(\"Entra id access token rotation handler setup done\");\n };\n\n private entraIdAccessTokenRotation = async (): Promise<void> => {\n coreLogger.info(\"Entra id access token rotation handler\");\n try {\n if (this._entraIdAccessToken.doesEntraIdAccessTokenNeedRotation()) {\n await this._entraIdAccessToken.fetchEntraIdAccessToken();\n }\n } catch (err) {\n coreLogger.error(err); // log error and continue if it's an intermittent issue (optimistic approach)\n }\n };\n}\n\nconst instance = PlaywrightServiceEntra.getInstance();\nexport default instance;\n"]}
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.EntraTokenDetails = void 0;
|
|
6
6
|
class EntraTokenDetails {
|
|
7
|
+
// userId
|
|
8
|
+
oid;
|
|
9
|
+
// name
|
|
10
|
+
name;
|
|
7
11
|
}
|
|
8
12
|
exports.EntraTokenDetails = EntraTokenDetails;
|
|
9
13
|
//# sourceMappingURL=entraTokenDetails.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entraTokenDetails.js","sourceRoot":"","sources":["../../../src/model/entraTokenDetails.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,MAAa,iBAAiB;
|
|
1
|
+
{"version":3,"file":"entraTokenDetails.js","sourceRoot":"","sources":["../../../src/model/entraTokenDetails.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,MAAa,iBAAiB;IAC5B,SAAS;IACT,GAAG,CAAqB;IACxB,OAAO;IACP,IAAI,CAAqB;CAC1B;AALD,8CAKC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport class EntraTokenDetails {\n // userId\n oid: string | undefined;\n // name\n name: string | undefined;\n}\n"]}
|
|
@@ -4,6 +4,14 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.TokenType = exports.MPTTokenDetails = void 0;
|
|
6
6
|
class MPTTokenDetails {
|
|
7
|
+
// accountId
|
|
8
|
+
aid;
|
|
9
|
+
// userId
|
|
10
|
+
oid;
|
|
11
|
+
// tokenId
|
|
12
|
+
id;
|
|
13
|
+
// userName
|
|
14
|
+
userName;
|
|
7
15
|
}
|
|
8
16
|
exports.MPTTokenDetails = MPTTokenDetails;
|
|
9
17
|
var TokenType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mptTokenDetails.js","sourceRoot":"","sources":["../../../src/model/mptTokenDetails.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,MAAa,eAAe;
|
|
1
|
+
{"version":3,"file":"mptTokenDetails.js","sourceRoot":"","sources":["../../../src/model/mptTokenDetails.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,MAAa,eAAe;IAC1B,YAAY;IACZ,GAAG,CAAqB;IACxB,SAAS;IACT,GAAG,CAAqB;IACxB,UAAU;IACV,EAAE,CAAqB;IACvB,WAAW;IACX,QAAQ,CAAqB;CAC9B;AATD,0CASC;AAED,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,uCAAG,CAAA;IACH,2CAAK,CAAA;AACP,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport class MPTTokenDetails {\n // accountId\n aid: string | undefined;\n // userId\n oid: string | undefined;\n // tokenId\n id: string | undefined;\n // userName\n userName: string | undefined;\n}\n\nexport enum TokenType {\n MPT,\n ENTRA,\n}\n"]}
|
|
@@ -4,9 +4,19 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.TestRunStatus = exports.TestResultStatus = exports.TestRunSummary = exports.Shard = void 0;
|
|
6
6
|
class Shard {
|
|
7
|
+
shardId;
|
|
8
|
+
summary;
|
|
9
|
+
workers;
|
|
10
|
+
uploadCompleted;
|
|
7
11
|
}
|
|
8
12
|
exports.Shard = Shard;
|
|
9
13
|
class TestRunSummary {
|
|
14
|
+
status;
|
|
15
|
+
startTime;
|
|
16
|
+
endTime;
|
|
17
|
+
totalTime;
|
|
18
|
+
errorMessages;
|
|
19
|
+
uploadMetadata;
|
|
10
20
|
}
|
|
11
21
|
exports.TestRunSummary = TestRunSummary;
|
|
12
22
|
var TestResultStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shard.js","sourceRoot":"","sources":["../../../src/model/shard.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,MAAa,KAAK;
|
|
1
|
+
{"version":3,"file":"shard.js","sourceRoot":"","sources":["../../../src/model/shard.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,MAAa,KAAK;IAChB,OAAO,CAAU;IACjB,OAAO,CAAkB;IACzB,OAAO,CAAU;IACjB,eAAe,CAAW;CAC3B;AALD,sBAKC;AAED,MAAa,cAAc;IACzB,MAAM,CAAU;IAChB,SAAS,CAAU;IACnB,OAAO,CAAU;IACjB,SAAS,CAAU;IACnB,aAAa,CAAY;IACzB,cAAc,CAAkB;CACjC;AAPD,wCAOC;AAWD,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,yCAAqB,CAAA;IACrB,+CAA2B,CAAA;AAC7B,CAAC,EALW,gBAAgB,gCAAhB,gBAAgB,QAK3B;AAED,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,oDAAmC,CAAA;AACrC,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport class Shard {\n shardId!: string;\n summary!: TestRunSummary;\n workers?: number;\n uploadCompleted!: boolean;\n}\n\nexport class TestRunSummary {\n status?: string;\n startTime!: string;\n endTime?: string;\n totalTime?: number;\n errorMessages?: string[];\n uploadMetadata?: UploadMetadata;\n}\n\nexport type TestRunResultsSummary = {\n numTotalTests?: number;\n numFailedTests?: number;\n numSkippedTests?: number;\n numPassedTests?: number;\n numFlakyTests?: number;\n status?: TestResultStatus;\n};\n\nexport enum TestResultStatus {\n PASSED = \"passed\",\n FAILED = \"failed\",\n TIMEDOUT = \"timedout\",\n INTERRUPTED = \"interrupted\",\n}\n\nexport enum TestRunStatus {\n RUNNING = \"RUNNING\",\n CLIENT_COMPLETE = \"CLIENT_COMPLETE\",\n}\n\nexport type UploadMetadata = {\n numTestResults: number;\n numTotalAttachments: number;\n sizeTotalAttachments: number;\n};\n\nexport type ShardInfo = {\n total: number;\n};\n"]}
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.AccessLevel = exports.StorageUri = void 0;
|
|
6
6
|
class StorageUri {
|
|
7
|
+
uri;
|
|
8
|
+
createdAt;
|
|
9
|
+
expiresAt;
|
|
10
|
+
accessLevel;
|
|
7
11
|
constructor(uri, createdAt, expiresAt, accessLevel) {
|
|
8
12
|
this.uri = uri;
|
|
9
13
|
this.createdAt = createdAt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storageUri.js","sourceRoot":"","sources":["../../../src/model/storageUri.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"storageUri.js","sourceRoot":"","sources":["../../../src/model/storageUri.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,MAAa,UAAU;IACrB,GAAG,CAAS;IACZ,SAAS,CAAS;IAClB,SAAS,CAAS;IAClB,WAAW,CAAc;IACzB,YAAY,GAAW,EAAE,SAAiB,EAAE,SAAiB,EAAE,WAAwB;QACrF,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAXD,gCAWC;AAED,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,6CAAI,CAAA;IACJ,+CAAK,CAAA;IACL,uDAAS,CAAA;IACT,yEAAkB,CAAA;AACpB,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport class StorageUri {\n uri: string;\n createdAt: string;\n expiresAt: string;\n accessLevel: AccessLevel;\n constructor(uri: string, createdAt: string, expiresAt: string, accessLevel: AccessLevel) {\n this.uri = uri;\n this.createdAt = createdAt;\n this.expiresAt = expiresAt;\n this.accessLevel = accessLevel;\n }\n}\n\nexport enum AccessLevel {\n Read,\n Write,\n ReadWrite,\n ReadAddCreateWrite,\n}\n"]}
|
|
@@ -4,6 +4,24 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.TestResult = void 0;
|
|
6
6
|
class TestResult {
|
|
7
|
+
testId;
|
|
8
|
+
testExecutionId;
|
|
9
|
+
testCombinationId;
|
|
10
|
+
runId;
|
|
11
|
+
shardId;
|
|
12
|
+
accountId;
|
|
13
|
+
suiteId;
|
|
14
|
+
testTitle;
|
|
15
|
+
suiteTitle;
|
|
16
|
+
fileName;
|
|
17
|
+
lineNumber;
|
|
18
|
+
retry;
|
|
19
|
+
status;
|
|
20
|
+
tags;
|
|
21
|
+
annotations;
|
|
22
|
+
webTestConfig;
|
|
23
|
+
resultsSummary;
|
|
24
|
+
artifactsPath;
|
|
7
25
|
}
|
|
8
26
|
exports.TestResult = TestResult;
|
|
9
27
|
//# sourceMappingURL=testResult.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testResult.js","sourceRoot":"","sources":["../../../src/model/testResult.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"testResult.js","sourceRoot":"","sources":["../../../src/model/testResult.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC,MAAa,UAAU;IACrB,MAAM,CAAU;IAChB,eAAe,CAAU;IACzB,iBAAiB,CAAU;IAC3B,KAAK,CAAU;IACf,OAAO,CAAU;IACjB,SAAS,CAAU;IACnB,OAAO,CAAU;IACjB,SAAS,CAAU;IACnB,UAAU,CAAU;IACpB,QAAQ,CAAU;IAClB,UAAU,CAAU;IACpB,KAAK,CAAU;IACf,MAAM,CAAU;IAChB,IAAI,CAAY;IAChB,WAAW,CAAY;IACvB,aAAa,CAAiB;IAC9B,cAAc,CAAsB;IACpC,aAAa,CAAY;CAC1B;AAnBD,gCAmBC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { RawTestStep } from \"../common/types.js\";\n\nexport class TestResult {\n testId!: string;\n testExecutionId!: string;\n testCombinationId!: string;\n runId!: string;\n shardId!: string;\n accountId!: string;\n suiteId!: string;\n testTitle!: string;\n suiteTitle!: string;\n fileName!: string;\n lineNumber!: number;\n retry!: number;\n status!: string;\n tags!: string[];\n annotations!: string[];\n webTestConfig!: WebTestConfig;\n resultsSummary!: TestResultsSummary;\n artifactsPath!: string[];\n}\n\nexport type WebTestConfig = {\n jobName: string;\n projectName: string;\n browserType?: string;\n os: string;\n};\n\nexport type TestResultsSummary = {\n status: string;\n duration: number;\n startTime: string;\n attachmentsMetadata: string;\n};\n\nexport type RawTestResult = {\n steps?: RawTestStep[];\n errors?: string;\n stdErr?: string;\n stdOut?: string;\n};\n"]}
|
|
@@ -4,9 +4,14 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.TestRun = void 0;
|
|
6
6
|
class TestRun {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
testRunId;
|
|
8
|
+
displayName;
|
|
9
|
+
creatorId;
|
|
10
|
+
creatorName;
|
|
11
|
+
startTime;
|
|
12
|
+
ciConfig;
|
|
13
|
+
testRunConfig;
|
|
14
|
+
cloudReportingEnabled = "true"; // Default value set to 'true'
|
|
10
15
|
}
|
|
11
16
|
exports.TestRun = TestRun;
|
|
12
17
|
//# sourceMappingURL=testRun.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testRun.js","sourceRoot":"","sources":["../../../src/model/testRun.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC,MAAa,OAAO;
|
|
1
|
+
{"version":3,"file":"testRun.js","sourceRoot":"","sources":["../../../src/model/testRun.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC,MAAa,OAAO;IAClB,SAAS,CAAU;IACnB,WAAW,CAAU;IACrB,SAAS,CAAU;IACnB,WAAW,CAAU;IACrB,SAAS,CAAU;IACnB,QAAQ,CAAY;IACpB,aAAa,CAAiB;IAC9B,qBAAqB,GAAW,MAAM,CAAC,CAAC,8BAA8B;CACvE;AATD,0BASC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ShardInfo } from \"./shard.js\";\n\nexport class TestRun {\n testRunId!: string;\n displayName!: string;\n creatorId!: string;\n creatorName?: string;\n startTime!: string;\n ciConfig?: CIConfig;\n testRunConfig?: TestRunConfig;\n cloudReportingEnabled: string = \"true\"; // Default value set to 'true'\n}\n\nexport type CIConfig = {\n ciProviderName: string;\n branch: string;\n author: string;\n commitId: string;\n revisionUrl: string;\n};\n\nexport type TestRunConfig = {\n workers: number;\n pwVersion: string;\n timeout: number;\n shards: ShardInfo;\n retries?: number;\n repeatEach?: number;\n testFramework: TestFramework;\n testType: string;\n testSdkLanguage: string;\n reporterPackageVersion: string;\n};\n\nexport type TestFramework = {\n name: string;\n version: string;\n runnerName: string;\n};\n"]}
|