creevey 0.10.0-beta.8 → 0.10.0-rc.0

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 (350) hide show
  1. package/AUTHORS +2 -0
  2. package/CHANGELOG.md +281 -0
  3. package/README.md +19 -41
  4. package/dist/client/addon/components/Addon.js +18 -8
  5. package/dist/client/addon/components/Addon.js.map +1 -1
  6. package/dist/client/addon/components/Panel.js +4 -4
  7. package/dist/client/addon/components/Panel.js.map +1 -1
  8. package/dist/client/addon/components/TestSelect.js +2 -2
  9. package/dist/client/addon/components/TestSelect.js.map +1 -1
  10. package/dist/client/addon/components/Tools.js +19 -9
  11. package/dist/client/addon/components/Tools.js.map +1 -1
  12. package/dist/client/addon/controller.d.ts +1 -1
  13. package/dist/client/addon/controller.js +3 -3
  14. package/dist/client/addon/controller.js.map +1 -1
  15. package/dist/client/addon/decorator.d.ts +1 -1
  16. package/dist/client/addon/makeDecorator.d.ts +9 -0
  17. package/dist/client/addon/makeDecorator.js +48 -0
  18. package/dist/client/addon/makeDecorator.js.map +1 -0
  19. package/dist/client/addon/manager.js +38 -39
  20. package/dist/client/addon/manager.js.map +1 -1
  21. package/dist/client/addon/preset.d.ts +0 -1
  22. package/dist/client/addon/preset.js +3 -2
  23. package/dist/client/addon/preset.js.map +1 -1
  24. package/dist/client/addon/preview.d.ts +1 -1
  25. package/dist/client/addon/withCreevey.d.ts +5 -3
  26. package/dist/client/addon/withCreevey.js +14 -21
  27. package/dist/client/addon/withCreevey.js.map +1 -1
  28. package/dist/client/shared/components/ImagesView/BlendView.d.ts +2 -2
  29. package/dist/client/shared/components/ImagesView/BlendView.js +18 -8
  30. package/dist/client/shared/components/ImagesView/BlendView.js.map +1 -1
  31. package/dist/client/shared/components/ImagesView/ImagesView.js +1 -1
  32. package/dist/client/shared/components/ImagesView/ImagesView.js.map +1 -1
  33. package/dist/client/shared/components/ImagesView/SideBySideView.d.ts +2 -2
  34. package/dist/client/shared/components/ImagesView/SideBySideView.js +19 -9
  35. package/dist/client/shared/components/ImagesView/SideBySideView.js.map +1 -1
  36. package/dist/client/shared/components/ImagesView/SlideView.d.ts +2 -2
  37. package/dist/client/shared/components/ImagesView/SlideView.js +19 -9
  38. package/dist/client/shared/components/ImagesView/SlideView.js.map +1 -1
  39. package/dist/client/shared/components/ImagesView/SwapView.d.ts +2 -2
  40. package/dist/client/shared/components/ImagesView/SwapView.js +31 -9
  41. package/dist/client/shared/components/ImagesView/SwapView.js.map +1 -1
  42. package/dist/client/shared/components/ImagesView/common.d.ts +1 -1
  43. package/dist/client/shared/components/PageFooter/PageFooter.js +1 -1
  44. package/dist/client/shared/components/PageFooter/PageFooter.js.map +1 -1
  45. package/dist/client/shared/components/PageFooter/Paging.js +1 -1
  46. package/dist/client/shared/components/PageFooter/Paging.js.map +1 -1
  47. package/dist/client/shared/components/PageHeader/ImagePreview.d.ts +2 -2
  48. package/dist/client/shared/components/PageHeader/ImagePreview.js +2 -1
  49. package/dist/client/shared/components/PageHeader/ImagePreview.js.map +1 -1
  50. package/dist/client/shared/components/PageHeader/PageHeader.js +34 -13
  51. package/dist/client/shared/components/PageHeader/PageHeader.js.map +1 -1
  52. package/dist/client/shared/components/ResultsPage.d.ts +2 -2
  53. package/dist/client/shared/components/ResultsPage.js +45 -15
  54. package/dist/client/shared/components/ResultsPage.js.map +1 -1
  55. package/dist/client/shared/creeveyClientApi.js +18 -1
  56. package/dist/client/shared/creeveyClientApi.js.map +1 -1
  57. package/dist/client/shared/helpers.d.ts +1 -3
  58. package/dist/client/shared/helpers.js +4 -19
  59. package/dist/client/shared/helpers.js.map +1 -1
  60. package/dist/client/web/CreeveyApp.d.ts +1 -0
  61. package/dist/client/web/CreeveyApp.js +44 -15
  62. package/dist/client/web/CreeveyApp.js.map +1 -1
  63. package/dist/client/web/CreeveyContext.d.ts +6 -0
  64. package/dist/client/web/CreeveyContext.js +21 -7
  65. package/dist/client/web/CreeveyContext.js.map +1 -1
  66. package/dist/client/web/CreeveyLoader.d.ts +1 -1
  67. package/dist/client/web/CreeveyLoader.js +3 -3
  68. package/dist/client/web/CreeveyLoader.js.map +1 -1
  69. package/dist/client/web/CreeveyView/SideBar/Checkbox.d.ts +4 -4
  70. package/dist/client/web/CreeveyView/SideBar/Checkbox.js +36 -6
  71. package/dist/client/web/CreeveyView/SideBar/Checkbox.js.map +1 -1
  72. package/dist/client/web/CreeveyView/SideBar/Search.js +20 -10
  73. package/dist/client/web/CreeveyView/SideBar/Search.js.map +1 -1
  74. package/dist/client/web/CreeveyView/SideBar/SideBar.js +26 -12
  75. package/dist/client/web/CreeveyView/SideBar/SideBar.js.map +1 -1
  76. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js +67 -13
  77. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js.map +1 -1
  78. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js +32 -12
  79. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js.map +1 -1
  80. package/dist/client/web/CreeveyView/SideBar/SuiteLink.d.ts +6 -6
  81. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js +20 -13
  82. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js.map +1 -1
  83. package/dist/client/web/CreeveyView/SideBar/TestLink.js +20 -13
  84. package/dist/client/web/CreeveyView/SideBar/TestLink.js.map +1 -1
  85. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +2 -2
  86. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js +2 -2
  87. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js.map +1 -1
  88. package/dist/client/web/CreeveyView/SideBar/TestsStatus.d.ts +2 -2
  89. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js +3 -2
  90. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js.map +1 -1
  91. package/dist/client/web/CreeveyView/SideBar/Toggle.js +1 -1
  92. package/dist/client/web/CreeveyView/SideBar/Toggle.js.map +1 -1
  93. package/dist/client/web/KeyboardEventsContext.d.ts +1 -8
  94. package/dist/client/web/KeyboardEventsContext.js +79 -64
  95. package/dist/client/web/KeyboardEventsContext.js.map +1 -1
  96. package/dist/client/web/assets/index-CtSq3IhG.js +518 -0
  97. package/dist/client/web/index.html +1 -1
  98. package/dist/client/web/index.js +26 -11
  99. package/dist/client/web/index.js.map +1 -1
  100. package/dist/client/web/themes.d.ts +2 -0
  101. package/dist/client/web/themes.js +22 -0
  102. package/dist/client/web/themes.js.map +1 -0
  103. package/dist/creevey.d.ts +1 -1
  104. package/dist/creevey.js +122 -41
  105. package/dist/creevey.js.map +1 -1
  106. package/dist/index.d.ts +1 -0
  107. package/dist/playwright/generator.d.ts +25 -0
  108. package/dist/playwright/generator.js +243 -0
  109. package/dist/playwright/generator.js.map +1 -0
  110. package/dist/playwright/helpers.d.ts +2 -0
  111. package/dist/playwright/helpers.js +29 -0
  112. package/dist/playwright/helpers.js.map +1 -0
  113. package/dist/playwright/reporter.d.ts +83 -0
  114. package/dist/playwright/reporter.js +334 -0
  115. package/dist/playwright/reporter.js.map +1 -0
  116. package/dist/playwright/setup.d.ts +3 -0
  117. package/dist/playwright/setup.js +72 -0
  118. package/dist/playwright/setup.js.map +1 -0
  119. package/dist/playwright.d.ts +1 -0
  120. package/dist/playwright.js +3 -1
  121. package/dist/playwright.js.map +1 -1
  122. package/dist/server/compare.d.ts +18 -0
  123. package/dist/server/compare.js +182 -0
  124. package/dist/server/compare.js.map +1 -0
  125. package/dist/server/config.d.ts +3 -3
  126. package/dist/server/config.js +75 -8
  127. package/dist/server/config.js.map +1 -1
  128. package/dist/server/connection.d.ts +3 -0
  129. package/dist/server/connection.js +28 -0
  130. package/dist/server/connection.js.map +1 -0
  131. package/dist/server/docker.d.ts +1 -1
  132. package/dist/server/docker.js +54 -32
  133. package/dist/server/docker.js.map +1 -1
  134. package/dist/server/index.d.ts +2 -2
  135. package/dist/server/index.js +165 -64
  136. package/dist/server/index.js.map +1 -1
  137. package/dist/server/master/api.d.ts +11 -6
  138. package/dist/server/master/api.js +88 -25
  139. package/dist/server/master/api.js.map +1 -1
  140. package/dist/server/master/handlers/capture-handler.d.ts +5 -0
  141. package/dist/server/master/handlers/capture-handler.js +25 -0
  142. package/dist/server/master/handlers/capture-handler.js.map +1 -0
  143. package/dist/server/master/handlers/index.d.ts +4 -0
  144. package/dist/server/master/handlers/index.js +21 -0
  145. package/dist/server/master/handlers/index.js.map +1 -0
  146. package/dist/server/master/handlers/ping-handler.d.ts +2 -0
  147. package/dist/server/master/handlers/ping-handler.js +8 -0
  148. package/dist/server/master/handlers/ping-handler.js.map +1 -0
  149. package/dist/server/master/handlers/static-handler.d.ts +1 -0
  150. package/dist/server/master/handlers/static-handler.js +20 -0
  151. package/dist/server/master/handlers/static-handler.js.map +1 -0
  152. package/dist/server/master/handlers/stories-handler.d.ts +4 -0
  153. package/dist/server/master/handlers/stories-handler.js +24 -0
  154. package/dist/server/master/handlers/stories-handler.js.map +1 -0
  155. package/dist/server/master/master.js +7 -24
  156. package/dist/server/master/master.js.map +1 -1
  157. package/dist/server/master/pool.d.ts +1 -0
  158. package/dist/server/master/pool.js +5 -3
  159. package/dist/server/master/pool.js.map +1 -1
  160. package/dist/server/master/queue.d.ts +1 -1
  161. package/dist/server/master/queue.js +14 -6
  162. package/dist/server/master/queue.js.map +1 -1
  163. package/dist/server/master/runner.d.ts +6 -6
  164. package/dist/server/master/runner.js +98 -130
  165. package/dist/server/master/runner.js.map +1 -1
  166. package/dist/server/master/server.d.ts +1 -1
  167. package/dist/server/master/server.js +193 -88
  168. package/dist/server/master/server.js.map +1 -1
  169. package/dist/server/master/start.d.ts +1 -2
  170. package/dist/server/master/start.js +13 -29
  171. package/dist/server/master/start.js.map +1 -1
  172. package/dist/server/master/testsManager.d.ts +81 -0
  173. package/dist/server/master/testsManager.js +282 -0
  174. package/dist/server/master/testsManager.js.map +1 -0
  175. package/dist/server/playwright/docker-file.d.ts +1 -1
  176. package/dist/server/playwright/docker-file.js +17 -8
  177. package/dist/server/playwright/docker-file.js.map +1 -1
  178. package/dist/server/playwright/docker.d.ts +2 -1
  179. package/dist/server/playwright/docker.js +10 -2
  180. package/dist/server/playwright/docker.js.map +1 -1
  181. package/dist/server/playwright/index-source.mjs +16 -0
  182. package/dist/server/playwright/internal.d.ts +7 -7
  183. package/dist/server/playwright/internal.js +144 -84
  184. package/dist/server/playwright/internal.js.map +1 -1
  185. package/dist/server/playwright/webdriver.d.ts +3 -3
  186. package/dist/server/playwright/webdriver.js +0 -6
  187. package/dist/server/playwright/webdriver.js.map +1 -1
  188. package/dist/server/providers/browser.js +4 -3
  189. package/dist/server/providers/browser.js.map +1 -1
  190. package/dist/server/providers/hybrid.js +2 -2
  191. package/dist/server/providers/hybrid.js.map +1 -1
  192. package/dist/server/report.d.ts +10 -0
  193. package/dist/server/report.js +45 -0
  194. package/dist/server/report.js.map +1 -0
  195. package/dist/server/reporters/creevey.d.ts +7 -0
  196. package/dist/server/reporters/creevey.js +63 -0
  197. package/dist/server/reporters/creevey.js.map +1 -0
  198. package/dist/server/reporters/index.d.ts +2 -0
  199. package/dist/server/reporters/index.js +16 -0
  200. package/dist/server/reporters/index.js.map +1 -0
  201. package/dist/server/reporters/junit.d.ts +16 -0
  202. package/dist/server/reporters/junit.js +167 -0
  203. package/dist/server/reporters/junit.js.map +1 -0
  204. package/dist/server/reporters/teamcity.d.ts +7 -0
  205. package/dist/server/reporters/teamcity.js +60 -0
  206. package/dist/server/reporters/teamcity.js.map +1 -0
  207. package/dist/server/selenium/internal.d.ts +4 -4
  208. package/dist/server/selenium/internal.js +56 -40
  209. package/dist/server/selenium/internal.js.map +1 -1
  210. package/dist/server/selenium/selenoid.js +12 -6
  211. package/dist/server/selenium/selenoid.js.map +1 -1
  212. package/dist/server/selenium/webdriver.d.ts +3 -3
  213. package/dist/server/selenium/webdriver.js +4 -8
  214. package/dist/server/selenium/webdriver.js.map +1 -1
  215. package/dist/server/shutdown.d.ts +1 -0
  216. package/dist/server/shutdown.js +23 -0
  217. package/dist/server/shutdown.js.map +1 -0
  218. package/dist/server/stories.d.ts +0 -1
  219. package/dist/server/stories.js +0 -12
  220. package/dist/server/stories.js.map +1 -1
  221. package/dist/server/telemetry.js +3 -3
  222. package/dist/server/telemetry.js.map +1 -1
  223. package/dist/server/testsFiles/parser.js +45 -5
  224. package/dist/server/testsFiles/parser.js.map +1 -1
  225. package/dist/server/utils.d.ts +23 -0
  226. package/dist/server/utils.js +114 -15
  227. package/dist/server/utils.js.map +1 -1
  228. package/dist/server/webdriver.d.ts +1 -1
  229. package/dist/server/worker/context.d.ts +3 -0
  230. package/dist/server/worker/context.js +15 -0
  231. package/dist/server/worker/context.js.map +1 -0
  232. package/dist/server/worker/match-image.d.ts +8 -12
  233. package/dist/server/worker/match-image.js +11 -178
  234. package/dist/server/worker/match-image.js.map +1 -1
  235. package/dist/server/worker/start.d.ts +2 -2
  236. package/dist/server/worker/start.js +41 -64
  237. package/dist/server/worker/start.js.map +1 -1
  238. package/dist/shared/index.d.ts +1 -1
  239. package/dist/shared/index.js +9 -7
  240. package/dist/shared/index.js.map +1 -1
  241. package/dist/types.d.ts +84 -43
  242. package/dist/types.js +65 -1
  243. package/dist/types.js.map +1 -1
  244. package/docs/cli.md +80 -0
  245. package/docs/config.md +179 -165
  246. package/docs/examples/playwright-reporer/playwright.config.ts +37 -0
  247. package/docs/migration-0.9-to-0.10.md +144 -0
  248. package/docs/playwright-reporter.md +357 -0
  249. package/docs/storybook.md +60 -0
  250. package/docs/tests.md +50 -45
  251. package/package.json +78 -83
  252. package/playwright.config.mts +46 -0
  253. package/src/client/addon/components/Addon.tsx +1 -1
  254. package/src/client/addon/components/Panel.tsx +4 -4
  255. package/src/client/addon/components/TestSelect.tsx +2 -2
  256. package/src/client/addon/components/Tools.tsx +2 -2
  257. package/src/client/addon/controller.ts +4 -4
  258. package/src/client/addon/makeDecorator.ts +69 -0
  259. package/src/client/addon/manager.ts +38 -37
  260. package/src/client/addon/preset.ts +2 -1
  261. package/src/client/addon/withCreevey.ts +16 -19
  262. package/src/client/shared/components/ImagesView/BlendView.tsx +1 -1
  263. package/src/client/shared/components/ImagesView/ImagesView.tsx +1 -1
  264. package/src/client/shared/components/ImagesView/SideBySideView.tsx +2 -2
  265. package/src/client/shared/components/ImagesView/SlideView.tsx +2 -2
  266. package/src/client/shared/components/ImagesView/SwapView.tsx +20 -2
  267. package/src/client/shared/components/ImagesView/common.ts +1 -1
  268. package/src/client/shared/components/PageFooter/PageFooter.tsx +1 -1
  269. package/src/client/shared/components/PageFooter/Paging.tsx +1 -1
  270. package/src/client/shared/components/PageHeader/ImagePreview.tsx +2 -1
  271. package/src/client/shared/components/PageHeader/PageHeader.tsx +23 -7
  272. package/src/client/shared/components/ResultsPage.tsx +33 -10
  273. package/src/client/shared/creeveyClientApi.ts +19 -1
  274. package/src/client/shared/helpers.ts +4 -24
  275. package/src/client/web/CreeveyApp.tsx +30 -9
  276. package/src/client/web/CreeveyContext.tsx +11 -0
  277. package/src/client/web/CreeveyLoader.tsx +2 -2
  278. package/src/client/web/CreeveyView/SideBar/Checkbox.tsx +3 -3
  279. package/src/client/web/CreeveyView/SideBar/Search.tsx +4 -4
  280. package/src/client/web/CreeveyView/SideBar/SideBar.tsx +11 -6
  281. package/src/client/web/CreeveyView/SideBar/SideBarFooter.tsx +48 -15
  282. package/src/client/web/CreeveyView/SideBar/SideBarHeader.tsx +20 -5
  283. package/src/client/web/CreeveyView/SideBar/SuiteLink.tsx +12 -12
  284. package/src/client/web/CreeveyView/SideBar/TestLink.tsx +10 -10
  285. package/src/client/web/CreeveyView/SideBar/TestStatusIcon.tsx +2 -2
  286. package/src/client/web/CreeveyView/SideBar/TestsStatus.tsx +3 -2
  287. package/src/client/web/CreeveyView/SideBar/Toggle.tsx +1 -1
  288. package/src/client/web/KeyboardEventsContext.tsx +61 -73
  289. package/src/client/web/index.tsx +10 -5
  290. package/src/client/web/themes.ts +24 -0
  291. package/src/creevey.ts +92 -38
  292. package/src/playwright/generator.ts +322 -0
  293. package/src/playwright/helpers.ts +31 -0
  294. package/src/playwright/reporter.ts +381 -0
  295. package/src/playwright/setup.ts +84 -0
  296. package/src/playwright.ts +1 -0
  297. package/src/server/compare.ts +260 -0
  298. package/src/server/config.ts +52 -9
  299. package/src/server/connection.ts +26 -0
  300. package/src/server/docker.ts +62 -34
  301. package/src/server/index.ts +166 -79
  302. package/src/server/master/api.ts +94 -28
  303. package/src/server/master/handlers/capture-handler.ts +20 -0
  304. package/src/server/master/handlers/index.ts +4 -0
  305. package/src/server/master/handlers/ping-handler.ts +6 -0
  306. package/src/server/master/handlers/static-handler.ts +16 -0
  307. package/src/server/master/handlers/stories-handler.ts +20 -0
  308. package/src/server/master/master.ts +10 -27
  309. package/src/server/master/pool.ts +7 -3
  310. package/src/server/master/queue.ts +21 -7
  311. package/src/server/master/runner.ts +123 -134
  312. package/src/server/master/server.ts +214 -101
  313. package/src/server/master/start.ts +19 -41
  314. package/src/server/master/testsManager.ts +316 -0
  315. package/src/server/playwright/docker-file.ts +20 -8
  316. package/src/server/playwright/docker.ts +16 -3
  317. package/src/server/playwright/index-source.mjs +16 -0
  318. package/src/server/playwright/internal.ts +176 -103
  319. package/src/server/playwright/webdriver.ts +4 -10
  320. package/src/server/providers/browser.ts +4 -3
  321. package/src/server/providers/hybrid.ts +2 -3
  322. package/src/server/report.ts +51 -0
  323. package/src/server/reporters/creevey.ts +71 -0
  324. package/src/server/reporters/index.ts +11 -0
  325. package/src/server/reporters/junit.ts +207 -0
  326. package/src/server/reporters/teamcity.ts +74 -0
  327. package/src/server/selenium/internal.ts +70 -53
  328. package/src/server/selenium/selenoid.ts +13 -6
  329. package/src/server/selenium/webdriver.ts +8 -12
  330. package/src/server/shutdown.ts +19 -0
  331. package/src/server/stories.ts +1 -12
  332. package/src/server/telemetry.ts +3 -3
  333. package/src/server/testsFiles/parser.ts +52 -4
  334. package/src/server/utils.ts +124 -16
  335. package/src/server/webdriver.ts +1 -1
  336. package/src/server/worker/context.ts +14 -0
  337. package/src/server/worker/match-image.ts +16 -248
  338. package/src/server/worker/start.ts +49 -79
  339. package/src/shared/index.ts +10 -8
  340. package/src/types.ts +91 -58
  341. package/types/global.d.ts +1 -0
  342. package/dist/client/web/assets/index-DB8lHlJw.js +0 -591
  343. package/dist/server/reporter.d.ts +0 -26
  344. package/dist/server/reporter.js +0 -108
  345. package/dist/server/reporter.js.map +0 -1
  346. package/dist/server/update.d.ts +0 -2
  347. package/dist/server/update.js +0 -53
  348. package/dist/server/update.js.map +0 -1
  349. package/src/server/reporter.ts +0 -139
  350. package/src/server/update.ts +0 -74
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getPixelmatchAssert = getPixelmatchAssert;
7
+ exports.getOdiffAssert = getOdiffAssert;
8
+ const path_1 = __importDefault(require("path"));
9
+ const assert_1 = __importDefault(require("assert"));
10
+ const pngjs_1 = require("pngjs");
11
+ const promises_1 = require("fs/promises");
12
+ async function getStat(filePath) {
13
+ try {
14
+ return await (0, promises_1.stat)(filePath);
15
+ }
16
+ catch (error) {
17
+ if (typeof error == 'object' && error && error.code === 'ENOENT') {
18
+ return null;
19
+ }
20
+ throw error;
21
+ }
22
+ }
23
+ async function getLastImageNumber(imageDir, imageName) {
24
+ const actualImagesRegexp = new RegExp(`${imageName}-actual-(\\d+)\\.png`);
25
+ try {
26
+ return ((await (0, promises_1.readdir)(imageDir))
27
+ .map((filename) => filename.replace(actualImagesRegexp, '$1'))
28
+ .map(Number)
29
+ .filter((x) => !isNaN(x))
30
+ .sort((a, b) => b - a)[0] ?? 0);
31
+ }
32
+ catch (_error) {
33
+ return 0;
34
+ }
35
+ }
36
+ async function readExpected(expectImageDir, imageName) {
37
+ const expected = await (0, promises_1.readFile)(path_1.default.join(expectImageDir, `${imageName}.png`));
38
+ return expected;
39
+ }
40
+ async function saveImages(imageDir, images) {
41
+ const files = [];
42
+ await (0, promises_1.mkdir)(imageDir, { recursive: true });
43
+ for (const { name, data } of images) {
44
+ const filePath = path_1.default.join(imageDir, name);
45
+ await (0, promises_1.writeFile)(filePath, data);
46
+ files.push(filePath);
47
+ }
48
+ return files;
49
+ }
50
+ async function getImagePaths(config, testFullPath, assertImageName) {
51
+ const testPath = [...testFullPath];
52
+ const imageName = assertImageName ?? testPath.pop();
53
+ (0, assert_1.default)(typeof imageName === 'string', `Can't get image name from empty test scope`);
54
+ const expectImageDir = path_1.default.join(config.screenDir, ...testPath);
55
+ const reportImageDir = path_1.default.join(config.reportDir, ...testPath);
56
+ const imageNumber = (await getLastImageNumber(reportImageDir, imageName)) + 1;
57
+ const actualImageName = `${imageName}-actual-${imageNumber}.png`;
58
+ const expectImageName = `${imageName}-expect-${imageNumber}.png`;
59
+ const diffImageName = `${imageName}-diff-${imageNumber}.png`;
60
+ return { imageName, actualImageName, expectImageName, diffImageName, expectImageDir, reportImageDir };
61
+ }
62
+ async function getExpected(ctx, { imageName, actualImageName, expectImageName, diffImageName, expectImageDir, reportImageDir }) {
63
+ const onCompare = async (actual, expect, diff) => {
64
+ const imagesMeta = [];
65
+ const image = (ctx.images[imageName] = ctx.images[imageName] ?? { actual: actualImageName });
66
+ imagesMeta.push({ name: image.actual, data: actual });
67
+ if (diff && expect) {
68
+ image.expect = expectImageName;
69
+ image.diff = diffImageName;
70
+ imagesMeta.push({ name: image.expect, data: expect });
71
+ imagesMeta.push({ name: image.diff, data: diff });
72
+ }
73
+ ctx.attachments = await saveImages(reportImageDir, imagesMeta);
74
+ };
75
+ const expectImageStat = await getStat(path_1.default.join(expectImageDir, `${imageName}.png`));
76
+ if (!expectImageStat)
77
+ return { expected: null, onCompare };
78
+ const expected = await readExpected(expectImageDir, imageName);
79
+ return { expected, onCompare };
80
+ }
81
+ async function getOdiffExpected(ctx, actual, { imageName, actualImageName, expectImageName, diffImageName, expectImageDir, reportImageDir }) {
82
+ const expected = await readExpected(expectImageDir, imageName);
83
+ const image = (ctx.images[imageName] = ctx.images[imageName] ?? { actual: actualImageName });
84
+ image.expect = expectImageName;
85
+ image.diff = diffImageName;
86
+ const imagesMeta = [
87
+ { name: image.actual, data: actual },
88
+ { name: expectImageName, data: expected },
89
+ ];
90
+ ctx.attachments = await saveImages(reportImageDir, imagesMeta);
91
+ return {
92
+ actual: path_1.default.join(reportImageDir, actualImageName),
93
+ expect: path_1.default.join(reportImageDir, expectImageName),
94
+ diff: path_1.default.join(reportImageDir, diffImageName),
95
+ };
96
+ }
97
+ function normalizeImageSize(image, width, height) {
98
+ const normalizedImage = Buffer.alloc(4 * width * height);
99
+ for (let y = 0; y < height; y++) {
100
+ for (let x = 0; x < width; x++) {
101
+ const i = (y * width + x) * 4;
102
+ if (x < image.width && y < image.height) {
103
+ const j = (y * image.width + x) * 4;
104
+ normalizedImage[i + 0] = image.data[j + 0];
105
+ normalizedImage[i + 1] = image.data[j + 1];
106
+ normalizedImage[i + 2] = image.data[j + 2];
107
+ normalizedImage[i + 3] = image.data[j + 3];
108
+ }
109
+ else {
110
+ normalizedImage[i + 0] = 0;
111
+ normalizedImage[i + 1] = 0;
112
+ normalizedImage[i + 2] = 0;
113
+ normalizedImage[i + 3] = 0;
114
+ }
115
+ }
116
+ }
117
+ return normalizedImage;
118
+ }
119
+ function hasDiffPixels(diff) {
120
+ for (let i = 0; i < diff.length; i += 4) {
121
+ if (diff[i + 0] == 255 && diff[i + 1] == 0 && diff[i + 2] == 0 && diff[i + 3] == 255)
122
+ return true;
123
+ }
124
+ return false;
125
+ }
126
+ function compareImages(expect, actual, pixelmatch, diffOptions) {
127
+ const expectImage = pngjs_1.PNG.sync.read(expect);
128
+ const actualImage = pngjs_1.PNG.sync.read(actual);
129
+ const width = Math.max(actualImage.width, expectImage.width);
130
+ const height = Math.max(actualImage.height, expectImage.height);
131
+ const diffImage = new pngjs_1.PNG({ width, height });
132
+ let actualImageData = actualImage.data;
133
+ if (actualImage.width < width || actualImage.height < height) {
134
+ actualImageData = normalizeImageSize(actualImage, width, height);
135
+ }
136
+ let expectImageData = expectImage.data;
137
+ if (expectImage.width < width || expectImage.height < height) {
138
+ expectImageData = normalizeImageSize(expectImage, width, height);
139
+ }
140
+ pixelmatch(expectImageData, actualImageData, diffImage.data, width, height, diffOptions);
141
+ return {
142
+ isEqual: !hasDiffPixels(diffImage.data),
143
+ diff: pngjs_1.PNG.sync.write(diffImage),
144
+ };
145
+ }
146
+ function getPixelmatchAssert(pixelmatch, ctx, config) {
147
+ return async function assertImagePixelmatch(actual, imageName) {
148
+ const { expected, onCompare } = await getExpected(ctx, await getImagePaths(config, ctx.testFullPath, imageName));
149
+ if (expected == null) {
150
+ await onCompare(actual);
151
+ return imageName ? `Expected image '${imageName}' does not exists` : 'Expected image does not exists';
152
+ }
153
+ if (actual.equals(expected)) {
154
+ await onCompare(actual);
155
+ return;
156
+ }
157
+ const { isEqual, diff } = compareImages(expected, actual, pixelmatch, config.diffOptions);
158
+ if (isEqual) {
159
+ await onCompare(actual);
160
+ return;
161
+ }
162
+ await onCompare(actual, expected, diff);
163
+ return imageName ? `Expected image '${imageName}' to match` : 'Expected image to match';
164
+ };
165
+ }
166
+ function getOdiffAssert(compare, ctx, config) {
167
+ const diffOptions = {
168
+ ...config.odiffOptions,
169
+ noFailOnFsErrors: true,
170
+ };
171
+ return async function assertImage(image, imageName) {
172
+ const { actual, expect, diff } = await getOdiffExpected(ctx, image, await getImagePaths(config, ctx.testFullPath, imageName));
173
+ const result = await compare(actual, expect, diff, diffOptions);
174
+ if (!result.match) {
175
+ if (result.reason == 'file-not-exists') {
176
+ return imageName ? `Expected image '${imageName}' does not exists` : 'Expected image does not exists';
177
+ }
178
+ return imageName ? `Expected image '${imageName}' to match` : 'Expected image to match';
179
+ }
180
+ };
181
+ }
182
+ //# sourceMappingURL=compare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/server/compare.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Config, Options } from '../types.js';
1
+ import { Config, Options, WorkerOptions } from '../types.js';
2
2
  export declare const defaultBrowser = "chrome";
