@azure/playwright 1.1.2 → 1.1.3-alpha.20260310.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.
Files changed (168) hide show
  1. package/dist/browser/common/types.d.ts +1 -1
  2. package/dist/browser/common/types.d.ts.map +1 -1
  3. package/dist/browser/common/types.js.map +1 -1
  4. package/dist/browser/index.d.ts +1 -1
  5. package/dist/browser/index.d.ts.map +1 -1
  6. package/dist/browser/index.js.map +1 -1
  7. package/dist/browser/utils/PlaywrightServiceClient.d.ts +1 -1
  8. package/dist/browser/utils/PlaywrightServiceClient.d.ts.map +1 -1
  9. package/dist/browser/utils/PlaywrightServiceClient.js.map +1 -1
  10. package/dist/browser/utils/playwrightReporterStorageManager.d.ts.map +1 -1
  11. package/dist/browser/utils/playwrightReporterStorageManager.js.map +1 -1
  12. package/dist/browser/utils/utils.d.ts +2 -2
  13. package/dist/browser/utils/utils.d.ts.map +1 -1
  14. package/dist/browser/utils/utils.js.map +1 -1
  15. package/dist/commonjs/common/constants.js +127 -95
  16. package/dist/commonjs/common/constants.js.map +7 -1
  17. package/dist/commonjs/common/customerConfig.js +31 -14
  18. package/dist/commonjs/common/customerConfig.js.map +7 -1
  19. package/dist/commonjs/common/entraIdAccessToken.js +106 -83
  20. package/dist/commonjs/common/entraIdAccessToken.js.map +7 -1
  21. package/dist/commonjs/common/environmentVariables.js +43 -24
  22. package/dist/commonjs/common/environmentVariables.js.map +7 -1
  23. package/dist/commonjs/common/executor.js +88 -67
  24. package/dist/commonjs/common/executor.js.map +7 -1
  25. package/dist/commonjs/common/httpService.js +54 -35
  26. package/dist/commonjs/common/httpService.js.map +7 -1
  27. package/dist/commonjs/common/logger.js +28 -8
  28. package/dist/commonjs/common/logger.js.map +7 -1
  29. package/dist/commonjs/common/messages.js +189 -169
  30. package/dist/commonjs/common/messages.js.map +7 -1
  31. package/dist/commonjs/common/playwrightServiceConfig.js +113 -98
  32. package/dist/commonjs/common/playwrightServiceConfig.js.map +7 -1
  33. package/dist/commonjs/common/state.js +30 -10
  34. package/dist/commonjs/common/state.js.map +7 -1
  35. package/dist/commonjs/common/types.d.ts +1 -1
  36. package/dist/commonjs/common/types.d.ts.map +1 -1
  37. package/dist/commonjs/common/types.js +15 -5
  38. package/dist/commonjs/common/types.js.map +7 -1
  39. package/dist/commonjs/core/global/playwright-service-global-setup.js +52 -26
  40. package/dist/commonjs/core/global/playwright-service-global-setup.js.map +7 -1
  41. package/dist/commonjs/core/global/playwright-service-global-teardown.js +49 -20
  42. package/dist/commonjs/core/global/playwright-service-global-teardown.js.map +7 -1
  43. package/dist/commonjs/core/initializePlaywrightServiceTestRun.js +39 -27
  44. package/dist/commonjs/core/initializePlaywrightServiceTestRun.js.map +7 -1
  45. package/dist/commonjs/core/playwrightService.js +166 -205
  46. package/dist/commonjs/core/playwrightService.js.map +7 -1
  47. package/dist/commonjs/core/playwrightServiceEntra.js +67 -48
  48. package/dist/commonjs/core/playwrightServiceEntra.js.map +7 -1
  49. package/dist/commonjs/core/playwrightServiceUtils.d.ts +1 -1
  50. package/dist/commonjs/core/playwrightServiceUtils.d.ts.map +1 -0
  51. package/dist/commonjs/core/playwrightServiceUtils.js +44 -11
  52. package/dist/commonjs/core/playwrightServiceUtils.js.map +7 -0
  53. package/dist/commonjs/index.d.ts +1 -1
  54. package/dist/commonjs/index.d.ts.map +1 -1
  55. package/dist/commonjs/index.js +36 -18
  56. package/dist/commonjs/index.js.map +7 -1
  57. package/dist/commonjs/reporter/index.js +34 -15
  58. package/dist/commonjs/reporter/index.js.map +7 -1
  59. package/dist/commonjs/reporter/playwrightReporter.js +222 -216
  60. package/dist/commonjs/reporter/playwrightReporter.js.map +7 -1
  61. package/dist/commonjs/tsdoc-metadata.json +1 -1
  62. package/dist/commonjs/utils/PlaywrightServiceClient.d.ts +1 -1
  63. package/dist/commonjs/utils/PlaywrightServiceClient.d.ts.map +1 -1
  64. package/dist/commonjs/utils/PlaywrightServiceClient.js +140 -91
  65. package/dist/commonjs/utils/PlaywrightServiceClient.js.map +7 -1
  66. package/dist/commonjs/utils/cIInfoProvider.js +81 -74
  67. package/dist/commonjs/utils/cIInfoProvider.js.map +7 -1
  68. package/dist/commonjs/utils/getPackageVersion.d.ts +1 -1
  69. package/dist/commonjs/utils/getPackageVersion.d.ts.map +1 -0
  70. package/dist/commonjs/utils/getPackageVersion.js +50 -19
  71. package/dist/commonjs/utils/getPackageVersion.js.map +7 -0
  72. package/dist/commonjs/utils/getPlaywrightVersion.js +42 -21
  73. package/dist/commonjs/utils/getPlaywrightVersion.js.map +7 -1
  74. package/dist/commonjs/utils/packageManager.js +59 -40
  75. package/dist/commonjs/utils/packageManager.js.map +7 -1
  76. package/dist/commonjs/utils/parseJwt.js +37 -17
  77. package/dist/commonjs/utils/parseJwt.js.map +7 -1
  78. package/dist/commonjs/utils/playwrightReporterStorageManager.d.ts.map +1 -1
  79. package/dist/commonjs/utils/playwrightReporterStorageManager.js +381 -342
  80. package/dist/commonjs/utils/playwrightReporterStorageManager.js.map +7 -1
  81. package/dist/commonjs/utils/utils.d.ts +2 -2
  82. package/dist/commonjs/utils/utils.d.ts.map +1 -1
  83. package/dist/commonjs/utils/utils.js +417 -369
  84. package/dist/commonjs/utils/utils.js.map +7 -1
  85. package/dist/esm/common/constants.js +92 -92
  86. package/dist/esm/common/constants.js.map +7 -1
  87. package/dist/esm/common/customerConfig.js +11 -11
  88. package/dist/esm/common/customerConfig.js.map +7 -1
  89. package/dist/esm/common/entraIdAccessToken.js +85 -77
  90. package/dist/esm/common/entraIdAccessToken.js.map +7 -1
  91. package/dist/esm/common/environmentVariables.js +19 -19
  92. package/dist/esm/common/environmentVariables.js.map +7 -1
  93. package/dist/esm/common/executor.js +51 -58
  94. package/dist/esm/common/executor.js.map +7 -1
  95. package/dist/esm/common/httpService.js +34 -29
  96. package/dist/esm/common/httpService.js.map +7 -1
  97. package/dist/esm/common/logger.js +4 -4
  98. package/dist/esm/common/logger.js.map +7 -1
  99. package/dist/esm/common/messages.js +166 -166
  100. package/dist/esm/common/messages.js.map +7 -1
  101. package/dist/esm/common/playwrightServiceConfig.js +91 -91
  102. package/dist/esm/common/playwrightServiceConfig.js.map +7 -1
  103. package/dist/esm/common/state.js +7 -7
  104. package/dist/esm/common/state.js.map +7 -1
  105. package/dist/esm/common/types.d.ts +1 -1
  106. package/dist/esm/common/types.d.ts.map +1 -1
  107. package/dist/esm/common/types.js +0 -4
  108. package/dist/esm/common/types.js.map +7 -1
  109. package/dist/esm/core/global/playwright-service-global-setup.js +17 -17
  110. package/dist/esm/core/global/playwright-service-global-setup.js.map +7 -1
  111. package/dist/esm/core/global/playwright-service-global-teardown.js +16 -13
  112. package/dist/esm/core/global/playwright-service-global-teardown.js.map +7 -1
  113. package/dist/esm/core/initializePlaywrightServiceTestRun.js +13 -21
  114. package/dist/esm/core/initializePlaywrightServiceTestRun.js.map +7 -1
  115. package/dist/esm/core/playwrightService.js +144 -195
  116. package/dist/esm/core/playwrightService.js.map +7 -1
  117. package/dist/esm/core/playwrightServiceEntra.js +44 -42
  118. package/dist/esm/core/playwrightServiceEntra.js.map +7 -1
  119. package/dist/esm/core/playwrightServiceUtils.js +6 -8
  120. package/dist/esm/core/playwrightServiceUtils.js.map +7 -1
  121. package/dist/esm/index.d.ts +1 -1
  122. package/dist/esm/index.d.ts.map +1 -1
  123. package/dist/esm/index.js +7 -9
  124. package/dist/esm/index.js.map +7 -1
  125. package/dist/esm/reporter/index.js +4 -11
  126. package/dist/esm/reporter/index.js.map +7 -1
  127. package/dist/esm/reporter/playwrightReporter.js +202 -207
  128. package/dist/esm/reporter/playwrightReporter.js.map +7 -1
  129. package/dist/esm/utils/PlaywrightServiceClient.d.ts +1 -1
  130. package/dist/esm/utils/PlaywrightServiceClient.d.ts.map +1 -1
  131. package/dist/esm/utils/PlaywrightServiceClient.js +120 -85
  132. package/dist/esm/utils/PlaywrightServiceClient.js.map +7 -1
  133. package/dist/esm/utils/cIInfoProvider.js +58 -71
  134. package/dist/esm/utils/cIInfoProvider.js.map +7 -1
  135. package/dist/esm/utils/getPackageVersion.js +12 -17
  136. package/dist/esm/utils/getPackageVersion.js.map +7 -1
  137. package/dist/esm/utils/getPlaywrightVersion.js +15 -13
  138. package/dist/esm/utils/getPlaywrightVersion.js.map +7 -1
  139. package/dist/esm/utils/packageManager.js +37 -37
  140. package/dist/esm/utils/packageManager.js.map +7 -1
  141. package/dist/esm/utils/parseJwt.js +15 -14
  142. package/dist/esm/utils/parseJwt.js.map +7 -1
  143. package/dist/esm/utils/playwrightReporterStorageManager.d.ts.map +1 -1
  144. package/dist/esm/utils/playwrightReporterStorageManager.js +358 -333
  145. package/dist/esm/utils/playwrightReporterStorageManager.js.map +7 -1
  146. package/dist/esm/utils/utils.d.ts +2 -2
  147. package/dist/esm/utils/utils.d.ts.map +1 -1
  148. package/dist/esm/utils/utils.js +377 -350
  149. package/dist/esm/utils/utils.js.map +7 -1
  150. package/dist/react-native/common/types.d.ts +1 -1
  151. package/dist/react-native/common/types.d.ts.map +1 -1
  152. package/dist/react-native/common/types.js.map +1 -1
  153. package/dist/react-native/index.d.ts +1 -1
  154. package/dist/react-native/index.d.ts.map +1 -1
  155. package/dist/react-native/index.js.map +1 -1
  156. package/dist/react-native/utils/PlaywrightServiceClient.d.ts +1 -1
  157. package/dist/react-native/utils/PlaywrightServiceClient.d.ts.map +1 -1
  158. package/dist/react-native/utils/PlaywrightServiceClient.js.map +1 -1
  159. package/dist/react-native/utils/playwrightReporterStorageManager.d.ts.map +1 -1
  160. package/dist/react-native/utils/playwrightReporterStorageManager.js.map +1 -1
  161. package/dist/react-native/utils/utils.d.ts +2 -2
  162. package/dist/react-native/utils/utils.d.ts.map +1 -1
  163. package/dist/react-native/utils/utils.js.map +1 -1
  164. package/package.json +6 -24
  165. package/dist/commonjs/core/playwrightServiceUtils-cjs.cjs.map +0 -1
  166. package/dist/commonjs/core/playwrightServiceUtils-cjs.d.cts.map +0 -1
  167. package/dist/commonjs/utils/getPackageVersion-cjs.cjs.map +0 -1
  168. package/dist/commonjs/utils/getPackageVersion-cjs.d.cts.map +0 -1
