@azure/microsoft-playwright-testing 1.0.0-alpha.20250318.1 → 1.0.0-alpha.20250320.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 (597) hide show
  1. package/dist/{common → browser/common}/constants.d.ts +1 -1
  2. package/dist/browser/common/constants.d.ts.map +1 -0
  3. package/dist/browser/common/constants.js +226 -0
  4. package/dist/browser/common/constants.js.map +1 -0
  5. package/dist/browser/common/customerConfig.d.ts.map +1 -0
  6. package/dist/browser/common/customerConfig.js +13 -0
  7. package/dist/{common → browser/common}/customerConfig.js.map +1 -1
  8. package/dist/{common → browser/common}/entraIdAccessToken.d.ts +2 -2
  9. package/dist/browser/common/entraIdAccessToken.d.ts.map +1 -0
  10. package/dist/browser/common/entraIdAccessToken.js +71 -0
  11. package/dist/browser/common/entraIdAccessToken.js.map +1 -0
  12. package/dist/browser/common/environmentVariables.d.ts.map +1 -0
  13. package/dist/browser/common/environmentVariables.js +15 -0
  14. package/dist/browser/common/environmentVariables.js.map +1 -0
  15. package/dist/browser/common/executor.d.ts.map +1 -0
  16. package/dist/browser/common/executor.js +74 -0
  17. package/dist/browser/common/executor.js.map +1 -0
  18. package/dist/browser/common/httpService.d.ts.map +1 -0
  19. package/dist/browser/common/httpService.js +33 -0
  20. package/dist/browser/common/httpService.js.map +1 -0
  21. package/dist/browser/common/logger.d.ts.map +1 -0
  22. package/dist/browser/common/logger.js +6 -0
  23. package/dist/browser/common/logger.js.map +1 -0
  24. package/dist/browser/common/messages.d.ts.map +1 -0
  25. package/dist/browser/common/messages.js +37 -0
  26. package/dist/browser/common/messages.js.map +1 -0
  27. package/dist/browser/common/multimap.d.ts.map +1 -0
  28. package/dist/browser/common/multimap.js +60 -0
  29. package/dist/browser/common/multimap.js.map +1 -0
  30. package/dist/{common → browser/common}/playwrightServiceConfig.d.ts +1 -1
  31. package/dist/browser/common/playwrightServiceConfig.d.ts.map +1 -0
  32. package/dist/browser/common/playwrightServiceConfig.js +45 -0
  33. package/dist/browser/common/playwrightServiceConfig.js.map +1 -0
  34. package/dist/{common → browser/common}/types.d.ts +1 -1
  35. package/dist/browser/common/types.d.ts.map +1 -0
  36. package/dist/browser/common/types.js +4 -0
  37. package/dist/browser/common/types.js.map +1 -0
  38. package/dist/browser/core/global/playwright-service-global-setup.d.ts.map +1 -0
  39. package/dist/browser/core/global/playwright-service-global-setup.js +19 -0
  40. package/dist/browser/core/global/playwright-service-global-setup.js.map +1 -0
  41. package/dist/browser/core/global/playwright-service-global-teardown.d.ts.map +1 -0
  42. package/dist/browser/core/global/playwright-service-global-teardown.js +19 -0
  43. package/dist/browser/core/global/playwright-service-global-teardown.js.map +1 -0
  44. package/dist/{core → browser/core}/playwrightService.d.ts +1 -1
  45. package/dist/browser/core/playwrightService.d.ts.map +1 -0
  46. package/dist/browser/core/playwrightService.js +190 -0
  47. package/dist/browser/core/playwrightService.js.map +1 -0
  48. package/dist/browser/core/playwrightServiceEntra.d.ts.map +1 -0
  49. package/dist/browser/core/playwrightServiceEntra.js +49 -0
  50. package/dist/browser/core/playwrightServiceEntra.js.map +1 -0
  51. package/dist/browser/core/playwrightServiceUtils.d.ts +3 -0
  52. package/dist/browser/core/playwrightServiceUtils.d.ts.map +1 -0
  53. package/dist/browser/core/playwrightServiceUtils.js +11 -0
  54. package/dist/browser/core/playwrightServiceUtils.js.map +1 -0
  55. package/dist/{index.d.ts → browser/index.d.ts} +3 -3
  56. package/dist/browser/index.d.ts.map +1 -0
  57. package/dist/browser/index.js +11 -0
  58. package/dist/browser/index.js.map +1 -0
  59. package/dist/browser/model/entraTokenDetails.d.ts.map +1 -0
  60. package/dist/browser/model/entraTokenDetails.js +5 -0
  61. package/dist/browser/model/entraTokenDetails.js.map +1 -0
  62. package/dist/browser/model/mptTokenDetails.d.ts.map +1 -0
  63. package/dist/browser/model/mptTokenDetails.js +10 -0
  64. package/dist/browser/model/mptTokenDetails.js.map +1 -0
  65. package/dist/browser/model/shard.d.ts.map +1 -0
  66. package/dist/browser/model/shard.js +19 -0
  67. package/dist/browser/model/shard.js.map +1 -0
  68. package/dist/browser/model/storageUri.d.ts.map +1 -0
  69. package/dist/browser/model/storageUri.js +18 -0
  70. package/dist/browser/model/storageUri.js.map +1 -0
  71. package/dist/{model → browser/model}/testResult.d.ts +1 -1
  72. package/dist/browser/model/testResult.d.ts.map +1 -0
  73. package/dist/browser/model/testResult.js +5 -0
  74. package/dist/browser/model/testResult.js.map +1 -0
  75. package/dist/{model → browser/model}/testRun.d.ts +1 -1
  76. package/dist/browser/model/testRun.d.ts.map +1 -0
  77. package/dist/browser/model/testRun.js +8 -0
  78. package/dist/browser/model/testRun.js.map +1 -0
  79. package/dist/browser/package.json +3 -0
  80. package/dist/{reporter → browser/reporter}/index.d.ts +1 -1
  81. package/dist/browser/reporter/index.d.ts.map +1 -0
  82. package/dist/browser/reporter/index.js +12 -0
  83. package/dist/browser/reporter/index.js.map +1 -0
  84. package/dist/{reporter → browser/reporter}/mptReporter.d.ts +1 -1
  85. package/dist/browser/reporter/mptReporter.d.ts.map +1 -0
  86. package/dist/browser/reporter/mptReporter.js +373 -0
  87. package/dist/browser/reporter/mptReporter.js.map +1 -0
  88. package/dist/browser/utils/cIInfoProvider.d.ts.map +1 -0
  89. package/dist/browser/utils/cIInfoProvider.js +101 -0
  90. package/dist/browser/utils/cIInfoProvider.js.map +1 -0
  91. package/dist/browser/utils/getPlaywrightVersion.d.ts +2 -0
  92. package/dist/browser/utils/getPlaywrightVersion.d.ts.map +1 -0
  93. package/dist/browser/utils/getPlaywrightVersion.js +19 -0
  94. package/dist/browser/utils/getPlaywrightVersion.js.map +1 -0
  95. package/dist/{utils → browser/utils}/packageManager.d.ts +1 -1
  96. package/dist/browser/utils/packageManager.d.ts.map +1 -0
  97. package/dist/browser/utils/packageManager.js +47 -0
  98. package/dist/browser/utils/packageManager.js.map +1 -0
  99. package/dist/browser/utils/parseJwt.d.ts +4 -0
  100. package/dist/browser/utils/parseJwt.d.ts.map +1 -0
  101. package/dist/browser/utils/parseJwt.js +16 -0
  102. package/dist/browser/utils/parseJwt.js.map +1 -0
  103. package/dist/{utils → browser/utils}/reporterUtils.d.ts +10 -10
  104. package/dist/browser/utils/reporterUtils.d.ts.map +1 -0
  105. package/dist/browser/utils/reporterUtils.js +585 -0
  106. package/dist/browser/utils/reporterUtils.js.map +1 -0
  107. package/dist/{utils → browser/utils}/serviceClient.d.ts +7 -7
  108. package/dist/browser/utils/serviceClient.d.ts.map +1 -0
  109. package/dist/browser/utils/serviceClient.js +103 -0
  110. package/dist/browser/utils/serviceClient.js.map +1 -0
  111. package/dist/browser/utils/storageClient.d.ts.map +1 -0
  112. package/dist/browser/utils/storageClient.js +37 -0
  113. package/dist/browser/utils/storageClient.js.map +1 -0
  114. package/dist/{utils → browser/utils}/utils.d.ts +3 -4
  115. package/dist/browser/utils/utils.d.ts.map +1 -0
  116. package/dist/browser/utils/utils.js +151 -0
  117. package/dist/browser/utils/utils.js.map +1 -0
  118. package/dist/commonjs/common/constants.d.ts +95 -0
  119. package/dist/commonjs/common/constants.d.ts.map +1 -0
  120. package/dist/commonjs/common/constants.js.map +1 -0
  121. package/dist/commonjs/common/customerConfig.d.ts +9 -0
  122. package/dist/commonjs/common/customerConfig.d.ts.map +1 -0
  123. package/dist/commonjs/common/customerConfig.js.map +1 -0
  124. package/dist/commonjs/common/entraIdAccessToken.d.ts +12 -0
  125. package/dist/commonjs/common/entraIdAccessToken.d.ts.map +1 -0
  126. package/dist/{common → commonjs/common}/entraIdAccessToken.js +22 -18
  127. package/dist/commonjs/common/entraIdAccessToken.js.map +1 -0
  128. package/dist/commonjs/common/environmentVariables.d.ts +13 -0
  129. package/dist/commonjs/common/environmentVariables.d.ts.map +1 -0
  130. package/dist/{common → commonjs/common}/environmentVariables.js +4 -4
  131. package/dist/commonjs/common/environmentVariables.js.map +1 -0
  132. package/dist/commonjs/common/executor.d.ts +2 -0
  133. package/dist/commonjs/common/executor.d.ts.map +1 -0
  134. package/dist/{common → commonjs/common}/executor.js +13 -13
  135. package/dist/commonjs/common/executor.js.map +1 -0
  136. package/dist/commonjs/common/httpService.d.ts +5 -0
  137. package/dist/commonjs/common/httpService.d.ts.map +1 -0
  138. package/dist/{common → commonjs/common}/httpService.js +4 -4
  139. package/dist/commonjs/common/httpService.js.map +1 -0
  140. package/dist/commonjs/common/logger.d.ts +3 -0
  141. package/dist/commonjs/common/logger.d.ts.map +1 -0
  142. package/dist/commonjs/common/logger.js.map +1 -0
  143. package/dist/commonjs/common/messages.d.ts +35 -0
  144. package/dist/commonjs/common/messages.d.ts.map +1 -0
  145. package/dist/commonjs/common/messages.js.map +1 -0
  146. package/dist/commonjs/common/multimap.d.ts +16 -0
  147. package/dist/commonjs/common/multimap.d.ts.map +1 -0
  148. package/dist/commonjs/common/multimap.js.map +1 -0
  149. package/dist/commonjs/common/playwrightServiceConfig.d.ts +13 -0
  150. package/dist/commonjs/common/playwrightServiceConfig.d.ts.map +1 -0
  151. package/dist/commonjs/common/playwrightServiceConfig.js +48 -0
  152. package/dist/commonjs/common/playwrightServiceConfig.js.map +1 -0
  153. package/{types/microsoft-playwright-testing.d.ts → dist/commonjs/common/types.d.ts} +226 -273
  154. package/dist/commonjs/common/types.d.ts.map +1 -0
  155. package/dist/commonjs/common/types.js.map +1 -0
  156. package/dist/commonjs/core/global/playwright-service-global-setup.d.ts +4 -0
  157. package/dist/commonjs/core/global/playwright-service-global-setup.d.ts.map +1 -0
  158. package/dist/commonjs/core/global/playwright-service-global-setup.js +22 -0
  159. package/dist/commonjs/core/global/playwright-service-global-setup.js.map +1 -0
  160. package/dist/commonjs/core/global/playwright-service-global-teardown.d.ts +4 -0
  161. package/dist/commonjs/core/global/playwright-service-global-teardown.d.ts.map +1 -0
  162. package/dist/commonjs/core/global/playwright-service-global-teardown.js +22 -0
  163. package/dist/commonjs/core/global/playwright-service-global-teardown.js.map +1 -0
  164. package/dist/commonjs/core/playwrightService.d.ts +64 -0
  165. package/dist/commonjs/core/playwrightService.d.ts.map +1 -0
  166. package/dist/{core → commonjs/core}/playwrightService.js +44 -43
  167. package/dist/commonjs/core/playwrightService.js.map +1 -0
  168. package/dist/commonjs/core/playwrightServiceEntra.d.ts +16 -0
  169. package/dist/commonjs/core/playwrightServiceEntra.d.ts.map +1 -0
  170. package/dist/{core → commonjs/core}/playwrightServiceEntra.js +12 -12
  171. package/dist/commonjs/core/playwrightServiceEntra.js.map +1 -0
  172. package/dist/commonjs/core/playwrightServiceUtils-cjs.cjs.map +1 -0
  173. package/dist/commonjs/core/playwrightServiceUtils-cjs.d.cts.map +1 -0
  174. package/dist/commonjs/core/playwrightServiceUtils.d.ts +3 -0
  175. package/dist/commonjs/core/playwrightServiceUtils.js +10 -0
  176. package/dist/commonjs/index.d.ts +10 -0
  177. package/dist/commonjs/index.d.ts.map +1 -0
  178. package/dist/{index.js → commonjs/index.js} +9 -10
  179. package/dist/commonjs/index.js.map +1 -0
  180. package/dist/commonjs/model/entraTokenDetails.d.ts +5 -0
  181. package/dist/commonjs/model/entraTokenDetails.d.ts.map +1 -0
  182. package/dist/commonjs/model/entraTokenDetails.js.map +1 -0
  183. package/dist/commonjs/model/mptTokenDetails.d.ts +11 -0
  184. package/dist/commonjs/model/mptTokenDetails.d.ts.map +1 -0
  185. package/dist/commonjs/model/mptTokenDetails.js.map +1 -0
  186. package/dist/commonjs/model/shard.d.ts +41 -0
  187. package/dist/commonjs/model/shard.d.ts.map +1 -0
  188. package/dist/commonjs/model/shard.js.map +1 -0
  189. package/dist/commonjs/model/storageUri.d.ts +14 -0
  190. package/dist/commonjs/model/storageUri.d.ts.map +1 -0
  191. package/dist/commonjs/model/storageUri.js.map +1 -0
  192. package/dist/commonjs/model/testResult.d.ts +40 -0
  193. package/dist/commonjs/model/testResult.d.ts.map +1 -0
  194. package/dist/commonjs/model/testResult.js.map +1 -0
  195. package/dist/commonjs/model/testRun.d.ts +36 -0
  196. package/dist/commonjs/model/testRun.d.ts.map +1 -0
  197. package/dist/commonjs/model/testRun.js.map +1 -0
  198. package/dist/commonjs/package.json +3 -0
  199. package/dist/commonjs/reporter/index.d.ts +10 -0
  200. package/dist/commonjs/reporter/index.d.ts.map +1 -0
  201. package/dist/{reporter → commonjs/reporter}/index.js +2 -2
  202. package/dist/commonjs/reporter/index.js.map +1 -0
  203. package/{types/reporter/microsoft-playwright-testing.d.ts → dist/commonjs/reporter/mptReporter.d.ts} +100 -150
  204. package/dist/commonjs/reporter/mptReporter.d.ts.map +1 -0
  205. package/dist/{reporter → commonjs/reporter}/mptReporter.js +52 -52
  206. package/dist/commonjs/reporter/mptReporter.js.map +1 -0
  207. package/dist/commonjs/utils/cIInfoProvider.d.ts +25 -0
  208. package/dist/commonjs/utils/cIInfoProvider.d.ts.map +1 -0
  209. package/dist/commonjs/utils/cIInfoProvider.js.map +1 -0
  210. package/dist/commonjs/utils/getPlaywrightVersion.d.ts +2 -0
  211. package/dist/commonjs/utils/getPlaywrightVersion.d.ts.map +1 -0
  212. package/dist/commonjs/utils/getPlaywrightVersion.js +23 -0
  213. package/dist/commonjs/utils/getPlaywrightVersion.js.map +1 -0
  214. package/dist/commonjs/utils/packageManager.d.ts +15 -0
  215. package/dist/commonjs/utils/packageManager.d.ts.map +1 -0
  216. package/dist/commonjs/utils/packageManager.js.map +1 -0
  217. package/dist/commonjs/utils/parseJwt.d.ts +4 -0
  218. package/dist/commonjs/utils/parseJwt.d.ts.map +1 -0
  219. package/dist/commonjs/utils/parseJwt.js +21 -0
  220. package/dist/commonjs/utils/parseJwt.js.map +1 -0
  221. package/dist/commonjs/utils/reporterUtils.d.ts +60 -0
  222. package/dist/commonjs/utils/reporterUtils.d.ts.map +1 -0
  223. package/dist/{utils → commonjs/utils}/reporterUtils.js +47 -47
  224. package/dist/commonjs/utils/reporterUtils.js.map +1 -0
  225. package/dist/commonjs/utils/serviceClient.d.ts +25 -0
  226. package/dist/commonjs/utils/serviceClient.d.ts.map +1 -0
  227. package/dist/{utils → commonjs/utils}/serviceClient.js +19 -19
  228. package/dist/commonjs/utils/serviceClient.js.map +1 -0
  229. package/dist/commonjs/utils/storageClient.d.ts +6 -0
  230. package/dist/commonjs/utils/storageClient.d.ts.map +1 -0
  231. package/dist/{utils → commonjs/utils}/storageClient.js +7 -7
  232. package/dist/commonjs/utils/storageClient.js.map +1 -0
  233. package/dist/commonjs/utils/utils.d.ts +28 -0
  234. package/dist/commonjs/utils/utils.d.ts.map +1 -0
  235. package/dist/{utils → commonjs/utils}/utils.js +38 -60
  236. package/dist/commonjs/utils/utils.js.map +1 -0
  237. package/dist/esm/common/constants.d.ts +95 -0
  238. package/dist/esm/common/constants.d.ts.map +1 -0
  239. package/dist/esm/common/constants.js +226 -0
  240. package/dist/esm/common/constants.js.map +1 -0
  241. package/dist/esm/common/customerConfig.d.ts +9 -0
  242. package/dist/esm/common/customerConfig.d.ts.map +1 -0
  243. package/dist/esm/common/customerConfig.js +13 -0
  244. package/dist/esm/common/customerConfig.js.map +1 -0
  245. package/dist/esm/common/entraIdAccessToken.d.ts +12 -0
  246. package/dist/esm/common/entraIdAccessToken.d.ts.map +1 -0
  247. package/dist/esm/common/entraIdAccessToken.js +71 -0
  248. package/dist/esm/common/entraIdAccessToken.js.map +1 -0
  249. package/dist/esm/common/environmentVariables.d.ts +13 -0
  250. package/dist/esm/common/environmentVariables.d.ts.map +1 -0
  251. package/dist/esm/common/environmentVariables.js +15 -0
  252. package/dist/esm/common/environmentVariables.js.map +1 -0
  253. package/dist/esm/common/executor.d.ts +2 -0
  254. package/dist/esm/common/executor.d.ts.map +1 -0
  255. package/dist/esm/common/executor.js +74 -0
  256. package/dist/esm/common/executor.js.map +1 -0
  257. package/dist/esm/common/httpService.d.ts +5 -0
  258. package/dist/esm/common/httpService.d.ts.map +1 -0
  259. package/dist/esm/common/httpService.js +33 -0
  260. package/dist/esm/common/httpService.js.map +1 -0
  261. package/dist/esm/common/logger.d.ts +3 -0
  262. package/dist/esm/common/logger.d.ts.map +1 -0
  263. package/dist/esm/common/logger.js +6 -0
  264. package/dist/esm/common/logger.js.map +1 -0
  265. package/dist/esm/common/messages.d.ts +35 -0
  266. package/dist/esm/common/messages.d.ts.map +1 -0
  267. package/dist/esm/common/messages.js +37 -0
  268. package/dist/esm/common/messages.js.map +1 -0
  269. package/dist/esm/common/multimap.d.ts +16 -0
  270. package/dist/esm/common/multimap.d.ts.map +1 -0
  271. package/dist/esm/common/multimap.js +60 -0
  272. package/dist/esm/common/multimap.js.map +1 -0
  273. package/dist/esm/common/playwrightServiceConfig.d.ts +13 -0
  274. package/dist/esm/common/playwrightServiceConfig.d.ts.map +1 -0
  275. package/dist/esm/common/playwrightServiceConfig.js +45 -0
  276. package/dist/esm/common/playwrightServiceConfig.js.map +1 -0
  277. package/dist/esm/common/types.d.ts +226 -0
  278. package/dist/esm/common/types.d.ts.map +1 -0
  279. package/dist/esm/common/types.js +4 -0
  280. package/dist/esm/common/types.js.map +1 -0
  281. package/dist/esm/core/global/playwright-service-global-setup.d.ts +4 -0
  282. package/dist/esm/core/global/playwright-service-global-setup.d.ts.map +1 -0
  283. package/dist/esm/core/global/playwright-service-global-setup.js +19 -0
  284. package/dist/esm/core/global/playwright-service-global-setup.js.map +1 -0
  285. package/dist/esm/core/global/playwright-service-global-teardown.d.ts +4 -0
  286. package/dist/esm/core/global/playwright-service-global-teardown.d.ts.map +1 -0
  287. package/dist/esm/core/global/playwright-service-global-teardown.js +19 -0
  288. package/dist/esm/core/global/playwright-service-global-teardown.js.map +1 -0
  289. package/dist/esm/core/playwrightService.d.ts +64 -0
  290. package/dist/esm/core/playwrightService.d.ts.map +1 -0
  291. package/dist/esm/core/playwrightService.js +190 -0
  292. package/dist/esm/core/playwrightService.js.map +1 -0
  293. package/dist/esm/core/playwrightServiceEntra.d.ts +16 -0
  294. package/dist/esm/core/playwrightServiceEntra.d.ts.map +1 -0
  295. package/dist/esm/core/playwrightServiceEntra.js +49 -0
  296. package/dist/esm/core/playwrightServiceEntra.js.map +1 -0
  297. package/dist/esm/core/playwrightServiceUtils.d.ts +3 -0
  298. package/dist/esm/core/playwrightServiceUtils.d.ts.map +1 -0
  299. package/dist/esm/core/playwrightServiceUtils.js +11 -0
  300. package/dist/esm/core/playwrightServiceUtils.js.map +1 -0
  301. package/dist/esm/index.d.ts +10 -0
  302. package/dist/esm/index.d.ts.map +1 -0
  303. package/dist/esm/index.js +11 -0
  304. package/dist/esm/index.js.map +1 -0
  305. package/dist/esm/model/entraTokenDetails.d.ts +5 -0
  306. package/dist/esm/model/entraTokenDetails.d.ts.map +1 -0
  307. package/dist/esm/model/entraTokenDetails.js +5 -0
  308. package/dist/esm/model/entraTokenDetails.js.map +1 -0
  309. package/dist/esm/model/mptTokenDetails.d.ts +11 -0
  310. package/dist/esm/model/mptTokenDetails.d.ts.map +1 -0
  311. package/dist/esm/model/mptTokenDetails.js +10 -0
  312. package/dist/esm/model/mptTokenDetails.js.map +1 -0
  313. package/dist/esm/model/shard.d.ts +41 -0
  314. package/dist/esm/model/shard.d.ts.map +1 -0
  315. package/dist/esm/model/shard.js +19 -0
  316. package/dist/esm/model/shard.js.map +1 -0
  317. package/dist/esm/model/storageUri.d.ts +14 -0
  318. package/dist/esm/model/storageUri.d.ts.map +1 -0
  319. package/dist/esm/model/storageUri.js +18 -0
  320. package/dist/esm/model/storageUri.js.map +1 -0
  321. package/dist/esm/model/testResult.d.ts +40 -0
  322. package/dist/esm/model/testResult.d.ts.map +1 -0
  323. package/dist/esm/model/testResult.js +5 -0
  324. package/dist/esm/model/testResult.js.map +1 -0
  325. package/dist/esm/model/testRun.d.ts +36 -0
  326. package/dist/esm/model/testRun.d.ts.map +1 -0
  327. package/dist/esm/model/testRun.js +8 -0
  328. package/dist/esm/model/testRun.js.map +1 -0
  329. package/dist/esm/package.json +3 -0
  330. package/dist/esm/reporter/index.d.ts +10 -0
  331. package/dist/esm/reporter/index.d.ts.map +1 -0
  332. package/dist/esm/reporter/index.js +12 -0
  333. package/dist/esm/reporter/index.js.map +1 -0
  334. package/dist/esm/reporter/mptReporter.d.ts +100 -0
  335. package/dist/esm/reporter/mptReporter.d.ts.map +1 -0
  336. package/dist/esm/reporter/mptReporter.js +373 -0
  337. package/dist/esm/reporter/mptReporter.js.map +1 -0
  338. package/dist/esm/utils/cIInfoProvider.d.ts +25 -0
  339. package/dist/esm/utils/cIInfoProvider.d.ts.map +1 -0
  340. package/dist/esm/utils/cIInfoProvider.js +101 -0
  341. package/dist/esm/utils/cIInfoProvider.js.map +1 -0
  342. package/dist/esm/utils/getPlaywrightVersion.d.ts +2 -0
  343. package/dist/esm/utils/getPlaywrightVersion.d.ts.map +1 -0
  344. package/dist/esm/utils/getPlaywrightVersion.js +19 -0
  345. package/dist/esm/utils/getPlaywrightVersion.js.map +1 -0
  346. package/dist/esm/utils/packageManager.d.ts +15 -0
  347. package/dist/esm/utils/packageManager.d.ts.map +1 -0
  348. package/dist/esm/utils/packageManager.js +47 -0
  349. package/dist/esm/utils/packageManager.js.map +1 -0
  350. package/dist/esm/utils/parseJwt.d.ts +4 -0
  351. package/dist/esm/utils/parseJwt.d.ts.map +1 -0
  352. package/dist/esm/utils/parseJwt.js +16 -0
  353. package/dist/esm/utils/parseJwt.js.map +1 -0
  354. package/dist/esm/utils/reporterUtils.d.ts +60 -0
  355. package/dist/esm/utils/reporterUtils.d.ts.map +1 -0
  356. package/dist/esm/utils/reporterUtils.js +585 -0
  357. package/dist/esm/utils/reporterUtils.js.map +1 -0
  358. package/dist/esm/utils/serviceClient.d.ts +25 -0
  359. package/dist/esm/utils/serviceClient.d.ts.map +1 -0
  360. package/dist/esm/utils/serviceClient.js +103 -0
  361. package/dist/esm/utils/serviceClient.js.map +1 -0
  362. package/dist/esm/utils/storageClient.d.ts +6 -0
  363. package/dist/esm/utils/storageClient.d.ts.map +1 -0
  364. package/dist/esm/utils/storageClient.js +37 -0
  365. package/dist/esm/utils/storageClient.js.map +1 -0
  366. package/dist/esm/utils/utils.d.ts +28 -0
  367. package/dist/esm/utils/utils.d.ts.map +1 -0
  368. package/dist/esm/utils/utils.js +151 -0
  369. package/dist/esm/utils/utils.js.map +1 -0
  370. package/dist/react-native/common/constants.d.ts +95 -0
  371. package/dist/react-native/common/constants.d.ts.map +1 -0
  372. package/dist/react-native/common/constants.js +226 -0
  373. package/dist/react-native/common/constants.js.map +1 -0
  374. package/dist/react-native/common/customerConfig.d.ts +9 -0
  375. package/dist/react-native/common/customerConfig.d.ts.map +1 -0
  376. package/dist/react-native/common/customerConfig.js +13 -0
  377. package/dist/react-native/common/customerConfig.js.map +1 -0
  378. package/dist/react-native/common/entraIdAccessToken.d.ts +12 -0
  379. package/dist/react-native/common/entraIdAccessToken.d.ts.map +1 -0
  380. package/dist/react-native/common/entraIdAccessToken.js +71 -0
  381. package/dist/react-native/common/entraIdAccessToken.js.map +1 -0
  382. package/dist/react-native/common/environmentVariables.d.ts +13 -0
  383. package/dist/react-native/common/environmentVariables.d.ts.map +1 -0
  384. package/dist/react-native/common/environmentVariables.js +15 -0
  385. package/dist/react-native/common/environmentVariables.js.map +1 -0
  386. package/dist/react-native/common/executor.d.ts +2 -0
  387. package/dist/react-native/common/executor.d.ts.map +1 -0
  388. package/dist/react-native/common/executor.js +74 -0
  389. package/dist/react-native/common/executor.js.map +1 -0
  390. package/dist/react-native/common/httpService.d.ts +5 -0
  391. package/dist/react-native/common/httpService.d.ts.map +1 -0
  392. package/dist/react-native/common/httpService.js +33 -0
  393. package/dist/react-native/common/httpService.js.map +1 -0
  394. package/dist/react-native/common/logger.d.ts +3 -0
  395. package/dist/react-native/common/logger.d.ts.map +1 -0
  396. package/dist/react-native/common/logger.js +6 -0
  397. package/dist/react-native/common/logger.js.map +1 -0
  398. package/dist/react-native/common/messages.d.ts +35 -0
  399. package/dist/react-native/common/messages.d.ts.map +1 -0
  400. package/dist/react-native/common/messages.js +37 -0
  401. package/dist/react-native/common/messages.js.map +1 -0
  402. package/dist/react-native/common/multimap.d.ts +16 -0
  403. package/dist/react-native/common/multimap.d.ts.map +1 -0
  404. package/dist/react-native/common/multimap.js +60 -0
  405. package/dist/react-native/common/multimap.js.map +1 -0
  406. package/dist/react-native/common/playwrightServiceConfig.d.ts +13 -0
  407. package/dist/react-native/common/playwrightServiceConfig.d.ts.map +1 -0
  408. package/dist/react-native/common/playwrightServiceConfig.js +45 -0
  409. package/dist/react-native/common/playwrightServiceConfig.js.map +1 -0
  410. package/dist/react-native/common/types.d.ts +226 -0
  411. package/dist/react-native/common/types.d.ts.map +1 -0
  412. package/dist/react-native/common/types.js +4 -0
  413. package/dist/react-native/common/types.js.map +1 -0
  414. package/dist/react-native/core/global/playwright-service-global-setup.d.ts +4 -0
  415. package/dist/react-native/core/global/playwright-service-global-setup.d.ts.map +1 -0
  416. package/dist/react-native/core/global/playwright-service-global-setup.js +19 -0
  417. package/dist/react-native/core/global/playwright-service-global-setup.js.map +1 -0
  418. package/dist/react-native/core/global/playwright-service-global-teardown.d.ts +4 -0
  419. package/dist/react-native/core/global/playwright-service-global-teardown.d.ts.map +1 -0
  420. package/dist/react-native/core/global/playwright-service-global-teardown.js +19 -0
  421. package/dist/react-native/core/global/playwright-service-global-teardown.js.map +1 -0
  422. package/dist/react-native/core/playwrightService.d.ts +64 -0
  423. package/dist/react-native/core/playwrightService.d.ts.map +1 -0
  424. package/dist/react-native/core/playwrightService.js +190 -0
  425. package/dist/react-native/core/playwrightService.js.map +1 -0
  426. package/dist/react-native/core/playwrightServiceEntra.d.ts +16 -0
  427. package/dist/react-native/core/playwrightServiceEntra.d.ts.map +1 -0
  428. package/dist/react-native/core/playwrightServiceEntra.js +49 -0
  429. package/dist/react-native/core/playwrightServiceEntra.js.map +1 -0
  430. package/dist/react-native/core/playwrightServiceUtils.d.ts +3 -0
  431. package/dist/react-native/core/playwrightServiceUtils.d.ts.map +1 -0
  432. package/dist/react-native/core/playwrightServiceUtils.js +11 -0
  433. package/dist/react-native/core/playwrightServiceUtils.js.map +1 -0
  434. package/dist/react-native/index.d.ts +10 -0
  435. package/dist/react-native/index.d.ts.map +1 -0
  436. package/dist/react-native/index.js +11 -0
  437. package/dist/react-native/index.js.map +1 -0
  438. package/dist/react-native/model/entraTokenDetails.d.ts +5 -0
  439. package/dist/react-native/model/entraTokenDetails.d.ts.map +1 -0
  440. package/dist/react-native/model/entraTokenDetails.js +5 -0
  441. package/dist/react-native/model/entraTokenDetails.js.map +1 -0
  442. package/dist/react-native/model/mptTokenDetails.d.ts +11 -0
  443. package/dist/react-native/model/mptTokenDetails.d.ts.map +1 -0
  444. package/dist/react-native/model/mptTokenDetails.js +10 -0
  445. package/dist/react-native/model/mptTokenDetails.js.map +1 -0
  446. package/dist/react-native/model/shard.d.ts +41 -0
  447. package/dist/react-native/model/shard.d.ts.map +1 -0
  448. package/dist/react-native/model/shard.js +19 -0
  449. package/dist/react-native/model/shard.js.map +1 -0
  450. package/dist/react-native/model/storageUri.d.ts +14 -0
  451. package/dist/react-native/model/storageUri.d.ts.map +1 -0
  452. package/dist/react-native/model/storageUri.js +18 -0
  453. package/dist/react-native/model/storageUri.js.map +1 -0
  454. package/dist/react-native/model/testResult.d.ts +40 -0
  455. package/dist/react-native/model/testResult.d.ts.map +1 -0
  456. package/dist/react-native/model/testResult.js +5 -0
  457. package/dist/react-native/model/testResult.js.map +1 -0
  458. package/dist/react-native/model/testRun.d.ts +36 -0
  459. package/dist/react-native/model/testRun.d.ts.map +1 -0
  460. package/dist/react-native/model/testRun.js +8 -0
  461. package/dist/react-native/model/testRun.js.map +1 -0
  462. package/dist/react-native/package.json +3 -0
  463. package/dist/react-native/reporter/index.d.ts +10 -0
  464. package/dist/react-native/reporter/index.d.ts.map +1 -0
  465. package/dist/react-native/reporter/index.js +12 -0
  466. package/dist/react-native/reporter/index.js.map +1 -0
  467. package/dist/react-native/reporter/mptReporter.d.ts +100 -0
  468. package/dist/react-native/reporter/mptReporter.d.ts.map +1 -0
  469. package/dist/react-native/reporter/mptReporter.js +373 -0
  470. package/dist/react-native/reporter/mptReporter.js.map +1 -0
  471. package/dist/react-native/utils/cIInfoProvider.d.ts +25 -0
  472. package/dist/react-native/utils/cIInfoProvider.d.ts.map +1 -0
  473. package/dist/react-native/utils/cIInfoProvider.js +101 -0
  474. package/dist/react-native/utils/cIInfoProvider.js.map +1 -0
  475. package/dist/react-native/utils/getPlaywrightVersion.d.ts +2 -0
  476. package/dist/react-native/utils/getPlaywrightVersion.d.ts.map +1 -0
  477. package/dist/react-native/utils/getPlaywrightVersion.js +19 -0
  478. package/dist/react-native/utils/getPlaywrightVersion.js.map +1 -0
  479. package/dist/react-native/utils/packageManager.d.ts +15 -0
  480. package/dist/react-native/utils/packageManager.d.ts.map +1 -0
  481. package/dist/react-native/utils/packageManager.js +47 -0
  482. package/dist/react-native/utils/packageManager.js.map +1 -0
  483. package/dist/react-native/utils/parseJwt.d.ts +4 -0
  484. package/dist/react-native/utils/parseJwt.d.ts.map +1 -0
  485. package/dist/react-native/utils/parseJwt.js +16 -0
  486. package/dist/react-native/utils/parseJwt.js.map +1 -0
  487. package/dist/react-native/utils/reporterUtils.d.ts +60 -0
  488. package/dist/react-native/utils/reporterUtils.d.ts.map +1 -0
  489. package/dist/react-native/utils/reporterUtils.js +585 -0
  490. package/dist/react-native/utils/reporterUtils.js.map +1 -0
  491. package/dist/react-native/utils/serviceClient.d.ts +25 -0
  492. package/dist/react-native/utils/serviceClient.d.ts.map +1 -0
  493. package/dist/react-native/utils/serviceClient.js +103 -0
  494. package/dist/react-native/utils/serviceClient.js.map +1 -0
  495. package/dist/react-native/utils/storageClient.d.ts +6 -0
  496. package/dist/react-native/utils/storageClient.d.ts.map +1 -0
  497. package/dist/react-native/utils/storageClient.js +37 -0
  498. package/dist/react-native/utils/storageClient.js.map +1 -0
  499. package/dist/react-native/utils/utils.d.ts +28 -0
  500. package/dist/react-native/utils/utils.d.ts.map +1 -0
  501. package/dist/react-native/utils/utils.js +151 -0
  502. package/dist/react-native/utils/utils.js.map +1 -0
  503. package/package.json +73 -28
  504. package/CHANGELOG.md +0 -88
  505. package/dist/common/constants.d.ts.map +0 -1
  506. package/dist/common/constants.js.map +0 -1
  507. package/dist/common/customerConfig.d.ts.map +0 -1
  508. package/dist/common/entraIdAccessToken.d.ts.map +0 -1
  509. package/dist/common/entraIdAccessToken.js.map +0 -1
  510. package/dist/common/environmentVariables.d.ts.map +0 -1
  511. package/dist/common/environmentVariables.js.map +0 -1
  512. package/dist/common/executor.d.ts.map +0 -1
  513. package/dist/common/executor.js.map +0 -1
  514. package/dist/common/httpService.d.ts.map +0 -1
  515. package/dist/common/httpService.js.map +0 -1
  516. package/dist/common/logger.d.ts.map +0 -1
  517. package/dist/common/logger.js.map +0 -1
  518. package/dist/common/messages.d.ts.map +0 -1
  519. package/dist/common/messages.js.map +0 -1
  520. package/dist/common/multimap.d.ts.map +0 -1
  521. package/dist/common/multimap.js.map +0 -1
  522. package/dist/common/playwrightServiceConfig.d.ts.map +0 -1
  523. package/dist/common/playwrightServiceConfig.js +0 -48
  524. package/dist/common/playwrightServiceConfig.js.map +0 -1
  525. package/dist/common/types.d.ts.map +0 -1
  526. package/dist/common/types.js.map +0 -1
  527. package/dist/core/global/playwright-service-global-setup.d.ts.map +0 -1
  528. package/dist/core/global/playwright-service-global-setup.js +0 -22
  529. package/dist/core/global/playwright-service-global-setup.js.map +0 -1
  530. package/dist/core/global/playwright-service-global-teardown.d.ts.map +0 -1
  531. package/dist/core/global/playwright-service-global-teardown.js +0 -22
  532. package/dist/core/global/playwright-service-global-teardown.js.map +0 -1
  533. package/dist/core/playwrightService.d.ts.map +0 -1
  534. package/dist/core/playwrightService.js.map +0 -1
  535. package/dist/core/playwrightServiceEntra.d.ts.map +0 -1
  536. package/dist/core/playwrightServiceEntra.js.map +0 -1
  537. package/dist/index.d.ts.map +0 -1
  538. package/dist/index.js.map +0 -1
  539. package/dist/model/entraTokenDetails.d.ts.map +0 -1
  540. package/dist/model/entraTokenDetails.js.map +0 -1
  541. package/dist/model/mptTokenDetails.d.ts.map +0 -1
  542. package/dist/model/mptTokenDetails.js.map +0 -1
  543. package/dist/model/shard.d.ts.map +0 -1
  544. package/dist/model/shard.js.map +0 -1
  545. package/dist/model/storageUri.d.ts.map +0 -1
  546. package/dist/model/storageUri.js.map +0 -1
  547. package/dist/model/testResult.d.ts.map +0 -1
  548. package/dist/model/testResult.js.map +0 -1
  549. package/dist/model/testRun.d.ts.map +0 -1
  550. package/dist/model/testRun.js.map +0 -1
  551. package/dist/reporter/index.d.ts.map +0 -1
  552. package/dist/reporter/index.js.map +0 -1
  553. package/dist/reporter/mptReporter.d.ts.map +0 -1
  554. package/dist/reporter/mptReporter.js.map +0 -1
  555. package/dist/utils/cIInfoProvider.d.ts.map +0 -1
  556. package/dist/utils/cIInfoProvider.js.map +0 -1
  557. package/dist/utils/packageManager.d.ts.map +0 -1
  558. package/dist/utils/packageManager.js.map +0 -1
  559. package/dist/utils/reporterUtils.d.ts.map +0 -1
  560. package/dist/utils/reporterUtils.js.map +0 -1
  561. package/dist/utils/serviceClient.d.ts.map +0 -1
  562. package/dist/utils/serviceClient.js.map +0 -1
  563. package/dist/utils/storageClient.d.ts.map +0 -1
  564. package/dist/utils/storageClient.js.map +0 -1
  565. package/dist/utils/utils.d.ts.map +0 -1
  566. package/dist/utils/utils.js.map +0 -1
  567. /package/dist/{common → browser/common}/customerConfig.d.ts +0 -0
  568. /package/dist/{common → browser/common}/environmentVariables.d.ts +0 -0
  569. /package/dist/{common → browser/common}/executor.d.ts +0 -0
  570. /package/dist/{common → browser/common}/httpService.d.ts +0 -0
  571. /package/dist/{common → browser/common}/logger.d.ts +0 -0
  572. /package/dist/{common → browser/common}/messages.d.ts +0 -0
  573. /package/dist/{common → browser/common}/multimap.d.ts +0 -0
  574. /package/dist/{core → browser/core}/global/playwright-service-global-setup.d.ts +0 -0
  575. /package/dist/{core → browser/core}/global/playwright-service-global-teardown.d.ts +0 -0
  576. /package/dist/{core → browser/core}/playwrightServiceEntra.d.ts +0 -0
  577. /package/dist/{model → browser/model}/entraTokenDetails.d.ts +0 -0
  578. /package/dist/{model → browser/model}/mptTokenDetails.d.ts +0 -0
  579. /package/dist/{model → browser/model}/shard.d.ts +0 -0
  580. /package/dist/{model → browser/model}/storageUri.d.ts +0 -0
  581. /package/dist/{utils → browser/utils}/cIInfoProvider.d.ts +0 -0
  582. /package/dist/{utils → browser/utils}/storageClient.d.ts +0 -0
  583. /package/dist/{common → commonjs/common}/constants.js +0 -0
  584. /package/dist/{common → commonjs/common}/customerConfig.js +0 -0
  585. /package/dist/{common → commonjs/common}/logger.js +0 -0
  586. /package/dist/{common → commonjs/common}/messages.js +0 -0
  587. /package/dist/{common → commonjs/common}/multimap.js +0 -0
  588. /package/dist/{common → commonjs/common}/types.js +0 -0
  589. /package/dist/{model → commonjs/model}/entraTokenDetails.js +0 -0
  590. /package/dist/{model → commonjs/model}/mptTokenDetails.js +0 -0
  591. /package/dist/{model → commonjs/model}/shard.js +0 -0
  592. /package/dist/{model → commonjs/model}/storageUri.js +0 -0
  593. /package/dist/{model → commonjs/model}/testResult.js +0 -0
  594. /package/dist/{model → commonjs/model}/testRun.js +0 -0
  595. /package/dist/{tsdoc-metadata.json → commonjs/tsdoc-metadata.json} +0 -0
  596. /package/dist/{utils → commonjs/utils}/cIInfoProvider.js +0 -0
  597. /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":"AAAA,uCAAuC;AACvC,kCAAkC;AAUlC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,SAAS,EACT,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAMxD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAEjF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW;IA4Bf,YAAY,MAAsC;QA3B1C,iBAAY,GAAY,IAAI,CAAC;QAC7B,wBAAmB,GAAG,IAAI,CAAC;QAC3B,kBAAa,GAAY,IAAI,CAAC;QAE9B,0BAAqB,GAAY,KAAK,CAAC;QACvC,WAAM,GAAW,cAAc,CAAC,SAAS,EAAE,CAAC;QAK5C,mBAAc,GAAG,IAAI,QAAQ,EAAkB,CAAC;QAEhD,qBAAgB,GAAoB,EAAE,CAAC;QACvC,oBAAe,GAAuB,IAAI,GAAG,EAAiB,CAAC;QAC/D,kBAAa,GAAa,EAAE,CAAC;QAC7B,0BAAqB,GAAa,EAAE,CAAC;QACrC,8BAAyB,GAAa,EAAE,CAAC;QAEzC,mBAAc,GAAmB;YACvC,cAAc,EAAE,CAAC;YACjB,mBAAmB,EAAE,CAAC;YACtB,oBAAoB,EAAE,CAAC;SACxB,CAAC;QACM,eAAU,GAAW,CAAC,CAAC,CAAC;QACxB,eAAU,GAAW,EAAE,CAAC;QACxB,wBAAmB,GAAY,IAAI,CAAC;QAgBpC,6BAAwB,GAAG,CAAC,OAAe,EAAQ,EAAE;YAC3D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC;QAEM,gCAA2B,GAAG,CAAC,GAAW,EAAQ,EAAE;YAC1D,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC,CAAC;QAEM,iCAA4B,GAAG,CAAC,GAAW,EAAW,EAAE;YAC9D,OAAO,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACtD,CAAC,CAAC;QACM,4BAAuB,GAAG,CAAC,KAAuC,EAAQ,EAAE;YAClF,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClD,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5C,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC,CAAC;QAiNM,wBAAmB,GAAG,KAAK,IAAmB,EAAE;YACtD,IACE,IAAI,CAAC,MAAM,KAAK,SAAS;gBACzB,CAAC,aAAa,CAAC,qCAAqC,CAAC,IAAI,CAAC,MAAM,CAAC,EACjE,CAAC;gBACD,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;gBAC1D,cAAc,CAAC,IAAI,CACjB,oCAAoC,IAAI,CAAC,MAAM,CAAC,SAAS,gBAAgB,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,CACpG,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAzPA,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,mBAAmB,MAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;QACxD,CAAC;QACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,mBAAmB,MAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;QACxD,CAAC;IACH,CAAC;IACO,SAAS,CAAC,YAAoB;QACpC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,yBAAyB,EAAE,CAAC;YACpE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAoBD;;;;;;;OAOG;IACH,OAAO,CAAC,MAAkB,EAAE,KAAY;QACtC,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE,OAAO;QACtC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CACpC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,wBAAwB,EAC7B,IAAI,CAAC,4BAA4B,EACjC,IAAI,CAAC,2BAA2B,CACjC,CAAC;YACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,IAAc,EAAE,MAAkB;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE,OAAO;QACtC,sBAAsB;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9B,gCAAgC;QAChC,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;gBAC3D,MAAM,eAAe,GAAoB,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;gBACnE,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC/B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC;oBAChF,cAAc,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;oBAC9D,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,OAAO,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAClF,cAAc,CAAC,KAAK,CAAC,sCAAsC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,KAAK,CAAC,MAAkB;QAC5B,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,IAAI,KAAK,GAAW,CAAC,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAClD,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC9D,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;wBACvB,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;4BACjC,KAAK,EAAE,CAAC;4BACR,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;wBACtE,CAAC;wBACD,OAAO,KAAK,CAAC,MAAM,CAAC;oBACtB,CAAC,CAAC,CAAC;oBACH,cAAc,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBAC3D,OAAO,MAAM,CAAC;gBAChB,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAC1C,MAAM,EACN,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,UAAU,CAChB,CAAC;oBACF,cAAc,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;oBAEzD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBAC7B,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC9D,CAAC;oBAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBAC9D,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,OAAO,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;oBAClF,cAAc,CAAC,KAAK,CAAC,mCAAmC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,eAAe,GAAwB,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAChF,IAAI,CAAC,MAAM,CACZ,CAAC;YACF,cAAc,CAAC,IAAI,CACjB,+CAA+C,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,WAAW,GAAG,CAC/E,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sHAAsH,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAU,CAAC,SAAS,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAM,CAAC,IAAI,CAChO,CAAC;YACF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YACvE,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;YAC3B,yGAAyG;YACzG,IACE,SAAS,CAAC,wBAAwB;gBAClC,IAAI,CAAC,YAAY,CAAC,SAAS;gBAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,EACvB,CAAC;gBACD,IAAI,CAAC,UAAU,GAAG,GAAG,SAAS,CAAC,0BAA0B,eAAe,kBAAkB,CACxF,IAAI,CAAC,YAAY,CAAC,SAAS,CAC5B,SAAS,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,OAAO,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAClF,cAAc,CAAC,KAAK,CAAC,4CAA4C,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;YACjF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAAc,EAAE,MAAkB;QACzD,IAAI,CAAC;YACH,IAAI,CAAC,qBAAqB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;gBAC1D,OAAO;YACT,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,gBAAgB,GAAkB,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAC5E,IAAI,EACJ,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,OAAQ,CACrB,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC3C,kCAAkC;YAClC,MAAM,eAAe,GAAa,EAAE,CAAC;YACrC,MAAM,gBAAgB,GAAU,EAAE,CAAC;YACnC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC5C,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;oBAC5D,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBACtC,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;oBAC1C,IAAI,CAAC,cAAc,CAAC,oBAAoB,IAAI,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACzF,CAAC;qBAAM,IAAI,UAAU,CAAC,IAAI,YAAY,MAAM,EAAE,CAAC;oBAC7C,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAClC,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;oBAC1C,IAAI,CAAC,cAAc,CAAC,oBAAoB,IAAI,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC3F,CAAC;YACH,CAAC;YAED,4CAA4C;YAC5C,MAAM,aAAa,GAAkB,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;YACvF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,CAAC,4BAA4B,CAC/B,gBAAgB,CAAC,eAAe,EAChC,eAAe,EACf,gBAAgB,CACjB,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,OAAO,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAClF,cAAc,CAAC,KAAK,CAAC,sCAAsC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,CAAa;QAChC,IAAI,CAAC,qBAAqB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,oCAAoC;YACpC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBACpE,cAAc,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;gBACnE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,OAAO,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAClF,cAAc,CAAC,KAAK,CAAC,8CAA8C,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAYO,KAAK,CAAC,4BAA4B,CACxC,eAAuB,EACvB,eAAyB,EACzB,gBAAuB;;QAEvB,IAAI,CAAC;YACH,IAAI,CAAC,qBAAqB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;gBAC1D,OAAO;YACT,CAAC;YAED,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;gBAC7C,MAAM,gBAAgB,GAAG,GAAG,eAAe,IAAI,aAAa,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE,CAAC;gBACnG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACjC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;YACzF,CAAC;YAED,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;gBAC/C,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,WAAW,0CAAE,KAAK,CAAC,cAAc,CAAC,CAAC;gBAClE,MAAM,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC/D,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CACnC,IAAI,CAAC,MAAM,CAAC,GAAG,EACf,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAE,OAAe,IAAI,OAAO,CAAC,EAC1D,GAAG,eAAe,IAAI,eAAe,CAAC,IAAI,EAAE,CAC7C,CAAC;YACJ,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC/D,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CACnC,IAAI,CAAC,MAAM,CAAC,GAAG,EACf,aAAa,CAAC,CAAC,CAAE,EACjB,GAAG,eAAe,qBAAqB,CACxC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,OAAO,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAClF,cAAc,CAAC,KAAK,CAAC,iDAAiD,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,qBAAqB,CAAC,KAAK,MAAM,EAAE,CAAC;YAC/E,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,yBAAyB,CAAC,EAAE,CAAC;YACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YAC3D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,cAAc,CAAC,IAAI,CACjB,mBAAmB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,yBAAyB,CAAC,EAAE,CACzF,CAAC;QACF,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;YACxF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,4BAA4B,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAChF,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;aAAM,IAAI,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;YACzE,MAAM,MAAM,GAAG,4BAA4B,EAAE,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,MAAO,CAAC,MAAM,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,MAAO,CAAC,SAAS,CAAC;YAChD,MAAM,iBAAiB,GAAsB,aAAa,CAAC,eAAe,CACxE,IAAI,CAAC,YAAY,CAAC,WAAW,EAC7B,SAAS,CAAC,KAAK,CAChB,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC;YACjD,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,eAAe,GAAoB,aAAa,CAAC,eAAe,CACpE,IAAI,CAAC,YAAY,CAAC,WAAW,EAC7B,SAAS,CAAC,GAAG,CACd,CAAC;YACF,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC;YAClD,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC;YAC/C,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;YACtD,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,aAAa,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAU,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QACzC,IACE,IAAI,CAAC,YAAY,CAAC,MAAM;YACxB,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC;YAC/D,IAAI,CAAC,YAAY,EACjB,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uGAAuG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CACpI,IAAI,CACL,EAAE,CACJ,CAAC;YACF,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;YAC5E,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAEO,4BAA4B;QAClC,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,gDAAgD;QAC3G,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YACpD,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,MAAkB;QAC1C,IACE,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,6BAA6B,CAAC;YACvE,MAAM,CAAC,MAAM,KAAK,QAAQ,EAC1B,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAC,uBAAuB,EAAE,EAAE;oBAC3D,IAAI,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC;wBACzE,OAAO;oBACT,CAAC;oBACD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;oBACnC,IAAI,CAAC,YAAY;wBAAE,OAAO;oBAC1B,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;oBAClE,IAAI,KAAK,EAAE,CAAC;wBACV,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;wBACjE,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;oBACjE,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,aAAa;QACX,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AACD,eAAe,WAAW,CAAC","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,2 @@
1
+ export declare const getPlaywrightVersion: () => string;
2
+ //# sourceMappingURL=getPlaywrightVersion.d.ts.map
@@ -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"]}