3
- export declare const defaultConfig: Omit<Config, 'gridUrl' | 'testsDir' | 'tsConfig' | 'webdriver'>;
4
- export declare function readConfig(options: Options): Promise<Config>;
3
+ export declare const defaultConfig: Omit<Config, 'gridUrl' | 'tsConfig' | 'webdriver'>;
4
+ export declare function readConfig(options: Options | WorkerOptions): Promise<Config>;
@@ -1,4 +1,37 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
@@ -7,33 +40,37 @@ exports.defaultConfig = exports.defaultBrowser = void 0;
7
40
  exports.readConfig = readConfig;
8
41
  const fs_1 = __importDefault(require("fs"));
9
42
  const path_1 = __importDefault(require("path"));
43
+ const cluster_1 = __importDefault(require("cluster"));
10
44
  const url_1 = require("url");
11
- const browser_js_1 = require("./providers/browser.js");
45
+ const v = __importStar(require("valibot"));
46
+ const hybrid_js_1 = require("./providers/hybrid.js");
12
47
  const types_js_1 = require("../types.js");
13
48
  const utils_js_1 = require("./utils.js");
14
- const reporter_js_1 = require("./reporter.js");
49
+ const creevey_js_1 = require("./reporters/creevey.js");
50
+ const teamcity_js_1 = require("./reporters/teamcity.js");
15
51
  const logger_js_1 = require("./logger.js");