@@ -1 +1,7 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n AccessTokenClaims,\n VersionInfo,\n JwtPayload,\n RunConfig,\n WorkspaceMetaData,\n TenantInfo,\n} from \"../common/types.js\";\nimport {\n Constants,\n InternalEnvironmentVariables,\n ServiceEnvironmentVariable,\n RunConfigConstants,\n GitHubActionsConstants,\n UrlConstants,\n} from \"../common/constants.js\";\nimport { ServiceErrorMessageConstants } from \"../common/messages.js\";\nimport { coreLogger } from \"../common/logger.js\";\nimport type { TokenCredential } from \"@azure/core-auth\";\nimport process from \"node:process\";\nimport { randomUUID } from \"node:crypto\";\nimport { parseJwt } from \"./parseJwt.js\";\nimport { getPlaywrightVersion } from \"./getPlaywrightVersion.js\";\nimport { createEntraIdAccessToken } from \"../common/entraIdAccessToken.js\";\nimport { FullConfig } from \"@playwright/test\";\nimport { CI_PROVIDERS, CIInfo } from \"./cIInfoProvider.js\";\nimport { exec } from \"child_process\";\nimport { getPackageVersionFromFolder } from \"./getPackageVersion.js\";\nimport { readdirSync, statSync } from \"fs\";\nimport { join, relative } from \"path\";\nimport { UploadConstants } from \"../common/constants.js\";\n\n// Re-exporting for backward compatibility\nexport { getPlaywrightVersion } from \"./getPlaywrightVersion.js\";\nexport { parseJwt } from \"./parseJwt.js\";\n\nexport const getPackageVersion = (): string => {\n // hacky way to get package version\n // try from dist folder first (customer perspective)\n const distVersion = getPackageVersionFromFolder(\"../../../\");\n if (distVersion) {\n return distVersion;\n }\n // if not found, try from src folder (internal test suite)\n const srcVersion = getPackageVersionFromFolder(\"../../\");\n if (srcVersion) {\n return srcVersion;\n }\n return \"unknown-version\";\n};\n\nexport const exitWithFailureMessage = (\n error: {\n key: string;\n message: string;\n formatWithErrorDetails?: (errorDetails: string) => string;\n },\n errorDetails?: string,\n): never => {\n console.log();\n\n if (error.formatWithErrorDetails && errorDetails) {\n console.error(error.formatWithErrorDetails(errorDetails));\n } else {\n console.error(error.message);\n }\n // eslint-disable-next-line n/no-process-exit\n process.exit(1);\n};\n\nexport const throwErrorWithFailureMessage = (\n error: {\n key: string;\n message: string;\n formatWithErrorDetails?: (errorDetails: string) => string;\n },\n errorDetails?: string,\n): never => {\n console.log();\n\n const finalMessage =\n error.formatWithErrorDetails && errorDetails\n ? error.formatWithErrorDetails(errorDetails)\n : error.message;\n\n throw new Error(finalMessage);\n};\n\nexport const populateValuesFromServiceUrl = (): {\n region: string;\n domain: string;\n accountId: string;\n} | null => {\n // Service URL format: wss://<region>.api.playwright.microsoft.com/accounts/<workspace-id>/browsers\n const url = process.env[\"PLAYWRIGHT_SERVICE_URL\"]!;\n if (url) {\n const parts = url.split(\"/\");\n\n if (parts.length > 2) {\n const subdomainParts = parts[2]!.split(\".\");\n const region = subdomainParts.length > 0 ? subdomainParts[0] : null;\n const domain = subdomainParts.slice(2).join(\".\");\n const accountId = parts[4];\n\n return { region: region!, domain: domain!, accountId: accountId! };\n }\n }\n return null;\n};\n\nexport const getAccessToken = (): string | undefined => {\n return process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN];\n};\n\nexport const getServiceBaseURL = (): string | undefined => {\n return process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_URL];\n};\n\nexport const isValidGuid = (guid: string | null | undefined): boolean => {\n if (!guid) {\n return false;\n }\n const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n return guidRegex.test(guid);\n};\n\nexport const getAndSetRunId = (): string => {\n const runId = randomUUID();\n process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID] = runId;\n return runId;\n};\n\nexport const getServiceWSEndpoint = (runId: string, os: string, apiVersion: string): string => {\n return `${getServiceBaseURL()}?runId=${encodeURIComponent(runId)}&os=${os}&api-version=${apiVersion}`;\n};\n\nexport const validateServiceUrl = (): void => {\n const serviceUrl = getServiceBaseURL();\n if (!serviceUrl) {\n exitWithFailureMessage(ServiceErrorMessageConstants.NO_SERVICE_URL_ERROR);\n }\n};\n\nexport const ValidateRunID = (runID: string): void => {\n const isValidRunID = isValidGuid(runID);\n if (!isValidRunID) {\n const errorMessage = ServiceErrorMessageConstants.INVALID_RUN_ID_FORMAT.message;\n throw new Error(errorMessage);\n }\n};\nexport const validateMptPAT = (\n validationFailureCallback: (error: { key: string; message: string }) => void,\n): void => {\n try {\n const accessToken = getAccessToken();\n const result = populateValuesFromServiceUrl();\n if (!accessToken) {\n validationFailureCallback(ServiceErrorMessageConstants.NO_AUTH_ERROR_PAT_TOKEN);\n }\n const claims = parseJwt<Partial<AccessTokenClaims>>(accessToken!);\n if (!claims.exp) {\n validationFailureCallback(ServiceErrorMessageConstants.INVALID_MPT_PAT_ERROR);\n }\n if (Date.now() >= claims.exp! * 1000) {\n validationFailureCallback(ServiceErrorMessageConstants.EXPIRED_MPT_PAT_ERROR);\n }\n if (result!.accountId !== claims!.pwid) {\n validationFailureCallback(ServiceErrorMessageConstants.WORKSPACE_MISMATCH_ERROR);\n }\n } catch (err) {\n coreLogger.error(err);\n exitWithFailureMessage(ServiceErrorMessageConstants.INVALID_MPT_PAT_ERROR);\n }\n};\nconst isTokenExpiringSoon = (expirationTime: number, currentTime: number): boolean => {\n return expirationTime * 1000 - currentTime <= Constants.SevenDaysInMS;\n};\n\nconst warnAboutTokenExpiry = (expirationTime: number, currentTime: number): void => {\n const daysToExpiration = Math.ceil((expirationTime * 1000 - currentTime) / Constants.OneDayInMS);\n const expirationDate = new Date(expirationTime * 1000).toLocaleDateString();\n const expirationWarning = `Warning: The access token used for this test run will expire in ${daysToExpiration} days on ${expirationDate}. Generate a new token from the portal to avoid failures. For a simpler, more secure solution, switch to Microsoft Entra ID and eliminate token management. https://learn.microsoft.com/entra/identity/`;\n console.warn(expirationWarning);\n};\n\nexport const warnIfAccessTokenCloseToExpiry = (): void => {\n const accessToken = getAccessToken();\n if (!accessToken) {\n throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_PAT_TOKEN.message);\n }\n const claims = parseJwt<JwtPayload>(accessToken!);\n const currentTime = Date.now();\n if (isTokenExpiringSoon(claims.exp!, currentTime)) {\n warnAboutTokenExpiry(claims.exp!, currentTime);\n }\n};\n\nexport const fetchOrValidateAccessToken = async (credential?: TokenCredential): Promise<string> => {\n const entraIdAccessToken = createEntraIdAccessToken(credential);\n // Fetch a token or refresh if needed in a single call\n if (entraIdAccessToken.doesEntraIdAccessTokenNeedRotation()) {\n await entraIdAccessToken.fetchEntraIdAccessToken();\n }\n const token = getAccessToken();\n if (!token) {\n throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_ENTRA_TOKEN.message);\n }\n return token;\n};\n\nexport const getVersionInfo = (version: string): VersionInfo => {\n const regex = /^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?/;\n const match = version.match(regex);\n const versionInfo = {\n major: 0,\n minor: 0,\n patch: 0,\n };\n versionInfo.major = match && match[1] ? parseInt(match[1], 10) : 0;\n versionInfo.minor = match && match[2] ? parseInt(match[2], 10) : 0;\n versionInfo.patch = match && match[3] ? parseInt(match[3], 10) : 0;\n return versionInfo;\n};\n\nexport const validatePlaywrightVersion = (): void => {\n const minimumSupportedVersion = Constants.MinimumSupportedPlaywrightVersion;\n const installedVersion = getPlaywrightVersion();\n\n const minimumSupportedVersionInfo = getVersionInfo(minimumSupportedVersion);\n const installedVersionInfo = getVersionInfo(installedVersion);\n\n const isInstalledVersionGreater =\n installedVersionInfo.major > minimumSupportedVersionInfo.major ||\n (installedVersionInfo.major === minimumSupportedVersionInfo.major &&\n installedVersionInfo.minor >= minimumSupportedVersionInfo.minor);\n if (!isInstalledVersionGreater) {\n exitWithFailureMessage(ServiceErrorMessageConstants.INVALID_PLAYWRIGHT_VERSION_ERROR);\n }\n};\n\nexport const getTestRunConfig = (config: FullConfig): RunConfig => {\n const maxWorkers = config.workers || config.metadata.actualWorkers;\n const frameWorkVersion = config.version;\n\n const testRunConfig: RunConfig = {\n framework: {\n name: RunConfigConstants.TEST_FRAMEWORK_NAME,\n version: frameWorkVersion,\n runnerName: RunConfigConstants.TEST_FRAMEWORK_RUNNERNAME,\n },\n sdkLanguage: RunConfigConstants.TEST_SDK_LANGUAGE,\n maxWorkers: maxWorkers,\n };\n return testRunConfig;\n};\n\nexport function getTestRunApiUrl(): string {\n const result = populateValuesFromServiceUrl();\n const runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID];\n\n if (!result?.region || !result?.domain || !result?.accountId) {\n exitWithFailureMessage(ServiceErrorMessageConstants.NO_SERVICE_URL_ERROR);\n }\n const baseUrl = `https://${result?.region}.${UrlConstants.ReportingApiSubdomain}.${result?.domain}/${UrlConstants.PlaywrightWorkspacesPath}/${result?.accountId}/${UrlConstants.TestRunsPath}`;\n const url = runId ? `${baseUrl}/${runId}` : baseUrl;\n\n return `${url}?api-version=${Constants.LatestAPIVersion}`;\n}\n\nexport function isNullOrEmpty(str: string | null | undefined): boolean {\n return !str || str.trim() === \"\";\n}\n\nasync function runCommand(command: string): Promise<string> {\n return new Promise((resolve, reject) => {\n exec(command, (error, stdout, stderr) => {\n if (error) {\n reject(error);\n return;\n }\n if (stderr) {\n reject(new Error(stderr));\n return;\n }\n resolve(stdout.trim());\n });\n });\n}\n\nexport async function getRunName(ciInfo: CIInfo): Promise<string> {\n if (\n ciInfo.providerName === CI_PROVIDERS.GITHUB &&\n process.env[\"GITHUB_EVENT_NAME\"] === \"pull_request\"\n ) {\n const prNumber: string = `${process.env[\"GITHUB_REF_NAME\"]?.split(\"/\")[0]}`;\n const prLink: string = `${process.env[\"GITHUB_REPOSITORY\"]}/pull/${prNumber}`;\n return `PR# ${prNumber} on Repo: ${process.env[\"GITHUB_REPOSITORY\"]} (${prLink})`;\n }\n\n try {\n const gitVersion = await runCommand(GitHubActionsConstants.GIT_VERSION_COMMAND);\n if (isNullOrEmpty(gitVersion)) {\n throw new Error(\"Git is not installed on the machine\");\n }\n const isInsideWorkTree = await runCommand(GitHubActionsConstants.GIT_REV_PARSE);\n if (isInsideWorkTree !== \"true\") {\n throw new Error(\"Not inside a git repository\");\n }\n const gitCommitMessage = await runCommand(GitHubActionsConstants.GIT_COMMIT_MESSAGE_COMMAND);\n return gitCommitMessage;\n } catch (err) {\n coreLogger.error(`Error in getting git commit message: ${err}.`);\n return \"\";\n }\n}\n\nexport function extractErrorMessage(responseBody: string): string {\n if (!responseBody) {\n return \"\";\n }\n\n try {\n const errorResponse = JSON.parse(responseBody);\n if (errorResponse.error && errorResponse.error.message) {\n return errorResponse.error.message;\n }\n return responseBody;\n } catch (e) {\n return responseBody;\n }\n}\n\nexport function getWorkspaceMetaDataApiUrl(): string {\n const result = populateValuesFromServiceUrl();\n\n if (!result?.region || !result?.domain || !result?.accountId) {\n exitWithFailureMessage(ServiceErrorMessageConstants.NO_SERVICE_URL_ERROR);\n }\n const baseUrl = `https://${result?.region}.${UrlConstants.ApiSubdomain}.${result?.domain}/${UrlConstants.PlaywrightWorkspacesPath}/${result?.accountId}`;\n\n return `${baseUrl}?api-version=${Constants.LatestAPIVersion}`;\n}\n\nexport function getHtmlReporterOutputFolder(config: FullConfig | undefined): string {\n const defaultFolder = \"playwright-report\";\n\n if (!config?.reporter) {\n return defaultFolder;\n }\n\n for (const reporter of config.reporter) {\n if (Array.isArray(reporter)) {\n const [reporterName, options] = reporter;\n if (reporterName === \"html\" && options && typeof options === \"object\") {\n return (options as any).outputFolder || defaultFolder;\n }\n } else if (typeof reporter === \"string\" && reporter === \"html\") {\n return defaultFolder;\n }\n }\n\n return defaultFolder;\n}\n\nexport function getContentType(filePath: string): string {\n const ext = filePath.toLowerCase().split(\".\").pop();\n\n const contentTypes: { [key: string]: string } = {\n html: \"text/html\",\n css: \"text/css\",\n js: \"application/javascript\",\n json: \"application/json\",\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n svg: \"image/svg+xml\",\n ico: \"image/x-icon\",\n txt: \"text/plain\",\n ttf: \"font/ttf\",\n woff: \"font/woff\",\n woff2: \"font/woff2\",\n webmanifest: \"application/manifest+json\",\n map: \"application/json\",\n xml: \"application/xml\",\n pdf: \"application/pdf\",\n zip: \"application/zip\",\n };\n\n return contentTypes[ext || \"\"] || \"application/octet-stream\";\n}\n\nexport function calculateOptimalConcurrency(files: Array<{ size: number }>): number {\n const totalFiles = files.length;\n const totalSize = files.reduce((sum, f) => sum + f.size, 0);\n const avgFileSize = totalSize / totalFiles;\n\n let optimalConcurrency: number;\n\n if (totalFiles <= 10) {\n optimalConcurrency = Math.min(totalFiles, 10);\n } else if (avgFileSize < UploadConstants.SMALL_FILE_THRESHOLD) {\n optimalConcurrency = Math.min(\n UploadConstants.MAX_CONCURRENCY,\n Math.max(UploadConstants.BASE_CONCURRENCY, totalFiles / 50),\n );\n } else if (totalFiles > 1000) {\n optimalConcurrency = Math.min(\n UploadConstants.MAX_CONCURRENCY,\n UploadConstants.BASE_CONCURRENCY + Math.floor(totalFiles / 200),\n );\n } else {\n optimalConcurrency = Math.min(\n UploadConstants.MAX_CONCURRENCY,\n UploadConstants.BASE_CONCURRENCY,\n );\n }\n\n return Math.floor(optimalConcurrency);\n}\n\nexport function collectAllFiles(\n folderPath: string,\n basePath: string,\n runIdFolderPrefix?: string,\n): Array<{\n fullPath: string;\n relativePath: string;\n size: number;\n contentType: string;\n}> {\n const files: Array<{\n fullPath: string;\n relativePath: string;\n size: number;\n contentType: string;\n }> = [];\n\n const stack = [folderPath];\n\n while (stack.length > 0) {\n const currentPath = stack.pop()!;\n\n try {\n const items = readdirSync(currentPath);\n\n for (const item of items) {\n const itemPath = join(currentPath, item);\n const stats = statSync(itemPath);\n\n if (stats.isDirectory()) {\n stack.push(itemPath);\n } else {\n let relativePath = relative(basePath, itemPath).split(\"\\\\\").join(\"/\");\n\n if (runIdFolderPrefix) {\n relativePath = `${runIdFolderPrefix}/${relativePath}`;\n }\n\n files.push({\n fullPath: itemPath,\n relativePath,\n size: stats.size,\n contentType: getContentType(itemPath),\n });\n }\n }\n } catch (error) {\n continue;\n }\n }\n\n return files;\n}\n\nexport function resolveTenantDomain(\n tenantId: string | undefined,\n tenants: TenantInfo[],\n): string | undefined {\n if (!tenantId || tenants.length === 0) {\n return undefined;\n }\n const matchingTenant = tenants.find((t) => t.tenantId === tenantId);\n coreLogger.info(\n `Resolved tenant domain: ${JSON.stringify(matchingTenant?.defaultDomain)} for tenant ID: ${tenantId}`,\n );\n return matchingTenant?.defaultDomain;\n}\n\nexport function getPortalTestRunUrl(\n workspaceMetadata: WorkspaceMetaData | null,\n tenantDomain?: string,\n): string {\n const { subscriptionId, resourceId, name } = workspaceMetadata ?? {};\n if (!subscriptionId || !resourceId || !name) {\n throw new Error(\n \"Missing required workspace metadata: subscriptionId, resourceId, and name are required\",\n );\n }\n\n // Extract resource group from resourceId\n const resourceIdParts = resourceId.split(\"/\");\n const resourceGroupIndex = resourceIdParts.findIndex(\n (part) => part.toLowerCase() === UrlConstants.ResourceGroupsPath,\n );\n\n if (resourceGroupIndex === -1 || resourceGroupIndex + 1 >= resourceIdParts.length) {\n throw new Error(\"Invalid resourceId format: could not extract resource group name\");\n }\n\n const resourceGroupName = resourceIdParts[resourceGroupIndex + 1];\n const tenantFragment = tenantDomain ? `#@${tenantDomain}` : \"#\";\n return `${UrlConstants.AzurePortalBaseUrl}/${tenantFragment}${UrlConstants.ResourcePath}${UrlConstants.SubscriptionsPath}/${encodeURIComponent(subscriptionId)}${UrlConstants.ResourceGroupsUrlPath}/${encodeURIComponent(resourceGroupName!)}${UrlConstants.ProvidersPath}/${UrlConstants.LoadTestServiceProvider}/${UrlConstants.PlaywrightWorkspacesResourceType}/${encodeURIComponent(name)}/${UrlConstants.TestRunsRoute}`;\n}\n\nexport const getStorageAccountNameFromUri = (storageUri: string): string | null => {\n try {\n if (!storageUri || typeof storageUri !== \"string\") {\n return null;\n }\n\n const url = new URL(storageUri);\n const hostname = url.hostname;\n\n // Extract storage account name from hostname pattern: {accountname}.blob.core.windows.net\n const match = hostname.match(/^([^.]+)\\.blob\\.core\\.windows\\.net$/i);\n\n if (match && match[1]) {\n return match[1];\n }\n\n return null;\n } catch (error) {\n console.warn(\"Failed to extract storage account name from URI:\", storageUri, error);\n return null;\n }\n};\n"]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["/mnt/vss/_work/1/s/sdk/loadtesting/playwright/src/utils/utils.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n AccessTokenClaims,\n VersionInfo,\n JwtPayload,\n RunConfig,\n WorkspaceMetaData,\n TenantInfo,\n} from \"../common/types.js\";\nimport {\n Constants,\n InternalEnvironmentVariables,\n ServiceEnvironmentVariable,\n RunConfigConstants,\n GitHubActionsConstants,\n UrlConstants,\n} from \"../common/constants.js\";\nimport { ServiceErrorMessageConstants } from \"../common/messages.js\";\nimport { coreLogger } from \"../common/logger.js\";\nimport type { TokenCredential } from \"@azure/core-auth\";\nimport process from \"node:process\";\nimport { randomUUID } from \"node:crypto\";\nimport { parseJwt } from \"./parseJwt.js\";\nimport { getPlaywrightVersion } from \"./getPlaywrightVersion.js\";\nimport { createEntraIdAccessToken } from \"../common/entraIdAccessToken.js\";\nimport type { FullConfig } from \"@playwright/test\";\nimport type { CIInfo } from \"./cIInfoProvider.js\";\nimport { CI_PROVIDERS } from \"./cIInfoProvider.js\";\nimport { exec } from \"child_process\";\nimport { getPackageVersionFromFolder } from \"./getPackageVersion.js\";\nimport { readdirSync, statSync } from \"fs\";\nimport { join, relative } from \"path\";\nimport { UploadConstants } from \"../common/constants.js\";\n\n// Re-exporting for backward compatibility\nexport { getPlaywrightVersion } from \"./getPlaywrightVersion.js\";\nexport { parseJwt } from \"./parseJwt.js\";\n\nexport const getPackageVersion = (): string => {\n // hacky way to get package version\n // try from dist folder first (customer perspective)\n const distVersion = getPackageVersionFromFolder(\"../../../\");\n if (distVersion) {\n return distVersion;\n }\n // if not found, try from src folder (internal test suite)\n const srcVersion = getPackageVersionFromFolder(\"../../\");\n if (srcVersion) {\n return srcVersion;\n }\n return \"unknown-version\";\n};\n\nexport const exitWithFailureMessage = (\n error: {\n key: string;\n message: string;\n formatWithErrorDetails?: (errorDetails: string) => string;\n },\n errorDetails?: string,\n): never => {\n console.log();\n\n if (error.formatWithErrorDetails && errorDetails) {\n console.error(error.formatWithErrorDetails(errorDetails));\n } else {\n console.error(error.message);\n }\n // eslint-disable-next-line n/no-process-exit\n process.exit(1);\n};\n\nexport const throwErrorWithFailureMessage = (\n error: {\n key: string;\n message: string;\n formatWithErrorDetails?: (errorDetails: string) => string;\n },\n errorDetails?: string,\n): never => {\n console.log();\n\n const finalMessage =\n error.formatWithErrorDetails && errorDetails\n ? error.formatWithErrorDetails(errorDetails)\n : error.message;\n\n throw new Error(finalMessage);\n};\n\nexport const populateValuesFromServiceUrl = (): {\n region: string;\n domain: string;\n accountId: string;\n} | null => {\n // Service URL format: wss://<region>.api.playwright.microsoft.com/accounts/<workspace-id>/browsers\n const url = process.env[\"PLAYWRIGHT_SERVICE_URL\"]!;\n if (url) {\n const parts = url.split(\"/\");\n\n if (parts.length > 2) {\n const subdomainParts = parts[2]!.split(\".\");\n const region = subdomainParts.length > 0 ? subdomainParts[0] : null;\n const domain = subdomainParts.slice(2).join(\".\");\n const accountId = parts[4];\n\n return { region: region!, domain: domain!, accountId: accountId! };\n }\n }\n return null;\n};\n\nexport const getAccessToken = (): string | undefined => {\n return process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN];\n};\n\nexport const getServiceBaseURL = (): string | undefined => {\n return process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_URL];\n};\n\nexport const isValidGuid = (guid: string | null | undefined): boolean => {\n if (!guid) {\n return false;\n }\n const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n return guidRegex.test(guid);\n};\n\nexport const getAndSetRunId = (): string => {\n const runId = randomUUID();\n process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID] = runId;\n return runId;\n};\n\nexport const getServiceWSEndpoint = (runId: string, os: string, apiVersion: string): string => {\n return `${getServiceBaseURL()}?runId=${encodeURIComponent(runId)}&os=${os}&api-version=${apiVersion}`;\n};\n\nexport const validateServiceUrl = (): void => {\n const serviceUrl = getServiceBaseURL();\n if (!serviceUrl) {\n exitWithFailureMessage(ServiceErrorMessageConstants.NO_SERVICE_URL_ERROR);\n }\n};\n\nexport const ValidateRunID = (runID: string): void => {\n const isValidRunID = isValidGuid(runID);\n if (!isValidRunID) {\n const errorMessage = ServiceErrorMessageConstants.INVALID_RUN_ID_FORMAT.message;\n throw new Error(errorMessage);\n }\n};\nexport const validateMptPAT = (\n validationFailureCallback: (error: { key: string; message: string }) => void,\n): void => {\n try {\n const accessToken = getAccessToken();\n const result = populateValuesFromServiceUrl();\n if (!accessToken) {\n validationFailureCallback(ServiceErrorMessageConstants.NO_AUTH_ERROR_PAT_TOKEN);\n }\n const claims = parseJwt<Partial<AccessTokenClaims>>(accessToken!);\n if (!claims.exp) {\n validationFailureCallback(ServiceErrorMessageConstants.INVALID_MPT_PAT_ERROR);\n }\n if (Date.now() >= claims.exp! * 1000) {\n validationFailureCallback(ServiceErrorMessageConstants.EXPIRED_MPT_PAT_ERROR);\n }\n if (result!.accountId !== claims!.pwid) {\n validationFailureCallback(ServiceErrorMessageConstants.WORKSPACE_MISMATCH_ERROR);\n }\n } catch (err) {\n coreLogger.error(err);\n exitWithFailureMessage(ServiceErrorMessageConstants.INVALID_MPT_PAT_ERROR);\n }\n};\nconst isTokenExpiringSoon = (expirationTime: number, currentTime: number): boolean => {\n return expirationTime * 1000 - currentTime <= Constants.SevenDaysInMS;\n};\n\nconst warnAboutTokenExpiry = (expirationTime: number, currentTime: number): void => {\n const daysToExpiration = Math.ceil((expirationTime * 1000 - currentTime) / Constants.OneDayInMS);\n const expirationDate = new Date(expirationTime * 1000).toLocaleDateString();\n const expirationWarning = `Warning: The access token used for this test run will expire in ${daysToExpiration} days on ${expirationDate}. Generate a new token from the portal to avoid failures. For a simpler, more secure solution, switch to Microsoft Entra ID and eliminate token management. https://learn.microsoft.com/entra/identity/`;\n console.warn(expirationWarning);\n};\n\nexport const warnIfAccessTokenCloseToExpiry = (): void => {\n const accessToken = getAccessToken();\n if (!accessToken) {\n throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_PAT_TOKEN.message);\n }\n const claims = parseJwt<JwtPayload>(accessToken!);\n const currentTime = Date.now();\n if (isTokenExpiringSoon(claims.exp!, currentTime)) {\n warnAboutTokenExpiry(claims.exp!, currentTime);\n }\n};\n\nexport const fetchOrValidateAccessToken = async (credential?: TokenCredential): Promise<string> => {\n const entraIdAccessToken = createEntraIdAccessToken(credential);\n // Fetch a token or refresh if needed in a single call\n if (entraIdAccessToken.doesEntraIdAccessTokenNeedRotation()) {\n await entraIdAccessToken.fetchEntraIdAccessToken();\n }\n const token = getAccessToken();\n if (!token) {\n throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_ENTRA_TOKEN.message);\n }\n return token;\n};\n\nexport const getVersionInfo = (version: string): VersionInfo => {\n const regex = /^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?/;\n const match = version.match(regex);\n const versionInfo = {\n major: 0,\n minor: 0,\n patch: 0,\n };\n versionInfo.major = match && match[1] ? parseInt(match[1], 10) : 0;\n versionInfo.minor = match && match[2] ? parseInt(match[2], 10) : 0;\n versionInfo.patch = match && match[3] ? parseInt(match[3], 10) : 0;\n return versionInfo;\n};\n\nexport const validatePlaywrightVersion = (): void => {\n const minimumSupportedVersion = Constants.MinimumSupportedPlaywrightVersion;\n const installedVersion = getPlaywrightVersion();\n\n const minimumSupportedVersionInfo = getVersionInfo(minimumSupportedVersion);\n const installedVersionInfo = getVersionInfo(installedVersion);\n\n const isInstalledVersionGreater =\n installedVersionInfo.major > minimumSupportedVersionInfo.major ||\n (installedVersionInfo.major === minimumSupportedVersionInfo.major &&\n installedVersionInfo.minor >= minimumSupportedVersionInfo.minor);\n if (!isInstalledVersionGreater) {\n exitWithFailureMessage(ServiceErrorMessageConstants.INVALID_PLAYWRIGHT_VERSION_ERROR);\n }\n};\n\nexport const getTestRunConfig = (config: FullConfig): RunConfig => {\n const maxWorkers = config.workers || config.metadata.actualWorkers;\n const frameWorkVersion = config.version;\n\n const testRunConfig: RunConfig = {\n framework: {\n name: RunConfigConstants.TEST_FRAMEWORK_NAME,\n version: frameWorkVersion,\n runnerName: RunConfigConstants.TEST_FRAMEWORK_RUNNERNAME,\n },\n sdkLanguage: RunConfigConstants.TEST_SDK_LANGUAGE,\n maxWorkers: maxWorkers,\n };\n return testRunConfig;\n};\n\nexport function getTestRunApiUrl(): string {\n const result = populateValuesFromServiceUrl();\n const runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID];\n\n if (!result?.region || !result?.domain || !result?.accountId) {\n exitWithFailureMessage(ServiceErrorMessageConstants.NO_SERVICE_URL_ERROR);\n }\n const baseUrl = `https://${result?.region}.${UrlConstants.ReportingApiSubdomain}.${result?.domain}/${UrlConstants.PlaywrightWorkspacesPath}/${result?.accountId}/${UrlConstants.TestRunsPath}`;\n const url = runId ? `${baseUrl}/${runId}` : baseUrl;\n\n return `${url}?api-version=${Constants.LatestAPIVersion}`;\n}\n\nexport function isNullOrEmpty(str: string | null | undefined): boolean {\n return !str || str.trim() === \"\";\n}\n\nasync function runCommand(command: string): Promise<string> {\n return new Promise((resolve, reject) => {\n exec(command, (error, stdout, stderr) => {\n if (error) {\n reject(error);\n return;\n }\n if (stderr) {\n reject(new Error(stderr));\n return;\n }\n resolve(stdout.trim());\n });\n });\n}\n\nexport async function getRunName(ciInfo: CIInfo): Promise<string> {\n if (\n ciInfo.providerName === CI_PROVIDERS.GITHUB &&\n process.env[\"GITHUB_EVENT_NAME\"] === \"pull_request\"\n ) {\n const prNumber: string = `${process.env[\"GITHUB_REF_NAME\"]?.split(\"/\")[0]}`;\n const prLink: string = `${process.env[\"GITHUB_REPOSITORY\"]}/pull/${prNumber}`;\n return `PR# ${prNumber} on Repo: ${process.env[\"GITHUB_REPOSITORY\"]} (${prLink})`;\n }\n\n try {\n const gitVersion = await runCommand(GitHubActionsConstants.GIT_VERSION_COMMAND);\n if (isNullOrEmpty(gitVersion)) {\n throw new Error(\"Git is not installed on the machine\");\n }\n const isInsideWorkTree = await runCommand(GitHubActionsConstants.GIT_REV_PARSE);\n if (isInsideWorkTree !== \"true\") {\n throw new Error(\"Not inside a git repository\");\n }\n const gitCommitMessage = await runCommand(GitHubActionsConstants.GIT_COMMIT_MESSAGE_COMMAND);\n return gitCommitMessage;\n } catch (err) {\n coreLogger.error(`Error in getting git commit message: ${err}.`);\n return \"\";\n }\n}\n\nexport function extractErrorMessage(responseBody: string): string {\n if (!responseBody) {\n return \"\";\n }\n\n try {\n const errorResponse = JSON.parse(responseBody);\n if (errorResponse.error && errorResponse.error.message) {\n return errorResponse.error.message;\n }\n return responseBody;\n } catch (e) {\n return responseBody;\n }\n}\n\nexport function getWorkspaceMetaDataApiUrl(): string {\n const result = populateValuesFromServiceUrl();\n\n if (!result?.region || !result?.domain || !result?.accountId) {\n exitWithFailureMessage(ServiceErrorMessageConstants.NO_SERVICE_URL_ERROR);\n }\n const baseUrl = `https://${result?.region}.${UrlConstants.ApiSubdomain}.${result?.domain}/${UrlConstants.PlaywrightWorkspacesPath}/${result?.accountId}`;\n\n return `${baseUrl}?api-version=${Constants.LatestAPIVersion}`;\n}\n\nexport function getHtmlReporterOutputFolder(config: FullConfig | undefined): string {\n const defaultFolder = \"playwright-report\";\n\n if (!config?.reporter) {\n return defaultFolder;\n }\n\n for (const reporter of config.reporter) {\n if (Array.isArray(reporter)) {\n const [reporterName, options] = reporter;\n if (reporterName === \"html\" && options && typeof options === \"object\") {\n return (options as any).outputFolder || defaultFolder;\n }\n } else if (typeof reporter === \"string\" && reporter === \"html\") {\n return defaultFolder;\n }\n }\n\n return defaultFolder;\n}\n\nexport function getContentType(filePath: string): string {\n const ext = filePath.toLowerCase().split(\".\").pop();\n\n const contentTypes: { [key: string]: string } = {\n html: \"text/html\",\n css: \"text/css\",\n js: \"application/javascript\",\n json: \"application/json\",\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n svg: \"image/svg+xml\",\n ico: \"image/x-icon\",\n txt: \"text/plain\",\n ttf: \"font/ttf\",\n woff: \"font/woff\",\n woff2: \"font/woff2\",\n webmanifest: \"application/manifest+json\",\n map: \"application/json\",\n xml: \"application/xml\",\n pdf: \"application/pdf\",\n zip: \"application/zip\",\n };\n\n return contentTypes[ext || \"\"] || \"application/octet-stream\";\n}\n\nexport function calculateOptimalConcurrency(files: Array<{ size: number }>): number {\n const totalFiles = files.length;\n const totalSize = files.reduce((sum, f) => sum + f.size, 0);\n const avgFileSize = totalSize / totalFiles;\n\n let optimalConcurrency: number;\n\n if (totalFiles <= 10) {\n optimalConcurrency = Math.min(totalFiles, 10);\n } else if (avgFileSize < UploadConstants.SMALL_FILE_THRESHOLD) {\n optimalConcurrency = Math.min(\n UploadConstants.MAX_CONCURRENCY,\n Math.max(UploadConstants.BASE_CONCURRENCY, totalFiles / 50),\n );\n } else if (totalFiles > 1000) {\n optimalConcurrency = Math.min(\n UploadConstants.MAX_CONCURRENCY,\n UploadConstants.BASE_CONCURRENCY + Math.floor(totalFiles / 200),\n );\n } else {\n optimalConcurrency = Math.min(\n UploadConstants.MAX_CONCURRENCY,\n UploadConstants.BASE_CONCURRENCY,\n );\n }\n\n return Math.floor(optimalConcurrency);\n}\n\nexport function collectAllFiles(\n folderPath: string,\n basePath: string,\n runIdFolderPrefix?: string,\n): Array<{\n fullPath: string;\n relativePath: string;\n size: number;\n contentType: string;\n}> {\n const files: Array<{\n fullPath: string;\n relativePath: string;\n size: number;\n contentType: string;\n }> = [];\n\n const stack = [folderPath];\n\n while (stack.length > 0) {\n const currentPath = stack.pop()!;\n\n try {\n const items = readdirSync(currentPath);\n\n for (const item of items) {\n const itemPath = join(currentPath, item);\n const stats = statSync(itemPath);\n\n if (stats.isDirectory()) {\n stack.push(itemPath);\n } else {\n let relativePath = relative(basePath, itemPath).split(\"\\\\\").join(\"/\");\n\n if (runIdFolderPrefix) {\n relativePath = `${runIdFolderPrefix}/${relativePath}`;\n }\n\n files.push({\n fullPath: itemPath,\n relativePath,\n size: stats.size,\n contentType: getContentType(itemPath),\n });\n }\n }\n } catch (error) {\n continue;\n }\n }\n\n return files;\n}\n\nexport function resolveTenantDomain(\n tenantId: string | undefined,\n tenants: TenantInfo[],\n): string | undefined {\n if (!tenantId || tenants.length === 0) {\n return undefined;\n }\n const matchingTenant = tenants.find((t) => t.tenantId === tenantId);\n coreLogger.info(\n `Resolved tenant domain: ${JSON.stringify(matchingTenant?.defaultDomain)} for tenant ID: ${tenantId}`,\n );\n return matchingTenant?.defaultDomain;\n}\n\nexport function getPortalTestRunUrl(\n workspaceMetadata: WorkspaceMetaData | null,\n tenantDomain?: string,\n): string {\n const { subscriptionId, resourceId, name } = workspaceMetadata ?? {};\n if (!subscriptionId || !resourceId || !name) {\n throw new Error(\n \"Missing required workspace metadata: subscriptionId, resourceId, and name are required\",\n );\n }\n\n // Extract resource group from resourceId\n const resourceIdParts = resourceId.split(\"/\");\n const resourceGroupIndex = resourceIdParts.findIndex(\n (part) => part.toLowerCase() === UrlConstants.ResourceGroupsPath,\n );\n\n if (resourceGroupIndex === -1 || resourceGroupIndex + 1 >= resourceIdParts.length) {\n throw new Error(\"Invalid resourceId format: could not extract resource group name\");\n }\n\n const resourceGroupName = resourceIdParts[resourceGroupIndex + 1];\n const tenantFragment = tenantDomain ? `#@${tenantDomain}` : \"#\";\n return `${UrlConstants.AzurePortalBaseUrl}/${tenantFragment}${UrlConstants.ResourcePath}${UrlConstants.SubscriptionsPath}/${encodeURIComponent(subscriptionId)}${UrlConstants.ResourceGroupsUrlPath}/${encodeURIComponent(resourceGroupName!)}${UrlConstants.ProvidersPath}/${UrlConstants.LoadTestServiceProvider}/${UrlConstants.PlaywrightWorkspacesResourceType}/${encodeURIComponent(name)}/${UrlConstants.TestRunsRoute}`;\n}\n\nexport const getStorageAccountNameFromUri = (storageUri: string): string | null => {\n try {\n if (!storageUri || typeof storageUri !== \"string\") {\n return null;\n }\n\n const url = new URL(storageUri);\n const hostname = url.hostname;\n\n // Extract storage account name from hostname pattern: {accountname}.blob.core.windows.net\n const match = hostname.match(/^([^.]+)\\.blob\\.core\\.windows\\.net$/i);\n\n if (match && match[1]) {\n return match[1];\n }\n\n return null;\n } catch (error) {\n console.warn(\"Failed to extract storage account name from URI:\", storageUri, error);\n return null;\n }\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_constants", "import_getPlaywrightVersion", "import_parseJwt", "process"]
7
+ }
@@ -1,105 +1,105 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
- export const EntraIdAccessTokenConstants = {
4
- LIFETIME_LEFT_THRESHOLD_IN_MINUTES_FOR_ROTATION: 15,
5
- SCOPE: "https://management.core.windows.net/.default",
6
- ROTATION_INTERVAL_PERIOD_IN_MINUTES: 4,
1
+ const EntraIdAccessTokenConstants = {
2
+ LIFETIME_LEFT_THRESHOLD_IN_MINUTES_FOR_ROTATION: 15,
3
+ SCOPE: "https://management.core.windows.net/.default",
4
+ ROTATION_INTERVAL_PERIOD_IN_MINUTES: 4
7
5
  };
8
- /** @public
9
- *
10
- * OS types supported on Azure Playwright cloud hosted browsers
11
- */
12
- export const ServiceOS = {
13
- LINUX: "linux",
14
- WINDOWS: "windows",
6
+ const ServiceOS = {
7
+ LINUX: "linux",
8
+ WINDOWS: "windows"
15
9
  };
16
- /** @public
17
- *
18
- * Authentication types supported on Azure Playwright
19
- */
20
- export const ServiceAuth = {
21
- ENTRA_ID: "ENTRA_ID",
22
- ACCESS_TOKEN: "ACCESS_TOKEN",
10
+ const ServiceAuth = {
11
+ ENTRA_ID: "ENTRA_ID",
12
+ ACCESS_TOKEN: "ACCESS_TOKEN"
23
13
  };
24
- /** @public
25
- *
26
- * Environment variables used by Azure Playwright
27
- */
28
- export const ServiceEnvironmentVariable = {
29
- PLAYWRIGHT_SERVICE_ACCESS_TOKEN: "PLAYWRIGHT_SERVICE_ACCESS_TOKEN",
30
- PLAYWRIGHT_SERVICE_URL: "PLAYWRIGHT_SERVICE_URL",
14
+ const ServiceEnvironmentVariable = {
15
+ PLAYWRIGHT_SERVICE_ACCESS_TOKEN: "PLAYWRIGHT_SERVICE_ACCESS_TOKEN",
16
+ PLAYWRIGHT_SERVICE_URL: "PLAYWRIGHT_SERVICE_URL"
31
17
  };
32
- export const GitHubActionsConstants = {
33
- GIT_VERSION_COMMAND: "git --version",
34
- GIT_REV_PARSE: "git rev-parse --is-inside-work-tree",
35
- GIT_COMMIT_MESSAGE_COMMAND: 'git log -1 --pretty=format:"%s"',
18
+ const GitHubActionsConstants = {
19
+ GIT_VERSION_COMMAND: "git --version",
20
+ GIT_REV_PARSE: "git rev-parse --is-inside-work-tree",
21
+ GIT_COMMIT_MESSAGE_COMMAND: 'git log -1 --pretty=format:"%s"'
36
22
  };
37
- export const DefaultConnectOptionsConstants = {
38
- DEFAULT_TIMEOUT: 30000,
39
- DEFAULT_SLOW_MO: 0,
40
- DEFAULT_EXPOSE_NETWORK: "<loopback>",
41
- DEFAULT_SERVICE_OS: ServiceOS.LINUX,
42
- DEFAULT_SERVICE_AUTH_TYPE: ServiceAuth.ENTRA_ID,
23
+ const DefaultConnectOptionsConstants = {
24
+ DEFAULT_TIMEOUT: 3e4,
25
+ DEFAULT_SLOW_MO: 0,
26
+ DEFAULT_EXPOSE_NETWORK: "<loopback>",
27
+ DEFAULT_SERVICE_OS: ServiceOS.LINUX,
28
+ DEFAULT_SERVICE_AUTH_TYPE: ServiceAuth.ENTRA_ID
43
29
  };
44
- export const SDKLanguage = {
45
- JAVASCRIPT: "JAVASCRIPT",
46
- TYPESCRIPT: "TYPESCRIPT",
47
- CSHARP: "CSHARP",
30
+ const SDKLanguage = {
31
+ JAVASCRIPT: "JAVASCRIPT",
32
+ TYPESCRIPT: "TYPESCRIPT",
33
+ CSHARP: "CSHARP"
48
34
  };
49
- export const RunConfigConstants = {
50
- TEST_FRAMEWORK_NAME: "PLAYWRIGHT",
51
- TEST_SDK_LANGUAGE: SDKLanguage.JAVASCRIPT,
52
- TEST_FRAMEWORK_RUNNERNAME: "PLAYWRIGHT",
35
+ const RunConfigConstants = {
36
+ TEST_FRAMEWORK_NAME: "PLAYWRIGHT",
37
+ TEST_SDK_LANGUAGE: SDKLanguage.JAVASCRIPT,
38
+ TEST_FRAMEWORK_RUNNERNAME: "PLAYWRIGHT"
53
39
  };
54
- export const Constants = {
55
- SevenDaysInMS: 7 * 24 * 60 * 60 * 1000,
56
- OneDayInMS: 24 * 60 * 60 * 1000,
57
- MinimumSupportedPlaywrightVersion: "1.47.0",
58
- LatestAPIVersion: "2025-09-01",
59
- HTTP_CALL_TIMEOUT: 10000,
40
+ const Constants = {
41
+ SevenDaysInMS: 7 * 24 * 60 * 60 * 1e3,
42
+ OneDayInMS: 24 * 60 * 60 * 1e3,
43
+ MinimumSupportedPlaywrightVersion: "1.47.0",
44
+ LatestAPIVersion: "2025-09-01",
45
+ HTTP_CALL_TIMEOUT: 1e4
60
46
  };
61
- export const ArmConstants = {
62
- TenantsApiUrl: "https://management.azure.com/tenants",
63
- TenantsApiVersion: "2025-04-01",
47
+ const ArmConstants = {
48
+ TenantsApiUrl: "https://management.azure.com/tenants",
49
+ TenantsApiVersion: "2025-04-01"
64
50
  };
65
- export const UrlConstants = {
66
- AzurePortalBaseUrl: "https://ms.portal.azure.com",
67
- ReportingApiSubdomain: "reporting.api",
68
- ApiSubdomain: "api",
69
- PlaywrightWorkspacesPath: "playwrightworkspaces",
70
- TestRunsPath: "test-runs",
71
- LoadTestServiceProvider: "Microsoft.LoadTestService",
72
- PlaywrightWorkspacesResourceType: "playwrightWorkspaces",
73
- TestRunsRoute: "TestRuns",
74
- ResourceGroupsPath: "resourcegroups",
75
- ResourcePath: "/resource",
76
- SubscriptionsPath: "/subscriptions",
77
- ResourceGroupsUrlPath: "/resourceGroups",
78
- ProvidersPath: "/providers",
51
+ const UrlConstants = {
52
+ AzurePortalBaseUrl: "https://ms.portal.azure.com",
53
+ ReportingApiSubdomain: "reporting.api",
54
+ ApiSubdomain: "api",
55
+ PlaywrightWorkspacesPath: "playwrightworkspaces",
56
+ TestRunsPath: "test-runs",
57
+ LoadTestServiceProvider: "Microsoft.LoadTestService",
58
+ PlaywrightWorkspacesResourceType: "playwrightWorkspaces",
59
+ TestRunsRoute: "TestRuns",
60
+ ResourceGroupsPath: "resourcegroups",
61
+ ResourcePath: "/resource",
62
+ SubscriptionsPath: "/subscriptions",
63
+ ResourceGroupsUrlPath: "/resourceGroups",
64
+ ProvidersPath: "/providers"
79
65
  };
80
- export const InternalEnvironmentVariables = {
81
- MPT_PLAYWRIGHT_VERSION: "_MPT_PLAYWRIGHT_VERSION",
82
- MPT_SETUP_FATAL_ERROR: "_MPT_SETUP_FATAL_ERROR",
83
- MPT_SERVICE_RUN_NAME: "_MPT_SERVICE_RUN_NAME",
84
- MPT_API_VERSION: "_MPT_API_VERSION",
85
- MPT_SERVICE_RUN_ID: "_MPT_SERVICE_RUN_ID",
86
- MPT_CLOUD_HOSTED_BROWSER_USED: "_MPT_CLOUD_HOSTED_BROWSER_USED",
87
- MPT_SERVICE_OS: "_MPT_SERVICE_OS",
88
- ONE_TIME_OPERATION_FLAG: "_ONE_TIME_OPERATION_FLAG",
89
- USING_SERVICE_CONFIG: "_USING_SERVICE_CONFIG",
90
- TEST_RUN_CREATION_SUCCESS: "_MPT_TEST_RUN_CREATION_SUCCESS",
66
+ const InternalEnvironmentVariables = {
67
+ MPT_PLAYWRIGHT_VERSION: "_MPT_PLAYWRIGHT_VERSION",
68
+ MPT_SETUP_FATAL_ERROR: "_MPT_SETUP_FATAL_ERROR",
69
+ MPT_SERVICE_RUN_NAME: "_MPT_SERVICE_RUN_NAME",
70
+ MPT_API_VERSION: "_MPT_API_VERSION",
71
+ MPT_SERVICE_RUN_ID: "_MPT_SERVICE_RUN_ID",
72
+ MPT_CLOUD_HOSTED_BROWSER_USED: "_MPT_CLOUD_HOSTED_BROWSER_USED",
73
+ MPT_SERVICE_OS: "_MPT_SERVICE_OS",
74
+ ONE_TIME_OPERATION_FLAG: "_ONE_TIME_OPERATION_FLAG",
75
+ USING_SERVICE_CONFIG: "_USING_SERVICE_CONFIG",
76
+ TEST_RUN_CREATION_SUCCESS: "_MPT_TEST_RUN_CREATION_SUCCESS"
91
77
  };
92
- export const UploadConstants = {
93
- SMALL_FILE_THRESHOLD: 1024 * 1024,
94
- LARGE_FILE_THRESHOLD: 100 * 1024 * 1024,
95
- BASE_CONCURRENCY: 20,
96
- MAX_CONCURRENCY: 50,
97
- PER_FILE_CONCURRENCY: 10,
98
- LARGE_FILE_CONCURRENCY: 5,
99
- BATCH_SIZE: 100,
100
- OPTIMIZED_BLOCK_SIZE: 8 * 1024 * 1024,
101
- STREAM_BUFFER_SIZE: 4 * 1024 * 1024,
102
- MAX_RETRY_ATTEMPTS: 3,
103
- RETRY_BASE_DELAY: 1000,
78
+ const UploadConstants = {
79
+ SMALL_FILE_THRESHOLD: 1024 * 1024,
80
+ LARGE_FILE_THRESHOLD: 100 * 1024 * 1024,
81
+ BASE_CONCURRENCY: 20,
82
+ MAX_CONCURRENCY: 50,
83
+ PER_FILE_CONCURRENCY: 10,
84
+ LARGE_FILE_CONCURRENCY: 5,
85
+ BATCH_SIZE: 100,
86
+ OPTIMIZED_BLOCK_SIZE: 8 * 1024 * 1024,
87
+ STREAM_BUFFER_SIZE: 4 * 1024 * 1024,
88
+ MAX_RETRY_ATTEMPTS: 3,
89
+ RETRY_BASE_DELAY: 1e3
90
+ };
91
+ export {
92
+ ArmConstants,
93
+ Constants,
94
+ DefaultConnectOptionsConstants,
95
+ EntraIdAccessTokenConstants,
96
+ GitHubActionsConstants,
97
+ InternalEnvironmentVariables,
98
+ RunConfigConstants,
99
+ SDKLanguage,
100
+ ServiceAuth,
101
+ ServiceEnvironmentVariable,
102
+ ServiceOS,
103
+ UploadConstants,
104
+ UrlConstants
104
105
  };
105
- //# sourceMappingURL=constants.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/common/constants.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const EntraIdAccessTokenConstants = {\n LIFETIME_LEFT_THRESHOLD_IN_MINUTES_FOR_ROTATION: 15,\n SCOPE: \"https://management.core.windows.net/.default\",\n ROTATION_INTERVAL_PERIOD_IN_MINUTES: 4,\n};\n\n/** @public\n *\n * OS types supported on Azure Playwright cloud hosted browsers\n */\nexport const ServiceOS = {\n LINUX: \"linux\",\n WINDOWS: \"windows\",\n} as const;\n\n/** @public\n *\n * Authentication types supported on Azure Playwright\n */\nexport const ServiceAuth = {\n ENTRA_ID: \"ENTRA_ID\",\n ACCESS_TOKEN: \"ACCESS_TOKEN\",\n} as const;\n\n/** @public\n *\n * Environment variables used by Azure Playwright\n */\nexport const ServiceEnvironmentVariable = {\n PLAYWRIGHT_SERVICE_ACCESS_TOKEN: \"PLAYWRIGHT_SERVICE_ACCESS_TOKEN\",\n PLAYWRIGHT_SERVICE_URL: \"PLAYWRIGHT_SERVICE_URL\",\n};\n\nexport const GitHubActionsConstants = {\n GIT_VERSION_COMMAND: \"git --version\",\n GIT_REV_PARSE: \"git rev-parse --is-inside-work-tree\",\n GIT_COMMIT_MESSAGE_COMMAND: 'git log -1 --pretty=format:\"%s\"',\n};\n\nexport const DefaultConnectOptionsConstants = {\n DEFAULT_TIMEOUT: 30000,\n DEFAULT_SLOW_MO: 0,\n DEFAULT_EXPOSE_NETWORK: \"<loopback>\",\n DEFAULT_SERVICE_OS: ServiceOS.LINUX,\n DEFAULT_SERVICE_AUTH_TYPE: ServiceAuth.ENTRA_ID,\n};\n\nexport const SDKLanguage = {\n JAVASCRIPT: \"JAVASCRIPT\",\n TYPESCRIPT: \"TYPESCRIPT\",\n CSHARP: \"CSHARP\",\n};\n\nexport const RunConfigConstants = {\n TEST_FRAMEWORK_NAME: \"PLAYWRIGHT\",\n TEST_SDK_LANGUAGE: SDKLanguage.JAVASCRIPT,\n TEST_FRAMEWORK_RUNNERNAME: \"PLAYWRIGHT\",\n};\n\nexport const Constants = {\n SevenDaysInMS: 7 * 24 * 60 * 60 * 1000,\n OneDayInMS: 24 * 60 * 60 * 1000,\n MinimumSupportedPlaywrightVersion: \"1.47.0\",\n LatestAPIVersion: \"2025-09-01\",\n HTTP_CALL_TIMEOUT: 10000,\n};\n\nexport const ArmConstants = {\n TenantsApiUrl: \"https://management.azure.com/tenants\",\n TenantsApiVersion: \"2025-04-01\",\n};\n\nexport const UrlConstants = {\n AzurePortalBaseUrl: \"https://ms.portal.azure.com\",\n ReportingApiSubdomain: \"reporting.api\",\n ApiSubdomain: \"api\",\n PlaywrightWorkspacesPath: \"playwrightworkspaces\",\n TestRunsPath: \"test-runs\",\n LoadTestServiceProvider: \"Microsoft.LoadTestService\",\n PlaywrightWorkspacesResourceType: \"playwrightWorkspaces\",\n TestRunsRoute: \"TestRuns\",\n ResourceGroupsPath: \"resourcegroups\",\n ResourcePath: \"/resource\",\n SubscriptionsPath: \"/subscriptions\",\n ResourceGroupsUrlPath: \"/resourceGroups\",\n ProvidersPath: \"/providers\",\n};\n\nexport const InternalEnvironmentVariables = {\n MPT_PLAYWRIGHT_VERSION: \"_MPT_PLAYWRIGHT_VERSION\",\n MPT_SETUP_FATAL_ERROR: \"_MPT_SETUP_FATAL_ERROR\",\n MPT_SERVICE_RUN_NAME: \"_MPT_SERVICE_RUN_NAME\",\n MPT_API_VERSION: \"_MPT_API_VERSION\",\n MPT_SERVICE_RUN_ID: \"_MPT_SERVICE_RUN_ID\",\n MPT_CLOUD_HOSTED_BROWSER_USED: \"_MPT_CLOUD_HOSTED_BROWSER_USED\",\n MPT_SERVICE_OS: \"_MPT_SERVICE_OS\",\n ONE_TIME_OPERATION_FLAG: \"_ONE_TIME_OPERATION_FLAG\",\n USING_SERVICE_CONFIG: \"_USING_SERVICE_CONFIG\",\n TEST_RUN_CREATION_SUCCESS: \"_MPT_TEST_RUN_CREATION_SUCCESS\",\n};\n\nexport const UploadConstants = {\n SMALL_FILE_THRESHOLD: 1024 * 1024,\n LARGE_FILE_THRESHOLD: 100 * 1024 * 1024,\n BASE_CONCURRENCY: 20,\n MAX_CONCURRENCY: 50,\n PER_FILE_CONCURRENCY: 10,\n LARGE_FILE_CONCURRENCY: 5,\n BATCH_SIZE: 100,\n OPTIMIZED_BLOCK_SIZE: 8 * 1024 * 1024,\n STREAM_BUFFER_SIZE: 4 * 1024 * 1024,\n MAX_RETRY_ATTEMPTS: 3,\n RETRY_BASE_DELAY: 1000,\n};\n"]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["/mnt/vss/_work/1/s/sdk/loadtesting/playwright/src/common/constants.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const EntraIdAccessTokenConstants = {\n LIFETIME_LEFT_THRESHOLD_IN_MINUTES_FOR_ROTATION: 15,\n SCOPE: \"https://management.core.windows.net/.default\",\n ROTATION_INTERVAL_PERIOD_IN_MINUTES: 4,\n};\n\n/** @public\n *\n * OS types supported on Azure Playwright cloud hosted browsers\n */\nexport const ServiceOS = {\n LINUX: \"linux\",\n WINDOWS: \"windows\",\n} as const;\n\n/** @public\n *\n * Authentication types supported on Azure Playwright\n */\nexport const ServiceAuth = {\n ENTRA_ID: \"ENTRA_ID\",\n ACCESS_TOKEN: \"ACCESS_TOKEN\",\n} as const;\n\n/** @public\n *\n * Environment variables used by Azure Playwright\n */\nexport const ServiceEnvironmentVariable = {\n PLAYWRIGHT_SERVICE_ACCESS_TOKEN: \"PLAYWRIGHT_SERVICE_ACCESS_TOKEN\",\n PLAYWRIGHT_SERVICE_URL: \"PLAYWRIGHT_SERVICE_URL\",\n};\n\nexport const GitHubActionsConstants = {\n GIT_VERSION_COMMAND: \"git --version\",\n GIT_REV_PARSE: \"git rev-parse --is-inside-work-tree\",\n GIT_COMMIT_MESSAGE_COMMAND: 'git log -1 --pretty=format:\"%s\"',\n};\n\nexport const DefaultConnectOptionsConstants = {\n DEFAULT_TIMEOUT: 30000,\n DEFAULT_SLOW_MO: 0,\n DEFAULT_EXPOSE_NETWORK: \"<loopback>\",\n DEFAULT_SERVICE_OS: ServiceOS.LINUX,\n DEFAULT_SERVICE_AUTH_TYPE: ServiceAuth.ENTRA_ID,\n};\n\nexport const SDKLanguage = {\n JAVASCRIPT: \"JAVASCRIPT\",\n TYPESCRIPT: \"TYPESCRIPT\",\n CSHARP: \"CSHARP\",\n};\n\nexport const RunConfigConstants = {\n TEST_FRAMEWORK_NAME: \"PLAYWRIGHT\",\n TEST_SDK_LANGUAGE: SDKLanguage.JAVASCRIPT,\n TEST_FRAMEWORK_RUNNERNAME: \"PLAYWRIGHT\",\n};\n\nexport const Constants = {\n SevenDaysInMS: 7 * 24 * 60 * 60 * 1000,\n OneDayInMS: 24 * 60 * 60 * 1000,\n MinimumSupportedPlaywrightVersion: \"1.47.0\",\n LatestAPIVersion: \"2025-09-01\",\n HTTP_CALL_TIMEOUT: 10000,\n};\n\nexport const ArmConstants = {\n TenantsApiUrl: \"https://management.azure.com/tenants\",\n TenantsApiVersion: \"2025-04-01\",\n};\n\nexport const UrlConstants = {\n AzurePortalBaseUrl: \"https://ms.portal.azure.com\",\n ReportingApiSubdomain: \"reporting.api\",\n ApiSubdomain: \"api\",\n PlaywrightWorkspacesPath: \"playwrightworkspaces\",\n TestRunsPath: \"test-runs\",\n LoadTestServiceProvider: \"Microsoft.LoadTestService\",\n PlaywrightWorkspacesResourceType: \"playwrightWorkspaces\",\n TestRunsRoute: \"TestRuns\",\n ResourceGroupsPath: \"resourcegroups\",\n ResourcePath: \"/resource\",\n SubscriptionsPath: \"/subscriptions\",\n ResourceGroupsUrlPath: \"/resourceGroups\",\n ProvidersPath: \"/providers\",\n};\n\nexport const InternalEnvironmentVariables = {\n MPT_PLAYWRIGHT_VERSION: \"_MPT_PLAYWRIGHT_VERSION\",\n MPT_SETUP_FATAL_ERROR: \"_MPT_SETUP_FATAL_ERROR\",\n MPT_SERVICE_RUN_NAME: \"_MPT_SERVICE_RUN_NAME\",\n MPT_API_VERSION: \"_MPT_API_VERSION\",\n MPT_SERVICE_RUN_ID: \"_MPT_SERVICE_RUN_ID\",\n MPT_CLOUD_HOSTED_BROWSER_USED: \"_MPT_CLOUD_HOSTED_BROWSER_USED\",\n MPT_SERVICE_OS: \"_MPT_SERVICE_OS\",\n ONE_TIME_OPERATION_FLAG: \"_ONE_TIME_OPERATION_FLAG\",\n USING_SERVICE_CONFIG: \"_USING_SERVICE_CONFIG\",\n TEST_RUN_CREATION_SUCCESS: \"_MPT_TEST_RUN_CREATION_SUCCESS\",\n};\n\nexport const UploadConstants = {\n SMALL_FILE_THRESHOLD: 1024 * 1024,\n LARGE_FILE_THRESHOLD: 100 * 1024 * 1024,\n BASE_CONCURRENCY: 20,\n MAX_CONCURRENCY: 50,\n PER_FILE_CONCURRENCY: 10,\n LARGE_FILE_CONCURRENCY: 5,\n BATCH_SIZE: 100,\n OPTIMIZED_BLOCK_SIZE: 8 * 1024 * 1024,\n STREAM_BUFFER_SIZE: 4 * 1024 * 1024,\n MAX_RETRY_ATTEMPTS: 3,\n RETRY_BASE_DELAY: 1000,\n};\n"],
5
+ "mappings": "AAGO,MAAM,8BAA8B;AAAA,EACzC,iDAAiD;AAAA,EACjD,OAAO;AAAA,EACP,qCAAqC;AACvC;AAMO,MAAM,YAAY;AAAA,EACvB,OAAO;AAAA,EACP,SAAS;AACX;AAMO,MAAM,cAAc;AAAA,EACzB,UAAU;AAAA,EACV,cAAc;AAChB;AAMO,MAAM,6BAA6B;AAAA,EACxC,iCAAiC;AAAA,EACjC,wBAAwB;AAC1B;AAEO,MAAM,yBAAyB;AAAA,EACpC,qBAAqB;AAAA,EACrB,eAAe;AAAA,EACf,4BAA4B;AAC9B;AAEO,MAAM,iCAAiC;AAAA,EAC5C,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,wBAAwB;AAAA,EACxB,oBAAoB,UAAU;AAAA,EAC9B,2BAA2B,YAAY;AACzC;AAEO,MAAM,cAAc;AAAA,EACzB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,QAAQ;AACV;AAEO,MAAM,qBAAqB;AAAA,EAChC,qBAAqB;AAAA,EACrB,mBAAmB,YAAY;AAAA,EAC/B,2BAA2B;AAC7B;AAEO,MAAM,YAAY;AAAA,EACvB,eAAe,IAAI,KAAK,KAAK,KAAK;AAAA,EAClC,YAAY,KAAK,KAAK,KAAK;AAAA,EAC3B,mCAAmC;AAAA,EACnC,kBAAkB;AAAA,EAClB,mBAAmB;AACrB;AAEO,MAAM,eAAe;AAAA,EAC1B,eAAe;AAAA,EACf,mBAAmB;AACrB;AAEO,MAAM,eAAe;AAAA,EAC1B,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,cAAc;AAAA,EACd,0BAA0B;AAAA,EAC1B,cAAc;AAAA,EACd,yBAAyB;AAAA,EACzB,kCAAkC;AAAA,EAClC,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,eAAe;AACjB;AAEO,MAAM,+BAA+B;AAAA,EAC1C,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,+BAA+B;AAAA,EAC/B,gBAAgB;AAAA,EAChB,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,2BAA2B;AAC7B;AAEO,MAAM,kBAAkB;AAAA,EAC7B,sBAAsB,OAAO;AAAA,EAC7B,sBAAsB,MAAM,OAAO;AAAA,EACnC,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,YAAY;AAAA,EACZ,sBAAsB,IAAI,OAAO;AAAA,EACjC,oBAAoB,IAAI,OAAO;AAAA,EAC/B,oBAAoB;AAAA,EACpB,kBAAkB;AACpB;",
6
+ "names": []
7
+ }
@@ -1,16 +1,16 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
1
  import { state } from "./state.js";
4
2
  class CustomerConfig {
5
- globalSetup;
6
- globalTeardown;
7
- static getInstance() {
8
- if (!state.customerConfig) {
9
- state.customerConfig = new CustomerConfig();
10
- }
11
- return state.customerConfig;
3
+ globalSetup;
4
+ globalTeardown;
5
+ static getInstance() {
6
+ if (!state.customerConfig) {
7
+ state.customerConfig = new CustomerConfig();
12
8
  }
9
+ return state.customerConfig;
10
+ }
13
11
  }
14
12
  const customerConfig = CustomerConfig.getInstance();
15
- export default customerConfig;
16
- //# sourceMappingURL=customerConfig.js.map
13
+ var customerConfig_default = customerConfig;
14
+ export {
15
+ customerConfig_default as default
16
+ };
@@ -1 +1,7 @@
1
- {"version":3,"file":"customerConfig.js","sourceRoot":"","sources":["../../../src/common/customerConfig.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,cAAc;IACX,WAAW,CAAqB;IAChC,cAAc,CAAqB;IAEnC,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1B,KAAK,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,KAAK,CAAC,cAAc,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;AACpD,eAAe,cAAc,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { state } from \"./state.js\";\n\nclass CustomerConfig {\n public globalSetup?: string | string[];\n public globalTeardown?: string | string[];\n\n public static getInstance(): CustomerConfig {\n if (!state.customerConfig) {\n state.customerConfig = new CustomerConfig();\n }\n return state.customerConfig;\n }\n}\n\nconst customerConfig = CustomerConfig.getInstance();\nexport default customerConfig;\n"]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["/mnt/vss/_work/1/s/sdk/loadtesting/playwright/src/common/customerConfig.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { state } from \"./state.js\";\n\nclass CustomerConfig {\n public globalSetup?: string | string[];\n public globalTeardown?: string | string[];\n\n public static getInstance(): CustomerConfig {\n if (!state.customerConfig) {\n state.customerConfig = new CustomerConfig();\n }\n return state.customerConfig;\n }\n}\n\nconst customerConfig = CustomerConfig.getInstance();\nexport default customerConfig;\n"],
5
+ "mappings": "AAGA,SAAS,aAAa;AAEtB,MAAM,eAAe;AAAA,EACZ;AAAA,EACA;AAAA,EAEP,OAAc,cAA8B;AAC1C,QAAI,CAAC,MAAM,gBAAgB;AACzB,YAAM,iBAAiB,IAAI,eAAe;AAAA,IAC5C;AACA,WAAO,MAAM;AAAA,EACf;AACF;AAEA,MAAM,iBAAiB,eAAe,YAAY;AAClD,IAAO,yBAAQ;",
6
+ "names": []
7
+ }
@@ -1,84 +1,92 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
1
  import { coreLogger } from "./logger.js";
4
- import { EntraIdAccessTokenConstants, InternalEnvironmentVariables, ServiceEnvironmentVariable, } from "./constants.js";
2
+ import {
3
+ EntraIdAccessTokenConstants,
4
+ InternalEnvironmentVariables,
5
+ ServiceEnvironmentVariable
6
+ } from "./constants.js";
5
7
  import { parseJwt } from "../utils/parseJwt.js";
6
8
  import { ServiceErrorMessageConstants } from "./messages.js";
7
- export class EntraIdAccessToken {
8
- token;
9
- _expiryTimestamp; // in milliseconds
10
- _credential;
11
- _noOpFlag = false;
12
- constructor(credential) {
13
- this._credential = credential;
14
- if (!this._credential) {
15
- this._noOpFlag = true;
16
- return;
17
- }
18
- this.setEntraIdAccessTokenFromEnvironment();
9
+ class EntraIdAccessToken {
10
+ token;
11
+ _expiryTimestamp;
12
+ // in milliseconds
13
+ _credential;
14
+ _noOpFlag = false;
15
+ constructor(credential) {
16
+ this._credential = credential;
17
+ if (!this._credential) {
18
+ this._noOpFlag = true;
19
+ return;
19
20
  }
20
- fetchEntraIdAccessToken = async () => {
21
- if (this._noOpFlag) {
22
- throw new Error(ServiceErrorMessageConstants.NO_CRED_ENTRA_AUTH_ERROR.message);
23
- }
24
- try {
25
- coreLogger.info("Fetching entra id access token");
26
- const accessToken = await this._credential.getToken(EntraIdAccessTokenConstants.SCOPE);
27
- if (!accessToken) {
28
- throw new Error("Entra id access token is null");
29
- }
30
- if (accessToken.token === this.token) {
31
- // azure identity library can fetch the same token again from cache. 10 mins before expiry, it allows token refresh
32
- coreLogger.info("Cached access token is returned, will be retried again.");
33
- return;
34
- }
35
- this.token = accessToken.token;
36
- this._expiryTimestamp = accessToken.expiresOnTimestamp;
37
- process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN] = this.token;
38
- coreLogger.info("Entra id access token fetched and set in environment variable");
39
- coreLogger.info("Entra id access token expiry:", new Date(this._expiryTimestamp).toISOString());
40
- return;
41
- }
42
- catch (err) {
43
- coreLogger.error(err);
44
- process.env[InternalEnvironmentVariables.MPT_SETUP_FATAL_ERROR] = "true";
45
- throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_ENTRA_TOKEN.message);
46
- }
47
- };
48
- doesEntraIdAccessTokenNeedRotation() {
49
- if (this._noOpFlag) {
50
- throw new Error(ServiceErrorMessageConstants.NO_CRED_ENTRA_AUTH_ERROR.message);
51
- }
52
- if (!this.token) {
53
- coreLogger.info("Entra id access token not found, needs rotation");
54
- return true;
55
- }
56
- const lifetimeLeft = this._expiryTimestamp - new Date().getTime();
57
- const doesEntraTokenRequireRotation = lifetimeLeft <
58
- EntraIdAccessTokenConstants.LIFETIME_LEFT_THRESHOLD_IN_MINUTES_FOR_ROTATION * 60 * 1000;
59
- coreLogger.info("Entra id access token requires rotation:", doesEntraTokenRequireRotation ? "Yes" : "No");
60
- return doesEntraTokenRequireRotation;
21
+ this.setEntraIdAccessTokenFromEnvironment();
22
+ }
23
+ fetchEntraIdAccessToken = async () => {
24
+ if (this._noOpFlag) {
25
+ throw new Error(ServiceErrorMessageConstants.NO_CRED_ENTRA_AUTH_ERROR.message);
61
26
  }
62
- setEntraIdAccessTokenFromEnvironment = () => {
63
- try {
64
- const token = process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN];
65
- if (!token) {
66
- return;
67
- }
68
- const claims = parseJwt(token);
69
- if (claims.pwid) {
70
- return;
71
- } // mpt PAT
72
- const expiry = new Date(claims.exp * 1000);
73
- this.token = token;
74
- this._expiryTimestamp = expiry.getTime();
75
- }
76
- catch (_) {
77
- return;
78
- }
79
- };
27
+ try {
28
+ coreLogger.info("Fetching entra id access token");
29
+ const accessToken = await this._credential.getToken(EntraIdAccessTokenConstants.SCOPE);
30
+ if (!accessToken) {
31
+ throw new Error("Entra id access token is null");
32
+ }
33
+ if (accessToken.token === this.token) {
34
+ coreLogger.info("Cached access token is returned, will be retried again.");
35
+ return;
36
+ }
37
+ this.token = accessToken.token;
38
+ this._expiryTimestamp = accessToken.expiresOnTimestamp;
39
+ process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN] = this.token;
40
+ coreLogger.info("Entra id access token fetched and set in environment variable");
41
+ coreLogger.info(
42
+ "Entra id access token expiry:",
43
+ new Date(this._expiryTimestamp).toISOString()
44
+ );
45
+ return;
46
+ } catch (err) {
47
+ coreLogger.error(err);
48
+ process.env[InternalEnvironmentVariables.MPT_SETUP_FATAL_ERROR] = "true";
49
+ throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_ENTRA_TOKEN.message);
50
+ }
51
+ };
52
+ doesEntraIdAccessTokenNeedRotation() {
53
+ if (this._noOpFlag) {
54
+ throw new Error(ServiceErrorMessageConstants.NO_CRED_ENTRA_AUTH_ERROR.message);
55
+ }
56
+ if (!this.token) {
57
+ coreLogger.info("Entra id access token not found, needs rotation");
58
+ return true;
59
+ }
60
+ const lifetimeLeft = this._expiryTimestamp - (/* @__PURE__ */ new Date()).getTime();
61
+ const doesEntraTokenRequireRotation = lifetimeLeft < EntraIdAccessTokenConstants.LIFETIME_LEFT_THRESHOLD_IN_MINUTES_FOR_ROTATION * 60 * 1e3;
62
+ coreLogger.info(
63
+ "Entra id access token requires rotation:",
64
+ doesEntraTokenRequireRotation ? "Yes" : "No"
65
+ );
66
+ return doesEntraTokenRequireRotation;
67
+ }
68
+ setEntraIdAccessTokenFromEnvironment = () => {
69
+ try {
70
+ const token = process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN];
71
+ if (!token) {
72
+ return;
73
+ }
74
+ const claims = parseJwt(token);
75
+ if (claims.pwid) {
76
+ return;
77
+ }
78
+ const expiry = new Date(claims.exp * 1e3);
79
+ this.token = token;
80
+ this._expiryTimestamp = expiry.getTime();
81
+ } catch (_) {
82
+ return;
83
+ }
84
+ };
80
85
  }
81
- export function createEntraIdAccessToken(credential) {
82
- return new EntraIdAccessToken(credential);
86
+ function createEntraIdAccessToken(credential) {
87
+ return new EntraIdAccessToken(credential);
83
88
  }
84
- //# sourceMappingURL=entraIdAccessToken.js.map
89
+ export {
90
+ EntraIdAccessToken,
91
+ createEntraIdAccessToken
92
+ };