@azure/playwright 1.1.5 → 1.1.6

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 (318) hide show
  1. package/README.md +10 -18
  2. package/dist/commonjs/common/constants.d.ts +6 -1
  3. package/dist/commonjs/common/constants.d.ts.map +1 -1
  4. package/dist/commonjs/common/constants.js +10 -1
  5. package/dist/commonjs/common/constants.js.map +1 -1
  6. package/dist/commonjs/common/messages.d.ts +4 -0
  7. package/dist/commonjs/common/messages.d.ts.map +1 -1
  8. package/dist/commonjs/common/messages.js +6 -0
  9. package/dist/commonjs/common/messages.js.map +1 -1
  10. package/dist/commonjs/common/playwrightServiceConfig.d.ts +2 -1
  11. package/dist/commonjs/common/playwrightServiceConfig.d.ts.map +1 -1
  12. package/dist/commonjs/common/playwrightServiceConfig.js +5 -0
  13. package/dist/commonjs/common/playwrightServiceConfig.js.map +1 -1
  14. package/dist/commonjs/common/types.d.ts +15 -0
  15. package/dist/commonjs/common/types.d.ts.map +1 -1
  16. package/dist/commonjs/common/types.js.map +1 -1
  17. package/dist/commonjs/core/playwrightService.d.ts.map +1 -1
  18. package/dist/commonjs/core/playwrightService.js +7 -7
  19. package/dist/commonjs/core/playwrightService.js.map +1 -1
  20. package/dist/{browser/core/playwrightServiceUtils.d.ts → commonjs/core/playwrightServiceUtils-cjs.d.ts} +1 -1
  21. package/dist/commonjs/core/playwrightServiceUtils-cjs.d.ts.map +1 -0
  22. package/dist/commonjs/core/playwrightServiceUtils-cjs.js +14 -0
  23. package/dist/commonjs/core/playwrightServiceUtils-cjs.js.map +1 -0
  24. package/dist/commonjs/index.d.ts +2 -2
  25. package/dist/commonjs/index.d.ts.map +1 -1
  26. package/dist/commonjs/index.js.map +1 -1
  27. package/dist/commonjs/reporter/playwrightReporter.d.ts.map +1 -1
  28. package/dist/commonjs/reporter/playwrightReporter.js +12 -11
  29. package/dist/commonjs/reporter/playwrightReporter.js.map +1 -1
  30. package/dist/commonjs/tsdoc-metadata.json +1 -1
  31. package/dist/{browser/utils/getPackageVersion.d.ts → commonjs/utils/getPackageVersion-cjs.d.ts} +1 -1
  32. package/dist/commonjs/utils/getPackageVersion-cjs.d.ts.map +1 -0
  33. package/dist/commonjs/utils/{getPackageVersion.js → getPackageVersion-cjs.js} +1 -1
  34. package/dist/commonjs/utils/getPackageVersion-cjs.js.map +1 -0
  35. package/dist/commonjs/utils/parseJwt.d.ts.map +1 -1
  36. package/dist/commonjs/utils/parseJwt.js +2 -3
  37. package/dist/commonjs/utils/parseJwt.js.map +1 -1
  38. package/dist/commonjs/utils/utils.d.ts +3 -2
  39. package/dist/commonjs/utils/utils.d.ts.map +1 -1
  40. package/dist/commonjs/utils/utils.js +33 -6
  41. package/dist/commonjs/utils/utils.js.map +1 -1
  42. package/dist/esm/common/constants.d.ts +6 -1
  43. package/dist/esm/common/constants.d.ts.map +1 -1
  44. package/dist/esm/common/constants.js +9 -0
  45. package/dist/esm/common/constants.js.map +1 -1
  46. package/dist/esm/common/messages.d.ts +4 -0
  47. package/dist/esm/common/messages.d.ts.map +1 -1
  48. package/dist/esm/common/messages.js +6 -0
  49. package/dist/esm/common/messages.js.map +1 -1
  50. package/dist/esm/common/playwrightServiceConfig.d.ts +2 -1
  51. package/dist/esm/common/playwrightServiceConfig.d.ts.map +1 -1
  52. package/dist/esm/common/playwrightServiceConfig.js +6 -1
  53. package/dist/esm/common/playwrightServiceConfig.js.map +1 -1
  54. package/dist/esm/common/types.d.ts +15 -0
  55. package/dist/esm/common/types.d.ts.map +1 -1
  56. package/dist/esm/common/types.js.map +1 -1
  57. package/dist/esm/core/playwrightService.d.ts.map +1 -1
  58. package/dist/esm/core/playwrightService.js +2 -2
  59. package/dist/esm/core/playwrightService.js.map +1 -1
  60. package/dist/esm/core/playwrightServiceUtils.d.ts.map +1 -1
  61. package/dist/esm/core/playwrightServiceUtils.js +4 -2
  62. package/dist/esm/core/playwrightServiceUtils.js.map +1 -1
  63. package/dist/esm/index.d.ts +2 -2
  64. package/dist/esm/index.d.ts.map +1 -1
  65. package/dist/esm/index.js.map +1 -1
  66. package/dist/esm/reporter/playwrightReporter.d.ts.map +1 -1
  67. package/dist/esm/reporter/playwrightReporter.js +13 -12
  68. package/dist/esm/reporter/playwrightReporter.js.map +1 -1
  69. package/dist/esm/utils/getPackageVersion.d.ts.map +1 -1
  70. package/dist/esm/utils/getPackageVersion.js +2 -2
  71. package/dist/esm/utils/getPackageVersion.js.map +1 -1
  72. package/dist/esm/utils/parseJwt.d.ts.map +1 -1
  73. package/dist/esm/utils/parseJwt.js +2 -3
  74. package/dist/esm/utils/parseJwt.js.map +1 -1
  75. package/dist/esm/utils/utils.d.ts +3 -2
  76. package/dist/esm/utils/utils.d.ts.map +1 -1
  77. package/dist/esm/utils/utils.js +29 -3
  78. package/dist/esm/utils/utils.js.map +1 -1
  79. package/package.json +18 -26
  80. package/dist/browser/common/constants.d.ts +0 -104
  81. package/dist/browser/common/constants.d.ts.map +0 -1
  82. package/dist/browser/common/constants.js +0 -106
  83. package/dist/browser/common/constants.js.map +0 -1
  84. package/dist/browser/common/customerConfig.d.ts +0 -8
  85. package/dist/browser/common/customerConfig.d.ts.map +0 -1
  86. package/dist/browser/common/customerConfig.js +0 -16
  87. package/dist/browser/common/customerConfig.js.map +0 -1
  88. package/dist/browser/common/entraIdAccessToken.d.ts +0 -19
  89. package/dist/browser/common/entraIdAccessToken.d.ts.map +0 -1
  90. package/dist/browser/common/entraIdAccessToken.js +0 -108
  91. package/dist/browser/common/entraIdAccessToken.js.map +0 -1
  92. package/dist/browser/common/environmentVariables.d.ts +0 -12
  93. package/dist/browser/common/environmentVariables.d.ts.map +0 -1
  94. package/dist/browser/common/environmentVariables.js +0 -22
  95. package/dist/browser/common/environmentVariables.js.map +0 -1
  96. package/dist/browser/common/executor.d.ts +0 -2
  97. package/dist/browser/common/executor.d.ts.map +0 -1
  98. package/dist/browser/common/executor.js +0 -73
  99. package/dist/browser/common/executor.js.map +0 -1
  100. package/dist/browser/common/httpService.d.ts +0 -5
  101. package/dist/browser/common/httpService.d.ts.map +0 -1
  102. package/dist/browser/common/httpService.js +0 -34
  103. package/dist/browser/common/httpService.js.map +0 -1
  104. package/dist/browser/common/logger.d.ts +0 -2
  105. package/dist/browser/common/logger.d.ts.map +0 -1
  106. package/dist/browser/common/logger.js +0 -5
  107. package/dist/browser/common/logger.js.map +0 -1
  108. package/dist/browser/common/messages.d.ts +0 -165
  109. package/dist/browser/common/messages.d.ts.map +0 -1
  110. package/dist/browser/common/messages.js +0 -167
  111. package/dist/browser/common/messages.js.map +0 -1
  112. package/dist/browser/common/playwrightServiceConfig.d.ts +0 -22
  113. package/dist/browser/common/playwrightServiceConfig.d.ts.map +0 -1
  114. package/dist/browser/common/playwrightServiceConfig.js +0 -102
  115. package/dist/browser/common/playwrightServiceConfig.js.map +0 -1
  116. package/dist/browser/common/state.d.ts +0 -2
  117. package/dist/browser/common/state.d.ts.map +0 -1
  118. package/dist/browser/common/state.js +0 -9
  119. package/dist/browser/common/state.js.map +0 -1
  120. package/dist/browser/common/types.d.ts +0 -207
  121. package/dist/browser/common/types.d.ts.map +0 -1
  122. package/dist/browser/common/types.js +0 -4
  123. package/dist/browser/common/types.js.map +0 -1
  124. package/dist/browser/core/global/playwright-service-global-setup.d.ts +0 -4
  125. package/dist/browser/core/global/playwright-service-global-setup.d.ts.map +0 -1
  126. package/dist/browser/core/global/playwright-service-global-setup.js +0 -25
  127. package/dist/browser/core/global/playwright-service-global-setup.js.map +0 -1
  128. package/dist/browser/core/global/playwright-service-global-teardown.d.ts +0 -4
  129. package/dist/browser/core/global/playwright-service-global-teardown.d.ts.map +0 -1
  130. package/dist/browser/core/global/playwright-service-global-teardown.js +0 -19
  131. package/dist/browser/core/global/playwright-service-global-teardown.js.map +0 -1
  132. package/dist/browser/core/initializePlaywrightServiceTestRun.d.ts +0 -9
  133. package/dist/browser/core/initializePlaywrightServiceTestRun.d.ts.map +0 -1
  134. package/dist/browser/core/initializePlaywrightServiceTestRun.js +0 -26
  135. package/dist/browser/core/initializePlaywrightServiceTestRun.js.map +0 -1
  136. package/dist/browser/core/playwrightService.d.ts +0 -66
  137. package/dist/browser/core/playwrightService.d.ts.map +0 -1
  138. package/dist/browser/core/playwrightService.js +0 -219
  139. package/dist/browser/core/playwrightService.js.map +0 -1
  140. package/dist/browser/core/playwrightServiceEntra.d.ts +0 -15
  141. package/dist/browser/core/playwrightServiceEntra.d.ts.map +0 -1
  142. package/dist/browser/core/playwrightServiceEntra.js +0 -53
  143. package/dist/browser/core/playwrightServiceEntra.js.map +0 -1
  144. package/dist/browser/core/playwrightServiceUtils.d.ts.map +0 -1
  145. package/dist/browser/core/playwrightServiceUtils.js +0 -13
  146. package/dist/browser/core/playwrightServiceUtils.js.map +0 -1
  147. package/dist/browser/index.d.ts +0 -10
  148. package/dist/browser/index.d.ts.map +0 -1
  149. package/dist/browser/index.js +0 -11
  150. package/dist/browser/index.js.map +0 -1
  151. package/dist/browser/package.json +0 -3
  152. package/dist/browser/reporter/index.d.ts +0 -10
  153. package/dist/browser/reporter/index.d.ts.map +0 -1
  154. package/dist/browser/reporter/index.js +0 -12
  155. package/dist/browser/reporter/index.js.map +0 -1
  156. package/dist/browser/reporter/playwrightReporter.d.ts +0 -28
  157. package/dist/browser/reporter/playwrightReporter.d.ts.map +0 -1
  158. package/dist/browser/reporter/playwrightReporter.js +0 -210
  159. package/dist/browser/reporter/playwrightReporter.js.map +0 -1
  160. package/dist/browser/utils/PlaywrightServiceClient.d.ts +0 -9
  161. package/dist/browser/utils/PlaywrightServiceClient.d.ts.map +0 -1
  162. package/dist/browser/utils/PlaywrightServiceClient.js +0 -67
  163. package/dist/browser/utils/PlaywrightServiceClient.js.map +0 -1
  164. package/dist/browser/utils/cIInfoProvider.d.ts +0 -20
  165. package/dist/browser/utils/cIInfoProvider.d.ts.map +0 -1
  166. package/dist/browser/utils/cIInfoProvider.js +0 -75
  167. package/dist/browser/utils/cIInfoProvider.js.map +0 -1
  168. package/dist/browser/utils/getPackageVersion.d.ts.map +0 -1
  169. package/dist/browser/utils/getPackageVersion.js +0 -23
  170. package/dist/browser/utils/getPackageVersion.js.map +0 -1
  171. package/dist/browser/utils/getPlaywrightVersion.d.ts +0 -2
  172. package/dist/browser/utils/getPlaywrightVersion.d.ts.map +0 -1
  173. package/dist/browser/utils/getPlaywrightVersion.js +0 -19
  174. package/dist/browser/utils/getPlaywrightVersion.js.map +0 -1
  175. package/dist/browser/utils/packageManager.d.ts +0 -15
  176. package/dist/browser/utils/packageManager.d.ts.map +0 -1
  177. package/dist/browser/utils/packageManager.js +0 -41
  178. package/dist/browser/utils/packageManager.js.map +0 -1
  179. package/dist/browser/utils/parseJwt.d.ts +0 -4
  180. package/dist/browser/utils/parseJwt.d.ts.map +0 -1
  181. package/dist/browser/utils/parseJwt.js +0 -16
  182. package/dist/browser/utils/parseJwt.js.map +0 -1
  183. package/dist/browser/utils/playwrightReporterStorageManager.d.ts +0 -13
  184. package/dist/browser/utils/playwrightReporterStorageManager.d.ts.map +0 -1
  185. package/dist/browser/utils/playwrightReporterStorageManager.js +0 -452
  186. package/dist/browser/utils/playwrightReporterStorageManager.js.map +0 -1
  187. package/dist/browser/utils/utils.d.ts +0 -57
  188. package/dist/browser/utils/utils.d.ts.map +0 -1
  189. package/dist/browser/utils/utils.js +0 -392
  190. package/dist/browser/utils/utils.js.map +0 -1
  191. package/dist/commonjs/common/environmentVariables.d.ts +0 -12
  192. package/dist/commonjs/common/environmentVariables.d.ts.map +0 -1
  193. package/dist/commonjs/common/environmentVariables.js +0 -26
  194. package/dist/commonjs/common/environmentVariables.js.map +0 -1
  195. package/dist/commonjs/core/playwrightServiceUtils.d.ts +0 -5
  196. package/dist/commonjs/core/playwrightServiceUtils.d.ts.map +0 -1
  197. package/dist/commonjs/core/playwrightServiceUtils.js +0 -12
  198. package/dist/commonjs/core/playwrightServiceUtils.js.map +0 -1
  199. package/dist/commonjs/utils/getPackageVersion.d.ts +0 -2
  200. package/dist/commonjs/utils/getPackageVersion.d.ts.map +0 -1
  201. package/dist/commonjs/utils/getPackageVersion.js.map +0 -1
  202. package/dist/esm/common/environmentVariables.d.ts +0 -12
  203. package/dist/esm/common/environmentVariables.d.ts.map +0 -1
  204. package/dist/esm/common/environmentVariables.js +0 -22
  205. package/dist/esm/common/environmentVariables.js.map +0 -1
  206. package/dist/react-native/common/constants.d.ts +0 -104
  207. package/dist/react-native/common/constants.d.ts.map +0 -1
  208. package/dist/react-native/common/constants.js +0 -106
  209. package/dist/react-native/common/constants.js.map +0 -1
  210. package/dist/react-native/common/customerConfig.d.ts +0 -8
  211. package/dist/react-native/common/customerConfig.d.ts.map +0 -1
  212. package/dist/react-native/common/customerConfig.js +0 -16
  213. package/dist/react-native/common/customerConfig.js.map +0 -1
  214. package/dist/react-native/common/entraIdAccessToken.d.ts +0 -19
  215. package/dist/react-native/common/entraIdAccessToken.d.ts.map +0 -1
  216. package/dist/react-native/common/entraIdAccessToken.js +0 -108
  217. package/dist/react-native/common/entraIdAccessToken.js.map +0 -1
  218. package/dist/react-native/common/environmentVariables.d.ts +0 -12
  219. package/dist/react-native/common/environmentVariables.d.ts.map +0 -1
  220. package/dist/react-native/common/environmentVariables.js +0 -22
  221. package/dist/react-native/common/environmentVariables.js.map +0 -1
  222. package/dist/react-native/common/executor.d.ts +0 -2
  223. package/dist/react-native/common/executor.d.ts.map +0 -1
  224. package/dist/react-native/common/executor.js +0 -73
  225. package/dist/react-native/common/executor.js.map +0 -1
  226. package/dist/react-native/common/httpService.d.ts +0 -5
  227. package/dist/react-native/common/httpService.d.ts.map +0 -1
  228. package/dist/react-native/common/httpService.js +0 -34
  229. package/dist/react-native/common/httpService.js.map +0 -1
  230. package/dist/react-native/common/logger.d.ts +0 -2
  231. package/dist/react-native/common/logger.d.ts.map +0 -1
  232. package/dist/react-native/common/logger.js +0 -5
  233. package/dist/react-native/common/logger.js.map +0 -1
  234. package/dist/react-native/common/messages.d.ts +0 -165
  235. package/dist/react-native/common/messages.d.ts.map +0 -1
  236. package/dist/react-native/common/messages.js +0 -167
  237. package/dist/react-native/common/messages.js.map +0 -1
  238. package/dist/react-native/common/playwrightServiceConfig.d.ts +0 -22
  239. package/dist/react-native/common/playwrightServiceConfig.d.ts.map +0 -1
  240. package/dist/react-native/common/playwrightServiceConfig.js +0 -102
  241. package/dist/react-native/common/playwrightServiceConfig.js.map +0 -1
  242. package/dist/react-native/common/state.d.ts +0 -2
  243. package/dist/react-native/common/state.d.ts.map +0 -1
  244. package/dist/react-native/common/state.js +0 -9
  245. package/dist/react-native/common/state.js.map +0 -1
  246. package/dist/react-native/common/types.d.ts +0 -207
  247. package/dist/react-native/common/types.d.ts.map +0 -1
  248. package/dist/react-native/common/types.js +0 -4
  249. package/dist/react-native/common/types.js.map +0 -1
  250. package/dist/react-native/core/global/playwright-service-global-setup.d.ts +0 -4
  251. package/dist/react-native/core/global/playwright-service-global-setup.d.ts.map +0 -1
  252. package/dist/react-native/core/global/playwright-service-global-setup.js +0 -25
  253. package/dist/react-native/core/global/playwright-service-global-setup.js.map +0 -1
  254. package/dist/react-native/core/global/playwright-service-global-teardown.d.ts +0 -4
  255. package/dist/react-native/core/global/playwright-service-global-teardown.d.ts.map +0 -1
  256. package/dist/react-native/core/global/playwright-service-global-teardown.js +0 -19
  257. package/dist/react-native/core/global/playwright-service-global-teardown.js.map +0 -1
  258. package/dist/react-native/core/initializePlaywrightServiceTestRun.d.ts +0 -9
  259. package/dist/react-native/core/initializePlaywrightServiceTestRun.d.ts.map +0 -1
  260. package/dist/react-native/core/initializePlaywrightServiceTestRun.js +0 -26
  261. package/dist/react-native/core/initializePlaywrightServiceTestRun.js.map +0 -1
  262. package/dist/react-native/core/playwrightService.d.ts +0 -66
  263. package/dist/react-native/core/playwrightService.d.ts.map +0 -1
  264. package/dist/react-native/core/playwrightService.js +0 -219
  265. package/dist/react-native/core/playwrightService.js.map +0 -1
  266. package/dist/react-native/core/playwrightServiceEntra.d.ts +0 -15
  267. package/dist/react-native/core/playwrightServiceEntra.d.ts.map +0 -1
  268. package/dist/react-native/core/playwrightServiceEntra.js +0 -53
  269. package/dist/react-native/core/playwrightServiceEntra.js.map +0 -1
  270. package/dist/react-native/core/playwrightServiceUtils.d.ts +0 -5
  271. package/dist/react-native/core/playwrightServiceUtils.d.ts.map +0 -1
  272. package/dist/react-native/core/playwrightServiceUtils.js +0 -13
  273. package/dist/react-native/core/playwrightServiceUtils.js.map +0 -1
  274. package/dist/react-native/index.d.ts +0 -10
  275. package/dist/react-native/index.d.ts.map +0 -1
  276. package/dist/react-native/index.js +0 -11
  277. package/dist/react-native/index.js.map +0 -1
  278. package/dist/react-native/package.json +0 -3
  279. package/dist/react-native/reporter/index.d.ts +0 -10
  280. package/dist/react-native/reporter/index.d.ts.map +0 -1
  281. package/dist/react-native/reporter/index.js +0 -12
  282. package/dist/react-native/reporter/index.js.map +0 -1
  283. package/dist/react-native/reporter/playwrightReporter.d.ts +0 -28
  284. package/dist/react-native/reporter/playwrightReporter.d.ts.map +0 -1
  285. package/dist/react-native/reporter/playwrightReporter.js +0 -210
  286. package/dist/react-native/reporter/playwrightReporter.js.map +0 -1
  287. package/dist/react-native/utils/PlaywrightServiceClient.d.ts +0 -9
  288. package/dist/react-native/utils/PlaywrightServiceClient.d.ts.map +0 -1
  289. package/dist/react-native/utils/PlaywrightServiceClient.js +0 -67
  290. package/dist/react-native/utils/PlaywrightServiceClient.js.map +0 -1
  291. package/dist/react-native/utils/cIInfoProvider.d.ts +0 -20
  292. package/dist/react-native/utils/cIInfoProvider.d.ts.map +0 -1
  293. package/dist/react-native/utils/cIInfoProvider.js +0 -75
  294. package/dist/react-native/utils/cIInfoProvider.js.map +0 -1
  295. package/dist/react-native/utils/getPackageVersion.d.ts +0 -2
  296. package/dist/react-native/utils/getPackageVersion.d.ts.map +0 -1
  297. package/dist/react-native/utils/getPackageVersion.js +0 -23
  298. package/dist/react-native/utils/getPackageVersion.js.map +0 -1
  299. package/dist/react-native/utils/getPlaywrightVersion.d.ts +0 -2
  300. package/dist/react-native/utils/getPlaywrightVersion.d.ts.map +0 -1
  301. package/dist/react-native/utils/getPlaywrightVersion.js +0 -19
  302. package/dist/react-native/utils/getPlaywrightVersion.js.map +0 -1
  303. package/dist/react-native/utils/packageManager.d.ts +0 -15
  304. package/dist/react-native/utils/packageManager.d.ts.map +0 -1
  305. package/dist/react-native/utils/packageManager.js +0 -41
  306. package/dist/react-native/utils/packageManager.js.map +0 -1
  307. package/dist/react-native/utils/parseJwt.d.ts +0 -4
  308. package/dist/react-native/utils/parseJwt.d.ts.map +0 -1
  309. package/dist/react-native/utils/parseJwt.js +0 -16
  310. package/dist/react-native/utils/parseJwt.js.map +0 -1
  311. package/dist/react-native/utils/playwrightReporterStorageManager.d.ts +0 -13
  312. package/dist/react-native/utils/playwrightReporterStorageManager.d.ts.map +0 -1
  313. package/dist/react-native/utils/playwrightReporterStorageManager.js +0 -452
  314. package/dist/react-native/utils/playwrightReporterStorageManager.js.map +0 -1
  315. package/dist/react-native/utils/utils.d.ts +0 -57
  316. package/dist/react-native/utils/utils.d.ts.map +0 -1
  317. package/dist/react-native/utils/utils.js +0 -392
  318. package/dist/react-native/utils/utils.js.map +0 -1