16
52
  exports.defaultBrowser = 'chrome';
17
53
  exports.defaultConfig = {
18
54
  disableTelemetry: false,
19
55
  useWorkerQueue: false,
20
56
  useDocker: true,
21
- dockerImage: 'aerokube/selenoid:latest-release',
57
+ dockerImage: 'aerokube/selenoid:latest', // TODO What about playwright?
22
58
  dockerImagePlatform: '',
23
59
  pullImages: true,
24
60
  failFast: false,
25
61
  storybookUrl: 'http://localhost:6006',
26
62
  screenDir: path_1.default.resolve('images'),
27
63
  reportDir: path_1.default.resolve('report'),
28
- reporter: process.env.TEAMCITY_VERSION ? reporter_js_1.TeamcityReporter : reporter_js_1.CreeveyReporter,
29
- storiesProvider: browser_js_1.loadStories,
64
+ testsDir: path_1.default.resolve('src'),
65
+ reporter: process.env.TEAMCITY_VERSION ? teamcity_js_1.TeamcityReporter : creevey_js_1.CreeveyReporter,
66
+ storiesProvider: hybrid_js_1.loadStories,
30
67
  maxRetries: 0,
31
68
  testTimeout: 30000,
32
69
  diffOptions: { threshold: 0.1, includeAA: false },
33
70
  odiffOptions: { threshold: 0.1, antialiasing: true },
34
71
  browsers: { [exports.defaultBrowser]: true },
35
72
  hooks: {},
36
- testsRegex: /\.creevey\.(t|j)s$/,
73
+ testsRegex: /\.creevey\.(m|c)?(t|j)s$/,
37
74
  };
