creevey 0.9.0-beta.20 → 0.9.0-beta.21

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 (477) hide show
  1. package/README.md +2 -2
  2. package/dist/cli.d.ts +2 -0
  3. package/dist/cli.js +5 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/client/addon/components/Addon.d.ts +8 -0
  6. package/dist/client/addon/components/Addon.js +57 -0
  7. package/dist/client/addon/components/Addon.js.map +1 -0
  8. package/{lib/types → dist}/client/addon/components/Icons.d.ts +0 -1
  9. package/dist/client/addon/components/Icons.js +18 -0
  10. package/dist/client/addon/components/Icons.js.map +1 -0
  11. package/{lib/types → dist}/client/addon/components/Panel.d.ts +1 -2
  12. package/dist/client/addon/components/Panel.js +32 -0
  13. package/dist/client/addon/components/Panel.js.map +1 -0
  14. package/{lib/types → dist}/client/addon/components/TestSelect.d.ts +1 -2
  15. package/dist/client/addon/components/TestSelect.js +33 -0
  16. package/dist/client/addon/components/TestSelect.js.map +1 -0
  17. package/dist/client/addon/components/Tools.d.ts +6 -0
  18. package/dist/client/addon/components/Tools.js +89 -0
  19. package/dist/client/addon/components/Tools.js.map +1 -0
  20. package/{lib/types/client/addon/Manager.d.ts → dist/client/addon/controller.d.ts} +8 -7
  21. package/dist/client/addon/controller.js +208 -0
  22. package/dist/client/addon/controller.js.map +1 -0
  23. package/dist/client/addon/decorator.js +6 -0
  24. package/dist/client/addon/decorator.js.map +1 -0
  25. package/dist/client/addon/index.d.ts +2 -0
  26. package/dist/client/addon/index.js +19 -0
  27. package/dist/client/addon/index.js.map +1 -0
  28. package/dist/client/addon/manager.js +41 -0
  29. package/dist/client/addon/manager.js.map +1 -0
  30. package/dist/client/addon/preset.js +6 -0
  31. package/dist/client/addon/preset.js.map +1 -0
  32. package/dist/client/addon/preview.js +8 -0
  33. package/dist/client/addon/preview.js.map +1 -0
  34. package/dist/client/addon/readyForCapture.js +7 -0
  35. package/dist/client/addon/readyForCapture.js.map +1 -0
  36. package/{lib/types → dist}/client/addon/utils.d.ts +1 -1
  37. package/dist/client/addon/utils.js +27 -0
  38. package/dist/client/addon/utils.js.map +1 -0
  39. package/{lib/types → dist}/client/addon/withCreevey.d.ts +3 -3
  40. package/dist/client/addon/withCreevey.js +286 -0
  41. package/dist/client/addon/withCreevey.js.map +1 -0
  42. package/{lib/types → dist}/client/shared/components/ImagesView/BlendView.d.ts +2 -2
  43. package/dist/client/shared/components/ImagesView/BlendView.js +74 -0
  44. package/dist/client/shared/components/ImagesView/BlendView.js.map +1 -0
  45. package/dist/client/shared/components/ImagesView/ImagesView.d.ts +9 -0
  46. package/dist/client/shared/components/ImagesView/ImagesView.js +43 -0
  47. package/dist/client/shared/components/ImagesView/ImagesView.js.map +1 -0
  48. package/{lib/types → dist}/client/shared/components/ImagesView/SideBySideView.d.ts +2 -2
  49. package/dist/client/shared/components/ImagesView/SideBySideView.js +121 -0
  50. package/dist/client/shared/components/ImagesView/SideBySideView.js.map +1 -0
  51. package/{lib/types → dist}/client/shared/components/ImagesView/SlideView.d.ts +2 -2
  52. package/dist/client/shared/components/ImagesView/SlideView.js +136 -0
  53. package/dist/client/shared/components/ImagesView/SlideView.js.map +1 -0
  54. package/{lib/types → dist}/client/shared/components/ImagesView/SwapView.d.ts +2 -2
  55. package/dist/client/shared/components/ImagesView/SwapView.js +72 -0
  56. package/dist/client/shared/components/ImagesView/SwapView.js.map +1 -0
  57. package/{lib/types/client/shared/components/ImagesView/ImagesView.d.ts → dist/client/shared/components/ImagesView/common.d.ts} +1 -11
  58. package/dist/client/shared/components/ImagesView/common.js +14 -0
  59. package/dist/client/shared/components/ImagesView/common.js.map +1 -0
  60. package/dist/client/shared/components/ImagesView/index.d.ts +5 -0
  61. package/dist/client/shared/components/ImagesView/index.js +14 -0
  62. package/dist/client/shared/components/ImagesView/index.js.map +1 -0
  63. package/{lib/types → dist}/client/shared/components/PageFooter/PageFooter.d.ts +0 -1
  64. package/dist/client/shared/components/PageFooter/PageFooter.js +25 -0
  65. package/dist/client/shared/components/PageFooter/PageFooter.js.map +1 -0
  66. package/{lib/types → dist}/client/shared/components/PageFooter/Paging.d.ts +1 -2
  67. package/dist/client/shared/components/PageFooter/Paging.js +68 -0
  68. package/dist/client/shared/components/PageFooter/Paging.js.map +1 -0
  69. package/{lib/types → dist}/client/shared/components/PageHeader/ImagePreview.d.ts +1 -1
  70. package/dist/client/shared/components/PageHeader/ImagePreview.js +61 -0
  71. package/dist/client/shared/components/PageHeader/ImagePreview.js.map +1 -0
  72. package/{lib/types → dist}/client/shared/components/PageHeader/PageHeader.d.ts +2 -5
  73. package/dist/client/shared/components/PageHeader/PageHeader.js +86 -0
  74. package/dist/client/shared/components/PageHeader/PageHeader.js.map +1 -0
  75. package/{lib/types → dist}/client/shared/components/ResultsPage.d.ts +3 -5
  76. package/dist/client/shared/components/ResultsPage.js +95 -0
  77. package/dist/client/shared/components/ResultsPage.js.map +1 -0
  78. package/{lib/types → dist}/client/shared/creeveyClientApi.d.ts +1 -1
  79. package/dist/client/shared/creeveyClientApi.js +53 -0
  80. package/dist/client/shared/creeveyClientApi.js.map +1 -0
  81. package/{lib/types → dist}/client/shared/helpers.d.ts +3 -3
  82. package/dist/client/shared/helpers.js +381 -0
  83. package/dist/client/shared/helpers.js.map +1 -0
  84. package/{lib/types → dist}/client/shared/viewMode.d.ts +1 -1
  85. package/dist/client/shared/viewMode.js +11 -0
  86. package/dist/client/shared/viewMode.js.map +1 -0
  87. package/dist/client/web/202.js +1 -0
  88. package/dist/client/web/270.js +43 -0
  89. package/dist/client/web/752.js +1 -0
  90. package/{lib/types → dist}/client/web/CreeveyApp.d.ts +2 -3
  91. package/dist/client/web/CreeveyApp.js +130 -0
  92. package/dist/client/web/CreeveyApp.js.map +1 -0
  93. package/{lib/types → dist}/client/web/CreeveyContext.d.ts +1 -1
  94. package/dist/client/web/CreeveyContext.js +17 -0
  95. package/dist/client/web/CreeveyContext.js.map +1 -0
  96. package/dist/client/web/CreeveyLoader.d.ts +3 -0
  97. package/dist/client/web/CreeveyLoader.js +52 -0
  98. package/dist/client/web/CreeveyLoader.js.map +1 -0
  99. package/{lib/types → dist}/client/web/CreeveyView/SideBar/Checkbox.d.ts +2 -2
  100. package/dist/client/web/CreeveyView/SideBar/Checkbox.js +86 -0
  101. package/dist/client/web/CreeveyView/SideBar/Checkbox.js.map +1 -0
  102. package/{lib/types → dist}/client/web/CreeveyView/SideBar/Search.d.ts +0 -1
  103. package/dist/client/web/CreeveyView/SideBar/Search.js +125 -0
  104. package/dist/client/web/CreeveyView/SideBar/Search.js.map +1 -0
  105. package/{lib/types → dist}/client/web/CreeveyView/SideBar/SideBar.d.ts +2 -2
  106. package/dist/client/web/CreeveyView/SideBar/SideBar.js +101 -0
  107. package/dist/client/web/CreeveyView/SideBar/SideBar.js.map +1 -0
  108. package/{lib/types → dist}/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +2 -3
  109. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js +113 -0
  110. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js.map +1 -0
  111. package/{lib/types → dist}/client/web/CreeveyView/SideBar/SuiteLink.d.ts +14 -14
  112. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js +108 -0
  113. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js.map +1 -0
  114. package/{lib/types → dist}/client/web/CreeveyView/SideBar/TestLink.d.ts +1 -2
  115. package/dist/client/web/CreeveyView/SideBar/TestLink.js +63 -0
  116. package/dist/client/web/CreeveyView/SideBar/TestLink.js.map +1 -0
  117. package/{lib/types → dist}/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +2 -2
  118. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js +52 -0
  119. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js.map +1 -0
  120. package/{lib/types → dist}/client/web/CreeveyView/SideBar/TestsStatus.d.ts +3 -3
  121. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js +74 -0
  122. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js.map +1 -0
  123. package/{lib/types → dist}/client/web/CreeveyView/SideBar/Toggle.d.ts +0 -1
  124. package/dist/client/web/CreeveyView/SideBar/Toggle.js +69 -0
  125. package/dist/client/web/CreeveyView/SideBar/Toggle.js.map +1 -0
  126. package/dist/client/web/CreeveyView/SideBar/index.d.ts +1 -0
  127. package/dist/client/web/CreeveyView/SideBar/index.js +6 -0
  128. package/dist/client/web/CreeveyView/SideBar/index.js.map +1 -0
  129. package/{lib/types → dist}/client/web/KeyboardEventsContext.d.ts +4 -4
  130. package/dist/client/web/KeyboardEventsContext.js +116 -0
  131. package/dist/client/web/KeyboardEventsContext.js.map +1 -0
  132. package/{lib/types → dist}/client/web/index.d.ts +1 -1
  133. package/{lib/cjs → dist}/client/web/index.html +12 -3
  134. package/dist/client/web/index.js +75 -0
  135. package/dist/client/web/index.js.map +1 -0
  136. package/dist/client/web/main.js +79 -0
  137. package/dist/creevey.d.ts +1 -0
  138. package/dist/creevey.js +52 -0
  139. package/dist/creevey.js.map +1 -0
  140. package/dist/index.d.ts +5 -0
  141. package/dist/index.js +24 -0
  142. package/dist/index.js.map +1 -0
  143. package/{lib/types → dist}/server/config.d.ts +1 -1
  144. package/dist/server/config.js +84 -0
  145. package/dist/server/config.js.map +1 -0
  146. package/{lib/types → dist}/server/docker.d.ts +2 -2
  147. package/dist/server/docker.js +122 -0
  148. package/dist/server/docker.js.map +1 -0
  149. package/{lib/types → dist}/server/index.d.ts +1 -1
  150. package/dist/server/index.js +47 -0
  151. package/dist/server/index.js.map +1 -0
  152. package/{lib/types → dist}/server/logger.d.ts +2 -2
  153. package/dist/server/logger.js +25 -0
  154. package/dist/server/logger.js.map +1 -0
  155. package/{lib/types → dist}/server/master/api.d.ts +1 -1
  156. package/dist/server/master/api.js +50 -0
  157. package/dist/server/master/api.js.map +1 -0
  158. package/dist/server/master/index.d.ts +3 -0
  159. package/dist/server/master/index.js +110 -0
  160. package/dist/server/master/index.js.map +1 -0
  161. package/{lib/types → dist}/server/master/master.d.ts +2 -2
  162. package/dist/server/master/master.js +40 -0
  163. package/dist/server/master/master.js.map +1 -0
  164. package/{lib/types → dist}/server/master/pool.d.ts +1 -2
  165. package/dist/server/master/pool.js +186 -0
  166. package/dist/server/master/pool.js.map +1 -0
  167. package/{lib/types → dist}/server/master/runner.d.ts +3 -8
  168. package/dist/server/master/runner.js +172 -0
  169. package/dist/server/master/runner.js.map +1 -0
  170. package/dist/server/master/server.d.ts +2 -0
  171. package/dist/server/master/server.js +114 -0
  172. package/dist/server/master/server.js.map +1 -0
  173. package/{lib/types → dist}/server/messages.d.ts +1 -4
  174. package/dist/server/messages.js +222 -0
  175. package/dist/server/messages.js.map +1 -0
  176. package/{lib/types → dist}/server/selenium/browser.d.ts +1 -1
  177. package/dist/server/selenium/browser.js +634 -0
  178. package/dist/server/selenium/browser.js.map +1 -0
  179. package/dist/server/selenium/index.d.ts +2 -0
  180. package/dist/server/selenium/index.js +19 -0
  181. package/dist/server/selenium/index.js.map +1 -0
  182. package/{lib/types → dist}/server/selenium/selenoid.d.ts +1 -1
  183. package/dist/server/selenium/selenoid.js +120 -0
  184. package/dist/server/selenium/selenoid.js.map +1 -0
  185. package/{lib/types → dist}/server/stories.d.ts +2 -7
  186. package/dist/server/stories.js +92 -0
  187. package/dist/server/stories.js.map +1 -0
  188. package/dist/server/storybook/providers/browser.d.ts +2 -0
  189. package/dist/server/storybook/providers/browser.js +60 -0
  190. package/dist/server/storybook/providers/browser.js.map +1 -0
  191. package/dist/server/storybook/providers/hybrid.d.ts +2 -0
  192. package/dist/server/storybook/providers/hybrid.js +59 -0
  193. package/dist/server/storybook/providers/hybrid.js.map +1 -0
  194. package/dist/server/telemetry.js +196 -0
  195. package/dist/server/telemetry.js.map +1 -0
  196. package/{lib/types → dist}/server/testsFiles/parser.d.ts +2 -6
  197. package/dist/server/testsFiles/parser.js +50 -0
  198. package/dist/server/testsFiles/parser.js.map +1 -0
  199. package/dist/server/update.d.ts +2 -0
  200. package/dist/server/update.js +53 -0
  201. package/dist/server/update.js.map +1 -0
  202. package/{lib/types → dist}/server/utils.d.ts +9 -9
  203. package/dist/server/utils.js +142 -0
  204. package/dist/server/utils.js.map +1 -0
  205. package/{lib/types → dist}/server/worker/chai-image.d.ts +1 -2
  206. package/dist/server/worker/chai-image.js +113 -0
  207. package/dist/server/worker/chai-image.js.map +1 -0
  208. package/{lib/types → dist}/server/worker/helpers.d.ts +1 -1
  209. package/dist/server/worker/helpers.js +57 -0
  210. package/dist/server/worker/helpers.js.map +1 -0
  211. package/dist/server/worker/index.d.ts +1 -0
  212. package/dist/server/worker/index.js +6 -0
  213. package/dist/server/worker/index.js.map +1 -0
  214. package/dist/server/worker/reporter.js +130 -0
  215. package/dist/server/worker/reporter.js.map +1 -0
  216. package/dist/server/worker/worker.d.ts +4 -0
  217. package/dist/server/worker/worker.js +213 -0
  218. package/dist/server/worker/worker.js.map +1 -0
  219. package/{lib/types → dist}/shared/index.d.ts +1 -1
  220. package/dist/shared/index.js +77 -0
  221. package/dist/shared/index.js.map +1 -0
  222. package/dist/shared/serializeRegExp.js +25 -0
  223. package/dist/shared/serializeRegExp.js.map +1 -0
  224. package/{lib/types → dist}/types.d.ts +48 -71
  225. package/dist/types.js +61 -0
  226. package/dist/types.js.map +1 -0
  227. package/docs/config.md +1 -4
  228. package/docs/tests.md +3 -3
  229. package/eslint.config.mjs +62 -0
  230. package/manager/package.json +3 -0
  231. package/package.json +76 -103
  232. package/preset/README.md +3 -0
  233. package/preset/package.json +3 -0
  234. package/preview/README.md +3 -0
  235. package/preview/package.json +3 -0
  236. package/src/cli.ts +3 -0
  237. package/src/client/addon/components/Addon.tsx +53 -0
  238. package/src/client/addon/components/Icons.tsx +28 -0
  239. package/src/client/addon/components/Panel.tsx +53 -0
  240. package/src/client/addon/components/TestSelect.tsx +48 -0
  241. package/src/client/addon/components/Tools.tsx +93 -0
  242. package/src/client/addon/controller.ts +224 -0
  243. package/src/client/addon/decorator.ts +3 -0
  244. package/src/client/addon/index.ts +2 -0
  245. package/src/client/addon/manager.ts +44 -0
  246. package/{lib/esm/client/addon/preset.js → src/client/addon/preset.ts} +2 -1
  247. package/src/client/addon/preview.ts +7 -0
  248. package/src/client/addon/readyForCapture.ts +9 -0
  249. package/src/client/addon/utils.tsx +24 -0
  250. package/src/client/addon/withCreevey.ts +326 -0
  251. package/src/client/shared/components/ImagesView/BlendView.tsx +71 -0
  252. package/src/client/shared/components/ImagesView/ImagesView.tsx +62 -0
  253. package/src/client/shared/components/ImagesView/SideBySideView.tsx +139 -0
  254. package/{lib/esm/client/shared/components/ImagesView/SlideView.js → src/client/shared/components/ImagesView/SlideView.tsx} +78 -75
  255. package/src/client/shared/components/ImagesView/SwapView.tsx +81 -0
  256. package/src/client/shared/components/ImagesView/common.ts +23 -0
  257. package/src/client/shared/components/ImagesView/index.ts +5 -0
  258. package/src/client/shared/components/PageFooter/PageFooter.tsx +44 -0
  259. package/src/client/shared/components/PageFooter/Paging.tsx +105 -0
  260. package/src/client/shared/components/PageHeader/ImagePreview.tsx +82 -0
  261. package/src/client/shared/components/PageHeader/PageHeader.tsx +123 -0
  262. package/src/client/shared/components/ResultsPage.tsx +135 -0
  263. package/src/client/shared/creeveyClientApi.ts +64 -0
  264. package/src/client/shared/helpers.ts +422 -0
  265. package/src/client/shared/viewMode.ts +10 -0
  266. package/src/client/web/CreeveyApp.tsx +177 -0
  267. package/src/client/web/CreeveyContext.tsx +20 -0
  268. package/src/client/web/CreeveyLoader.tsx +56 -0
  269. package/src/client/web/CreeveyView/SideBar/Checkbox.tsx +118 -0
  270. package/src/client/web/CreeveyView/SideBar/Search.tsx +140 -0
  271. package/src/client/web/CreeveyView/SideBar/SideBar.tsx +125 -0
  272. package/src/client/web/CreeveyView/SideBar/SideBarHeader.tsx +138 -0
  273. package/src/client/web/CreeveyView/SideBar/SuiteLink.tsx +118 -0
  274. package/src/client/web/CreeveyView/SideBar/TestLink.tsx +67 -0
  275. package/src/client/web/CreeveyView/SideBar/TestStatusIcon.tsx +58 -0
  276. package/src/client/web/CreeveyView/SideBar/TestsStatus.tsx +105 -0
  277. package/src/client/web/CreeveyView/SideBar/Toggle.tsx +85 -0
  278. package/src/client/web/CreeveyView/SideBar/index.ts +1 -0
  279. package/src/client/web/KeyboardEventsContext.tsx +121 -0
  280. package/{lib/esm → src}/client/web/index.html +12 -3
  281. package/src/client/web/index.tsx +63 -0
  282. package/src/creevey.ts +47 -0
  283. package/src/index.ts +4 -0
  284. package/src/server/config.ts +83 -0
  285. package/src/server/docker.ts +136 -0
  286. package/src/server/index.ts +51 -0
  287. package/{lib/esm/server/logger.js → src/server/logger.ts} +8 -6
  288. package/src/server/master/api.ts +55 -0
  289. package/src/server/master/index.ts +111 -0
  290. package/src/server/master/master.ts +47 -0
  291. package/src/server/master/pool.ts +203 -0
  292. package/src/server/master/runner.ts +189 -0
  293. package/src/server/master/server.ts +124 -0
  294. package/src/server/messages.ts +273 -0
  295. package/src/server/selenium/browser.ts +834 -0
  296. package/src/server/selenium/index.ts +2 -0
  297. package/src/server/selenium/selenoid.ts +154 -0
  298. package/src/server/stories.ts +133 -0
  299. package/src/server/storybook/providers/browser.ts +58 -0
  300. package/src/server/storybook/providers/hybrid.ts +70 -0
  301. package/src/server/telemetry.ts +212 -0
  302. package/src/server/testsFiles/parser.ts +60 -0
  303. package/src/server/update.ts +74 -0
  304. package/src/server/utils.ts +184 -0
  305. package/src/server/worker/chai-image.ts +147 -0
  306. package/src/server/worker/helpers.ts +61 -0
  307. package/src/server/worker/index.ts +1 -0
  308. package/src/server/worker/reporter.ts +170 -0
  309. package/src/server/worker/worker.ts +234 -0
  310. package/src/shared/index.ts +76 -0
  311. package/src/shared/serializeRegExp.ts +26 -0
  312. package/src/types.ts +500 -0
  313. package/types/chai.d.ts +0 -1
  314. package/types/global.d.ts +1 -1
  315. package/types/mocha.d.ts +1 -1
  316. package/webpack.config.mjs +46 -0
  317. package/.yarn/install-state.gz +0 -0
  318. package/addon/package.json +0 -5
  319. package/jest.config.js +0 -6
  320. package/lib/cjs/cli.js +0 -6
  321. package/lib/cjs/client/addon/Manager.js +0 -192
  322. package/lib/cjs/client/addon/components/Addon.js +0 -48
  323. package/lib/cjs/client/addon/components/Icons.js +0 -40
  324. package/lib/cjs/client/addon/components/Panel.js +0 -59
  325. package/lib/cjs/client/addon/components/TestSelect.js +0 -52
  326. package/lib/cjs/client/addon/components/Tools.js +0 -84
  327. package/lib/cjs/client/addon/decorator.js +0 -8
  328. package/lib/cjs/client/addon/index.js +0 -27
  329. package/lib/cjs/client/addon/preset.js +0 -8
  330. package/lib/cjs/client/addon/preview.js +0 -11
  331. package/lib/cjs/client/addon/readyForCapture.js +0 -9
  332. package/lib/cjs/client/addon/register.js +0 -57
  333. package/lib/cjs/client/addon/utils.js +0 -34
  334. package/lib/cjs/client/addon/withCreevey.js +0 -272
  335. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +0 -75
  336. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +0 -76
  337. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +0 -139
  338. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +0 -151
  339. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +0 -79
  340. package/lib/cjs/client/shared/components/ImagesView/index.js +0 -40
  341. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +0 -43
  342. package/lib/cjs/client/shared/components/PageFooter/Paging.js +0 -77
  343. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +0 -86
  344. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +0 -100
  345. package/lib/cjs/client/shared/components/ResultsPage.js +0 -116
  346. package/lib/cjs/client/shared/creeveyClientApi.js +0 -66
  347. package/lib/cjs/client/shared/helpers.js +0 -357
  348. package/lib/cjs/client/shared/viewMode.js +0 -13
  349. package/lib/cjs/client/web/192.js +0 -1
  350. package/lib/cjs/client/web/632.js +0 -43
  351. package/lib/cjs/client/web/794.js +0 -1
  352. package/lib/cjs/client/web/main.js +0 -79
  353. package/lib/cjs/creevey.js +0 -56
  354. package/lib/cjs/index.js +0 -47
  355. package/lib/cjs/server/config.js +0 -76
  356. package/lib/cjs/server/docker.js +0 -124
  357. package/lib/cjs/server/index.js +0 -58
  358. package/lib/cjs/server/logger.js +0 -34
  359. package/lib/cjs/server/master/api.js +0 -58
  360. package/lib/cjs/server/master/index.js +0 -122
  361. package/lib/cjs/server/master/master.js +0 -42
  362. package/lib/cjs/server/master/pool.js +0 -163
  363. package/lib/cjs/server/master/runner.js +0 -254
  364. package/lib/cjs/server/master/server.js +0 -110
  365. package/lib/cjs/server/messages.js +0 -218
  366. package/lib/cjs/server/selenium/browser.js +0 -644
  367. package/lib/cjs/server/selenium/index.js +0 -27
  368. package/lib/cjs/server/selenium/selenoid.js +0 -148
  369. package/lib/cjs/server/stories.js +0 -148
  370. package/lib/cjs/server/storybook/providers/browser.js +0 -64
  371. package/lib/cjs/server/storybook/providers/hybrid.js +0 -63
  372. package/lib/cjs/server/telemetry.js +0 -167
  373. package/lib/cjs/server/testsFiles/parser.js +0 -56
  374. package/lib/cjs/server/testsFiles/register.js +0 -42
  375. package/lib/cjs/server/update.js +0 -62
  376. package/lib/cjs/server/utils.js +0 -144
  377. package/lib/cjs/server/worker/chai-image.js +0 -116
  378. package/lib/cjs/server/worker/helpers.js +0 -59
  379. package/lib/cjs/server/worker/index.js +0 -13
  380. package/lib/cjs/server/worker/reporter.js +0 -93
  381. package/lib/cjs/server/worker/worker.js +0 -238
  382. package/lib/cjs/shared/index.js +0 -87
  383. package/lib/cjs/shared/serializeRegExp.js +0 -34
  384. package/lib/cjs/types.js +0 -65
  385. package/lib/esm/cli.js +0 -4
  386. package/lib/esm/client/addon/Manager.js +0 -185
  387. package/lib/esm/client/addon/components/Addon.js +0 -39
  388. package/lib/esm/client/addon/components/Icons.js +0 -31
  389. package/lib/esm/client/addon/components/Panel.js +0 -51
  390. package/lib/esm/client/addon/components/TestSelect.js +0 -45
  391. package/lib/esm/client/addon/components/Tools.js +0 -75
  392. package/lib/esm/client/addon/decorator.js +0 -2
  393. package/lib/esm/client/addon/index.js +0 -2
  394. package/lib/esm/client/addon/preview.js +0 -5
  395. package/lib/esm/client/addon/readyForCapture.js +0 -3
  396. package/lib/esm/client/addon/register.js +0 -49
  397. package/lib/esm/client/addon/utils.js +0 -27
  398. package/lib/esm/client/addon/withCreevey.js +0 -263
  399. package/lib/esm/client/shared/components/ImagesView/BlendView.js +0 -67
  400. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +0 -67
  401. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +0 -131
  402. package/lib/esm/client/shared/components/ImagesView/SwapView.js +0 -71
  403. package/lib/esm/client/shared/components/ImagesView/index.js +0 -5
  404. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +0 -36
  405. package/lib/esm/client/shared/components/PageFooter/Paging.js +0 -70
  406. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +0 -79
  407. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +0 -92
  408. package/lib/esm/client/shared/components/ResultsPage.js +0 -107
  409. package/lib/esm/client/shared/creeveyClientApi.js +0 -60
  410. package/lib/esm/client/shared/helpers.js +0 -327
  411. package/lib/esm/client/shared/viewMode.js +0 -6
  412. package/lib/esm/client/web/192.js +0 -1
  413. package/lib/esm/client/web/632.js +0 -43
  414. package/lib/esm/client/web/794.js +0 -1
  415. package/lib/esm/client/web/main.js +0 -79
  416. package/lib/esm/client/web/main.js.LICENSE.txt +0 -34
  417. package/lib/esm/creevey.js +0 -53
  418. package/lib/esm/index.js +0 -4
  419. package/lib/esm/server/config.js +0 -66
  420. package/lib/esm/server/docker.js +0 -115
  421. package/lib/esm/server/index.js +0 -50
  422. package/lib/esm/server/master/api.js +0 -51
  423. package/lib/esm/server/master/index.js +0 -115
  424. package/lib/esm/server/master/master.js +0 -33
  425. package/lib/esm/server/master/pool.js +0 -154
  426. package/lib/esm/server/master/runner.js +0 -246
  427. package/lib/esm/server/master/server.js +0 -103
  428. package/lib/esm/server/messages.js +0 -200
  429. package/lib/esm/server/selenium/browser.js +0 -631
  430. package/lib/esm/server/selenium/index.js +0 -2
  431. package/lib/esm/server/selenium/selenoid.js +0 -140
  432. package/lib/esm/server/stories.js +0 -139
  433. package/lib/esm/server/storybook/providers/browser.js +0 -56
  434. package/lib/esm/server/storybook/providers/hybrid.js +0 -53
  435. package/lib/esm/server/telemetry.js +0 -160
  436. package/lib/esm/server/testsFiles/parser.js +0 -44
  437. package/lib/esm/server/testsFiles/register.js +0 -34
  438. package/lib/esm/server/update.js +0 -53
  439. package/lib/esm/server/utils.js +0 -125
  440. package/lib/esm/server/worker/chai-image.js +0 -109
  441. package/lib/esm/server/worker/helpers.js +0 -53
  442. package/lib/esm/server/worker/index.js +0 -1
  443. package/lib/esm/server/worker/reporter.js +0 -84
  444. package/lib/esm/server/worker/worker.js +0 -231
  445. package/lib/esm/shared/index.js +0 -77
  446. package/lib/esm/shared/serializeRegExp.js +0 -24
  447. package/lib/esm/types.js +0 -47
  448. package/lib/types/cli.d.ts +0 -1
  449. package/lib/types/client/addon/components/Addon.d.ts +0 -9
  450. package/lib/types/client/addon/components/Tools.d.ts +0 -7
  451. package/lib/types/client/addon/index.d.ts +0 -2
  452. package/lib/types/client/addon/register.d.ts +0 -3
  453. package/lib/types/client/shared/components/ImagesView/index.d.ts +0 -5
  454. package/lib/types/client/web/CreeveyLoader.d.ts +0 -3
  455. package/lib/types/client/web/CreeveyView/SideBar/index.d.ts +0 -1
  456. package/lib/types/index.d.ts +0 -6
  457. package/lib/types/server/master/index.d.ts +0 -3
  458. package/lib/types/server/master/server.d.ts +0 -2
  459. package/lib/types/server/selenium/index.d.ts +0 -2
  460. package/lib/types/server/storybook/providers/browser.d.ts +0 -2
  461. package/lib/types/server/storybook/providers/hybrid.d.ts +0 -2
  462. package/lib/types/server/testsFiles/register.d.ts +0 -2
  463. package/lib/types/server/update.d.ts +0 -2
  464. package/lib/types/server/worker/index.d.ts +0 -1
  465. package/lib/types/server/worker/worker.d.ts +0 -4
  466. package/types/babel__register.d.ts +0 -1
  467. package/types/event-source-polyfill.d.ts +0 -6
  468. /package/{lib/types → dist}/client/addon/decorator.d.ts +0 -0
  469. /package/{lib/types/creevey.d.ts → dist/client/addon/manager.d.ts} +0 -0
  470. /package/{lib/types → dist}/client/addon/preset.d.ts +0 -0
  471. /package/{lib/types → dist}/client/addon/preview.d.ts +0 -0
  472. /package/{lib/types → dist}/client/addon/readyForCapture.d.ts +0 -0
  473. /package/{lib/cjs → dist}/client/web/main.js.LICENSE.txt +0 -0
  474. /package/{lib/types → dist}/server/telemetry.d.ts +0 -0
  475. /package/{lib/types → dist}/server/worker/reporter.d.ts +0 -0
  476. /package/{lib/types → dist}/shared/serializeRegExp.d.ts +0 -0
  477. /package/{addon → manager}/README.md +0 -0
