@azure/microsoft-playwright-testing 1.0.0-alpha.20250318.1 → 1.0.0-alpha.20250319.2
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/{common → browser/common}/constants.d.ts +1 -1
- package/dist/browser/common/constants.d.ts.map +1 -0
- package/dist/browser/common/constants.js +226 -0
- package/dist/browser/common/constants.js.map +1 -0
- package/dist/browser/common/customerConfig.d.ts.map +1 -0
- package/dist/browser/common/customerConfig.js +13 -0
- package/dist/{common → browser/common}/customerConfig.js.map +1 -1
- package/dist/{common → browser/common}/entraIdAccessToken.d.ts +2 -2
- package/dist/browser/common/entraIdAccessToken.d.ts.map +1 -0
- package/dist/browser/common/entraIdAccessToken.js +71 -0
- package/dist/browser/common/entraIdAccessToken.js.map +1 -0
- package/dist/browser/common/environmentVariables.d.ts.map +1 -0
- package/dist/browser/common/environmentVariables.js +15 -0
- package/dist/browser/common/environmentVariables.js.map +1 -0
- package/dist/browser/common/executor.d.ts.map +1 -0
- package/dist/browser/common/executor.js +74 -0
- package/dist/browser/common/executor.js.map +1 -0
- package/dist/browser/common/httpService.d.ts.map +1 -0
- package/dist/browser/common/httpService.js +33 -0
- package/dist/browser/common/httpService.js.map +1 -0
- package/dist/browser/common/logger.d.ts.map +1 -0
- package/dist/browser/common/logger.js +6 -0
- package/dist/browser/common/logger.js.map +1 -0
- package/dist/browser/common/messages.d.ts.map +1 -0
- package/dist/browser/common/messages.js +37 -0
- package/dist/browser/common/messages.js.map +1 -0
- package/dist/browser/common/multimap.d.ts.map +1 -0
- package/dist/browser/common/multimap.js +60 -0
- package/dist/browser/common/multimap.js.map +1 -0
- package/dist/{common → browser/common}/playwrightServiceConfig.d.ts +1 -1
- package/dist/browser/common/playwrightServiceConfig.d.ts.map +1 -0
- package/dist/browser/common/playwrightServiceConfig.js +45 -0
- package/dist/browser/common/playwrightServiceConfig.js.map +1 -0
- package/dist/{common → browser/common}/types.d.ts +1 -1
- package/dist/browser/common/types.d.ts.map +1 -0
- package/dist/browser/common/types.js +4 -0
- package/dist/browser/common/types.js.map +1 -0
- package/dist/browser/core/global/playwright-service-global-setup.d.ts.map +1 -0
- package/dist/browser/core/global/playwright-service-global-setup.js +19 -0
- package/dist/browser/core/global/playwright-service-global-setup.js.map +1 -0
- package/dist/browser/core/global/playwright-service-global-teardown.d.ts.map +1 -0
- package/dist/browser/core/global/playwright-service-global-teardown.js +19 -0
- package/dist/browser/core/global/playwright-service-global-teardown.js.map +1 -0
- package/dist/{core → browser/core}/playwrightService.d.ts +1 -1
- package/dist/browser/core/playwrightService.d.ts.map +1 -0
- package/dist/browser/core/playwrightService.js +190 -0
- package/dist/browser/core/playwrightService.js.map +1 -0
- package/dist/browser/core/playwrightServiceEntra.d.ts.map +1 -0
- package/dist/browser/core/playwrightServiceEntra.js +49 -0
- package/dist/browser/core/playwrightServiceEntra.js.map +1 -0
- package/dist/browser/core/playwrightServiceUtils.d.ts +3 -0
- package/dist/browser/core/playwrightServiceUtils.d.ts.map +1 -0
- package/dist/browser/core/playwrightServiceUtils.js +11 -0
- package/dist/browser/core/playwrightServiceUtils.js.map +1 -0
- package/dist/{index.d.ts → browser/index.d.ts} +3 -3
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +11 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/model/entraTokenDetails.d.ts.map +1 -0
- package/dist/browser/model/entraTokenDetails.js +5 -0
- package/dist/browser/model/entraTokenDetails.js.map +1 -0
- package/dist/browser/model/mptTokenDetails.d.ts.map +1 -0
- package/dist/browser/model/mptTokenDetails.js +10 -0
- package/dist/browser/model/mptTokenDetails.js.map +1 -0
- package/dist/browser/model/shard.d.ts.map +1 -0
- package/dist/browser/model/shard.js +19 -0
- package/dist/browser/model/shard.js.map +1 -0
- package/dist/browser/model/storageUri.d.ts.map +1 -0
- package/dist/browser/model/storageUri.js +18 -0
- package/dist/browser/model/storageUri.js.map +1 -0
- package/dist/{model → browser/model}/testResult.d.ts +1 -1
- package/dist/browser/model/testResult.d.ts.map +1 -0
- package/dist/browser/model/testResult.js +5 -0
- package/dist/browser/model/testResult.js.map +1 -0
- package/dist/{model → browser/model}/testRun.d.ts +1 -1
- package/dist/browser/model/testRun.d.ts.map +1 -0
- package/dist/browser/model/testRun.js +8 -0
- package/dist/browser/model/testRun.js.map +1 -0
- package/dist/browser/package.json +3 -0
- package/dist/{reporter → browser/reporter}/index.d.ts +1 -1
- package/dist/browser/reporter/index.d.ts.map +1 -0
- package/dist/browser/reporter/index.js +12 -0
- package/dist/browser/reporter/index.js.map +1 -0
- package/dist/{reporter → browser/reporter}/mptReporter.d.ts +1 -1
- package/dist/browser/reporter/mptReporter.d.ts.map +1 -0
- package/dist/browser/reporter/mptReporter.js +373 -0
- package/dist/browser/reporter/mptReporter.js.map +1 -0
- package/dist/browser/utils/cIInfoProvider.d.ts.map +1 -0
- package/dist/browser/utils/cIInfoProvider.js +101 -0
- package/dist/browser/utils/cIInfoProvider.js.map +1 -0
- package/dist/browser/utils/getPlaywrightVersion.d.ts +2 -0
- package/dist/browser/utils/getPlaywrightVersion.d.ts.map +1 -0
- package/dist/browser/utils/getPlaywrightVersion.js +19 -0
- package/dist/browser/utils/getPlaywrightVersion.js.map +1 -0
- package/dist/{utils → browser/utils}/packageManager.d.ts +1 -1
- package/dist/browser/utils/packageManager.d.ts.map +1 -0
- package/dist/browser/utils/packageManager.js +47 -0
- package/dist/browser/utils/packageManager.js.map +1 -0
- package/dist/browser/utils/parseJwt.d.ts +4 -0
- package/dist/browser/utils/parseJwt.d.ts.map +1 -0
- package/dist/browser/utils/parseJwt.js +16 -0
- package/dist/browser/utils/parseJwt.js.map +1 -0
- package/dist/{utils → browser/utils}/reporterUtils.d.ts +10 -10
- package/dist/browser/utils/reporterUtils.d.ts.map +1 -0
- package/dist/browser/utils/reporterUtils.js +585 -0
- package/dist/browser/utils/reporterUtils.js.map +1 -0
- package/dist/{utils → browser/utils}/serviceClient.d.ts +7 -7
- package/dist/browser/utils/serviceClient.d.ts.map +1 -0
- package/dist/browser/utils/serviceClient.js +103 -0
- package/dist/browser/utils/serviceClient.js.map +1 -0
- package/dist/browser/utils/storageClient.d.ts.map +1 -0
- package/dist/browser/utils/storageClient.js +37 -0
- package/dist/browser/utils/storageClient.js.map +1 -0
- package/dist/{utils → browser/utils}/utils.d.ts +3 -4
- package/dist/browser/utils/utils.d.ts.map +1 -0
- package/dist/browser/utils/utils.js +151 -0
- package/dist/browser/utils/utils.js.map +1 -0
- package/dist/commonjs/common/constants.d.ts +95 -0
- package/dist/commonjs/common/constants.d.ts.map +1 -0
- package/dist/commonjs/common/constants.js.map +1 -0
- package/dist/commonjs/common/customerConfig.d.ts +9 -0
- package/dist/commonjs/common/customerConfig.d.ts.map +1 -0
- package/dist/commonjs/common/customerConfig.js.map +1 -0
- package/dist/commonjs/common/entraIdAccessToken.d.ts +12 -0
- package/dist/commonjs/common/entraIdAccessToken.d.ts.map +1 -0
- package/dist/{common → commonjs/common}/entraIdAccessToken.js +22 -18
- package/dist/commonjs/common/entraIdAccessToken.js.map +1 -0
- package/dist/commonjs/common/environmentVariables.d.ts +13 -0
- package/dist/commonjs/common/environmentVariables.d.ts.map +1 -0
- package/dist/{common → commonjs/common}/environmentVariables.js +4 -4
- package/dist/commonjs/common/environmentVariables.js.map +1 -0
- package/dist/commonjs/common/executor.d.ts +2 -0
- package/dist/commonjs/common/executor.d.ts.map +1 -0
- package/dist/{common → commonjs/common}/executor.js +13 -13
- package/dist/commonjs/common/executor.js.map +1 -0
- package/dist/commonjs/common/httpService.d.ts +5 -0
- package/dist/commonjs/common/httpService.d.ts.map +1 -0
- package/dist/{common → commonjs/common}/httpService.js +4 -4
- package/dist/commonjs/common/httpService.js.map +1 -0
- package/dist/commonjs/common/logger.d.ts +3 -0
- package/dist/commonjs/common/logger.d.ts.map +1 -0
- package/dist/commonjs/common/logger.js.map +1 -0
- package/dist/commonjs/common/messages.d.ts +35 -0
- package/dist/commonjs/common/messages.d.ts.map +1 -0
- package/dist/commonjs/common/messages.js.map +1 -0
- package/dist/commonjs/common/multimap.d.ts +16 -0
- package/dist/commonjs/common/multimap.d.ts.map +1 -0
- package/dist/commonjs/common/multimap.js.map +1 -0
- package/dist/commonjs/common/playwrightServiceConfig.d.ts +13 -0
- package/dist/commonjs/common/playwrightServiceConfig.d.ts.map +1 -0
- package/dist/commonjs/common/playwrightServiceConfig.js +48 -0
- package/dist/commonjs/common/playwrightServiceConfig.js.map +1 -0
- package/{types/microsoft-playwright-testing.d.ts → dist/commonjs/common/types.d.ts} +226 -273
- package/dist/commonjs/common/types.d.ts.map +1 -0
- package/dist/commonjs/common/types.js.map +1 -0
- package/dist/commonjs/core/global/playwright-service-global-setup.d.ts +4 -0
- package/dist/commonjs/core/global/playwright-service-global-setup.d.ts.map +1 -0
- package/dist/commonjs/core/global/playwright-service-global-setup.js +22 -0
- package/dist/commonjs/core/global/playwright-service-global-setup.js.map +1 -0
- package/dist/commonjs/core/global/playwright-service-global-teardown.d.ts +4 -0
- package/dist/commonjs/core/global/playwright-service-global-teardown.d.ts.map +1 -0
- package/dist/commonjs/core/global/playwright-service-global-teardown.js +22 -0
- package/dist/commonjs/core/global/playwright-service-global-teardown.js.map +1 -0
- package/dist/commonjs/core/playwrightService.d.ts +64 -0
- package/dist/commonjs/core/playwrightService.d.ts.map +1 -0
- package/dist/{core → commonjs/core}/playwrightService.js +44 -43
- package/dist/commonjs/core/playwrightService.js.map +1 -0
- package/dist/commonjs/core/playwrightServiceEntra.d.ts +16 -0
- package/dist/commonjs/core/playwrightServiceEntra.d.ts.map +1 -0
- package/dist/{core → commonjs/core}/playwrightServiceEntra.js +12 -12
- package/dist/commonjs/core/playwrightServiceEntra.js.map +1 -0
- package/dist/commonjs/core/playwrightServiceUtils-cjs.cjs.map +1 -0
- package/dist/commonjs/core/playwrightServiceUtils-cjs.d.cts.map +1 -0
- package/dist/commonjs/core/playwrightServiceUtils.d.ts +3 -0
- package/dist/commonjs/core/playwrightServiceUtils.js +10 -0
- package/dist/commonjs/index.d.ts +10 -0
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/{index.js → commonjs/index.js} +9 -10
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/model/entraTokenDetails.d.ts +5 -0
- package/dist/commonjs/model/entraTokenDetails.d.ts.map +1 -0
- package/dist/commonjs/model/entraTokenDetails.js.map +1 -0
- package/dist/commonjs/model/mptTokenDetails.d.ts +11 -0
- package/dist/commonjs/model/mptTokenDetails.d.ts.map +1 -0
- package/dist/commonjs/model/mptTokenDetails.js.map +1 -0
- package/dist/commonjs/model/shard.d.ts +41 -0
- package/dist/commonjs/model/shard.d.ts.map +1 -0
- package/dist/commonjs/model/shard.js.map +1 -0
- package/dist/commonjs/model/storageUri.d.ts +14 -0
- package/dist/commonjs/model/storageUri.d.ts.map +1 -0
- package/dist/commonjs/model/storageUri.js.map +1 -0
- package/dist/commonjs/model/testResult.d.ts +40 -0
- package/dist/commonjs/model/testResult.d.ts.map +1 -0
- package/dist/commonjs/model/testResult.js.map +1 -0
- package/dist/commonjs/model/testRun.d.ts +36 -0
- package/dist/commonjs/model/testRun.d.ts.map +1 -0
- package/dist/commonjs/model/testRun.js.map +1 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/commonjs/reporter/index.d.ts +10 -0
- package/dist/commonjs/reporter/index.d.ts.map +1 -0
- package/dist/{reporter → commonjs/reporter}/index.js +2 -2
- package/dist/commonjs/reporter/index.js.map +1 -0
- package/{types/reporter/microsoft-playwright-testing.d.ts → dist/commonjs/reporter/mptReporter.d.ts} +100 -150
- package/dist/commonjs/reporter/mptReporter.d.ts.map +1 -0
- package/dist/{reporter → commonjs/reporter}/mptReporter.js +52 -52
- package/dist/commonjs/reporter/mptReporter.js.map +1 -0
- package/dist/commonjs/utils/cIInfoProvider.d.ts +25 -0
- package/dist/commonjs/utils/cIInfoProvider.d.ts.map +1 -0
- package/dist/commonjs/utils/cIInfoProvider.js.map +1 -0
- package/dist/commonjs/utils/getPlaywrightVersion.d.ts +2 -0
- package/dist/commonjs/utils/getPlaywrightVersion.d.ts.map +1 -0
- package/dist/commonjs/utils/getPlaywrightVersion.js +23 -0
- package/dist/commonjs/utils/getPlaywrightVersion.js.map +1 -0
- package/dist/commonjs/utils/packageManager.d.ts +15 -0
- package/dist/commonjs/utils/packageManager.d.ts.map +1 -0
- package/dist/commonjs/utils/packageManager.js.map +1 -0
- package/dist/commonjs/utils/parseJwt.d.ts +4 -0
- package/dist/commonjs/utils/parseJwt.d.ts.map +1 -0
- package/dist/commonjs/utils/parseJwt.js +21 -0
- package/dist/commonjs/utils/parseJwt.js.map +1 -0
- package/dist/commonjs/utils/reporterUtils.d.ts +60 -0
- package/dist/commonjs/utils/reporterUtils.d.ts.map +1 -0
- package/dist/{utils → commonjs/utils}/reporterUtils.js +47 -47
- package/dist/commonjs/utils/reporterUtils.js.map +1 -0
- package/dist/commonjs/utils/serviceClient.d.ts +25 -0
- package/dist/commonjs/utils/serviceClient.d.ts.map +1 -0
- package/dist/{utils → commonjs/utils}/serviceClient.js +19 -19
- package/dist/commonjs/utils/serviceClient.js.map +1 -0
- package/dist/commonjs/utils/storageClient.d.ts +6 -0
- package/dist/commonjs/utils/storageClient.d.ts.map +1 -0
- package/dist/{utils → commonjs/utils}/storageClient.js +7 -7
- package/dist/commonjs/utils/storageClient.js.map +1 -0
- package/dist/commonjs/utils/utils.d.ts +28 -0
- package/dist/commonjs/utils/utils.d.ts.map +1 -0
- package/dist/{utils → commonjs/utils}/utils.js +38 -60
- package/dist/commonjs/utils/utils.js.map +1 -0
- package/dist/esm/common/constants.d.ts +95 -0
- package/dist/esm/common/constants.d.ts.map +1 -0
- package/dist/esm/common/constants.js +226 -0
- package/dist/esm/common/constants.js.map +1 -0
- package/dist/esm/common/customerConfig.d.ts +9 -0
- package/dist/esm/common/customerConfig.d.ts.map +1 -0
- package/dist/esm/common/customerConfig.js +13 -0
- package/dist/esm/common/customerConfig.js.map +1 -0
- package/dist/esm/common/entraIdAccessToken.d.ts +12 -0
- package/dist/esm/common/entraIdAccessToken.d.ts.map +1 -0
- package/dist/esm/common/entraIdAccessToken.js +71 -0
- package/dist/esm/common/entraIdAccessToken.js.map +1 -0
- package/dist/esm/common/environmentVariables.d.ts +13 -0
- package/dist/esm/common/environmentVariables.d.ts.map +1 -0
- package/dist/esm/common/environmentVariables.js +15 -0
- package/dist/esm/common/environmentVariables.js.map +1 -0
- package/dist/esm/common/executor.d.ts +2 -0
- package/dist/esm/common/executor.d.ts.map +1 -0
- package/dist/esm/common/executor.js +74 -0
- package/dist/esm/common/executor.js.map +1 -0
- package/dist/esm/common/httpService.d.ts +5 -0
- package/dist/esm/common/httpService.d.ts.map +1 -0
- package/dist/esm/common/httpService.js +33 -0
- package/dist/esm/common/httpService.js.map +1 -0
- package/dist/esm/common/logger.d.ts +3 -0
- package/dist/esm/common/logger.d.ts.map +1 -0
- package/dist/esm/common/logger.js +6 -0
- package/dist/esm/common/logger.js.map +1 -0
- package/dist/esm/common/messages.d.ts +35 -0
- package/dist/esm/common/messages.d.ts.map +1 -0
- package/dist/esm/common/messages.js +37 -0
- package/dist/esm/common/messages.js.map +1 -0
- package/dist/esm/common/multimap.d.ts +16 -0
- package/dist/esm/common/multimap.d.ts.map +1 -0
- package/dist/esm/common/multimap.js +60 -0
- package/dist/esm/common/multimap.js.map +1 -0
- package/dist/esm/common/playwrightServiceConfig.d.ts +13 -0
- package/dist/esm/common/playwrightServiceConfig.d.ts.map +1 -0
- package/dist/esm/common/playwrightServiceConfig.js +45 -0
- package/dist/esm/common/playwrightServiceConfig.js.map +1 -0
- package/dist/esm/common/types.d.ts +226 -0
- package/dist/esm/common/types.d.ts.map +1 -0
- package/dist/esm/common/types.js +4 -0
- package/dist/esm/common/types.js.map +1 -0
- package/dist/esm/core/global/playwright-service-global-setup.d.ts +4 -0
- package/dist/esm/core/global/playwright-service-global-setup.d.ts.map +1 -0
- package/dist/esm/core/global/playwright-service-global-setup.js +19 -0
- package/dist/esm/core/global/playwright-service-global-setup.js.map +1 -0
- package/dist/esm/core/global/playwright-service-global-teardown.d.ts +4 -0
- package/dist/esm/core/global/playwright-service-global-teardown.d.ts.map +1 -0
- package/dist/esm/core/global/playwright-service-global-teardown.js +19 -0
- package/dist/esm/core/global/playwright-service-global-teardown.js.map +1 -0
- package/dist/esm/core/playwrightService.d.ts +64 -0
- package/dist/esm/core/playwrightService.d.ts.map +1 -0
- package/dist/esm/core/playwrightService.js +190 -0
- package/dist/esm/core/playwrightService.js.map +1 -0
- package/dist/esm/core/playwrightServiceEntra.d.ts +16 -0
- package/dist/esm/core/playwrightServiceEntra.d.ts.map +1 -0
- package/dist/esm/core/playwrightServiceEntra.js +49 -0
- package/dist/esm/core/playwrightServiceEntra.js.map +1 -0
- package/dist/esm/core/playwrightServiceUtils.d.ts +3 -0
- package/dist/esm/core/playwrightServiceUtils.d.ts.map +1 -0
- package/dist/esm/core/playwrightServiceUtils.js +11 -0
- package/dist/esm/core/playwrightServiceUtils.js.map +1 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/model/entraTokenDetails.d.ts +5 -0
- package/dist/esm/model/entraTokenDetails.d.ts.map +1 -0
- package/dist/esm/model/entraTokenDetails.js +5 -0
- package/dist/esm/model/entraTokenDetails.js.map +1 -0
- package/dist/esm/model/mptTokenDetails.d.ts +11 -0
- package/dist/esm/model/mptTokenDetails.d.ts.map +1 -0
- package/dist/esm/model/mptTokenDetails.js +10 -0
- package/dist/esm/model/mptTokenDetails.js.map +1 -0
- package/dist/esm/model/shard.d.ts +41 -0
- package/dist/esm/model/shard.d.ts.map +1 -0
- package/dist/esm/model/shard.js +19 -0
- package/dist/esm/model/shard.js.map +1 -0
- package/dist/esm/model/storageUri.d.ts +14 -0
- package/dist/esm/model/storageUri.d.ts.map +1 -0
- package/dist/esm/model/storageUri.js +18 -0
- package/dist/esm/model/storageUri.js.map +1 -0
- package/dist/esm/model/testResult.d.ts +40 -0
- package/dist/esm/model/testResult.d.ts.map +1 -0
- package/dist/esm/model/testResult.js +5 -0
- package/dist/esm/model/testResult.js.map +1 -0
- package/dist/esm/model/testRun.d.ts +36 -0
- package/dist/esm/model/testRun.d.ts.map +1 -0
- package/dist/esm/model/testRun.js +8 -0
- package/dist/esm/model/testRun.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/reporter/index.d.ts +10 -0
- package/dist/esm/reporter/index.d.ts.map +1 -0
- package/dist/esm/reporter/index.js +12 -0
- package/dist/esm/reporter/index.js.map +1 -0
- package/dist/esm/reporter/mptReporter.d.ts +100 -0
- package/dist/esm/reporter/mptReporter.d.ts.map +1 -0
- package/dist/esm/reporter/mptReporter.js +373 -0
- package/dist/esm/reporter/mptReporter.js.map +1 -0
- package/dist/esm/utils/cIInfoProvider.d.ts +25 -0
- package/dist/esm/utils/cIInfoProvider.d.ts.map +1 -0
- package/dist/esm/utils/cIInfoProvider.js +101 -0
- package/dist/esm/utils/cIInfoProvider.js.map +1 -0
- package/dist/esm/utils/getPlaywrightVersion.d.ts +2 -0
- package/dist/esm/utils/getPlaywrightVersion.d.ts.map +1 -0
- package/dist/esm/utils/getPlaywrightVersion.js +19 -0
- package/dist/esm/utils/getPlaywrightVersion.js.map +1 -0
- package/dist/esm/utils/packageManager.d.ts +15 -0
- package/dist/esm/utils/packageManager.d.ts.map +1 -0
- package/dist/esm/utils/packageManager.js +47 -0
- package/dist/esm/utils/packageManager.js.map +1 -0
- package/dist/esm/utils/parseJwt.d.ts +4 -0
- package/dist/esm/utils/parseJwt.d.ts.map +1 -0
- package/dist/esm/utils/parseJwt.js +16 -0
- package/dist/esm/utils/parseJwt.js.map +1 -0
- package/dist/esm/utils/reporterUtils.d.ts +60 -0
- package/dist/esm/utils/reporterUtils.d.ts.map +1 -0
- package/dist/esm/utils/reporterUtils.js +585 -0
- package/dist/esm/utils/reporterUtils.js.map +1 -0
- package/dist/esm/utils/serviceClient.d.ts +25 -0
- package/dist/esm/utils/serviceClient.d.ts.map +1 -0
- package/dist/esm/utils/serviceClient.js +103 -0
- package/dist/esm/utils/serviceClient.js.map +1 -0
- package/dist/esm/utils/storageClient.d.ts +6 -0
- package/dist/esm/utils/storageClient.d.ts.map +1 -0
- package/dist/esm/utils/storageClient.js +37 -0
- package/dist/esm/utils/storageClient.js.map +1 -0
- package/dist/esm/utils/utils.d.ts +28 -0
- package/dist/esm/utils/utils.d.ts.map +1 -0
- package/dist/esm/utils/utils.js +151 -0
- package/dist/esm/utils/utils.js.map +1 -0
- package/dist/react-native/common/constants.d.ts +95 -0
- package/dist/react-native/common/constants.d.ts.map +1 -0
- package/dist/react-native/common/constants.js +226 -0
- package/dist/react-native/common/constants.js.map +1 -0
- package/dist/react-native/common/customerConfig.d.ts +9 -0
- package/dist/react-native/common/customerConfig.d.ts.map +1 -0
- package/dist/react-native/common/customerConfig.js +13 -0
- package/dist/react-native/common/customerConfig.js.map +1 -0
- package/dist/react-native/common/entraIdAccessToken.d.ts +12 -0
- package/dist/react-native/common/entraIdAccessToken.d.ts.map +1 -0
- package/dist/react-native/common/entraIdAccessToken.js +71 -0
- package/dist/react-native/common/entraIdAccessToken.js.map +1 -0
- package/dist/react-native/common/environmentVariables.d.ts +13 -0
- package/dist/react-native/common/environmentVariables.d.ts.map +1 -0
- package/dist/react-native/common/environmentVariables.js +15 -0
- package/dist/react-native/common/environmentVariables.js.map +1 -0
- package/dist/react-native/common/executor.d.ts +2 -0
- package/dist/react-native/common/executor.d.ts.map +1 -0
- package/dist/react-native/common/executor.js +74 -0
- package/dist/react-native/common/executor.js.map +1 -0
- package/dist/react-native/common/httpService.d.ts +5 -0
- package/dist/react-native/common/httpService.d.ts.map +1 -0
- package/dist/react-native/common/httpService.js +33 -0
- package/dist/react-native/common/httpService.js.map +1 -0
- package/dist/react-native/common/logger.d.ts +3 -0
- package/dist/react-native/common/logger.d.ts.map +1 -0
- package/dist/react-native/common/logger.js +6 -0
- package/dist/react-native/common/logger.js.map +1 -0
- package/dist/react-native/common/messages.d.ts +35 -0
- package/dist/react-native/common/messages.d.ts.map +1 -0
- package/dist/react-native/common/messages.js +37 -0
- package/dist/react-native/common/messages.js.map +1 -0
- package/dist/react-native/common/multimap.d.ts +16 -0
- package/dist/react-native/common/multimap.d.ts.map +1 -0
- package/dist/react-native/common/multimap.js +60 -0
- package/dist/react-native/common/multimap.js.map +1 -0
- package/dist/react-native/common/playwrightServiceConfig.d.ts +13 -0
- package/dist/react-native/common/playwrightServiceConfig.d.ts.map +1 -0
- package/dist/react-native/common/playwrightServiceConfig.js +45 -0
- package/dist/react-native/common/playwrightServiceConfig.js.map +1 -0
- package/dist/react-native/common/types.d.ts +226 -0
- package/dist/react-native/common/types.d.ts.map +1 -0
- package/dist/react-native/common/types.js +4 -0
- package/dist/react-native/common/types.js.map +1 -0
- package/dist/react-native/core/global/playwright-service-global-setup.d.ts +4 -0
- package/dist/react-native/core/global/playwright-service-global-setup.d.ts.map +1 -0
- package/dist/react-native/core/global/playwright-service-global-setup.js +19 -0
- package/dist/react-native/core/global/playwright-service-global-setup.js.map +1 -0
- package/dist/react-native/core/global/playwright-service-global-teardown.d.ts +4 -0
- package/dist/react-native/core/global/playwright-service-global-teardown.d.ts.map +1 -0
- package/dist/react-native/core/global/playwright-service-global-teardown.js +19 -0
- package/dist/react-native/core/global/playwright-service-global-teardown.js.map +1 -0
- package/dist/react-native/core/playwrightService.d.ts +64 -0
- package/dist/react-native/core/playwrightService.d.ts.map +1 -0
- package/dist/react-native/core/playwrightService.js +190 -0
- package/dist/react-native/core/playwrightService.js.map +1 -0
- package/dist/react-native/core/playwrightServiceEntra.d.ts +16 -0
- package/dist/react-native/core/playwrightServiceEntra.d.ts.map +1 -0
- package/dist/react-native/core/playwrightServiceEntra.js +49 -0
- package/dist/react-native/core/playwrightServiceEntra.js.map +1 -0
- package/dist/react-native/core/playwrightServiceUtils.d.ts +3 -0
- package/dist/react-native/core/playwrightServiceUtils.d.ts.map +1 -0
- package/dist/react-native/core/playwrightServiceUtils.js +11 -0
- package/dist/react-native/core/playwrightServiceUtils.js.map +1 -0
- package/dist/react-native/index.d.ts +10 -0
- package/dist/react-native/index.d.ts.map +1 -0
- package/dist/react-native/index.js +11 -0
- package/dist/react-native/index.js.map +1 -0
- package/dist/react-native/model/entraTokenDetails.d.ts +5 -0
- package/dist/react-native/model/entraTokenDetails.d.ts.map +1 -0
- package/dist/react-native/model/entraTokenDetails.js +5 -0
- package/dist/react-native/model/entraTokenDetails.js.map +1 -0
- package/dist/react-native/model/mptTokenDetails.d.ts +11 -0
- package/dist/react-native/model/mptTokenDetails.d.ts.map +1 -0
- package/dist/react-native/model/mptTokenDetails.js +10 -0
- package/dist/react-native/model/mptTokenDetails.js.map +1 -0
- package/dist/react-native/model/shard.d.ts +41 -0
- package/dist/react-native/model/shard.d.ts.map +1 -0
- package/dist/react-native/model/shard.js +19 -0
- package/dist/react-native/model/shard.js.map +1 -0
- package/dist/react-native/model/storageUri.d.ts +14 -0
- package/dist/react-native/model/storageUri.d.ts.map +1 -0
- package/dist/react-native/model/storageUri.js +18 -0
- package/dist/react-native/model/storageUri.js.map +1 -0
- package/dist/react-native/model/testResult.d.ts +40 -0
- package/dist/react-native/model/testResult.d.ts.map +1 -0
- package/dist/react-native/model/testResult.js +5 -0
- package/dist/react-native/model/testResult.js.map +1 -0
- package/dist/react-native/model/testRun.d.ts +36 -0
- package/dist/react-native/model/testRun.d.ts.map +1 -0
- package/dist/react-native/model/testRun.js +8 -0
- package/dist/react-native/model/testRun.js.map +1 -0
- package/dist/react-native/package.json +3 -0
- package/dist/react-native/reporter/index.d.ts +10 -0
- package/dist/react-native/reporter/index.d.ts.map +1 -0
- package/dist/react-native/reporter/index.js +12 -0
- package/dist/react-native/reporter/index.js.map +1 -0
- package/dist/react-native/reporter/mptReporter.d.ts +100 -0
- package/dist/react-native/reporter/mptReporter.d.ts.map +1 -0
- package/dist/react-native/reporter/mptReporter.js +373 -0
- package/dist/react-native/reporter/mptReporter.js.map +1 -0
- package/dist/react-native/utils/cIInfoProvider.d.ts +25 -0
- package/dist/react-native/utils/cIInfoProvider.d.ts.map +1 -0
- package/dist/react-native/utils/cIInfoProvider.js +101 -0
- package/dist/react-native/utils/cIInfoProvider.js.map +1 -0
- package/dist/react-native/utils/getPlaywrightVersion.d.ts +2 -0
- package/dist/react-native/utils/getPlaywrightVersion.d.ts.map +1 -0
- package/dist/react-native/utils/getPlaywrightVersion.js +19 -0
- package/dist/react-native/utils/getPlaywrightVersion.js.map +1 -0
- package/dist/react-native/utils/packageManager.d.ts +15 -0
- package/dist/react-native/utils/packageManager.d.ts.map +1 -0
- package/dist/react-native/utils/packageManager.js +47 -0
- package/dist/react-native/utils/packageManager.js.map +1 -0
- package/dist/react-native/utils/parseJwt.d.ts +4 -0
- package/dist/react-native/utils/parseJwt.d.ts.map +1 -0
- package/dist/react-native/utils/parseJwt.js +16 -0
- package/dist/react-native/utils/parseJwt.js.map +1 -0
- package/dist/react-native/utils/reporterUtils.d.ts +60 -0
- package/dist/react-native/utils/reporterUtils.d.ts.map +1 -0
- package/dist/react-native/utils/reporterUtils.js +585 -0
- package/dist/react-native/utils/reporterUtils.js.map +1 -0
- package/dist/react-native/utils/serviceClient.d.ts +25 -0
- package/dist/react-native/utils/serviceClient.d.ts.map +1 -0
- package/dist/react-native/utils/serviceClient.js +103 -0
- package/dist/react-native/utils/serviceClient.js.map +1 -0
- package/dist/react-native/utils/storageClient.d.ts +6 -0
- package/dist/react-native/utils/storageClient.d.ts.map +1 -0
- package/dist/react-native/utils/storageClient.js +37 -0
- package/dist/react-native/utils/storageClient.js.map +1 -0
- package/dist/react-native/utils/utils.d.ts +28 -0
- package/dist/react-native/utils/utils.d.ts.map +1 -0
- package/dist/react-native/utils/utils.js +151 -0
- package/dist/react-native/utils/utils.js.map +1 -0
- package/package.json +73 -28
- package/CHANGELOG.md +0 -88
- package/dist/common/constants.d.ts.map +0 -1
- package/dist/common/constants.js.map +0 -1
- package/dist/common/customerConfig.d.ts.map +0 -1
- package/dist/common/entraIdAccessToken.d.ts.map +0 -1
- package/dist/common/entraIdAccessToken.js.map +0 -1
- package/dist/common/environmentVariables.d.ts.map +0 -1
- package/dist/common/environmentVariables.js.map +0 -1
- package/dist/common/executor.d.ts.map +0 -1
- package/dist/common/executor.js.map +0 -1
- package/dist/common/httpService.d.ts.map +0 -1
- package/dist/common/httpService.js.map +0 -1
- package/dist/common/logger.d.ts.map +0 -1
- package/dist/common/logger.js.map +0 -1
- package/dist/common/messages.d.ts.map +0 -1
- package/dist/common/messages.js.map +0 -1
- package/dist/common/multimap.d.ts.map +0 -1
- package/dist/common/multimap.js.map +0 -1
- package/dist/common/playwrightServiceConfig.d.ts.map +0 -1
- package/dist/common/playwrightServiceConfig.js +0 -48
- package/dist/common/playwrightServiceConfig.js.map +0 -1
- package/dist/common/types.d.ts.map +0 -1
- package/dist/common/types.js.map +0 -1
- package/dist/core/global/playwright-service-global-setup.d.ts.map +0 -1
- package/dist/core/global/playwright-service-global-setup.js +0 -22
- package/dist/core/global/playwright-service-global-setup.js.map +0 -1
- package/dist/core/global/playwright-service-global-teardown.d.ts.map +0 -1
- package/dist/core/global/playwright-service-global-teardown.js +0 -22
- package/dist/core/global/playwright-service-global-teardown.js.map +0 -1
- package/dist/core/playwrightService.d.ts.map +0 -1
- package/dist/core/playwrightService.js.map +0 -1
- package/dist/core/playwrightServiceEntra.d.ts.map +0 -1
- package/dist/core/playwrightServiceEntra.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/model/entraTokenDetails.d.ts.map +0 -1
- package/dist/model/entraTokenDetails.js.map +0 -1
- package/dist/model/mptTokenDetails.d.ts.map +0 -1
- package/dist/model/mptTokenDetails.js.map +0 -1
- package/dist/model/shard.d.ts.map +0 -1
- package/dist/model/shard.js.map +0 -1
- package/dist/model/storageUri.d.ts.map +0 -1
- package/dist/model/storageUri.js.map +0 -1
- package/dist/model/testResult.d.ts.map +0 -1
- package/dist/model/testResult.js.map +0 -1
- package/dist/model/testRun.d.ts.map +0 -1
- package/dist/model/testRun.js.map +0 -1
- package/dist/reporter/index.d.ts.map +0 -1
- package/dist/reporter/index.js.map +0 -1
- package/dist/reporter/mptReporter.d.ts.map +0 -1
- package/dist/reporter/mptReporter.js.map +0 -1
- package/dist/utils/cIInfoProvider.d.ts.map +0 -1
- package/dist/utils/cIInfoProvider.js.map +0 -1
- package/dist/utils/packageManager.d.ts.map +0 -1
- package/dist/utils/packageManager.js.map +0 -1
- package/dist/utils/reporterUtils.d.ts.map +0 -1
- package/dist/utils/reporterUtils.js.map +0 -1
- package/dist/utils/serviceClient.d.ts.map +0 -1
- package/dist/utils/serviceClient.js.map +0 -1
- package/dist/utils/storageClient.d.ts.map +0 -1
- package/dist/utils/storageClient.js.map +0 -1
- package/dist/utils/utils.d.ts.map +0 -1
- package/dist/utils/utils.js.map +0 -1
- /package/dist/{common → browser/common}/customerConfig.d.ts +0 -0
- /package/dist/{common → browser/common}/environmentVariables.d.ts +0 -0
- /package/dist/{common → browser/common}/executor.d.ts +0 -0
- /package/dist/{common → browser/common}/httpService.d.ts +0 -0
- /package/dist/{common → browser/common}/logger.d.ts +0 -0
- /package/dist/{common → browser/common}/messages.d.ts +0 -0
- /package/dist/{common → browser/common}/multimap.d.ts +0 -0
- /package/dist/{core → browser/core}/global/playwright-service-global-setup.d.ts +0 -0
- /package/dist/{core → browser/core}/global/playwright-service-global-teardown.d.ts +0 -0
- /package/dist/{core → browser/core}/playwrightServiceEntra.d.ts +0 -0
- /package/dist/{model → browser/model}/entraTokenDetails.d.ts +0 -0
- /package/dist/{model → browser/model}/mptTokenDetails.d.ts +0 -0
- /package/dist/{model → browser/model}/shard.d.ts +0 -0
- /package/dist/{model → browser/model}/storageUri.d.ts +0 -0
- /package/dist/{utils → browser/utils}/cIInfoProvider.d.ts +0 -0
- /package/dist/{utils → browser/utils}/storageClient.d.ts +0 -0
- /package/dist/{common → commonjs/common}/constants.js +0 -0
- /package/dist/{common → commonjs/common}/customerConfig.js +0 -0
- /package/dist/{common → commonjs/common}/logger.js +0 -0
- /package/dist/{common → commonjs/common}/messages.js +0 -0
- /package/dist/{common → commonjs/common}/multimap.js +0 -0
- /package/dist/{common → commonjs/common}/types.js +0 -0
- /package/dist/{model → commonjs/model}/entraTokenDetails.js +0 -0
- /package/dist/{model → commonjs/model}/mptTokenDetails.js +0 -0
- /package/dist/{model → commonjs/model}/shard.js +0 -0
- /package/dist/{model → commonjs/model}/storageUri.js +0 -0
- /package/dist/{model → commonjs/model}/testResult.js +0 -0
- /package/dist/{model → commonjs/model}/testRun.js +0 -0
- /package/dist/{tsdoc-metadata.json → commonjs/tsdoc-metadata.json} +0 -0
- /package/dist/{utils → commonjs/utils}/cIInfoProvider.js +0 -0
- /package/dist/{utils → commonjs/utils}/packageManager.js +0 -0
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { reporterLogger } from "../common/logger.js";
|
|
4
|
+
import { Constants, InternalEnvironmentVariables, TestResultErrorConstants, } from "../common/constants.js";
|
|
5
|
+
import { EnvironmentVariables } from "../common/environmentVariables.js";
|
|
6
|
+
import { MultiMap } from "../common/multimap.js";
|
|
7
|
+
import { TokenType } from "../model/mptTokenDetails.js";
|
|
8
|
+
import { CIInfoProvider } from "../utils/cIInfoProvider.js";
|
|
9
|
+
import ReporterUtils from "../utils/reporterUtils.js";
|
|
10
|
+
import { ServiceClient } from "../utils/serviceClient.js";
|
|
11
|
+
import { StorageClient } from "../utils/storageClient.js";
|
|
12
|
+
import { ServiceErrorMessageConstants } from "../common/messages.js";
|
|
13
|
+
import { validateMptPAT, populateValuesFromServiceUrl } from "../utils/utils.js";
|
|
14
|
+
/**
|
|
15
|
+
* @public
|
|
16
|
+
*
|
|
17
|
+
* Extends Playwright's Reporter class to enable Microsoft Playwright Testing's Reporting
|
|
18
|
+
* feature to publish test results and related artifacts and
|
|
19
|
+
* view them in the service portal for faster and easier troubleshooting.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
*
|
|
23
|
+
* ```
|
|
24
|
+
* import { defineConfig } from "@playwright/test";
|
|
25
|
+
*
|
|
26
|
+
* export default defineConfig({
|
|
27
|
+
* reporter: [["@azure/microsoft-playwright-testing/reporter"]]
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
class MPTReporter {
|
|
32
|
+
constructor(config) {
|
|
33
|
+
this.isTokenValid = true;
|
|
34
|
+
this.enableGitHubSummary = true;
|
|
35
|
+
this.isRegionValid = true;
|
|
36
|
+
this.isTestRunStartSuccess = false;
|
|
37
|
+
this.ciInfo = CIInfoProvider.getCIInfo();
|
|
38
|
+
this.testRawResults = new MultiMap();
|
|
39
|
+
this._testEndPromises = [];
|
|
40
|
+
this.testResultBatch = new Set();
|
|
41
|
+
this.errorMessages = [];
|
|
42
|
+
this.informationalMessages = [];
|
|
43
|
+
this.processedErrorMessageKeys = [];
|
|
44
|
+
this.uploadMetadata = {
|
|
45
|
+
numTestResults: 0,
|
|
46
|
+
numTotalAttachments: 0,
|
|
47
|
+
sizeTotalAttachments: 0,
|
|
48
|
+
};
|
|
49
|
+
this.numWorkers = -1;
|
|
50
|
+
this.testRunUrl = "";
|
|
51
|
+
this.enableResultPublish = true;
|
|
52
|
+
this._addInformationalMessage = (message) => {
|
|
53
|
+
this.informationalMessages.push(message);
|
|
54
|
+
};
|
|
55
|
+
this._addKeyToInformationMessage = (key) => {
|
|
56
|
+
this.processedErrorMessageKeys.push(key);
|
|
57
|
+
};
|
|
58
|
+
this._isInformationMessagePresent = (key) => {
|
|
59
|
+
return this.processedErrorMessageKeys.includes(key);
|
|
60
|
+
};
|
|
61
|
+
this._reporterFailureHandler = (error) => {
|
|
62
|
+
if (!this._isInformationMessagePresent(error.key)) {
|
|
63
|
+
this._addKeyToInformationMessage(error.key);
|
|
64
|
+
this._addInformationalMessage(error.message);
|
|
65
|
+
}
|
|
66
|
+
this.isTokenValid = false;
|
|
67
|
+
};
|
|
68
|
+
this.renewSasUriIfNeeded = async () => {
|
|
69
|
+
if (this.sasUri === undefined ||
|
|
70
|
+
!ReporterUtils.isTimeGreaterThanCurrentPlus10Minutes(this.sasUri)) {
|
|
71
|
+
this.sasUri = await this.serviceClient.createStorageUri();
|
|
72
|
+
reporterLogger.info(`\nFetched SAS URI with validity: ${this.sasUri.expiresAt} and access: ${this.sasUri.accessLevel}.`);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
if ((config === null || config === void 0 ? void 0 : config.enableGitHubSummary) !== undefined) {
|
|
76
|
+
this.enableGitHubSummary = config.enableGitHubSummary;
|
|
77
|
+
}
|
|
78
|
+
if ((config === null || config === void 0 ? void 0 : config.enableResultPublish) !== undefined) {
|
|
79
|
+
this.enableResultPublish = config.enableResultPublish;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
_addError(errorMessage) {
|
|
83
|
+
if (this.errorMessages.length < Constants.ERROR_MESSAGES_MAX_LENGTH) {
|
|
84
|
+
this.errorMessages.push(this.reporterUtils.redactAccessToken(errorMessage));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* @public
|
|
89
|
+
*
|
|
90
|
+
* Called once before running tests.
|
|
91
|
+
*
|
|
92
|
+
* @param config - Resolved configuration.
|
|
93
|
+
* @param suite - The root suite that contains all projects, files and test cases.
|
|
94
|
+
*/
|
|
95
|
+
onBegin(config, suite) {
|
|
96
|
+
if (!this.enableResultPublish)
|
|
97
|
+
return;
|
|
98
|
+
this.initializeMPTReporter();
|
|
99
|
+
this.reporterUtils = new ReporterUtils(this.envVariables, config, suite);
|
|
100
|
+
if (this.isTokenValid && this.isRegionValid) {
|
|
101
|
+
this.serviceClient = new ServiceClient(this.envVariables, this.reporterUtils, this._addInformationalMessage, this._isInformationMessagePresent, this._addKeyToInformationMessage);
|
|
102
|
+
this.promiseOnBegin = this._onBegin();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* @public
|
|
107
|
+
*
|
|
108
|
+
* Called after a test has been finished in the worker process.
|
|
109
|
+
*
|
|
110
|
+
* @param test - Test that has been finished.
|
|
111
|
+
* @param result - Result of the test run.
|
|
112
|
+
*/
|
|
113
|
+
onTestEnd(test, result) {
|
|
114
|
+
this.numWorkers = Math.max(this.numWorkers, result.parallelIndex + 1);
|
|
115
|
+
this.processTestResult(result);
|
|
116
|
+
if (!this.enableResultPublish)
|
|
117
|
+
return;
|
|
118
|
+
// Process test result
|
|
119
|
+
this._onTestEnd(test, result);
|
|
120
|
+
// Upload the test results batch
|
|
121
|
+
try {
|
|
122
|
+
if (this.testResultBatch.size >= Constants.TEST_BATCH_SIZE) {
|
|
123
|
+
const currResultBatch = [...this.testResultBatch];
|
|
124
|
+
if (this.isTestRunStartSuccess) {
|
|
125
|
+
this._testEndPromises.push(this.serviceClient.postTestResults(currResultBatch));
|
|
126
|
+
reporterLogger.info(`\nAdded test results batch for upload.`);
|
|
127
|
+
this.testResultBatch.clear();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
this._addError(`Name: ${err.name}, Message: ${err.message}, Stack: ${err.stack}`);
|
|
133
|
+
reporterLogger.error(`\nError in uploading test results: ${err.message}.`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* @public
|
|
138
|
+
*
|
|
139
|
+
* Called after all tests have been run, or testing has been interrupted. Note that this method may return a [Promise]
|
|
140
|
+
* and Playwright Test will await it. Reporter is allowed to override the status and hence affect the exit code of the
|
|
141
|
+
* test runner.
|
|
142
|
+
*
|
|
143
|
+
* @param result - Result of the full test run, `status` can be one of:
|
|
144
|
+
* - `'passed'` - Everything went as expected.
|
|
145
|
+
* - `'failed'` - Any test has failed.
|
|
146
|
+
* - `'timedout'` - The
|
|
147
|
+
* {@link https://playwright.dev/docs/api/class-testconfig#test-config-global-timeout | testConfig.globalTimeout} has
|
|
148
|
+
* been reached.
|
|
149
|
+
* - `'interrupted'` - Interrupted by the user.
|
|
150
|
+
*/
|
|
151
|
+
async onEnd(result) {
|
|
152
|
+
if (this.enableResultPublish) {
|
|
153
|
+
await this._onEnd(result);
|
|
154
|
+
if (!this.isTestRunStartSuccess) {
|
|
155
|
+
this._addError(`\nUnable to initialize test run report.`);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
let count = 0;
|
|
159
|
+
process.stdout.write("\nUploading test results.");
|
|
160
|
+
await Promise.allSettled(this._testEndPromises).then((values) => {
|
|
161
|
+
values.forEach((value) => {
|
|
162
|
+
if (value.status === "fulfilled") {
|
|
163
|
+
count++;
|
|
164
|
+
this.reporterUtils.progressBar(count, this._testEndPromises.length);
|
|
165
|
+
}
|
|
166
|
+
return value.status;
|
|
167
|
+
});
|
|
168
|
+
reporterLogger.info(`\nTest result processing completed.`);
|
|
169
|
+
return values;
|
|
170
|
+
});
|
|
171
|
+
try {
|
|
172
|
+
await this.serviceClient.postTestRunShardEnd(result, this.shard, this.errorMessages, this.uploadMetadata, this.numWorkers);
|
|
173
|
+
reporterLogger.info(`\nTest run successfully uploaded.`);
|
|
174
|
+
if (this.enableGitHubSummary) {
|
|
175
|
+
this.reporterUtils.generateMarkdownSummary(this.testRunUrl);
|
|
176
|
+
}
|
|
177
|
+
process.stdout.write(`\nTest report: ${this.testRunUrl}\n`);
|
|
178
|
+
}
|
|
179
|
+
catch (err) {
|
|
180
|
+
this._addError(`Name: ${err.name}, Message: ${err.message}, Stack: ${err.stack}`);
|
|
181
|
+
reporterLogger.error(`\nError in completing test run: ${err.message}`);
|
|
182
|
+
process.stdout.write(`\nUnable to complete test results upload.`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
this.displayAdditionalInformation();
|
|
187
|
+
}
|
|
188
|
+
async _onBegin() {
|
|
189
|
+
process.stdout.write(`\n`);
|
|
190
|
+
try {
|
|
191
|
+
const testRunResponse = await this.serviceClient.patchTestRun(this.ciInfo);
|
|
192
|
+
reporterLogger.info(`\nTest run report successfully initialized: ${testRunResponse === null || testRunResponse === void 0 ? void 0 : testRunResponse.displayName}.`);
|
|
193
|
+
process.stdout.write(`Initializing reporting for this test run. You can view the results at: https://playwright.microsoft.com/workspaces/${encodeURIComponent(this.envVariables.accountId)}/runs/${encodeURIComponent(this.envVariables.runId)}\n`);
|
|
194
|
+
const shardResponse = await this.serviceClient.postTestRunShardStart();
|
|
195
|
+
this.shard = shardResponse;
|
|
196
|
+
// Set test report link as environment variable. If/else to check if environment variable defined or not.
|
|
197
|
+
if (Constants.DEFAULT_SERVICE_ENDPOINT &&
|
|
198
|
+
this.envVariables.accountId &&
|
|
199
|
+
this.envVariables.runId) {
|
|
200
|
+
this.testRunUrl = `${Constants.DEFAULT_DASHBOARD_ENDPOINT}/workspaces/${encodeURIComponent(this.envVariables.accountId)}/runs/${encodeURIComponent(this.envVariables.runId)}`;
|
|
201
|
+
}
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
this._addError(`Name: ${err.name}, Message: ${err.message}, Stack: ${err.stack}`);
|
|
206
|
+
reporterLogger.error(`\nError in initializing test run report: ${err.message}.`);
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
async _onTestEnd(test, result) {
|
|
211
|
+
try {
|
|
212
|
+
this.isTestRunStartSuccess = await this.promiseOnBegin;
|
|
213
|
+
if (!this.isTestRunStartSuccess) {
|
|
214
|
+
this._addError(`\nUnable to initialize test run report.`);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
this.uploadMetadata.numTestResults++;
|
|
218
|
+
const testResultObject = this.reporterUtils.getTestResultObject(test, result, this.ciInfo.jobName);
|
|
219
|
+
this.testResultBatch.add(testResultObject);
|
|
220
|
+
// Store test attachments in array
|
|
221
|
+
const testAttachments = [];
|
|
222
|
+
const otherAttachments = [];
|
|
223
|
+
for (const attachment of result.attachments) {
|
|
224
|
+
if (attachment.path !== undefined && attachment.path !== "") {
|
|
225
|
+
testAttachments.push(attachment.path);
|
|
226
|
+
this.uploadMetadata.numTotalAttachments++;
|
|
227
|
+
this.uploadMetadata.sizeTotalAttachments += ReporterUtils.getFileSize(attachment.path);
|
|
228
|
+
}
|
|
229
|
+
else if (attachment.body instanceof Buffer) {
|
|
230
|
+
otherAttachments.push(attachment);
|
|
231
|
+
this.uploadMetadata.numTotalAttachments++;
|
|
232
|
+
this.uploadMetadata.sizeTotalAttachments += ReporterUtils.getBufferSize(attachment.body);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// Get raw result object and store it in map
|
|
236
|
+
const rawTestResult = this.reporterUtils.getRawTestResultObject(result);
|
|
237
|
+
this.testRawResults.set(testResultObject.testExecutionId, JSON.stringify(rawTestResult));
|
|
238
|
+
this._testEndPromises.push(this._uploadTestResultAttachments(testResultObject.testExecutionId, testAttachments, otherAttachments));
|
|
239
|
+
}
|
|
240
|
+
catch (err) {
|
|
241
|
+
this._addError(`Name: ${err.name}, Message: ${err.message}, Stack: ${err.stack}`);
|
|
242
|
+
reporterLogger.error(`\nError in processing test result: ${err.message}.`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
async _onEnd(_) {
|
|
246
|
+
this.isTestRunStartSuccess = await this.promiseOnBegin;
|
|
247
|
+
if (!this.isTestRunStartSuccess) {
|
|
248
|
+
this._addError(`\nUnable to initialize test run report.`);
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
try {
|
|
252
|
+
// Upload the remaining test results
|
|
253
|
+
if (this.testResultBatch.size > 0) {
|
|
254
|
+
await this.serviceClient.postTestResults([...this.testResultBatch]);
|
|
255
|
+
reporterLogger.info(`\nUploaded test results batch successfully.`);
|
|
256
|
+
this.testResultBatch.clear();
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
catch (err) {
|
|
260
|
+
this._addError(`Name: ${err.name}, Message: ${err.message}, Stack: ${err.stack}`);
|
|
261
|
+
reporterLogger.error(`\nError in uploading test run information: ${err.message}`);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
async _uploadTestResultAttachments(testExecutionId, testAttachments, otherAttachments) {
|
|
265
|
+
var _a;
|
|
266
|
+
try {
|
|
267
|
+
this.isTestRunStartSuccess = await this.promiseOnBegin;
|
|
268
|
+
if (!this.isTestRunStartSuccess) {
|
|
269
|
+
this._addError(`\nUnable to initialize test run report.`);
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
for (const attachmentPath of testAttachments) {
|
|
273
|
+
const fileRelativePath = `${testExecutionId}/${ReporterUtils.getFileRelativePath(attachmentPath)}`;
|
|
274
|
+
await this.renewSasUriIfNeeded();
|
|
275
|
+
await this.storageClient.uploadFile(this.sasUri.uri, attachmentPath, fileRelativePath);
|
|
276
|
+
}
|
|
277
|
+
for (const otherAttachment of otherAttachments) {
|
|
278
|
+
await this.renewSasUriIfNeeded();
|
|
279
|
+
const match = (_a = otherAttachment === null || otherAttachment === void 0 ? void 0 : otherAttachment.contentType) === null || _a === void 0 ? void 0 : _a.match(/charset=(.*)/);
|
|
280
|
+
const charset = match && match.length > 1 ? match[1] : "utf-8";
|
|
281
|
+
await this.storageClient.uploadBuffer(this.sasUri.uri, otherAttachment.body.toString(charset || "utf-8"), `${testExecutionId}/${otherAttachment.name}`);
|
|
282
|
+
}
|
|
283
|
+
const rawTestResult = this.testRawResults.get(testExecutionId);
|
|
284
|
+
await this.renewSasUriIfNeeded();
|
|
285
|
+
await this.storageClient.uploadBuffer(this.sasUri.uri, rawTestResult[0], `${testExecutionId}/rawTestResult.json`);
|
|
286
|
+
}
|
|
287
|
+
catch (err) {
|
|
288
|
+
this._addError(`Name: ${err.name}, Message: ${err.message}, Stack: ${err.stack}`);
|
|
289
|
+
reporterLogger.error(`\nError in uploading test result attachments: ${err.message}`);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
initializeMPTReporter() {
|
|
293
|
+
this.envVariables = new EnvironmentVariables();
|
|
294
|
+
if (process.env[InternalEnvironmentVariables.MPT_SETUP_FATAL_ERROR] === "true") {
|
|
295
|
+
this.isTokenValid = false;
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
if (!process.env[InternalEnvironmentVariables.MPT_SERVICE_REPORTING_URL]) {
|
|
299
|
+
process.stdout.write("\nReporting service url not found.");
|
|
300
|
+
this.isTokenValid = false;
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
reporterLogger.info(`Reporting url - ${process.env[InternalEnvironmentVariables.MPT_SERVICE_REPORTING_URL]}`);
|
|
304
|
+
if (this.envVariables.accessToken === undefined || this.envVariables.accessToken === "") {
|
|
305
|
+
process.stdout.write(`\n${ServiceErrorMessageConstants.NO_AUTH_ERROR.message}`);
|
|
306
|
+
this.isTokenValid = false;
|
|
307
|
+
}
|
|
308
|
+
else if (ReporterUtils.hasAudienceClaim(this.envVariables.accessToken)) {
|
|
309
|
+
const result = populateValuesFromServiceUrl();
|
|
310
|
+
this.envVariables.region = result.region;
|
|
311
|
+
this.envVariables.accountId = result.accountId;
|
|
312
|
+
const entraTokenDetails = ReporterUtils.getTokenDetails(this.envVariables.accessToken, TokenType.ENTRA);
|
|
313
|
+
this.envVariables.userId = entraTokenDetails.oid;
|
|
314
|
+
this.envVariables.userName = entraTokenDetails.name;
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
const mptTokenDetails = ReporterUtils.getTokenDetails(this.envVariables.accessToken, TokenType.MPT);
|
|
318
|
+
validateMptPAT(this._reporterFailureHandler);
|
|
319
|
+
this.envVariables.accountId = mptTokenDetails.aid;
|
|
320
|
+
this.envVariables.userId = mptTokenDetails.oid;
|
|
321
|
+
this.envVariables.userName = mptTokenDetails.userName;
|
|
322
|
+
this.envVariables.region = ReporterUtils.getRegionFromAccountID(this.envVariables.accountId);
|
|
323
|
+
}
|
|
324
|
+
this.storageClient = new StorageClient();
|
|
325
|
+
if (this.envVariables.region &&
|
|
326
|
+
!Constants.SupportedRegions.includes(this.envVariables.region) &&
|
|
327
|
+
this.isTokenValid) {
|
|
328
|
+
process.stdout.write(`\nUnsupported region's workspace used to generate the input Access Token; the supported regions are ${Constants.SupportedRegions.join(", ")}`);
|
|
329
|
+
this.isRegionValid = false;
|
|
330
|
+
}
|
|
331
|
+
if (this.envVariables.runId === undefined || this.envVariables.runId === "") {
|
|
332
|
+
this.envVariables.runId = ReporterUtils.getRunId(this.ciInfo);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
displayAdditionalInformation() {
|
|
336
|
+
if (this.informationalMessages.length > 0)
|
|
337
|
+
console.info(); // Add a new line before displaying the messages
|
|
338
|
+
this.informationalMessages.forEach((message, index) => {
|
|
339
|
+
console.info(`${index + 1}. ${message}`);
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
processTestResult(result) {
|
|
343
|
+
if (process.env[InternalEnvironmentVariables.MPT_CLOUD_HOSTED_BROWSER_USED] &&
|
|
344
|
+
result.status !== "passed") {
|
|
345
|
+
result.errors.forEach((error) => {
|
|
346
|
+
TestResultErrorConstants.forEach((testResultErrorParseObj) => {
|
|
347
|
+
if (this.processedErrorMessageKeys.includes(testResultErrorParseObj.key)) {
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
const errorMessage = error.message;
|
|
351
|
+
if (!errorMessage)
|
|
352
|
+
return;
|
|
353
|
+
const match = errorMessage.match(testResultErrorParseObj.pattern);
|
|
354
|
+
if (match) {
|
|
355
|
+
this.processedErrorMessageKeys.push(testResultErrorParseObj.key);
|
|
356
|
+
this._addInformationalMessage(testResultErrorParseObj.message);
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* @public
|
|
364
|
+
*
|
|
365
|
+
* Whether this reporter uses stdio for reporting. When it does not, Playwright Test could add some output to enhance
|
|
366
|
+
* user experience. If your reporter does not print to the terminal, it is strongly recommended to return `false`.
|
|
367
|
+
*/
|
|
368
|
+
printsToStdio() {
|
|
369
|
+
return true;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
export default MPTReporter;
|
|
373
|
+
//# sourceMappingURL=mptReporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mptReporter.js","sourceRoot":"","sources":["../../../src/reporter/mptReporter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n FullResult,\n TestCase,\n TestResult,\n FullConfig,\n Reporter,\n Suite,\n} from \"@playwright/test/reporter\";\nimport { reporterLogger } from \"../common/logger.js\";\nimport {\n Constants,\n InternalEnvironmentVariables,\n TestResultErrorConstants,\n} from \"../common/constants.js\";\nimport { EnvironmentVariables } from \"../common/environmentVariables.js\";\nimport { MultiMap } from \"../common/multimap.js\";\nimport type { EntraTokenDetails } from \"../model/entraTokenDetails.js\";\nimport type { MPTTokenDetails } from \"../model/mptTokenDetails.js\";\nimport { TokenType } from \"../model/mptTokenDetails.js\";\nimport type { Shard, UploadMetadata } from \"../model/shard.js\";\nimport type { StorageUri } from \"../model/storageUri.js\";\nimport type { TestResult as MPTTestResult, RawTestResult } from \"../model/testResult.js\";\nimport type { TestRun } from \"../model/testRun.js\";\nimport type { CIInfo } from \"../utils/cIInfoProvider.js\";\nimport { CIInfoProvider } from \"../utils/cIInfoProvider.js\";\nimport ReporterUtils from \"../utils/reporterUtils.js\";\nimport { ServiceClient } from \"../utils/serviceClient.js\";\nimport { StorageClient } from \"../utils/storageClient.js\";\nimport type { ReporterConfiguration } from \"../common/types.js\";\nimport { ServiceErrorMessageConstants } from \"../common/messages.js\";\nimport { validateMptPAT, populateValuesFromServiceUrl } from \"../utils/utils.js\";\n\n/**\n * @public\n *\n * Extends Playwright's Reporter class to enable Microsoft Playwright Testing's Reporting\n * feature to publish test results and related artifacts and\n * view them in the service portal for faster and easier troubleshooting.\n *\n * @example\n *\n * ```\n * import { defineConfig } from \"@playwright/test\";\n *\n * export default defineConfig({\n * reporter: [[\"@azure/microsoft-playwright-testing/reporter\"]]\n * });\n * ```\n */\nclass MPTReporter implements Reporter {\n private isTokenValid: boolean = true;\n private enableGitHubSummary = true;\n private isRegionValid: boolean = true;\n private shard!: Shard;\n private isTestRunStartSuccess: boolean = false;\n private ciInfo: CIInfo = CIInfoProvider.getCIInfo();\n private serviceClient!: ServiceClient;\n private storageClient!: StorageClient;\n private reporterUtils!: ReporterUtils;\n private envVariables!: EnvironmentVariables;\n private testRawResults = new MultiMap<string, string>();\n private promiseOnBegin!: Promise<boolean>;\n private _testEndPromises: Promise<void>[] = [];\n private testResultBatch: Set<MPTTestResult> = new Set<MPTTestResult>();\n private errorMessages: string[] = [];\n private informationalMessages: string[] = [];\n private processedErrorMessageKeys: string[] = [];\n private sasUri!: StorageUri;\n private uploadMetadata: UploadMetadata = {\n numTestResults: 0,\n numTotalAttachments: 0,\n sizeTotalAttachments: 0,\n };\n private numWorkers: number = -1;\n private testRunUrl: string = \"\";\n private enableResultPublish: boolean = true;\n\n constructor(config: Partial<ReporterConfiguration>) {\n if (config?.enableGitHubSummary !== undefined) {\n this.enableGitHubSummary = config.enableGitHubSummary;\n }\n if (config?.enableResultPublish !== undefined) {\n this.enableResultPublish = config.enableResultPublish;\n }\n }\n private _addError(errorMessage: string): void {\n if (this.errorMessages.length < Constants.ERROR_MESSAGES_MAX_LENGTH) {\n this.errorMessages.push(this.reporterUtils.redactAccessToken(errorMessage));\n }\n }\n\n private _addInformationalMessage = (message: string): void => {\n this.informationalMessages.push(message);\n };\n\n private _addKeyToInformationMessage = (key: string): void => {\n this.processedErrorMessageKeys.push(key);\n };\n\n private _isInformationMessagePresent = (key: string): boolean => {\n return this.processedErrorMessageKeys.includes(key);\n };\n private _reporterFailureHandler = (error: { key: string; message: string }): void => {\n if (!this._isInformationMessagePresent(error.key)) {\n this._addKeyToInformationMessage(error.key);\n this._addInformationalMessage(error.message);\n }\n this.isTokenValid = false;\n };\n /**\n * @public\n *\n * Called once before running tests.\n *\n * @param config - Resolved configuration.\n * @param suite - The root suite that contains all projects, files and test cases.\n */\n onBegin(config: FullConfig, suite: Suite): void {\n if (!this.enableResultPublish) return;\n this.initializeMPTReporter();\n this.reporterUtils = new ReporterUtils(this.envVariables, config, suite);\n if (this.isTokenValid && this.isRegionValid) {\n this.serviceClient = new ServiceClient(\n this.envVariables,\n this.reporterUtils,\n this._addInformationalMessage,\n this._isInformationMessagePresent,\n this._addKeyToInformationMessage,\n );\n this.promiseOnBegin = this._onBegin();\n }\n }\n\n /**\n * @public\n *\n * Called after a test has been finished in the worker process.\n *\n * @param test - Test that has been finished.\n * @param result - Result of the test run.\n */\n onTestEnd(test: TestCase, result: TestResult): void {\n this.numWorkers = Math.max(this.numWorkers, result.parallelIndex + 1);\n this.processTestResult(result);\n if (!this.enableResultPublish) return;\n // Process test result\n this._onTestEnd(test, result);\n // Upload the test results batch\n try {\n if (this.testResultBatch.size >= Constants.TEST_BATCH_SIZE) {\n const currResultBatch: MPTTestResult[] = [...this.testResultBatch];\n if (this.isTestRunStartSuccess) {\n this._testEndPromises.push(this.serviceClient.postTestResults(currResultBatch));\n reporterLogger.info(`\\nAdded test results batch for upload.`);\n this.testResultBatch.clear();\n }\n }\n } catch (err: any) {\n this._addError(`Name: ${err.name}, Message: ${err.message}, Stack: ${err.stack}`);\n reporterLogger.error(`\\nError in uploading test results: ${err.message}.`);\n }\n }\n\n /**\n * @public\n *\n * Called after all tests have been run, or testing has been interrupted. Note that this method may return a [Promise]\n * and Playwright Test will await it. Reporter is allowed to override the status and hence affect the exit code of the\n * test runner.\n *\n * @param result - Result of the full test run, `status` can be one of:\n * - `'passed'` - Everything went as expected.\n * - `'failed'` - Any test has failed.\n * - `'timedout'` - The\n * {@link https://playwright.dev/docs/api/class-testconfig#test-config-global-timeout | testConfig.globalTimeout} has\n * been reached.\n * - `'interrupted'` - Interrupted by the user.\n */\n async onEnd(result: FullResult): Promise<void> {\n if (this.enableResultPublish) {\n await this._onEnd(result);\n if (!this.isTestRunStartSuccess) {\n this._addError(`\\nUnable to initialize test run report.`);\n } else {\n let count: number = 0;\n process.stdout.write(\"\\nUploading test results.\");\n await Promise.allSettled(this._testEndPromises).then((values) => {\n values.forEach((value) => {\n if (value.status === \"fulfilled\") {\n count++;\n this.reporterUtils.progressBar(count, this._testEndPromises.length);\n }\n return value.status;\n });\n reporterLogger.info(`\\nTest result processing completed.`);\n return values;\n });\n try {\n await this.serviceClient.postTestRunShardEnd(\n result,\n this.shard,\n this.errorMessages,\n this.uploadMetadata,\n this.numWorkers,\n );\n reporterLogger.info(`\\nTest run successfully uploaded.`);\n\n if (this.enableGitHubSummary) {\n this.reporterUtils.generateMarkdownSummary(this.testRunUrl);\n }\n\n process.stdout.write(`\\nTest report: ${this.testRunUrl}\\n`);\n } catch (err: any) {\n this._addError(`Name: ${err.name}, Message: ${err.message}, Stack: ${err.stack}`);\n reporterLogger.error(`\\nError in completing test run: ${err.message}`);\n process.stdout.write(`\\nUnable to complete test results upload.`);\n }\n }\n }\n this.displayAdditionalInformation();\n }\n\n private async _onBegin(): Promise<boolean> {\n process.stdout.write(`\\n`);\n try {\n const testRunResponse: TestRun | undefined = await this.serviceClient.patchTestRun(\n this.ciInfo,\n );\n reporterLogger.info(\n `\\nTest run report successfully initialized: ${testRunResponse?.displayName}.`,\n );\n process.stdout.write(\n `Initializing reporting for this test run. You can view the results at: https://playwright.microsoft.com/workspaces/${encodeURIComponent(this.envVariables.accountId!)}/runs/${encodeURIComponent(this.envVariables.runId!)}\\n`,\n );\n const shardResponse = await this.serviceClient.postTestRunShardStart();\n this.shard = shardResponse;\n // Set test report link as environment variable. If/else to check if environment variable defined or not.\n if (\n Constants.DEFAULT_SERVICE_ENDPOINT &&\n this.envVariables.accountId &&\n this.envVariables.runId\n ) {\n this.testRunUrl = `${Constants.DEFAULT_DASHBOARD_ENDPOINT}/workspaces/${encodeURIComponent(\n this.envVariables.accountId,\n )}/runs/${encodeURIComponent(this.envVariables.runId)}`;\n }\n return true;\n } catch (err: any) {\n this._addError(`Name: ${err.name}, Message: ${err.message}, Stack: ${err.stack}`);\n reporterLogger.error(`\\nError in initializing test run report: ${err.message}.`);\n return false;\n }\n }\n\n private async _onTestEnd(test: TestCase, result: TestResult): Promise<undefined> {\n try {\n this.isTestRunStartSuccess = await this.promiseOnBegin;\n if (!this.isTestRunStartSuccess) {\n this._addError(`\\nUnable to initialize test run report.`);\n return;\n }\n this.uploadMetadata.numTestResults++;\n const testResultObject: MPTTestResult = this.reporterUtils.getTestResultObject(\n test,\n result,\n this.ciInfo.jobName!,\n );\n this.testResultBatch.add(testResultObject);\n // Store test attachments in array\n const testAttachments: string[] = [];\n const otherAttachments: any[] = [];\n for (const attachment of result.attachments) {\n if (attachment.path !== undefined && attachment.path !== \"\") {\n testAttachments.push(attachment.path);\n this.uploadMetadata.numTotalAttachments++;\n this.uploadMetadata.sizeTotalAttachments += ReporterUtils.getFileSize(attachment.path);\n } else if (attachment.body instanceof Buffer) {\n otherAttachments.push(attachment);\n this.uploadMetadata.numTotalAttachments++;\n this.uploadMetadata.sizeTotalAttachments += ReporterUtils.getBufferSize(attachment.body);\n }\n }\n\n // Get raw result object and store it in map\n const rawTestResult: RawTestResult = this.reporterUtils.getRawTestResultObject(result);\n this.testRawResults.set(testResultObject.testExecutionId, JSON.stringify(rawTestResult));\n this._testEndPromises.push(\n this._uploadTestResultAttachments(\n testResultObject.testExecutionId,\n testAttachments,\n otherAttachments,\n ),\n );\n } catch (err: any) {\n this._addError(`Name: ${err.name}, Message: ${err.message}, Stack: ${err.stack}`);\n reporterLogger.error(`\\nError in processing test result: ${err.message}.`);\n }\n }\n\n private async _onEnd(_: FullResult): Promise<void> {\n this.isTestRunStartSuccess = await this.promiseOnBegin;\n if (!this.isTestRunStartSuccess) {\n this._addError(`\\nUnable to initialize test run report.`);\n return;\n }\n try {\n // Upload the remaining test results\n if (this.testResultBatch.size > 0) {\n await this.serviceClient.postTestResults([...this.testResultBatch]);\n reporterLogger.info(`\\nUploaded test results batch successfully.`);\n this.testResultBatch.clear();\n }\n } catch (err: any) {\n this._addError(`Name: ${err.name}, Message: ${err.message}, Stack: ${err.stack}`);\n reporterLogger.error(`\\nError in uploading test run information: ${err.message}`);\n }\n }\n private renewSasUriIfNeeded = async (): Promise<void> => {\n if (\n this.sasUri === undefined ||\n !ReporterUtils.isTimeGreaterThanCurrentPlus10Minutes(this.sasUri)\n ) {\n this.sasUri = await this.serviceClient.createStorageUri();\n reporterLogger.info(\n `\\nFetched SAS URI with validity: ${this.sasUri.expiresAt} and access: ${this.sasUri.accessLevel}.`,\n );\n }\n };\n private async _uploadTestResultAttachments(\n testExecutionId: string,\n testAttachments: string[],\n otherAttachments: any[],\n ): Promise<void> {\n try {\n this.isTestRunStartSuccess = await this.promiseOnBegin;\n if (!this.isTestRunStartSuccess) {\n this._addError(`\\nUnable to initialize test run report.`);\n return;\n }\n\n for (const attachmentPath of testAttachments) {\n const fileRelativePath = `${testExecutionId}/${ReporterUtils.getFileRelativePath(attachmentPath)}`;\n await this.renewSasUriIfNeeded();\n await this.storageClient.uploadFile(this.sasUri.uri, attachmentPath, fileRelativePath);\n }\n\n for (const otherAttachment of otherAttachments) {\n await this.renewSasUriIfNeeded();\n const match = otherAttachment?.contentType?.match(/charset=(.*)/);\n const charset = match && match.length > 1 ? match[1] : \"utf-8\";\n await this.storageClient.uploadBuffer(\n this.sasUri.uri,\n otherAttachment.body.toString((charset as any) || \"utf-8\"),\n `${testExecutionId}/${otherAttachment.name}`,\n );\n }\n\n const rawTestResult = this.testRawResults.get(testExecutionId);\n await this.renewSasUriIfNeeded();\n await this.storageClient.uploadBuffer(\n this.sasUri.uri,\n rawTestResult[0]!,\n `${testExecutionId}/rawTestResult.json`,\n );\n } catch (err: any) {\n this._addError(`Name: ${err.name}, Message: ${err.message}, Stack: ${err.stack}`);\n reporterLogger.error(`\\nError in uploading test result attachments: ${err.message}`);\n }\n }\n\n private initializeMPTReporter(): void {\n this.envVariables = new EnvironmentVariables();\n if (process.env[InternalEnvironmentVariables.MPT_SETUP_FATAL_ERROR] === \"true\") {\n this.isTokenValid = false;\n return;\n }\n if (!process.env[InternalEnvironmentVariables.MPT_SERVICE_REPORTING_URL]) {\n process.stdout.write(\"\\nReporting service url not found.\");\n this.isTokenValid = false;\n return;\n }\n reporterLogger.info(\n `Reporting url - ${process.env[InternalEnvironmentVariables.MPT_SERVICE_REPORTING_URL]}`,\n );\n if (this.envVariables.accessToken === undefined || this.envVariables.accessToken === \"\") {\n process.stdout.write(`\\n${ServiceErrorMessageConstants.NO_AUTH_ERROR.message}`);\n this.isTokenValid = false;\n } else if (ReporterUtils.hasAudienceClaim(this.envVariables.accessToken)) {\n const result = populateValuesFromServiceUrl();\n this.envVariables.region = result!.region;\n this.envVariables.accountId = result!.accountId;\n const entraTokenDetails: EntraTokenDetails = ReporterUtils.getTokenDetails<EntraTokenDetails>(\n this.envVariables.accessToken,\n TokenType.ENTRA,\n );\n this.envVariables.userId = entraTokenDetails.oid;\n this.envVariables.userName = entraTokenDetails.name;\n } else {\n const mptTokenDetails: MPTTokenDetails = ReporterUtils.getTokenDetails<MPTTokenDetails>(\n this.envVariables.accessToken,\n TokenType.MPT,\n );\n validateMptPAT(this._reporterFailureHandler);\n this.envVariables.accountId = mptTokenDetails.aid;\n this.envVariables.userId = mptTokenDetails.oid;\n this.envVariables.userName = mptTokenDetails.userName;\n this.envVariables.region = ReporterUtils.getRegionFromAccountID(this.envVariables.accountId!);\n }\n this.storageClient = new StorageClient();\n if (\n this.envVariables.region &&\n !Constants.SupportedRegions.includes(this.envVariables.region!) &&\n this.isTokenValid\n ) {\n process.stdout.write(\n `\\nUnsupported region's workspace used to generate the input Access Token; the supported regions are ${Constants.SupportedRegions.join(\n \", \",\n )}`,\n );\n this.isRegionValid = false;\n }\n if (this.envVariables.runId === undefined || this.envVariables.runId === \"\") {\n this.envVariables.runId = ReporterUtils.getRunId(this.ciInfo);\n }\n }\n\n private displayAdditionalInformation(): void {\n if (this.informationalMessages.length > 0) console.info(); // Add a new line before displaying the messages\n this.informationalMessages.forEach((message, index) => {\n console.info(`${index + 1}. ${message}`);\n });\n }\n\n private processTestResult(result: TestResult): void {\n if (\n process.env[InternalEnvironmentVariables.MPT_CLOUD_HOSTED_BROWSER_USED] &&\n result.status !== \"passed\"\n ) {\n result.errors.forEach((error) => {\n TestResultErrorConstants.forEach((testResultErrorParseObj) => {\n if (this.processedErrorMessageKeys.includes(testResultErrorParseObj.key)) {\n return;\n }\n const errorMessage = error.message;\n if (!errorMessage) return;\n const match = errorMessage.match(testResultErrorParseObj.pattern);\n if (match) {\n this.processedErrorMessageKeys.push(testResultErrorParseObj.key);\n this._addInformationalMessage(testResultErrorParseObj.message);\n }\n });\n });\n }\n }\n\n /**\n * @public\n *\n * Whether this reporter uses stdio for reporting. When it does not, Playwright Test could add some output to enhance\n * user experience. If your reporter does not print to the terminal, it is strongly recommended to return `false`.\n */\n printsToStdio(): boolean {\n return true;\n }\n}\nexport default MPTReporter;\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare enum CI_PROVIDERS {
|
|
2
|
+
GITHUB = "GITHUB",
|
|
3
|
+
ADO = "ADO",
|
|
4
|
+
DEFAULT = "DEFAULT"
|
|
5
|
+
}
|
|
6
|
+
export type CIInfo = {
|
|
7
|
+
provider: CI_PROVIDERS | null;
|
|
8
|
+
repo: string | null;
|
|
9
|
+
branch: string | null;
|
|
10
|
+
author: string | null;
|
|
11
|
+
commitId: string | null;
|
|
12
|
+
revisionUrl: string | null;
|
|
13
|
+
runId: string | null;
|
|
14
|
+
runAttempt: number | null;
|
|
15
|
+
jobName: string | null;
|
|
16
|
+
};
|
|
17
|
+
export declare class CIInfoProvider {
|
|
18
|
+
private static isGitHubActions;
|
|
19
|
+
static getCIProvider(): string | null;
|
|
20
|
+
static getCIInfo(): CIInfo;
|
|
21
|
+
private static isAzureDevOps;
|
|
22
|
+
private static getADORunId;
|
|
23
|
+
private static getGHBranchName;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=cIInfoProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cIInfoProvider.d.ts","sourceRoot":"","sources":["../../../src/utils/cIInfoProvider.ts"],"names":[],"mappings":"AAGA,oBAAY,YAAY;IACtB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,OAAO,YAAY;CAEpB;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,eAAe;IAI9B,MAAM,CAAC,aAAa,IAAI,MAAM,GAAG,IAAI;IAUrC,MAAM,CAAC,SAAS,IAAI,MAAM;IAqD1B,OAAO,CAAC,MAAM,CAAC,aAAa;IAM5B,OAAO,CAAC,MAAM,CAAC,WAAW;IAS1B,OAAO,CAAC,MAAM,CAAC,eAAe;CAU/B"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
export var CI_PROVIDERS;
|
|
4
|
+
(function (CI_PROVIDERS) {
|
|
5
|
+
CI_PROVIDERS["GITHUB"] = "GITHUB";
|
|
6
|
+
CI_PROVIDERS["ADO"] = "ADO";
|
|
7
|
+
CI_PROVIDERS["DEFAULT"] = "DEFAULT";
|
|
8
|
+
// Add more CI providers as needed
|
|
9
|
+
})(CI_PROVIDERS || (CI_PROVIDERS = {}));
|
|
10
|
+
export class CIInfoProvider {
|
|
11
|
+
static isGitHubActions() {
|
|
12
|
+
return process.env["GITHUB_ACTIONS"] === "true";
|
|
13
|
+
}
|
|
14
|
+
static getCIProvider() {
|
|
15
|
+
if (CIInfoProvider.isGitHubActions()) {
|
|
16
|
+
return CI_PROVIDERS.GITHUB;
|
|
17
|
+
}
|
|
18
|
+
else if (CIInfoProvider.isAzureDevOps()) {
|
|
19
|
+
return CI_PROVIDERS.ADO;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return CI_PROVIDERS.DEFAULT;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
static getCIInfo() {
|
|
26
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
27
|
+
const ciProvider = CIInfoProvider.getCIProvider();
|
|
28
|
+
if (ciProvider === CI_PROVIDERS.GITHUB) {
|
|
29
|
+
// Logic to get GitHub Actions CIInfo
|
|
30
|
+
return {
|
|
31
|
+
provider: CI_PROVIDERS.GITHUB,
|
|
32
|
+
repo: process.env["GITHUB_REPOSITORY_ID"] || null,
|
|
33
|
+
branch: this.getGHBranchName() || null,
|
|
34
|
+
author: process.env["GITHUB_ACTOR"] || null,
|
|
35
|
+
commitId: process.env["GITHUB_SHA"] || null,
|
|
36
|
+
revisionUrl: process.env["GITHUB_SERVER_URL"]
|
|
37
|
+
? `${process.env["GITHUB_SERVER_URL"]}/${process.env["GITHUB_REPOSITORY"]}/commit/${process.env["GITHUB_SHA"]}`
|
|
38
|
+
: null,
|
|
39
|
+
runId: process.env["GITHUB_RUN_ID"] || null,
|
|
40
|
+
runAttempt: process.env["GITHUB_RUN_ATTEMPT"]
|
|
41
|
+
? parseInt(process.env["GITHUB_RUN_ATTEMPT"], 10)
|
|
42
|
+
: null,
|
|
43
|
+
jobName: process.env["GITHUB_JOB"] || null,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
else if (ciProvider === CI_PROVIDERS.ADO) {
|
|
47
|
+
// Logic to get Azure DevOps CIInfo
|
|
48
|
+
return {
|
|
49
|
+
provider: CI_PROVIDERS.ADO,
|
|
50
|
+
repo: process.env["BUILD_REPOSITORY_ID"] || null,
|
|
51
|
+
branch: process.env["BUILD_SOURCEBRANCH"] || null,
|
|
52
|
+
author: process.env["BUILD_REQUESTEDFOR"] || null,
|
|
53
|
+
commitId: process.env["BUILD_SOURCEVERSION"] || null,
|
|
54
|
+
revisionUrl: process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"]
|
|
55
|
+
? `${process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"]}${process.env["SYSTEM_TEAMPROJECT"]}/_git/${process.env["BUILD_REPOSITORY_NAME"]}/commit/${process.env["BUILD_SOURCEVERSION"]}`
|
|
56
|
+
: null,
|
|
57
|
+
runId: this.getADORunId() || null,
|
|
58
|
+
runAttempt: process.env["RELEASE_ATTEMPTNUMBER"]
|
|
59
|
+
? parseInt(process.env["RELEASE_ATTEMPTNUMBER"], 10)
|
|
60
|
+
: parseInt((_a = process.env["SYSTEM_JOBATTEMPT"]) !== null && _a !== void 0 ? _a : "", 10),
|
|
61
|
+
jobName: process.env["SYSTEM_JOBDISPLAYNAME"] || process.env["RELEASE_DEPLOYMENTID"] || null,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// Handle unsupported CI provider
|
|
66
|
+
return {
|
|
67
|
+
provider: CI_PROVIDERS.DEFAULT,
|
|
68
|
+
repo: (_b = process.env["REPO"]) !== null && _b !== void 0 ? _b : null,
|
|
69
|
+
branch: (_c = process.env["BRANCH"]) !== null && _c !== void 0 ? _c : null,
|
|
70
|
+
author: (_d = process.env["AUTHOR"]) !== null && _d !== void 0 ? _d : null,
|
|
71
|
+
commitId: (_e = process.env["COMMIT_ID"]) !== null && _e !== void 0 ? _e : null,
|
|
72
|
+
revisionUrl: (_f = process.env["REVISION_URL"]) !== null && _f !== void 0 ? _f : null,
|
|
73
|
+
runId: (_g = process.env["RUN_ID"]) !== null && _g !== void 0 ? _g : null,
|
|
74
|
+
runAttempt: process.env["RUN_ATTEMPT"] ? parseInt(process.env["RUN_ATTEMPT"], 10) : null,
|
|
75
|
+
jobName: (_h = process.env["JOB_ID"]) !== null && _h !== void 0 ? _h : null,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
static isAzureDevOps() {
|
|
80
|
+
return (process.env["AZURE_HTTP_USER_AGENT"] !== undefined && process.env["TF_BUILD"] !== undefined);
|
|
81
|
+
}
|
|
82
|
+
static getADORunId() {
|
|
83
|
+
if (process.env["RELEASE_DEFINITIONID"] && process.env["RELEASE_DEPLOYMENTID"]) {
|
|
84
|
+
return `${process.env["RELEASE_DEFINITIONID"]}-${process.env["RELEASE_DEPLOYMENTID"]}`;
|
|
85
|
+
}
|
|
86
|
+
else if (process.env["SYSTEM_DEFINITIONID"] && process.env["SYSTEM_JOBID"]) {
|
|
87
|
+
return `${process.env["SYSTEM_DEFINITIONID"]}-${process.env["SYSTEM_JOBID"]}`;
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
static getGHBranchName() {
|
|
92
|
+
if (process.env["GITHUB_EVENT_NAME"] === "pull_request" ||
|
|
93
|
+
process.env["GITHUB_EVENT_NAME"] === "pull_request_target") {
|
|
94
|
+
return process.env["GITHUB_HEAD_REF"];
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
return process.env["GITHUB_REF_NAME"];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=cIInfoProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cIInfoProvider.js","sourceRoot":"","sources":["../../../src/utils/cIInfoProvider.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport enum CI_PROVIDERS {\n GITHUB = \"GITHUB\",\n ADO = \"ADO\",\n DEFAULT = \"DEFAULT\",\n // Add more CI providers as needed\n}\n\nexport type CIInfo = {\n provider: CI_PROVIDERS | null;\n repo: string | null;\n branch: string | null;\n author: string | null;\n commitId: string | null;\n revisionUrl: string | null;\n runId: string | null;\n runAttempt: number | null;\n jobName: string | null;\n};\n\nexport class CIInfoProvider {\n private static isGitHubActions(): boolean {\n return process.env[\"GITHUB_ACTIONS\"] === \"true\";\n }\n\n static getCIProvider(): string | null {\n if (CIInfoProvider.isGitHubActions()) {\n return CI_PROVIDERS.GITHUB;\n } else if (CIInfoProvider.isAzureDevOps()) {\n return CI_PROVIDERS.ADO;\n } else {\n return CI_PROVIDERS.DEFAULT;\n }\n }\n\n static getCIInfo(): CIInfo {\n const ciProvider = CIInfoProvider.getCIProvider();\n if (ciProvider === CI_PROVIDERS.GITHUB) {\n // Logic to get GitHub Actions CIInfo\n return {\n provider: CI_PROVIDERS.GITHUB,\n repo: process.env[\"GITHUB_REPOSITORY_ID\"] || null,\n branch: this.getGHBranchName() || null,\n author: process.env[\"GITHUB_ACTOR\"] || null,\n commitId: process.env[\"GITHUB_SHA\"] || null,\n revisionUrl: process.env[\"GITHUB_SERVER_URL\"]\n ? `${process.env[\"GITHUB_SERVER_URL\"]}/${process.env[\"GITHUB_REPOSITORY\"]}/commit/${process.env[\"GITHUB_SHA\"]}`\n : null,\n runId: process.env[\"GITHUB_RUN_ID\"] || null,\n runAttempt: process.env[\"GITHUB_RUN_ATTEMPT\"]\n ? parseInt(process.env[\"GITHUB_RUN_ATTEMPT\"], 10)\n : null,\n jobName: process.env[\"GITHUB_JOB\"] || null,\n };\n } else if (ciProvider === CI_PROVIDERS.ADO) {\n // Logic to get Azure DevOps CIInfo\n return {\n provider: CI_PROVIDERS.ADO,\n repo: process.env[\"BUILD_REPOSITORY_ID\"] || null,\n branch: process.env[\"BUILD_SOURCEBRANCH\"] || null,\n author: process.env[\"BUILD_REQUESTEDFOR\"] || null,\n commitId: process.env[\"BUILD_SOURCEVERSION\"] || null,\n revisionUrl: process.env[\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\"]\n ? `${process.env[\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\"]}${process.env[\"SYSTEM_TEAMPROJECT\"]}/_git/${process.env[\"BUILD_REPOSITORY_NAME\"]}/commit/${process.env[\"BUILD_SOURCEVERSION\"]}`\n : null,\n runId: this.getADORunId() || null,\n runAttempt: process.env[\"RELEASE_ATTEMPTNUMBER\"]\n ? parseInt(process.env[\"RELEASE_ATTEMPTNUMBER\"], 10)\n : parseInt(process.env[\"SYSTEM_JOBATTEMPT\"] ?? \"\", 10),\n jobName:\n process.env[\"SYSTEM_JOBDISPLAYNAME\"] || process.env[\"RELEASE_DEPLOYMENTID\"] || null,\n };\n } else {\n // Handle unsupported CI provider\n return {\n provider: CI_PROVIDERS.DEFAULT,\n repo: process.env[\"REPO\"] ?? null,\n branch: process.env[\"BRANCH\"] ?? null,\n author: process.env[\"AUTHOR\"] ?? null,\n commitId: process.env[\"COMMIT_ID\"] ?? null,\n revisionUrl: process.env[\"REVISION_URL\"] ?? null,\n runId: process.env[\"RUN_ID\"] ?? null,\n runAttempt: process.env[\"RUN_ATTEMPT\"] ? parseInt(process.env[\"RUN_ATTEMPT\"], 10) : null,\n jobName: process.env[\"JOB_ID\"] ?? null,\n };\n }\n }\n\n private static isAzureDevOps(): boolean {\n return (\n process.env[\"AZURE_HTTP_USER_AGENT\"] !== undefined && process.env[\"TF_BUILD\"] !== undefined\n );\n }\n\n private static getADORunId(): string | null {\n if (process.env[\"RELEASE_DEFINITIONID\"] && process.env[\"RELEASE_DEPLOYMENTID\"]) {\n return `${process.env[\"RELEASE_DEFINITIONID\"]}-${process.env[\"RELEASE_DEPLOYMENTID\"]}`;\n } else if (process.env[\"SYSTEM_DEFINITIONID\"] && process.env[\"SYSTEM_JOBID\"]) {\n return `${process.env[\"SYSTEM_DEFINITIONID\"]}-${process.env[\"SYSTEM_JOBID\"]}`;\n }\n return null;\n }\n\n private static getGHBranchName(): string {\n if (\n process.env[\"GITHUB_EVENT_NAME\"] === \"pull_request\" ||\n process.env[\"GITHUB_EVENT_NAME\"] === \"pull_request_target\"\n ) {\n return process.env[\"GITHUB_HEAD_REF\"]!;\n } else {\n return process.env[\"GITHUB_REF_NAME\"]!;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPlaywrightVersion.d.ts","sourceRoot":"","sources":["../../../src/utils/getPlaywrightVersion.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,oBAAoB,QAAO,MAcvC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { getPackageManager } from "./packageManager.js";
|
|
4
|
+
import { InternalEnvironmentVariables } from "../common/constants.js";
|
|
5
|
+
import { execSync } from "node:child_process";
|
|
6
|
+
import { coreLogger } from "../common/logger.js";
|
|
7
|
+
export const getPlaywrightVersion = () => {
|
|
8
|
+
if (process.env[InternalEnvironmentVariables.MPT_PLAYWRIGHT_VERSION]) {
|
|
9
|
+
return process.env[InternalEnvironmentVariables.MPT_PLAYWRIGHT_VERSION];
|
|
10
|
+
}
|
|
11
|
+
const packageManager = getPackageManager();
|
|
12
|
+
const command = packageManager.runCommand("playwright", "--version");
|
|
13
|
+
const stdout = execSync(command).toString().trim();
|
|
14
|
+
const version = packageManager.getVersionFromStdout(stdout);
|
|
15
|
+
process.env[InternalEnvironmentVariables.MPT_PLAYWRIGHT_VERSION] = version;
|
|
16
|
+
coreLogger.info(`Playwright version being used - ${process.env[InternalEnvironmentVariables.MPT_PLAYWRIGHT_VERSION]}`);
|
|
17
|
+
return process.env[InternalEnvironmentVariables.MPT_PLAYWRIGHT_VERSION];
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=getPlaywrightVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPlaywrightVersion.js","sourceRoot":"","sources":["../../../src/utils/getPlaywrightVersion.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAW,EAAE;IAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACrE,OAAO,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,sBAAsB,CAAE,CAAC;IAC3E,CAAC;IAED,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,cAAc,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC;IAC3E,UAAU,CAAC,IAAI,CACb,mCAAmC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,sBAAsB,CAAC,EAAE,CACtG,CAAC;IACF,OAAO,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,sBAAsB,CAAE,CAAC;AAC3E,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getPackageManager } from \"./packageManager.js\";\nimport { InternalEnvironmentVariables } from \"../common/constants.js\";\nimport { execSync } from \"node:child_process\";\nimport { coreLogger } from \"../common/logger.js\";\n\nexport const getPlaywrightVersion = (): string => {\n if (process.env[InternalEnvironmentVariables.MPT_PLAYWRIGHT_VERSION]) {\n return process.env[InternalEnvironmentVariables.MPT_PLAYWRIGHT_VERSION]!;\n }\n\n const packageManager = getPackageManager();\n const command = packageManager.runCommand(\"playwright\", \"--version\");\n const stdout = execSync(command).toString().trim();\n const version = packageManager.getVersionFromStdout(stdout);\n process.env[InternalEnvironmentVariables.MPT_PLAYWRIGHT_VERSION] = version;\n coreLogger.info(\n `Playwright version being used - ${process.env[InternalEnvironmentVariables.MPT_PLAYWRIGHT_VERSION]}`,\n );\n return process.env[InternalEnvironmentVariables.MPT_PLAYWRIGHT_VERSION]!;\n};\n"]}
|