38
75
  function normalizeBrowserConfig(name, config) {
39
76
  if (typeof config == 'boolean')
@@ -79,16 +116,46 @@ async function readConfig(options) {
79
116
  (0, logger_js_1.logger)().warn("Creevey supports `Selenium` and `Playwright` webdrivers. For backward compatibility `Selenium` is used by default, but it might changed in the future. Please explicitly specify one of webdrivers in your Creevey's config");
80
117
  configData.webdriver = SeleniumWebdriver;
81
118
  }
119
+ for (const key in configData) {
120
+ const configKey = key;
121
+ if (configData[configKey] === undefined) {
122
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
123
+ delete configData[configKey];
124
+ }
125
+ }
82
126
  Object.assign(userConfig, configData);
83
127
  }
84
- if (options.failFast != undefined)
85
- userConfig.failFast = Boolean(options.failFast);
128
+ if (userConfig.resolveStorybookUrl && !options.storybookUrl) {
129
+ userConfig.storybookUrl = await userConfig.resolveStorybookUrl();
130
+ }
86
131
  if (options.reportDir)
87
132
  userConfig.reportDir = path_1.default.resolve(options.reportDir);
88
133
  if (options.screenDir)
89
134
  userConfig.screenDir = path_1.default.resolve(options.screenDir);