@@ -1,238 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = worker;
7
- var _util = require("util");
8
- var _fs = _interopRequireDefault(require("fs"));
9
- var _path = _interopRequireDefault(require("path"));
10
- var _chai = _interopRequireDefault(require("chai"));
11
- var _chalk = _interopRequireDefault(require("chalk"));
12
- var _mocha = _interopRequireDefault(require("mocha"));
13
- var _seleniumWebdriver = require("selenium-webdriver");
14
- var _types = require("../../types");
15
- var _messages = require("../messages");
16
- var _chaiImage = _interopRequireDefault(require("./chai-image"));
17
- var _selenium = require("../selenium");
18
- var _reporter = require("./reporter");
19
- var _helpers = require("./helpers");
20
- var _logger = require("../logger");
21
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
- const statAsync = (0, _util.promisify)(_fs.default.stat);
23
- const readdirAsync = (0, _util.promisify)(_fs.default.readdir);
24
- const readFileAsync = (0, _util.promisify)(_fs.default.readFile);
25
- const writeFileAsync = (0, _util.promisify)(_fs.default.writeFile);
26
- const mkdirAsync = (0, _util.promisify)(_fs.default.mkdir);
27
- async function getStat(filePath) {
28
- try {
29
- return await statAsync(filePath);
30
- } catch (error) {
31
- if (typeof error == 'object' && error && error.code === 'ENOENT') {
32
- return null;
33
- }
34
- throw error;
35
- }
36
- }
37
- async function getLastImageNumber(imageDir, imageName) {
38
- const actualImagesRegexp = new RegExp(`${imageName}-actual-(\\d+)\\.png`);
39
- try {
40
- return (await readdirAsync(imageDir)).map(filename => filename.replace(actualImagesRegexp, '$1')).map(Number).filter(x => !isNaN(x)).sort((a, b) => b - a)[0] ?? 0;
41
- } catch (_error) {
42
- return 0;
43
- }
44
- }
45
-
46
- // FIXME browser options hotfix
47
- async function worker(config, options) {
48
- var _await$browser$getSes;
49
- let retries = 0;
50
- let images = {};
51
- let error = undefined;
52
- const screenshots = [];
53
- const testScope = [];
54
- function runHandler(failures) {
55
- if (failures > 0 && (error || Object.values(images).some(image => (image === null || image === void 0 ? void 0 : image.error) != null))) {
56
- const isTimeout = hasTimeout(error) || Object.values(images).some(image => hasTimeout(image === null || image === void 0 ? void 0 : image.error));
57
- const payload = {
58
- status: 'failed',
59
- images,
60
- error
61
- };
62
- isTimeout ? (0, _messages.emitWorkerMessage)({
63
- type: 'error',
64
- payload: {
65
- error: error ?? 'Unknown error'
66
- }
67
- }) : (0, _messages.emitTestMessage)({
68
- type: 'end',
69
- payload
70
- });
71
- } else {
72
- (0, _messages.emitTestMessage)({
73
- type: 'end',
74
- payload: {
75
- status: 'success',
76
- images
77
- }
78
- });
79
- }
80
- }
81
- async function saveImages(imageDir, images) {
82
- await mkdirAsync(imageDir, {
83
- recursive: true
84
- });
85
- for (const {
86
- name,
87
- data
88
- } of images) {
89
- await writeFileAsync(_path.default.join(imageDir, name), data);
90
- }
91
- }
92
- async function getExpected(assertImageName) {
93
- // context => [kind, story, test, browser]
94
- // rootSuite -> kindSuite -> storyTest -> [browsers.png]
95
- // rootSuite -> kindSuite -> storySuite -> test -> [browsers.png]
96
- const testPath = [...testScope];
97
- const imageName = assertImageName ?? testPath.pop();
98
- const imagesMeta = [];
99
- const reportImageDir = _path.default.join(config.reportDir, ...testPath);
100
- const imageNumber = (await getLastImageNumber(reportImageDir, imageName)) + 1;
101
- const actualImageName = `${imageName}-actual-${imageNumber}.png`;
102
- const image = images[imageName] = images[imageName] ?? {
103
- actual: actualImageName
104
- };
105
- const onCompare = async (actual, expect, diff) => {
106
- imagesMeta.push({
107
- name: image.actual,
108
- data: actual
109
- });
110
- if (diff && expect) {
111
- image.expect = `${imageName}-expect-${imageNumber}.png`;
112
- image.diff = `${imageName}-diff-${imageNumber}.png`;
113
- imagesMeta.push({
114
- name: image.expect,
115
- data: expect
116
- });
117
- imagesMeta.push({
118
- name: image.diff,
119
- data: diff
120
- });
121
- }
122
- if (options.saveReport) {
123
- await saveImages(reportImageDir, imagesMeta);
124
- }
125
- };
126
- const expectImageDir = _path.default.join(config.screenDir, ...testPath);
127
- const expectImageStat = await getStat(_path.default.join(expectImageDir, `${imageName}.png`));
128
- if (!expectImageStat) return {
129
- expected: null,
130
- onCompare
131
- };
132
- const expected = await readFileAsync(_path.default.join(expectImageDir, `${imageName}.png`));
133
- return {
134
- expected,
135
- onCompare
136
- };
137
- }
138
- const mochaOptions = {
139
- timeout: 30000,
140
- reporter: process.env.TEAMCITY_VERSION ? _reporter.TeamcityReporter : options.reporter || _reporter.CreeveyReporter,
141
- reporterOptions: {
142
- reportDir: config.reportDir,
143
- topLevelSuite: options.browser,
144
- get willRetry() {
145
- return retries < config.maxRetries;
146
- },
147
- get images() {
148
- return images;
149
- },
150
- get sessionId() {
151
- return sessionId;
152
- }
153
- }
154
- };
155
- const mocha = new _mocha.default(mochaOptions);
156
- mocha.cleanReferencesAfterRun(false);
157
- _chai.default.use((0, _chaiImage.default)(getExpected, config.diffOptions));
158
- if ((await (0, _selenium.getBrowser)(config, options)) == null) return;
159
- await (0, _helpers.addTestsFromStories)(mocha.suite, config, {
160
- browser: options.browser,
161
- watch: options.ui,
162
- debug: options.debug,
163
- port: options.port
164
- });
165
- try {
166
- var _await$getBrowser;
167
- await ((_await$getBrowser = await (0, _selenium.getBrowser)(config, options)) === null || _await$getBrowser === void 0 ? void 0 : _await$getBrowser.getCurrentUrl());
168
- } catch (_) {
169
- await (0, _selenium.closeBrowser)();
170
- }
171
- const browser = await (0, _selenium.getBrowser)(config, options);
172
- const sessionId = (_await$browser$getSes = await (browser === null || browser === void 0 ? void 0 : browser.getSession())) === null || _await$browser$getSes === void 0 ? void 0 : _await$browser$getSes.getId();
173
- if (browser == null) return;
174
- if (options.debug) {
175
- const interval = setInterval(() => void browser.getCurrentUrl().then(url => {
176
- _logger.logger.debug(`${options.browser}:${_chalk.default.gray(sessionId)}`, 'current url', _chalk.default.magenta(url));
177
- }), 10 * 1000);
178
- (0, _messages.subscribeOn)('shutdown', () => clearInterval(interval));
179
- }
180
- mocha.suite.beforeAll(function () {
181
- this.config = config;
182
- this.browser = browser;
183
- this.until = _seleniumWebdriver.until;
184
- this.keys = _seleniumWebdriver.Key;
185
- this.expect = _chai.default.expect;
186
- this.browserName = options.browser;
187
- this.testScope = testScope;
188
- this.screenshots = screenshots;
189
- });
190
- mocha.suite.beforeEach(_selenium.switchStory);
191
- if (options.trace) {
192
- mocha.suite.afterEach(async function () {
193
- const types = await (browser === null || browser === void 0 ? void 0 : browser.manage().logs().getAvailableLogTypes());
194
- for (const type of types ?? []) {
195
- const logs = await (browser === null || browser === void 0 ? void 0 : browser.manage().logs().get(type));
196
- logs.forEach(log => {
197
- var _this$currentTest;
198
- return _logger.logger.trace(sessionId, (_this$currentTest = this.currentTest) === null || _this$currentTest === void 0 ? void 0 : _this$currentTest.titlePath().join('/'), log.toJSON());
199
- });
200
- }
201
- });
202
- }
203
- (0, _messages.subscribeOn)('test', message => {
204
- if (message.type != 'start') return;
205
- const test = message.payload;
206
- const testPath = test.path.join(' ').replace(/[|\\{}()[\]^$+*?.-]/g, '\\$&');
207
- images = {};
208
- error = undefined;
209
- retries = test.retries;
210
- mocha.grep(new RegExp(`^${testPath}$`));
211
- const runner = mocha.run(runHandler);
212
-
213
- // TODO How handle browser corruption?
214
- runner.on('fail', (_test, reason) => {
215
- if (!(reason instanceof Error)) {
216
- error = reason;
217
- } else if (!(0, _types.isImageError)(reason)) {
218
- error = reason.stack ?? reason.message;
219
- } else if (typeof reason.images == 'string') {
220
- const image = images[testScope.slice(-1)[0]];
221
- if (image) image.error = reason.images;
222
- } else {
223
- const imageErrors = reason.images;
224
- Object.keys(imageErrors).forEach(imageName => {
225
- const image = images[imageName];
226
- if (image) image.error = imageErrors[imageName];
227
- });
228
- }
229
- });
230
- });
231
- _logger.logger.info(`${options.browser}:${_chalk.default.gray(sessionId)} is ready`);
232
- (0, _messages.emitWorkerMessage)({
233
- type: 'ready'
234
- });
235
- }
236
- function hasTimeout(str) {
237
- return str != null && str.toLowerCase().includes('timeout');
238
- }
@@ -1,87 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.serializeRawStories = exports.deserializeStory = exports.deserializeRawStories = exports.denormalizeStoryParameters = exports.combineParameters = void 0;
7
- var _lodash = require("lodash");
8
- var _serializeRegExp = require("./serializeRegExp");
9
- // NOTE: Copy-paste from storybook/api
10
- const combineParameters = function () {
11
- for (var _len = arguments.length, parameterSets = new Array(_len), _key = 0; _key < _len; _key++) {
12
- parameterSets[_key] = arguments[_key];
13
- }
14
- return (
15
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
16
- (0, _lodash.mergeWith)({}, ...parameterSets, (_, srcValue) => {
17
- // Treat arrays as scalars:
18
- if (Array.isArray(srcValue)) return srcValue;
19
- return undefined;
20
- })
21
- );
22
- };
23
-
24
- // NOTE: Copy-paste from storybook/api
25
- exports.combineParameters = combineParameters;
26
- const denormalizeStoryParameters = _ref => {
27
- let {
28
- globalParameters,
29
- kindParameters,
30
- stories
31
- } = _ref;
32
- return (0, _lodash.mapValues)(stories, storyData => ({
33
- ...storyData,
34
- parameters: combineParameters(globalParameters, kindParameters[storyData.kind] ?? {}, storyData.parameters)
35
- }));
36
- };
37
- exports.denormalizeStoryParameters = denormalizeStoryParameters;
38
- const serializeRawStories = stories => {
39
- return (0, _lodash.mapValues)(stories, storyData => {
40
- const creevey = storyData.parameters.creevey;
41
- if (creevey?.skip) {
42
- return {
43
- ...storyData,
44
- parameters: {
45
- ...storyData.parameters,
46
- creevey: {
47
- ...creevey,
48
- skip: (0, _lodash.cloneDeepWith)(creevey.skip, value => {
49
- if ((0, _serializeRegExp.isRegExp)(value)) {
50
- return (0, _serializeRegExp.serializeRegExp)(value);
51
- }
52
- return undefined;
53
- })
54
- }
55
- }
56
- };
57
- }
58
- return storyData;
59
- });
60
- };
61
- exports.serializeRawStories = serializeRawStories;
62
- const deserializeRawStories = stories => {
63
- return (0, _lodash.mapValues)(stories, deserializeStory);
64
- };
65
- exports.deserializeRawStories = deserializeRawStories;
66
- const deserializeStory = story => {
67
- const creevey = story.parameters.creevey;
68
- if (creevey?.skip) {
69
- return {
70
- ...story,
71
- parameters: {
72
- ...story.parameters,
73
- creevey: {
74
- ...creevey,
75
- skip: (0, _lodash.cloneDeepWith)(creevey.skip, value => {
76
- if ((0, _serializeRegExp.isSerializedRegExp)(value)) {
77
- return (0, _serializeRegExp.deserializeRegExp)(value);
78
- }
79
- return undefined;
80
- })
81
- }
82
- }
83
- };
84
- }
85
- return story;
86
- };
87
- exports.deserializeStory = deserializeStory;
@@ -1,34 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.serializeRegExp = exports.isSerializedRegExp = exports.isRegExp = exports.deserializeRegExp = void 0;
7
- const isRegExp = exp => {
8
- return exp instanceof RegExp;
9
- };
10
- exports.isRegExp = isRegExp;
11
- const isSerializedRegExp = exp => {
12
- return typeof exp === 'object' && exp !== null && Reflect.get(exp, '__regexp') === true;
13
- };
14
- exports.isSerializedRegExp = isSerializedRegExp;
15
- const serializeRegExp = exp => {
16
- const {
17
- source,
18
- flags
19
- } = exp;
20
- return {
21
- __regexp: true,
22
- source,
23
- flags
24
- };
25
- };
26
- exports.serializeRegExp = serializeRegExp;
27
- const deserializeRegExp = _ref => {
28
- let {
29
- source,
30
- flags
31
- } = _ref;
32
- return new RegExp(source, flags);
33
- };
34
- exports.deserializeRegExp = deserializeRegExp;
package/lib/cjs/types.js DELETED
@@ -1,65 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.isDefined = isDefined;
7
- exports.isDockerMessage = isDockerMessage;
8
- exports.isFunction = isFunction;
9
- exports.isImageError = isImageError;
10
- exports.isObject = isObject;
11
- exports.isProcessMessage = isProcessMessage;
12
- exports.isStoriesMessage = isStoriesMessage;
13
- exports.isString = isString;
14
- exports.isTest = isTest;
15
- exports.isTestMessage = isTestMessage;
16
- exports.isWebpackMessage = isWebpackMessage;
17
- exports.isWorkerMessage = isWorkerMessage;
18
- exports.noop = noop;
19
- /* eslint-disable @typescript-eslint/no-explicit-any */
20
-
21
- /* eslint-enable @typescript-eslint/no-explicit-any */
22
-
23
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
-
25
- function noop() {
26
- /* noop */
27
- }
28
- function isDefined(value) {
29
- return value !== null && value !== undefined;
30
- }
31
- function isTest(x) {
32
- return isDefined(x) && 'id' in x && 'storyId' in x && typeof x.id == 'string' && typeof x.storyId == 'string';
33
- }
34
- function isObject(x) {
35
- return typeof x == 'object' && x != null;
36
- }
37
- function isString(x) {
38
- return typeof x == 'string';
39
- }
40
-
41
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
- function isFunction(x) {
43
- return typeof x == 'function';
44
- }
45
- function isImageError(error) {
46
- return error instanceof Error && 'images' in error;
47
- }
48
- function isProcessMessage(message) {
49
- return isObject(message) && 'scope' in message;
50
- }
51
- function isWorkerMessage(message) {
52
- return isProcessMessage(message) && message.scope == 'worker';
53
- }
54
- function isStoriesMessage(message) {
55
- return isProcessMessage(message) && message.scope == 'stories';
56
- }
57
- function isTestMessage(message) {
58
- return isProcessMessage(message) && message.scope == 'test';
59
- }
60
- function isWebpackMessage(message) {
61
- return isProcessMessage(message) && message.scope == 'webpack';
62
- }
63
- function isDockerMessage(message) {
64
- return isProcessMessage(message) && message.scope == 'docker';
65
- }
package/lib/esm/cli.js DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- // eslint-disable-next-line node/shebang
4
- require('./creevey');
@@ -1,185 +0,0 @@
1
- import { SET_STORIES, STORY_RENDERED } from '@storybook/core-events';
2
- import { denormalizeStoryParameters } from '../../shared';
3
- import { isDefined } from '../../types';
4
- import { initCreeveyClientApi } from '../shared/creeveyClientApi';
5
- import { calcStatus } from '../shared/helpers';
6
- import { ADDON_ID } from './register';
7
- import { getEmojiByTestStatus } from './utils';
8
- export class CreeveyManager {
9
- storyId = '';
10
- activeBrowser = '';
11
- selectedTestId = '';
12
- status = {
13
- isRunning: false,
14
- tests: {},
15
- browsers: []
16
- };
17
- creeveyApi = null;
18
- stories = {};
19
- updateStatusListeners = [];
20
- changeTestListeners = [];
21
- constructor(storybookApi) {
22
- this.storybookApi = storybookApi;
23
- this.storybookApi = storybookApi;
24
- }
25
- initAll = async () => {
26
- this.storybookApi.on(STORY_RENDERED, this.onStoryRendered);
27
- this.storybookApi.on(SET_STORIES, this.onSetStories);
28
- this.creeveyApi = await initCreeveyClientApi();
29
- this.creeveyApi.onUpdate(this.handleCreeveyUpdate);
30
- this.status = await this.creeveyApi.status;
31
- };
32
- onUpdateStatus(listener) {
33
- this.updateStatusListeners.push(listener);
34
- return () => void (this.updateStatusListeners = this.updateStatusListeners.filter(x => x != listener));
35
- }
36
- onChangeTest(listener) {
37
- this.changeTestListeners.push(listener);
38
- return () => void (this.changeTestListeners = this.changeTestListeners.filter(x => x != listener));
39
- }
40
- handleCreeveyUpdate = update => {
41
- const {
42
- tests,
43
- removedTests = [],
44
- isRunning
45
- } = update;
46
- if (isDefined(isRunning)) {
47
- this.status.isRunning = isRunning;
48
- }
49
- if (isDefined(tests)) {
50
- const prevTests = this.status.tests;
51
- const prevStories = this.stories || {};
52
- Object.values(tests).filter(isDefined).forEach(update => {
53
- const {
54
- id,
55
- skip,
56
- status,
57
- results,
58
- approved,
59
- storyId
60
- } = update;
61
- const test = prevTests[id];
62
- if (!test) {
63
- return prevTests[id] = update;
64
- }
65
- if (isDefined(skip)) test.skip = skip;
66
- if (isDefined(status)) {
67
- test.status = status;
68
- if (isDefined(storyId) && isDefined(prevStories[storyId])) {
69
- const story = prevStories[storyId];
70
- const storyStatus = this.getStoryTests(storyId);
71
- const oldStatus = storyStatus.map(x => x.id === id ? status : x.status).reduce((oldStatus, newStatus) => calcStatus(oldStatus, newStatus), undefined);
72
- story.name = this.addStatusToStoryName(story.name, calcStatus(oldStatus, status), skip || false);
73
- }
74
- }
75
- if (isDefined(results)) test.results ? test.results.push(...results) : test.results = results;
76
- if (isDefined(approved)) {
77
- Object.entries(approved).forEach(_ref => {
78
- let [image, retry] = _ref;
79
- return retry !== undefined && test && ((test.approved = test?.approved || {})[image] = retry);
80
- });
81
- }
82
- });
83
- removedTests.forEach(_ref2 => {
84
- let {
85
- id
86
- } = _ref2;
87
- return delete prevTests[id];
88
- });
89
- this.status.tests = prevTests;
90
- this.stories = prevStories;
91
- this.setPanelsTitle();
92
- // TODO Check setStories method in 6.x and migrate properly
93
- this.storybookApi.emit(SET_STORIES, this.stories);
94
- }
95
- this.updateStatusListeners.forEach(x => x(update));
96
- };
97
- getCurrentTest = () => {
98
- return this.status.tests[this.selectedTestId];
99
- };
100
- onStoryRendered = storyId => {
101
- if (this.storyId === '') this.addStatusesToSideBar();
102
- if (this.storyId !== storyId) {
103
- this.storyId = storyId;
104
- this.selectedTestId = this.getTestsByStoryIdAndBrowser(this.activeBrowser)[0]?.id ?? '';
105
- this.setPanelsTitle();
106
- this.changeTestListeners.forEach(x => x(this.selectedTestId));
107
- }
108
- };
109
- onStart = () => {
110
- this.creeveyApi?.start([this.selectedTestId]);
111
- };
112
- onStop = () => {
113
- this.creeveyApi?.stop();
114
- };
115
- onImageApprove = (id, retry, image) => this.creeveyApi?.approve(id, retry, image);
116
- onStartAllStoryTests = () => {
117
- const ids = Object.values(this.status.tests).filter(isDefined).filter(x => x.storyId === this.storyId).map(x => x.id);
118
- this.creeveyApi?.start(ids);
119
- };
120
- onStartAllTests = () => {
121
- const ids = Object.values(this.status.tests).filter(isDefined).map(x => x.id);
122
- this.creeveyApi?.start(ids);
123
- };
124
- onSetStories = data => {
125
- const stories = data.v ? denormalizeStoryParameters(data) : data.stories;
126
- this.stories = stories;
127
- };
128
- setActiveBrowser = browser => {
129
- this.activeBrowser = browser;
130
- this.selectedTestId = this.getTestsByStoryIdAndBrowser(this.activeBrowser)[0]?.id ?? '';
131
- this.changeTestListeners.forEach(x => x(this.selectedTestId));
132
- };
133
- setSelectedTestId = testId => {
134
- this.selectedTestId = testId;
135
- this.changeTestListeners.forEach(x => x(this.selectedTestId));
136
- };
137
- getStoryTests = storyId => {
138
- if (!this.status || !this.status.tests) return [];
139
- return Object.values(this.status.tests).filter(result => result?.storyId === storyId).filter(isDefined);
140
- };
141
- getBrowsers = () => {
142
- return this.status.browsers;
143
- };
144
- getTestsByStoryIdAndBrowser = browser => {
145
- return Object.values(this.status.tests).filter(x => x?.browser === browser && x.storyId === this.storyId).filter(isDefined);
146
- };
147
- getTabTitle = browser => {
148
- const tests = this.getTestsByStoryIdAndBrowser(browser);
149
- const browserStatus = tests.map(x => x && x.status).reduce((oldStatus, newStatus) => calcStatus(oldStatus, newStatus), undefined);
150
- const browserSkip = tests.length > 0 ? tests.every(x => x && x.skip) : false;
151
- const emojiStatus = getEmojiByTestStatus(browserStatus, browserSkip);
152
- return `${emojiStatus ? `${emojiStatus} ` : ''}Creevey/${browser}`;
153
- };
154
- setPanelsTitle = () => {
155
- const panels = this.storybookApi?.getPanels();
156
- if (!panels) return;
157
- let firstPanelBrowser = this.activeBrowser;
158
- for (const p in panels) {
159
- const panel = panels[p];
160
- if (panel.id?.indexOf(ADDON_ID) === 0 && panel.paramKey) {
161
- panel.title = this.getTabTitle(panel.paramKey);
162
- if (!firstPanelBrowser) firstPanelBrowser = panel.paramKey;
163
- }
164
- }
165
- this.storybookApi.setSelectedPanel(`${ADDON_ID}/panel/${firstPanelBrowser}`);
166
- };
167
- addStatusesToSideBar() {
168
- if (!Object.keys(this.stories).length) return;
169
- const stories = this.stories;
170
- Object.keys(this.stories).forEach(storyId => {
171
- const storyStatus = this.getStoryTests(storyId);
172
- const status = storyStatus.map(x => x.status).reduce((oldStatus, newStatus) => calcStatus(oldStatus, newStatus), undefined);
173
- const skip = storyStatus.length > 0 ? storyStatus.every(x => x.skip) : false;
174
- this.stories[storyId].name = this.addStatusToStoryName(stories[storyId].name, status, skip);
175
- });
176
-
177
- // TODO Check setStories method in 6.x and migrate properly
178
- this.storybookApi.emit(SET_STORIES, this.stories);
179
- }
180
- addStatusToStoryName(name, status, skip) {
181
- name = name.replace(/^(❌|✔|🟡|🕗|⏸) /, '');
182
- const emojiStatus = getEmojiByTestStatus(status, skip);
183
- return `${emojiStatus ? `${emojiStatus} ` : ''} ${name}`;
184
- }
185
- }
@@ -1,39 +0,0 @@
1
- import { Placeholder } from '@storybook/components';
2
- import React, { useEffect, useState } from 'react';
3
- import { Panel } from './Panel';
4
- export const Addon = _ref => {
5
- let {
6
- active,
7
- browser,
8
- manager
9
- } = _ref;
10
- const [tests, setTests] = useState([]);
11
- const [selectedTestId, setSelectedTestId] = useState(manager.selectedTestId);
12
- useEffect(() => {
13
- if (active) {
14
- manager.setActiveBrowser(browser);
15
- const browserTests = manager.getTestsByStoryIdAndBrowser(manager.activeBrowser);
16
- setTests(browserTests);
17
- }
18
- }, [active, browser, manager]);
19
- useEffect(() => {
20
- const unsubscribe = manager.onChangeTest(testId => {
21
- setSelectedTestId(testId);
22
- const status = manager.getTestsByStoryIdAndBrowser(manager.activeBrowser);
23
- setTests(status);
24
- });
25
- return unsubscribe;
26
- }, [manager]);
27
- useEffect(() => {
28
- const unsubscribe = manager.onUpdateStatus(() => {
29
- setTests(manager.getTestsByStoryIdAndBrowser(manager.activeBrowser));
30
- });
31
- return unsubscribe;
32
- }, [manager, browser]);
33
- return active ? tests.length ? /*#__PURE__*/React.createElement(Panel, {
34
- tests: tests,
35
- selectedTestId: selectedTestId,
36
- onChangeTest: manager.setSelectedTestId,
37
- onImageApprove: manager.onImageApprove
38
- }) : /*#__PURE__*/React.createElement(Placeholder, null, "No test results") : null;
39
- };
@@ -1,31 +0,0 @@
1
- import React from 'react';
2
- export const NextIcon = _ref => {
3
- let {
4
- width,
5
- height
6
- } = _ref;
7
- return /*#__PURE__*/React.createElement("svg", {
8
- version: "1.1",
9
- width: width,
10
- height: height,
11
- viewBox: "0 0 306 306"
12
- }, /*#__PURE__*/React.createElement("path", {
13
- d: "M0,306l216.75-153L0,0V306z M255,0v306h51V0H255z",
14
- fill: "currentColor"
15
- }));
16
- };
17
- export const ForwardIcon = _ref2 => {
18
- let {
19
- width,
20
- height
21
- } = _ref2;
22
- return /*#__PURE__*/React.createElement("svg", {
23
- version: "1.1",
24
- width: width,
25
- height: height,
26
- viewBox: "0 0 512 512"
27
- }, /*#__PURE__*/React.createElement("path", {
28
- fill: "currentColor",
29
- d: "M460.9,246.8l-209-164.2c-7.8-6.1-19.2-0.6-19.2,9.2v328.4c0,9.8,11.4,15.3,19.2,9.2l209-164.2c5.1-4,6-11.4,2-16.5 C462.4,248,461.7,247.3,460.9,246.8L460.9,246.8z M228.2,246.8L19.2,82.5C11.4,76.4,0,82,0,91.8v328.4c0,9.8,11.4,15.3,19.2,9.2 l209-164.2c3-2.3,4.5-5.8,4.5-9.2C232.7,252.6,231.2,249.1,228.2,246.8z M507.3,64h-37.2c-2.5,0-4.7,2-4.7,4.4v375.3 c0,2.4,2.1,4.4,4.7,4.4h37.2c2.5,0,4.7-2,4.7-4.4V68.4C512,66,509.9,64,507.3,64z"
30
- }));
31
- };