@@ -1,392 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
- import { Constants, InternalEnvironmentVariables, ServiceEnvironmentVariable, RunConfigConstants, GitHubActionsConstants, BrowserSessionSourceType, UrlConstants, UploadConstants, } from "../common/constants.js";
4
- import { ServiceErrorMessageConstants } from "../common/messages.js";
5
- import { coreLogger } from "../common/logger.js";
6
- import process from "node:process";
7
- import { randomUUID } from "node:crypto";
8
- import { parseJwt } from "./parseJwt.js";
9
- import { getPlaywrightVersion } from "./getPlaywrightVersion.js";
10
- import { createEntraIdAccessToken } from "../common/entraIdAccessToken.js";
11
- import { CI_PROVIDERS } from "./cIInfoProvider.js";
12
- import { exec } from "child_process";
13
- import { getPackageVersionFromFolder } from "./getPackageVersion.js";
14
- import { readdirSync, statSync } from "fs";
15
- import { join, relative } from "path";
16
- // Re-exporting for backward compatibility
17
- export { getPlaywrightVersion } from "./getPlaywrightVersion.js";
18
- export { parseJwt } from "./parseJwt.js";
19
- export const getPackageVersion = () => {
20
- // hacky way to get package version
21
- // try from dist folder first (customer perspective)
22
- const distVersion = getPackageVersionFromFolder("../../../");
23
- if (distVersion) {
24
- return distVersion;
25
- }
26
- // if not found, try from src folder (internal test suite)
27
- const srcVersion = getPackageVersionFromFolder("../../");
28
- if (srcVersion) {
29
- return srcVersion;
30
- }
31
- return "unknown-version";
32
- };
33
- export const exitWithFailureMessage = (error, errorDetails) => {
34
- console.log();
35
- if (error.formatWithErrorDetails && errorDetails) {
36
- console.error(error.formatWithErrorDetails(errorDetails));
37
- }
38
- else {
39
- console.error(error.message);
40
- }
41
- // eslint-disable-next-line n/no-process-exit
42
- process.exit(1);
43
- };
44
- export const throwErrorWithFailureMessage = (error, errorDetails) => {
45
- console.log();
46
- const finalMessage = error.formatWithErrorDetails && errorDetails
47
- ? error.formatWithErrorDetails(errorDetails)
48
- : error.message;
49
- throw new Error(finalMessage);
50
- };
51
- export const populateValuesFromServiceUrl = () => {
52
- // Service URL format: wss://<region>.api.playwright.microsoft.com/accounts/<workspace-id>/browsers
53
- const url = process.env["PLAYWRIGHT_SERVICE_URL"];
54
- if (url) {
55
- const parts = url.split("/");
56
- if (parts.length > 2) {
57
- const subdomainParts = parts[2].split(".");
58
- const region = subdomainParts.length > 0 ? subdomainParts[0] : null;
59
- const domain = subdomainParts.slice(2).join(".");
60
- const accountId = parts[4];
61
- return { region: region, domain: domain, accountId: accountId };
62
- }
63
- }
64
- return null;
65
- };
66
- export const getAccessToken = () => {
67
- return process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN];
68
- };
69
- export const getServiceBaseURL = () => {
70
- return process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_URL];
71
- };
72
- export const isValidGuid = (guid) => {
73
- if (!guid) {
74
- return false;
75
- }
76
- const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
77
- return guidRegex.test(guid);
78
- };
79
- export const getAndSetRunId = () => {
80
- const runId = randomUUID();
81
- process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID] = runId;
82
- return runId;
83
- };
84
- export const getServiceWSEndpoint = (runId, os, apiVersion) => {
85
- return `${getServiceBaseURL()}?runId=${encodeURIComponent(runId)}&os=${os}&sourceType=${BrowserSessionSourceType.PLAYWRIGHT_WORKSPACES_TEST_RUN}&api-version=${apiVersion}`;
86
- };
87
- export const validateServiceUrl = () => {
88
- const serviceUrl = getServiceBaseURL();
89
- if (!serviceUrl) {
90
- exitWithFailureMessage(ServiceErrorMessageConstants.NO_SERVICE_URL_ERROR);
91
- }
92
- };
93
- export const ValidateRunID = (runID) => {
94
- const isValidRunID = isValidGuid(runID);
95
- if (!isValidRunID) {
96
- const errorMessage = ServiceErrorMessageConstants.INVALID_RUN_ID_FORMAT.message;
97
- throw new Error(errorMessage);
98
- }
99
- };
100
- export const validateMptPAT = (validationFailureCallback) => {
101
- try {
102
- const accessToken = getAccessToken();
103
- const result = populateValuesFromServiceUrl();
104
- if (!accessToken) {
105
- validationFailureCallback(ServiceErrorMessageConstants.NO_AUTH_ERROR_PAT_TOKEN);
106
- }
107
- const claims = parseJwt(accessToken);
108
- if (!claims.exp) {
109
- validationFailureCallback(ServiceErrorMessageConstants.INVALID_MPT_PAT_ERROR);
110
- }
111
- if (Date.now() >= claims.exp * 1000) {
112
- validationFailureCallback(ServiceErrorMessageConstants.EXPIRED_MPT_PAT_ERROR);
113
- }
114
- if (result.accountId !== claims.pwid) {
115
- validationFailureCallback(ServiceErrorMessageConstants.WORKSPACE_MISMATCH_ERROR);
116
- }
117
- }
118
- catch (err) {
119
- coreLogger.error(err);
120
- exitWithFailureMessage(ServiceErrorMessageConstants.INVALID_MPT_PAT_ERROR);
121
- }
122
- };
123
- const isTokenExpiringSoon = (expirationTime, currentTime) => {
124
- return expirationTime * 1000 - currentTime <= Constants.SevenDaysInMS;
125
- };
126
- const warnAboutTokenExpiry = (expirationTime, currentTime) => {
127
- const daysToExpiration = Math.ceil((expirationTime * 1000 - currentTime) / Constants.OneDayInMS);
128
- const expirationDate = new Date(expirationTime * 1000).toLocaleDateString();
129
- const expirationWarning = `Warning: The access token used for this test run will expire in ${daysToExpiration} days on ${expirationDate}. Generate a new token from the portal to avoid failures. For a simpler, more secure solution, switch to Microsoft Entra ID and eliminate token management. https://learn.microsoft.com/entra/identity/`;
130
- console.warn(expirationWarning);
131
- };
132
- export const warnIfAccessTokenCloseToExpiry = () => {
133
- const accessToken = getAccessToken();
134
- if (!accessToken) {
135
- throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_PAT_TOKEN.message);
136
- }
137
- const claims = parseJwt(accessToken);
138
- const currentTime = Date.now();
139
- if (isTokenExpiringSoon(claims.exp, currentTime)) {
140
- warnAboutTokenExpiry(claims.exp, currentTime);
141
- }
142
- };
143
- export const fetchOrValidateAccessToken = async (credential) => {
144
- const entraIdAccessToken = createEntraIdAccessToken(credential);
145
- // Fetch a token or refresh if needed in a single call
146
- if (entraIdAccessToken.doesEntraIdAccessTokenNeedRotation()) {
147
- await entraIdAccessToken.fetchEntraIdAccessToken();
148
- }
149
- const token = getAccessToken();
150
- if (!token) {
151
- throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_ENTRA_TOKEN.message);
152
- }
153
- return token;
154
- };
155
- export const getVersionInfo = (version) => {
156
- const regex = /^(\d+)(?:\.(\d+))?(?:\.(\d+))?/;
157
- const match = version.match(regex);
158
- const versionInfo = {
159
- major: 0,
160
- minor: 0,
161
- patch: 0,
162
- };
163
- versionInfo.major = match && match[1] ? parseInt(match[1], 10) : 0;
164
- versionInfo.minor = match && match[2] ? parseInt(match[2], 10) : 0;
165
- versionInfo.patch = match && match[3] ? parseInt(match[3], 10) : 0;
166
- return versionInfo;
167
- };
168
- export const validatePlaywrightVersion = () => {
169
- const minimumSupportedVersion = Constants.MinimumSupportedPlaywrightVersion;
170
- const installedVersion = getPlaywrightVersion();
171
- const minimumSupportedVersionInfo = getVersionInfo(minimumSupportedVersion);
172
- const installedVersionInfo = getVersionInfo(installedVersion);
173
- const isInstalledVersionGreater = installedVersionInfo.major > minimumSupportedVersionInfo.major ||
174
- (installedVersionInfo.major === minimumSupportedVersionInfo.major &&
175
- installedVersionInfo.minor >= minimumSupportedVersionInfo.minor);
176
- if (!isInstalledVersionGreater) {
177
- exitWithFailureMessage(ServiceErrorMessageConstants.INVALID_PLAYWRIGHT_VERSION_ERROR);
178
- }
179
- };
180
- export const getTestRunConfig = (config) => {
181
- const maxWorkers = config.workers || config.metadata.actualWorkers;
182
- const frameWorkVersion = config.version;
183
- const testRunConfig = {
184
- framework: {
185
- name: RunConfigConstants.TEST_FRAMEWORK_NAME,
186
- version: frameWorkVersion,
187
- runnerName: RunConfigConstants.TEST_FRAMEWORK_RUNNERNAME,
188
- },
189
- sdkLanguage: RunConfigConstants.TEST_SDK_LANGUAGE,
190
- maxWorkers: maxWorkers,
191
- };
192
- return testRunConfig;
193
- };
194
- export function getTestRunApiUrl() {
195
- const result = populateValuesFromServiceUrl();
196
- const runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID];
197
- if (!result?.region || !result?.domain || !result?.accountId) {
198
- exitWithFailureMessage(ServiceErrorMessageConstants.NO_SERVICE_URL_ERROR);
199
- }
200
- const baseUrl = `https://${result?.region}.${UrlConstants.ReportingApiSubdomain}.${result?.domain}/${UrlConstants.PlaywrightWorkspacesPath}/${result?.accountId}/${UrlConstants.TestRunsPath}`;
201
- const url = runId ? `${baseUrl}/${runId}` : baseUrl;
202
- return `${url}?api-version=${Constants.LatestAPIVersion}`;
203
- }
204
- export function isNullOrEmpty(str) {
205
- return !str || str.trim() === "";
206
- }
207
- async function runCommand(command) {
208
- return new Promise((resolve, reject) => {
209
- exec(command, (error, stdout, stderr) => {
210
- if (error) {
211
- reject(error);
212
- return;
213
- }
214
- if (stderr) {
215
- reject(new Error(stderr));
216
- return;
217
- }
218
- resolve(stdout.trim());
219
- });
220
- });
221
- }
222
- export async function getRunName(ciInfo) {
223
- if (ciInfo.providerName === CI_PROVIDERS.GITHUB &&
224
- process.env["GITHUB_EVENT_NAME"] === "pull_request") {
225
- const prNumber = `${process.env["GITHUB_REF_NAME"]?.split("/")[0]}`;
226
- const prLink = `${process.env["GITHUB_REPOSITORY"]}/pull/${prNumber}`;
227
- return `PR# ${prNumber} on Repo: ${process.env["GITHUB_REPOSITORY"]} (${prLink})`;
228
- }
229
- try {
230
- const gitVersion = await runCommand(GitHubActionsConstants.GIT_VERSION_COMMAND);
231
- if (isNullOrEmpty(gitVersion)) {
232
- throw new Error("Git is not installed on the machine");
233
- }
234
- const isInsideWorkTree = await runCommand(GitHubActionsConstants.GIT_REV_PARSE);
235
- if (isInsideWorkTree !== "true") {
236
- throw new Error("Not inside a git repository");
237
- }
238
- const gitCommitMessage = await runCommand(GitHubActionsConstants.GIT_COMMIT_MESSAGE_COMMAND);
239
- return gitCommitMessage;
240
- }
241
- catch (err) {
242
- coreLogger.error(`Error in getting git commit message: ${err}.`);
243
- return "";
244
- }
245
- }
246
- export function extractErrorMessage(responseBody) {
247
- if (!responseBody) {
248
- return "";
249
- }
250
- try {
251
- const errorResponse = JSON.parse(responseBody);
252
- if (errorResponse.error && errorResponse.error.message) {
253
- return errorResponse.error.message;
254
- }
255
- return responseBody;
256
- }
257
- catch (e) {
258
- return responseBody;
259
- }
260
- }
261
- export function getWorkspaceMetaDataApiUrl() {
262
- const result = populateValuesFromServiceUrl();
263
- if (!result?.region || !result?.domain || !result?.accountId) {
264
- exitWithFailureMessage(ServiceErrorMessageConstants.NO_SERVICE_URL_ERROR);
265
- }
266
- const baseUrl = `https://${result?.region}.${UrlConstants.ApiSubdomain}.${result?.domain}/${UrlConstants.PlaywrightWorkspacesPath}/${result?.accountId}`;
267
- return `${baseUrl}?api-version=${Constants.LatestAPIVersion}`;
268
- }
269
- export function getHtmlReporterOutputFolder(config) {
270
- const defaultFolder = "playwright-report";
271
- if (!config?.reporter) {
272
- return defaultFolder;
273
- }
274
- for (const reporter of config.reporter) {
275
- if (Array.isArray(reporter)) {
276
- const [reporterName, options] = reporter;
277
- if (reporterName === "html" && options && typeof options === "object") {
278
- return options.outputFolder || defaultFolder;
279
- }
280
- }
281
- else if (typeof reporter === "string" && reporter === "html") {
282
- return defaultFolder;
283
- }
284
- }
285
- return defaultFolder;
286
- }
287
- export function getContentType(filePath) {
288
- const ext = filePath.toLowerCase().split(".").pop();
289
- const contentTypes = {
290
- html: "text/html",
291
- css: "text/css",
292
- js: "application/javascript",
293
- json: "application/json",
294
- png: "image/png",
295
- jpg: "image/jpeg",
296
- jpeg: "image/jpeg",
297
- svg: "image/svg+xml",
298
- ico: "image/x-icon",
299
- txt: "text/plain",
300
- ttf: "font/ttf",
301
- woff: "font/woff",
302
- woff2: "font/woff2",
303
- webmanifest: "application/manifest+json",
304
- map: "application/json",
305
- xml: "application/xml",
306
- pdf: "application/pdf",
307
- zip: "application/zip",
308
- };
309
- return contentTypes[ext || ""] || "application/octet-stream";
310
- }
311
- export function calculateOptimalConcurrency(files) {
312
- const totalFiles = files.length;
313
- const totalSize = files.reduce((sum, f) => sum + f.size, 0);
314
- const avgFileSize = totalSize / totalFiles;
315
- let optimalConcurrency;
316
- if (totalFiles <= 10) {
317
- optimalConcurrency = Math.min(totalFiles, 10);
318
- }
319
- else if (avgFileSize < UploadConstants.SMALL_FILE_THRESHOLD) {
320
- optimalConcurrency = Math.min(UploadConstants.MAX_CONCURRENCY, Math.max(UploadConstants.BASE_CONCURRENCY, totalFiles / 50));
321
- }
322
- else if (totalFiles > 1000) {
323
- optimalConcurrency = Math.min(UploadConstants.MAX_CONCURRENCY, UploadConstants.BASE_CONCURRENCY + Math.floor(totalFiles / 200));
324
- }
325
- else {
326
- optimalConcurrency = Math.min(UploadConstants.MAX_CONCURRENCY, UploadConstants.BASE_CONCURRENCY);
327
- }
328
- return Math.floor(optimalConcurrency);
329
- }
330
- export function collectAllFiles(folderPath, basePath, runIdFolderPrefix) {
331
- const files = [];
332
- const stack = [folderPath];
333
- while (stack.length > 0) {
334
- const currentPath = stack.pop();
335
- try {
336
- const items = readdirSync(currentPath);
337
- for (const item of items) {
338
- const itemPath = join(currentPath, item);
339
- const stats = statSync(itemPath);
340
- if (stats.isDirectory()) {
341
- stack.push(itemPath);
342
- }
343
- else {
344
- let relativePath = relative(basePath, itemPath).split("\\").join("/");
345
- if (runIdFolderPrefix) {
346
- relativePath = `${runIdFolderPrefix}/${relativePath}`;
347
- }
348
- files.push({
349
- fullPath: itemPath,
350
- relativePath,
351
- size: stats.size,
352
- contentType: getContentType(itemPath),
353
- });
354
- }
355
- }
356
- }
357
- catch (error) {
358
- continue;
359
- }
360
- }
361
- return files;
362
- }
363
- export function getPortalTestRunUrl(resourceId) {
364
- if (!resourceId) {
365
- throw new Error("Missing required parameter: resourceId is required");
366
- }
367
- const runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID];
368
- if (!runId) {
369
- throw new Error("Run ID is required but not found in environment variables");
370
- }
371
- return `${UrlConstants.AzurePortalBaseUrl}/${UrlConstants.TestReportViewPath}/testRunId/${encodeURIComponent(runId)}/resourceId/${encodeURIComponent(resourceId)}`;
372
- }
373
- export const getStorageAccountNameFromUri = (storageUri) => {
374
- try {
375
- if (!storageUri || typeof storageUri !== "string") {
376
- return null;
377
- }
378
- const url = new URL(storageUri);
379
- const hostname = url.hostname;
380
- // Extract storage account name from hostname pattern: {accountname}.blob.core.windows.net
381
- const match = hostname.match(/^([^.]+)\.blob\.core\.windows\.net$/i);
382
- if (match && match[1]) {
383
- return match[1];
384
- }
385
- return null;
386
- }
387
- catch (error) {
388
- console.warn("Failed to extract storage account name from URI:", storageUri, error);
389
- return null;
390
- }
391
- };
392
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessTokenClaims, VersionInfo, JwtPayload, RunConfig } from \"../common/types.js\";\nimport {\n Constants,\n InternalEnvironmentVariables,\n ServiceEnvironmentVariable,\n RunConfigConstants,\n GitHubActionsConstants,\n BrowserSessionSourceType,\n UrlConstants,\n UploadConstants,\n} from \"../common/constants.js\";\nimport { ServiceErrorMessageConstants } from \"../common/messages.js\";\nimport { coreLogger } from \"../common/logger.js\";\nimport type { TokenCredential } from \"@azure/core-auth\";\nimport process from \"node:process\";\nimport { randomUUID } from \"node:crypto\";\nimport { parseJwt } from \"./parseJwt.js\";\nimport { getPlaywrightVersion } from \"./getPlaywrightVersion.js\";\nimport { createEntraIdAccessToken } from \"../common/entraIdAccessToken.js\";\nimport type { FullConfig } from \"@playwright/test\";\nimport type { CIInfo } from \"./cIInfoProvider.js\";\nimport { CI_PROVIDERS } from \"./cIInfoProvider.js\";\nimport { exec } from \"child_process\";\nimport { getPackageVersionFromFolder } from \"./getPackageVersion.js\";\nimport { readdirSync, statSync } from \"fs\";\nimport { join, relative } from \"path\";\n\n// Re-exporting for backward compatibility\nexport { getPlaywrightVersion } from \"./getPlaywrightVersion.js\";\nexport { parseJwt } from \"./parseJwt.js\";\n\nexport const getPackageVersion = (): string => {\n // hacky way to get package version\n // try from dist folder first (customer perspective)\n const distVersion = getPackageVersionFromFolder(\"../../../\");\n if (distVersion) {\n return distVersion;\n }\n // if not found, try from src folder (internal test suite)\n const srcVersion = getPackageVersionFromFolder(\"../../\");\n if (srcVersion) {\n return srcVersion;\n }\n return \"unknown-version\";\n};\n\nexport const exitWithFailureMessage = (\n error: {\n key: string;\n message: string;\n formatWithErrorDetails?: (errorDetails: string) => string;\n },\n errorDetails?: string,\n): never => {\n console.log();\n\n if (error.formatWithErrorDetails && errorDetails) {\n console.error(error.formatWithErrorDetails(errorDetails));\n } else {\n console.error(error.message);\n }\n // eslint-disable-next-line n/no-process-exit\n process.exit(1);\n};\n\nexport const throwErrorWithFailureMessage = (\n error: {\n key: string;\n message: string;\n formatWithErrorDetails?: (errorDetails: string) => string;\n },\n errorDetails?: string,\n): never => {\n console.log();\n\n const finalMessage =\n error.formatWithErrorDetails && errorDetails\n ? error.formatWithErrorDetails(errorDetails)\n : error.message;\n\n throw new Error(finalMessage);\n};\n\nexport const populateValuesFromServiceUrl = (): {\n region: string;\n domain: string;\n accountId: string;\n} | null => {\n // Service URL format: wss://<region>.api.playwright.microsoft.com/accounts/<workspace-id>/browsers\n const url = process.env[\"PLAYWRIGHT_SERVICE_URL\"]!;\n if (url) {\n const parts = url.split(\"/\");\n\n if (parts.length > 2) {\n const subdomainParts = parts[2]!.split(\".\");\n const region = subdomainParts.length > 0 ? subdomainParts[0] : null;\n const domain = subdomainParts.slice(2).join(\".\");\n const accountId = parts[4];\n\n return { region: region!, domain: domain!, accountId: accountId! };\n }\n }\n return null;\n};\n\nexport const getAccessToken = (): string | undefined => {\n return process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN];\n};\n\nexport const getServiceBaseURL = (): string | undefined => {\n return process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_URL];\n};\n\nexport const isValidGuid = (guid: string | null | undefined): boolean => {\n if (!guid) {\n return false;\n }\n const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n return guidRegex.test(guid);\n};\n\nexport const getAndSetRunId = (): string => {\n const runId = randomUUID();\n process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID] = runId;\n return runId;\n};\n\nexport const getServiceWSEndpoint = (runId: string, os: string, apiVersion: string): string => {\n return `${getServiceBaseURL()}?runId=${encodeURIComponent(runId)}&os=${os}&sourceType=${BrowserSessionSourceType.PLAYWRIGHT_WORKSPACES_TEST_RUN}&api-version=${apiVersion}`;\n};\n\nexport const validateServiceUrl = (): void => {\n const serviceUrl = getServiceBaseURL();\n if (!serviceUrl) {\n exitWithFailureMessage(ServiceErrorMessageConstants.NO_SERVICE_URL_ERROR);\n }\n};\n\nexport const ValidateRunID = (runID: string): void => {\n const isValidRunID = isValidGuid(runID);\n if (!isValidRunID) {\n const errorMessage = ServiceErrorMessageConstants.INVALID_RUN_ID_FORMAT.message;\n throw new Error(errorMessage);\n }\n};\nexport const validateMptPAT = (\n validationFailureCallback: (error: { key: string; message: string }) => void,\n): void => {\n try {\n const accessToken = getAccessToken();\n const result = populateValuesFromServiceUrl();\n if (!accessToken) {\n validationFailureCallback(ServiceErrorMessageConstants.NO_AUTH_ERROR_PAT_TOKEN);\n }\n const claims = parseJwt<Partial<AccessTokenClaims>>(accessToken!);\n if (!claims.exp) {\n validationFailureCallback(ServiceErrorMessageConstants.INVALID_MPT_PAT_ERROR);\n }\n if (Date.now() >= claims.exp! * 1000) {\n validationFailureCallback(ServiceErrorMessageConstants.EXPIRED_MPT_PAT_ERROR);\n }\n if (result!.accountId !== claims!.pwid) {\n validationFailureCallback(ServiceErrorMessageConstants.WORKSPACE_MISMATCH_ERROR);\n }\n } catch (err) {\n coreLogger.error(err);\n exitWithFailureMessage(ServiceErrorMessageConstants.INVALID_MPT_PAT_ERROR);\n }\n};\nconst isTokenExpiringSoon = (expirationTime: number, currentTime: number): boolean => {\n return expirationTime * 1000 - currentTime <= Constants.SevenDaysInMS;\n};\n\nconst warnAboutTokenExpiry = (expirationTime: number, currentTime: number): void => {\n const daysToExpiration = Math.ceil((expirationTime * 1000 - currentTime) / Constants.OneDayInMS);\n const expirationDate = new Date(expirationTime * 1000).toLocaleDateString();\n const expirationWarning = `Warning: The access token used for this test run will expire in ${daysToExpiration} days on ${expirationDate}. Generate a new token from the portal to avoid failures. For a simpler, more secure solution, switch to Microsoft Entra ID and eliminate token management. https://learn.microsoft.com/entra/identity/`;\n console.warn(expirationWarning);\n};\n\nexport const warnIfAccessTokenCloseToExpiry = (): void => {\n const accessToken = getAccessToken();\n if (!accessToken) {\n throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_PAT_TOKEN.message);\n }\n const claims = parseJwt<JwtPayload>(accessToken!);\n const currentTime = Date.now();\n if (isTokenExpiringSoon(claims.exp!, currentTime)) {\n warnAboutTokenExpiry(claims.exp!, currentTime);\n }\n};\n\nexport const fetchOrValidateAccessToken = async (credential?: TokenCredential): Promise<string> => {\n const entraIdAccessToken = createEntraIdAccessToken(credential);\n // Fetch a token or refresh if needed in a single call\n if (entraIdAccessToken.doesEntraIdAccessTokenNeedRotation()) {\n await entraIdAccessToken.fetchEntraIdAccessToken();\n }\n const token = getAccessToken();\n if (!token) {\n throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_ENTRA_TOKEN.message);\n }\n return token;\n};\n\nexport const getVersionInfo = (version: string): VersionInfo => {\n const regex = /^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?/;\n const match = version.match(regex);\n const versionInfo = {\n major: 0,\n minor: 0,\n patch: 0,\n };\n versionInfo.major = match && match[1] ? parseInt(match[1], 10) : 0;\n versionInfo.minor = match && match[2] ? parseInt(match[2], 10) : 0;\n versionInfo.patch = match && match[3] ? parseInt(match[3], 10) : 0;\n return versionInfo;\n};\n\nexport const validatePlaywrightVersion = (): void => {\n const minimumSupportedVersion = Constants.MinimumSupportedPlaywrightVersion;\n const installedVersion = getPlaywrightVersion();\n\n const minimumSupportedVersionInfo = getVersionInfo(minimumSupportedVersion);\n const installedVersionInfo = getVersionInfo(installedVersion);\n\n const isInstalledVersionGreater =\n installedVersionInfo.major > minimumSupportedVersionInfo.major ||\n (installedVersionInfo.major === minimumSupportedVersionInfo.major &&\n installedVersionInfo.minor >= minimumSupportedVersionInfo.minor);\n if (!isInstalledVersionGreater) {\n exitWithFailureMessage(ServiceErrorMessageConstants.INVALID_PLAYWRIGHT_VERSION_ERROR);\n }\n};\n\nexport const getTestRunConfig = (config: FullConfig): RunConfig => {\n const maxWorkers = config.workers || config.metadata.actualWorkers;\n const frameWorkVersion = config.version;\n\n const testRunConfig: RunConfig = {\n framework: {\n name: RunConfigConstants.TEST_FRAMEWORK_NAME,\n version: frameWorkVersion,\n runnerName: RunConfigConstants.TEST_FRAMEWORK_RUNNERNAME,\n },\n sdkLanguage: RunConfigConstants.TEST_SDK_LANGUAGE,\n maxWorkers: maxWorkers,\n };\n return testRunConfig;\n};\n\nexport function getTestRunApiUrl(): string {\n const result = populateValuesFromServiceUrl();\n const runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID];\n\n if (!result?.region || !result?.domain || !result?.accountId) {\n exitWithFailureMessage(ServiceErrorMessageConstants.NO_SERVICE_URL_ERROR);\n }\n const baseUrl = `https://${result?.region}.${UrlConstants.ReportingApiSubdomain}.${result?.domain}/${UrlConstants.PlaywrightWorkspacesPath}/${result?.accountId}/${UrlConstants.TestRunsPath}`;\n const url = runId ? `${baseUrl}/${runId}` : baseUrl;\n\n return `${url}?api-version=${Constants.LatestAPIVersion}`;\n}\n\nexport function isNullOrEmpty(str: string | null | undefined): boolean {\n return !str || str.trim() === \"\";\n}\n\nasync function runCommand(command: string): Promise<string> {\n return new Promise((resolve, reject) => {\n exec(command, (error, stdout, stderr) => {\n if (error) {\n reject(error);\n return;\n }\n if (stderr) {\n reject(new Error(stderr));\n return;\n }\n resolve(stdout.trim());\n });\n });\n}\n\nexport async function getRunName(ciInfo: CIInfo): Promise<string> {\n if (\n ciInfo.providerName === CI_PROVIDERS.GITHUB &&\n process.env[\"GITHUB_EVENT_NAME\"] === \"pull_request\"\n ) {\n const prNumber: string = `${process.env[\"GITHUB_REF_NAME\"]?.split(\"/\")[0]}`;\n const prLink: string = `${process.env[\"GITHUB_REPOSITORY\"]}/pull/${prNumber}`;\n return `PR# ${prNumber} on Repo: ${process.env[\"GITHUB_REPOSITORY\"]} (${prLink})`;\n }\n\n try {\n const gitVersion = await runCommand(GitHubActionsConstants.GIT_VERSION_COMMAND);\n if (isNullOrEmpty(gitVersion)) {\n throw new Error(\"Git is not installed on the machine\");\n }\n const isInsideWorkTree = await runCommand(GitHubActionsConstants.GIT_REV_PARSE);\n if (isInsideWorkTree !== \"true\") {\n throw new Error(\"Not inside a git repository\");\n }\n const gitCommitMessage = await runCommand(GitHubActionsConstants.GIT_COMMIT_MESSAGE_COMMAND);\n return gitCommitMessage;\n } catch (err) {\n coreLogger.error(`Error in getting git commit message: ${err}.`);\n return \"\";\n }\n}\n\nexport function extractErrorMessage(responseBody: string): string {\n if (!responseBody) {\n return \"\";\n }\n\n try {\n const errorResponse = JSON.parse(responseBody);\n if (errorResponse.error && errorResponse.error.message) {\n return errorResponse.error.message;\n }\n return responseBody;\n } catch (e) {\n return responseBody;\n }\n}\n\nexport function getWorkspaceMetaDataApiUrl(): string {\n const result = populateValuesFromServiceUrl();\n\n if (!result?.region || !result?.domain || !result?.accountId) {\n exitWithFailureMessage(ServiceErrorMessageConstants.NO_SERVICE_URL_ERROR);\n }\n const baseUrl = `https://${result?.region}.${UrlConstants.ApiSubdomain}.${result?.domain}/${UrlConstants.PlaywrightWorkspacesPath}/${result?.accountId}`;\n\n return `${baseUrl}?api-version=${Constants.LatestAPIVersion}`;\n}\n\nexport function getHtmlReporterOutputFolder(config: FullConfig | undefined): string {\n const defaultFolder = \"playwright-report\";\n\n if (!config?.reporter) {\n return defaultFolder;\n }\n\n for (const reporter of config.reporter) {\n if (Array.isArray(reporter)) {\n const [reporterName, options] = reporter;\n if (reporterName === \"html\" && options && typeof options === \"object\") {\n return (options as any).outputFolder || defaultFolder;\n }\n } else if (typeof reporter === \"string\" && reporter === \"html\") {\n return defaultFolder;\n }\n }\n\n return defaultFolder;\n}\n\nexport function getContentType(filePath: string): string {\n const ext = filePath.toLowerCase().split(\".\").pop();\n\n const contentTypes: { [key: string]: string } = {\n html: \"text/html\",\n css: \"text/css\",\n js: \"application/javascript\",\n json: \"application/json\",\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n svg: \"image/svg+xml\",\n ico: \"image/x-icon\",\n txt: \"text/plain\",\n ttf: \"font/ttf\",\n woff: \"font/woff\",\n woff2: \"font/woff2\",\n webmanifest: \"application/manifest+json\",\n map: \"application/json\",\n xml: \"application/xml\",\n pdf: \"application/pdf\",\n zip: \"application/zip\",\n };\n\n return contentTypes[ext || \"\"] || \"application/octet-stream\";\n}\n\nexport function calculateOptimalConcurrency(files: Array<{ size: number }>): number {\n const totalFiles = files.length;\n const totalSize = files.reduce((sum, f) => sum + f.size, 0);\n const avgFileSize = totalSize / totalFiles;\n\n let optimalConcurrency: number;\n\n if (totalFiles <= 10) {\n optimalConcurrency = Math.min(totalFiles, 10);\n } else if (avgFileSize < UploadConstants.SMALL_FILE_THRESHOLD) {\n optimalConcurrency = Math.min(\n UploadConstants.MAX_CONCURRENCY,\n Math.max(UploadConstants.BASE_CONCURRENCY, totalFiles / 50),\n );\n } else if (totalFiles > 1000) {\n optimalConcurrency = Math.min(\n UploadConstants.MAX_CONCURRENCY,\n UploadConstants.BASE_CONCURRENCY + Math.floor(totalFiles / 200),\n );\n } else {\n optimalConcurrency = Math.min(\n UploadConstants.MAX_CONCURRENCY,\n UploadConstants.BASE_CONCURRENCY,\n );\n }\n\n return Math.floor(optimalConcurrency);\n}\n\nexport function collectAllFiles(\n folderPath: string,\n basePath: string,\n runIdFolderPrefix?: string,\n): Array<{\n fullPath: string;\n relativePath: string;\n size: number;\n contentType: string;\n}> {\n const files: Array<{\n fullPath: string;\n relativePath: string;\n size: number;\n contentType: string;\n }> = [];\n\n const stack = [folderPath];\n\n while (stack.length > 0) {\n const currentPath = stack.pop()!;\n\n try {\n const items = readdirSync(currentPath);\n\n for (const item of items) {\n const itemPath = join(currentPath, item);\n const stats = statSync(itemPath);\n\n if (stats.isDirectory()) {\n stack.push(itemPath);\n } else {\n let relativePath = relative(basePath, itemPath).split(\"\\\\\").join(\"/\");\n\n if (runIdFolderPrefix) {\n relativePath = `${runIdFolderPrefix}/${relativePath}`;\n }\n\n files.push({\n fullPath: itemPath,\n relativePath,\n size: stats.size,\n contentType: getContentType(itemPath),\n });\n }\n }\n } catch (error) {\n continue;\n }\n }\n\n return files;\n}\n\nexport function getPortalTestRunUrl(resourceId: string): string {\n if (!resourceId) {\n throw new Error(\"Missing required parameter: resourceId is required\");\n }\n const runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID];\n if (!runId) {\n throw new Error(\"Run ID is required but not found in environment variables\");\n }\n\n return `${UrlConstants.AzurePortalBaseUrl}/${UrlConstants.TestReportViewPath}/testRunId/${encodeURIComponent(runId)}/resourceId/${encodeURIComponent(resourceId)}`;\n}\n\nexport const getStorageAccountNameFromUri = (storageUri: string): string | null => {\n try {\n if (!storageUri || typeof storageUri !== \"string\") {\n return null;\n }\n\n const url = new URL(storageUri);\n const hostname = url.hostname;\n\n // Extract storage account name from hostname pattern: {accountname}.blob.core.windows.net\n const match = hostname.match(/^([^.]+)\\.blob\\.core\\.windows\\.net$/i);\n\n if (match && match[1]) {\n return match[1];\n }\n\n return null;\n } catch (error) {\n console.warn(\"Failed to extract storage account name from URI:\", storageUri, error);\n return null;\n }\n};\n"]}
@@ -1,12 +0,0 @@
1
- export declare class EnvironmentVariables {
2
- get accessToken(): string;
3
- runId: string;
4
- accountId: string | undefined;
5
- userId: string | undefined;
6
- userName: string | undefined;
7
- correlationId: string | undefined;
8
- region: string | undefined;
9
- runName: string;
10
- constructor();
11
- }
12
- //# sourceMappingURL=environmentVariables.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"environmentVariables.d.ts","sourceRoot":"","sources":["../../../src/common/environmentVariables.ts"],"names":[],"mappings":"AAMA,qBAAa,oBAAoB;IAC/B,IAAI,WAAW,IAAI,MAAM,CAExB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;;CAMjB"}
@@ -1,26 +0,0 @@
1
- "use strict";
2
- // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT License.
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.EnvironmentVariables = void 0;
6
- const node_crypto_1 = require("node:crypto");
7
- const constants_js_1 = require("./constants.js");
8
- class EnvironmentVariables {
9
- get accessToken() {
10
- return process.env["PLAYWRIGHT_SERVICE_ACCESS_TOKEN"];
11
- }
12
- runId;
13
- accountId;
14
- userId;
15
- userName;
16
- correlationId;
17
- region;
18
- runName;
19
- constructor() {
20
- this.runName = process.env["_MPT_SERVICE_RUN_NAME"];
21
- this.runId = process.env[constants_js_1.InternalEnvironmentVariables.MPT_SERVICE_RUN_ID];
22
- this.correlationId = (0, node_crypto_1.randomUUID)();
23
- }
24
- }
25
- exports.EnvironmentVariables = EnvironmentVariables;
26
- //# sourceMappingURL=environmentVariables.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"environmentVariables.js","sourceRoot":"","sources":["../../../src/common/environmentVariables.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,6CAAyC;AACzC,iDAA8D;AAE9D,MAAa,oBAAoB;IAC/B,IAAI,WAAW;QACb,OAAO,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAE,CAAC;IACzD,CAAC;IACD,KAAK,CAAS;IACd,SAAS,CAAqB;IAC9B,MAAM,CAAqB;IAC3B,QAAQ,CAAqB;IAC7B,aAAa,CAAqB;IAClC,MAAM,CAAqB;IAC3B,OAAO,CAAS;IAChB;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAE,CAAC;QACrD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,2CAA4B,CAAC,kBAAkB,CAAE,CAAC;QAC3E,IAAI,CAAC,aAAa,GAAG,IAAA,wBAAU,GAAE,CAAC;IACpC,CAAC;CACF;AAhBD,oDAgBC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID } from \"node:crypto\";\nimport { InternalEnvironmentVariables } from \"./constants.js\";\n\nexport class EnvironmentVariables {\n get accessToken(): string {\n return process.env[\"PLAYWRIGHT_SERVICE_ACCESS_TOKEN\"]!;\n }\n runId: string;\n accountId: string | undefined;\n userId: string | undefined;\n userName: string | undefined;\n correlationId: string | undefined;\n region: string | undefined;\n runName: string;\n constructor() {\n this.runName = process.env[\"_MPT_SERVICE_RUN_NAME\"]!;\n this.runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID]!;\n this.correlationId = randomUUID();\n }\n}\n"]}
@@ -1,5 +0,0 @@
1
- export declare const globalPaths: {
2
- setup: string;
3
- teardown: string;
4
- };
5
- //# sourceMappingURL=playwrightServiceUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"playwrightServiceUtils.d.ts","sourceRoot":"","sources":["../../../src/core/playwrightServiceUtils.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW;;;CAGvB,CAAC"}
@@ -1,12 +0,0 @@
1
- "use strict";
2
- // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT License.
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.globalPaths = void 0;
6
- const tslib_1 = require("tslib");
7
- const node_path_1 = tslib_1.__importDefault(require("node:path"));
8
- exports.globalPaths = {
9
- setup: node_path_1.default.join(__dirname, "./global/playwright-service-global-setup.js"),
10
- teardown: node_path_1.default.join(__dirname, "./global/playwright-service-global-teardown.js"),
11
- };
12
- //# sourceMappingURL=playwrightServiceUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"playwrightServiceUtils.js","sourceRoot":"","sources":["../../../src/core/playwrightServiceUtils.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,kEAA6B;AAEhB,QAAA,WAAW,GAAG;IACzB,KAAK,EAAE,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6CAA6C,CAAC;IAC1E,QAAQ,EAAE,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gDAAgD,CAAC;CACjF,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport path from \"node:path\";\n\nexport const globalPaths = {\n setup: path.join(__dirname, \"./global/playwright-service-global-setup.js\"),\n teardown: path.join(__dirname, \"./global/playwright-service-global-teardown.js\"),\n};\n"]}
@@ -1,2 +0,0 @@
1
- export declare const getPackageVersionFromFolder: (folder: string) => string;
2
- //# sourceMappingURL=getPackageVersion.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getPackageVersion.d.ts","sourceRoot":"","sources":["../../../src/utils/getPackageVersion.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,2BAA2B,GAAI,QAAQ,MAAM,KAAG,MAS5D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getPackageVersion.js","sourceRoot":"","sources":["../../../src/utils/getPackageVersion.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,kEAA6B;AAC7B,mDAAiD;AAE1C,MAAM,2BAA2B,GAAG,CAAC,MAAc,EAAU,EAAE;IACpE,IAAI,CAAC;QACH,iEAAiE;QACjE,MAAM,OAAO,GAAG,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9E,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sBAAU,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AATW,QAAA,2BAA2B,+BAStC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport path from \"node:path\";\nimport { coreLogger } from \"../common/logger.js\";\n\nexport const getPackageVersionFromFolder = (folder: string): string => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const version = require(path.join(__dirname, folder, \"package.json\")).version;\n return version;\n } catch (error) {\n coreLogger.error(\"Error fetching package version:\", error);\n return \"\";\n }\n};\n"]}
@@ -1,12 +0,0 @@
1
- export declare class EnvironmentVariables {
2
- get accessToken(): string;
3
- runId: string;
4
- accountId: string | undefined;
5
- userId: string | undefined;
6
- userName: string | undefined;
7
- correlationId: string | undefined;
8
- region: string | undefined;
9
- runName: string;
10
- constructor();
11
- }
12
- //# sourceMappingURL=environmentVariables.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"environmentVariables.d.ts","sourceRoot":"","sources":["../../../src/common/environmentVariables.ts"],"names":[],"mappings":"AAMA,qBAAa,oBAAoB;IAC/B,IAAI,WAAW,IAAI,MAAM,CAExB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;;CAMjB"}
@@ -1,22 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
- import { randomUUID } from "node:crypto";
4
- import { InternalEnvironmentVariables } from "./constants.js";
5
- export class EnvironmentVariables {
6
- get accessToken() {
7
- return process.env["PLAYWRIGHT_SERVICE_ACCESS_TOKEN"];
8
- }
9
- runId;
10
- accountId;
11
- userId;
12
- userName;
13
- correlationId;
14
- region;
15
- runName;
16
- constructor() {
17
- this.runName = process.env["_MPT_SERVICE_RUN_NAME"];
18
- this.runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID];
19
- this.correlationId = randomUUID();
20
- }
21
- }
22
- //# sourceMappingURL=environmentVariables.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"environmentVariables.js","sourceRoot":"","sources":["../../../src/common/environmentVariables.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAE9D,MAAM,OAAO,oBAAoB;IAC/B,IAAI,WAAW;QACb,OAAO,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAE,CAAC;IACzD,CAAC;IACD,KAAK,CAAS;IACd,SAAS,CAAqB;IAC9B,MAAM,CAAqB;IAC3B,QAAQ,CAAqB;IAC7B,aAAa,CAAqB;IAClC,MAAM,CAAqB;IAC3B,OAAO,CAAS;IAChB;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAE,CAAC;QACrD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,kBAAkB,CAAE,CAAC;QAC3E,IAAI,CAAC,aAAa,GAAG,UAAU,EAAE,CAAC;IACpC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID } from \"node:crypto\";\nimport { InternalEnvironmentVariables } from \"./constants.js\";\n\nexport class EnvironmentVariables {\n get accessToken(): string {\n return process.env[\"PLAYWRIGHT_SERVICE_ACCESS_TOKEN\"]!;\n }\n runId: string;\n accountId: string | undefined;\n userId: string | undefined;\n userName: string | undefined;\n correlationId: string | undefined;\n region: string | undefined;\n runName: string;\n constructor() {\n this.runName = process.env[\"_MPT_SERVICE_RUN_NAME\"]!;\n this.runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID]!;\n this.correlationId = randomUUID();\n }\n}\n"]}