90
135
  if (options.storybookUrl)
91
136
  userConfig.storybookUrl = options.storybookUrl;
137
+ if (v.is(types_js_1.OptionsSchema, options)) {
138
+ if (options.docker === false)
139
+ userConfig.useDocker = false;
140
+ if (options.failFast != undefined)
141
+ userConfig.failFast = Boolean(options.failFast);
142
+ if (cluster_1.default.isPrimary) {
143
+ if (options.storybookPort) {
144
+ const url = new URL(userConfig.storybookUrl);
145
+ url.port = `${options.storybookPort}`;
146
+ userConfig.storybookUrl = url.toString();
147
+ }
148
+ if (typeof options.storybookStart === 'string')
149
+ userConfig.storybookAutorunCmd = options.storybookStart;
150
+ else if (options.storybookStart) {
151
+ const { default: getPort } = await import('get-port');
152
+ const url = new URL(userConfig.storybookUrl);
153
+ const port = await getPort({ port: Number(url.port) });
154
+ url.port = `${port}`;
155
+ userConfig.storybookUrl = url.toString();
156
+ }
157
+ }
158
+ }
92
159
  // NOTE: Hack to pass typescript checking
93
160
  const config = userConfig;
94
161
  Object.entries(config.browsers).forEach(([browser, browserConfig]) => (config.browsers[browser] = normalizeBrowserConfig(browser, browserConfig)));
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/server/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/server/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Config, Options } from '../types';
2
+ export declare function getStorybookUrl({ storybookUrl }: Config, { storybookStart }: Options): [string, string | undefined];
3
+ export declare function checkIsStorybookConnected(url: string): Promise<boolean>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getStorybookUrl = getStorybookUrl;
4
+ exports.checkIsStorybookConnected = checkIsStorybookConnected;
5
+ const utils_js_1 = require("./utils.js");
6
+ const logger_js_1 = require("./logger.js");
7
+ const RESPONSE_CHECK_TIMEOUT_MS = 10000;
8
+ const RESPONSE_CHECK_INTERVAL_MS = 200;
9
+ function getStorybookUrl({ storybookUrl }, { storybookStart }) {
10
+ if (storybookStart) {
11
+ const url = new URL(storybookUrl);
12
+ url.hostname = 'localhost';
13
+ return [url.toString(), storybookUrl];
14
+ }
15
+ return [storybookUrl, undefined];
16
+ }
17
+ async function checkIsStorybookConnected(url) {
18
+ try {
19
+ await (0, utils_js_1.waitOnUrl)(url, RESPONSE_CHECK_TIMEOUT_MS, RESPONSE_CHECK_INTERVAL_MS);
20
+ return true;
21
+ }
22
+ catch (reason) {
23
+ const error = reason instanceof Error ? (reason.stack ?? reason.message) : reason;
24
+ (0, logger_js_1.logger)().error(error);
25
+ return false;
26
+ }
27
+ }
28
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/server/connection.ts"],"names":[],"mappings":";;AAOA,0CAOC;AAED,8DASC;AAxBD,yCAAuC;AACvC,2CAAqC;AAErC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AACxC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAEvC,SAAgB,eAAe,CAAC,EAAE,YAAY,EAAU,EAAE,EAAE,cAAc,EAAW;IACnF,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAClC,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AAEM,KAAK,UAAU,yBAAyB,CAAC,GAAW;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,oBAAS,EAAC,GAAG,EAAE,yBAAyB,EAAE,0BAA0B,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,MAAe,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,MAAiB,CAAC;QAC9F,IAAA,kBAAM,GAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -3,5 +3,5 @@ export declare function pullImages(images: string[], { auth, platform }?: {
3
3
  auth?: DockerAuth;
4
4
  platform?: string;
5
5
  }): Promise<void>;
6
- export declare function buildImage(imageName: string, dockerfile: string): Promise<void>;
6
+ export declare function buildImage(imageName: string, version: string, dockerfile: string): Promise<void>;
7
7
  export declare function runImage(image: string, args: string[], options: Record<string, unknown>, debug: boolean): Promise<string>;
@@ -7,10 +7,11 @@ exports.pullImages = pullImages;
7
7
  exports.buildImage = buildImage;
8
8
  exports.runImage = runImage;
9
9
  const tar_stream_1 = __importDefault(require("tar-stream"));
10
+ const loglevel_1 = __importDefault(require("loglevel"));
10
11
  const stream_1 = require("stream");
11
12
  const dockerode_1 = __importDefault(require("dockerode"));
12
- const messages_js_1 = require("./messages.js");
13
13
  const logger_js_1 = require("./logger.js");
14
+ const context_js_1 = require("./worker/context.js");
14
15
  const docker = new dockerode_1.default();
15
16
  class DevNull extends stream_1.Writable {
16
17
  _write(_chunk, _encoding, callback) {
@@ -48,15 +49,39 @@ async function pullImages(images, { auth, platform } = {}) {
48
49
  function onProgress(event) {
49
50
  if (!/^[a-z0-9]{12}$/i.test(event.id))
50
51
  return;
51
- spinner.text = `${image}: [${event.id}] ${event.status} ${event.progress ? event.progress : ''}`;
52
+ spinner.text = `${image}: [${event.id}] ${event.status} ${event.progress ?? ''}`;
52
53
  }
53
54
  });
54
55
  });
55
56
  }
56
57
  }
57
- async function buildImage(imageName, dockerfile) {
58
+ async function buildImage(imageName, version, dockerfile) {
58
59
  const images = await docker.listImages({ filters: { label: [`creevey=${imageName}`] } });
59
- if (images.at(0)) {
60
+ const containers = await docker.listContainers({ all: true, filters: { label: [`creevey=${imageName}`] } });
61
+ if (containers.length > 0) {
62
+ await Promise.all(containers.map(async (info) => {
63
+ const container = docker.getContainer(info.Id);
64
+ try {
65
+ await container.remove({ force: true });
66
+ }
67
+ catch {
68
+ /* noop */
69
+ }
70
+ }));
71
+ }
72
+ const oldImages = images.filter((info) => info.Labels.version !== version);
73
+ if (oldImages.length > 0) {
74
+ await Promise.all(oldImages.map(async (info) => {
75
+ const image = docker.getImage(info.Id);
76
+ try {
77
+ await image.remove({ force: true });
78
+ }
79
+ catch {
80
+ /* noop */
81
+ }
82
+ }));
83
+ }
84
+ if (oldImages.length !== images.length) {
60
85
  (0, logger_js_1.logger)().info(`Image ${imageName} already exists`);
61
86
  return;
62
87
  }
@@ -64,18 +89,24 @@ async function buildImage(imageName, dockerfile) {
64
89
  pack.entry({ name: 'Dockerfile' }, dockerfile);
65
90
  pack.finalize();
66
91
  const { default: yoctoSpinner } = await import('yocto-spinner');
67
- const spinner = yoctoSpinner({ text: `${imageName}: Build start` }).start();
92
+ const spinner = yoctoSpinner({ text: `${imageName}: Build start` });
93
+ if ((0, logger_js_1.logger)().getLevel() > loglevel_1.default.levels.DEBUG) {
94
+ spinner.start();
95
+ }
96
+ let isFailed = false;
68
97
  await new Promise((resolve, reject) => {
69
- void docker.buildImage(
70
- // @ts-expect-error Type incompatibility AsyncIterator and AsyncIterableIterator
71
- pack, { t: imageName, labels: { creevey: imageName } }, (buildError, stream) => {
98
+ docker.buildImage(pack,
99
+ // TODO Support buildkit decode grpc (version: '2')
100
+ { t: imageName, labels: { creevey: imageName, version }, version: '1' }, (buildError, stream) => {
72
101
  if (buildError || !stream) {
73
- spinner.error(buildError?.message);
102
+ // spinner.error(buildError?.message);
74
103
  reject(buildError ?? new Error('Unknown error'));
75
104
  return;
76
105
  }
77
106
  docker.modem.followProgress(stream, onFinished, onProgress);
78
107
  function onFinished(error) {
108
+ if (isFailed)
109
+ return;
79
110
  if (error) {
80
111
  spinner.error(error.message);
81
112
  reject(error);
@@ -85,40 +116,31 @@ async function buildImage(imageName, dockerfile) {
85
116
  resolve();
86
117
  }
87
118
  function onProgress(event) {
88
- if (!/^[a-z0-9]{12}$/i.test(event.id))
89
- return;
90
- spinner.text = `${imageName}: [${event.id}] ${event.status} ${event.progress ? event.progress : ''}`;
119
+ if ('stream' in event) {
120
+ if ((0, logger_js_1.logger)().getLevel() <= loglevel_1.default.levels.DEBUG) {
121
+ (0, logger_js_1.logger)().debug(event.stream.trim());
122
+ }
123
+ else {
124
+ spinner.text = `${imageName}: [Build] - ${event.stream}`;
125
+ }
126
+ }
127
+ else if ('errorDetail' in event) {
128
+ isFailed = true;
129
+ spinner.error(event.error);
130
+ reject(new Error(event.error));
131
+ }
91
132
  }
92
133
  });
93
134
  });
94
135
  }
95
136
  async function runImage(image, args, options, debug) {
96
- await Promise.all((await docker.listContainers({ all: true, filters: { ancestor: [image] } })).map(async (info) => {
97
- const container = docker.getContainer(info.Id);
98
- try {
99
- await container.stop();
100
- }
101
- catch {
102
- /* noop */
103
- }
104
- await container.remove();
105
- }));
106
137
  const hub = docker.run(image, args, debug ? process.stdout : new DevNull(), options, (error) => {
107
138
  if (error)
108
139
  throw error;
109
140
  });
110
141
  return new Promise((resolve) => {
111
142
  hub.once('container', (container) => {
112
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
113
- (0, messages_js_1.subscribeOn)('shutdown', async () => {
114
- try {
115
- await container.stop();
116
- await container.remove();
117
- }
118
- catch {
119
- /* noop */
120
- }
121
- });
143
+ (0, context_js_1.setWorkerContainer)(container);
122
144
  });
123
145
  hub.once('start', (container) => void container.inspect().then((info) => {
124
146
  resolve(info.NetworkSettings.Networks.bridge.IPAddress);
@@ -1 +1 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/server/docker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/server/docker.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { Options } from '../types.js';
2
- export default function (options: Options): Promise<void>;
1
+ import { Options, WorkerOptions } from '../types.js';
2
+ export default function (command: 'report' | 'test' | 'worker', options: Options | WorkerOptions): Promise<void>;