creevey 0.9.0-non-webpack.2.fix-capture-element → 0.9.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 (529) hide show
  1. package/.yarnrc.yml +1 -0
  2. package/CHANGELOG.md +51 -0
  3. package/README.md +4 -3
  4. package/dist/cli.d.ts +2 -0
  5. package/dist/cli.js +5 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/client/addon/components/Addon.d.ts +8 -0
  8. package/dist/client/addon/components/Addon.js +57 -0
  9. package/dist/client/addon/components/Addon.js.map +1 -0
  10. package/{lib/types → dist}/client/addon/components/Icons.d.ts +7 -7
  11. package/dist/client/addon/components/Icons.js +18 -0
  12. package/dist/client/addon/components/Icons.js.map +1 -0
  13. package/{lib/types → dist}/client/addon/components/Panel.d.ts +9 -9
  14. package/dist/client/addon/components/Panel.js +32 -0
  15. package/dist/client/addon/components/Panel.js.map +1 -0
  16. package/{lib/types → dist}/client/addon/components/TestSelect.d.ts +8 -8
  17. package/dist/client/addon/components/TestSelect.js +33 -0
  18. package/dist/client/addon/components/TestSelect.js.map +1 -0
  19. package/dist/client/addon/components/Tools.d.ts +6 -0
  20. package/dist/client/addon/components/Tools.js +89 -0
  21. package/dist/client/addon/components/Tools.js.map +1 -0
  22. package/{lib/types/client/addon/Manager.d.ts → dist/client/addon/controller.d.ts} +38 -37
  23. package/dist/client/addon/controller.js +208 -0
  24. package/dist/client/addon/controller.js.map +1 -0
  25. package/dist/client/addon/decorator.d.ts +1 -0
  26. package/dist/client/addon/decorator.js +6 -0
  27. package/dist/client/addon/decorator.js.map +1 -0
  28. package/dist/client/addon/index.d.ts +2 -0
  29. package/dist/client/addon/index.js +19 -0
  30. package/dist/client/addon/index.js.map +1 -0
  31. package/dist/client/addon/manager.d.ts +1 -0
  32. package/dist/client/addon/manager.js +41 -0
  33. package/dist/client/addon/manager.js.map +1 -0
  34. package/dist/client/addon/preset.d.ts +2 -0
  35. package/dist/client/addon/preset.js +6 -0
  36. package/dist/client/addon/preset.js.map +1 -0
  37. package/dist/client/addon/preview.d.ts +4 -0
  38. package/dist/client/addon/preview.js +8 -0
  39. package/dist/client/addon/preview.js.map +1 -0
  40. package/{lib/types → dist}/client/addon/readyForCapture.d.ts +6 -6
  41. package/dist/client/addon/readyForCapture.js +7 -0
  42. package/dist/client/addon/readyForCapture.js.map +1 -0
  43. package/{lib/types → dist}/client/addon/utils.d.ts +3 -2
  44. package/dist/client/addon/utils.js +27 -0
  45. package/dist/client/addon/utils.js.map +1 -0
  46. package/{lib/types → dist}/client/addon/withCreevey.d.ts +25 -24
  47. package/dist/client/addon/withCreevey.js +286 -0
  48. package/dist/client/addon/withCreevey.js.map +1 -0
  49. package/dist/client/shared/components/ImagesView/BlendView.d.ts +5 -0
  50. package/dist/client/shared/components/ImagesView/BlendView.js +74 -0
  51. package/dist/client/shared/components/ImagesView/BlendView.js.map +1 -0
  52. package/dist/client/shared/components/ImagesView/ImagesView.d.ts +9 -0
  53. package/dist/client/shared/components/ImagesView/ImagesView.js +46 -0
  54. package/dist/client/shared/components/ImagesView/ImagesView.js.map +1 -0
  55. package/dist/client/shared/components/ImagesView/SideBySideView.d.ts +5 -0
  56. package/dist/client/shared/components/ImagesView/SideBySideView.js +121 -0
  57. package/dist/client/shared/components/ImagesView/SideBySideView.js.map +1 -0
  58. package/dist/client/shared/components/ImagesView/SlideView.d.ts +5 -0
  59. package/dist/client/shared/components/ImagesView/SlideView.js +136 -0
  60. package/dist/client/shared/components/ImagesView/SlideView.js.map +1 -0
  61. package/dist/client/shared/components/ImagesView/SwapView.d.ts +5 -0
  62. package/dist/client/shared/components/ImagesView/SwapView.js +72 -0
  63. package/dist/client/shared/components/ImagesView/SwapView.js.map +1 -0
  64. package/{lib/types/client/shared/components/ImagesView/ImagesView.d.ts → dist/client/shared/components/ImagesView/common.d.ts} +15 -24
  65. package/dist/client/shared/components/ImagesView/common.js +14 -0
  66. package/dist/client/shared/components/ImagesView/common.js.map +1 -0
  67. package/dist/client/shared/components/ImagesView/index.d.ts +5 -0
  68. package/dist/client/shared/components/ImagesView/index.js +14 -0
  69. package/dist/client/shared/components/ImagesView/index.js.map +1 -0
  70. package/{lib/types → dist}/client/shared/components/PageFooter/PageFooter.d.ts +8 -8
  71. package/dist/client/shared/components/PageFooter/PageFooter.js +25 -0
  72. package/dist/client/shared/components/PageFooter/PageFooter.js.map +1 -0
  73. package/{lib/types → dist}/client/shared/components/PageFooter/Paging.d.ts +7 -7
  74. package/dist/client/shared/components/PageFooter/Paging.js +68 -0
  75. package/dist/client/shared/components/PageFooter/Paging.js.map +1 -0
  76. package/{lib/types → dist}/client/shared/components/PageHeader/ImagePreview.d.ts +14 -12
  77. package/dist/client/shared/components/PageHeader/ImagePreview.js +61 -0
  78. package/dist/client/shared/components/PageHeader/ImagePreview.js.map +1 -0
  79. package/{lib/types → dist}/client/shared/components/PageHeader/PageHeader.d.ts +14 -16
  80. package/dist/client/shared/components/PageHeader/PageHeader.js +86 -0
  81. package/dist/client/shared/components/PageHeader/PageHeader.js.map +1 -0
  82. package/{lib/types → dist}/client/shared/components/ResultsPage.d.ts +18 -18
  83. package/dist/client/shared/components/ResultsPage.js +95 -0
  84. package/dist/client/shared/components/ResultsPage.js.map +1 -0
  85. package/{lib/types → dist}/client/shared/creeveyClientApi.d.ts +9 -9
  86. package/dist/client/shared/creeveyClientApi.js +53 -0
  87. package/dist/client/shared/creeveyClientApi.js.map +1 -0
  88. package/{lib/types → dist}/client/shared/helpers.d.ts +46 -46
  89. package/dist/client/shared/helpers.js +381 -0
  90. package/dist/client/shared/helpers.js.map +1 -0
  91. package/{lib/types → dist}/client/shared/viewMode.d.ts +4 -4
  92. package/dist/client/shared/viewMode.js +11 -0
  93. package/dist/client/shared/viewMode.js.map +1 -0
  94. package/dist/client/web/202.js +1 -0
  95. package/dist/client/web/270.js +43 -0
  96. package/dist/client/web/752.js +1 -0
  97. package/{lib/types → dist}/client/web/CreeveyApp.d.ts +11 -11
  98. package/dist/client/web/CreeveyApp.js +130 -0
  99. package/dist/client/web/CreeveyApp.js.map +1 -0
  100. package/{lib/types → dist}/client/web/CreeveyContext.d.ts +11 -11
  101. package/dist/client/web/CreeveyContext.js +17 -0
  102. package/dist/client/web/CreeveyContext.js.map +1 -0
  103. package/dist/client/web/CreeveyLoader.d.ts +3 -0
  104. package/dist/client/web/CreeveyLoader.js +52 -0
  105. package/dist/client/web/CreeveyLoader.js.map +1 -0
  106. package/{lib/types → dist}/client/web/CreeveyView/SideBar/Checkbox.d.ts +22 -19
  107. package/dist/client/web/CreeveyView/SideBar/Checkbox.js +86 -0
  108. package/dist/client/web/CreeveyView/SideBar/Checkbox.js.map +1 -0
  109. package/{lib/types → dist}/client/web/CreeveyView/SideBar/Search.d.ts +6 -6
  110. package/dist/client/web/CreeveyView/SideBar/Search.js +125 -0
  111. package/dist/client/web/CreeveyView/SideBar/Search.js.map +1 -0
  112. package/{lib/types → dist}/client/web/CreeveyView/SideBar/SideBar.d.ts +14 -14
  113. package/dist/client/web/CreeveyView/SideBar/SideBar.js +101 -0
  114. package/dist/client/web/CreeveyView/SideBar/SideBar.js.map +1 -0
  115. package/{lib/types → dist}/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +12 -12
  116. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js +113 -0
  117. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js.map +1 -0
  118. package/dist/client/web/CreeveyView/SideBar/SuiteLink.d.ts +38 -0
  119. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js +108 -0
  120. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js.map +1 -0
  121. package/{lib/types → dist}/client/web/CreeveyView/SideBar/TestLink.d.ts +7 -7
  122. package/dist/client/web/CreeveyView/SideBar/TestLink.js +63 -0
  123. package/dist/client/web/CreeveyView/SideBar/TestLink.js.map +1 -0
  124. package/{lib/types → dist}/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +12 -10
  125. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js +52 -0
  126. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js.map +1 -0
  127. package/dist/client/web/CreeveyView/SideBar/TestsStatus.d.ts +11 -0
  128. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js +74 -0
  129. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js.map +1 -0
  130. package/{lib/types → dist}/client/web/CreeveyView/SideBar/Toggle.d.ts +6 -6
  131. package/dist/client/web/CreeveyView/SideBar/Toggle.js +69 -0
  132. package/dist/client/web/CreeveyView/SideBar/Toggle.js.map +1 -0
  133. package/dist/client/web/CreeveyView/SideBar/index.d.ts +1 -0
  134. package/dist/client/web/CreeveyView/SideBar/index.js +6 -0
  135. package/dist/client/web/CreeveyView/SideBar/index.js.map +1 -0
  136. package/{lib/types → dist}/client/web/KeyboardEventsContext.d.ts +15 -13
  137. package/dist/client/web/KeyboardEventsContext.js +116 -0
  138. package/dist/client/web/KeyboardEventsContext.js.map +1 -0
  139. package/{lib/types → dist}/client/web/index.d.ts +4 -4
  140. package/{lib/cjs → dist}/client/web/index.html +12 -3
  141. package/dist/client/web/index.js +75 -0
  142. package/dist/client/web/index.js.map +1 -0
  143. package/dist/client/web/main.js +79 -0
  144. package/{lib/cjs → dist}/client/web/main.js.LICENSE.txt +0 -15
  145. package/{lib/types → dist}/creevey.d.ts +1 -1
  146. package/dist/creevey.js +52 -0
  147. package/dist/creevey.js.map +1 -0
  148. package/dist/index.d.ts +5 -0
  149. package/dist/index.js +24 -0
  150. package/dist/index.js.map +1 -0
  151. package/{lib/types → dist}/server/config.d.ts +4 -4
  152. package/dist/server/config.js +86 -0
  153. package/dist/server/config.js.map +1 -0
  154. package/{lib/types → dist}/server/docker.d.ts +7 -7
  155. package/dist/server/docker.js +122 -0
  156. package/dist/server/docker.js.map +1 -0
  157. package/{lib/types → dist}/server/index.d.ts +2 -2
  158. package/dist/server/index.js +47 -0
  159. package/dist/server/index.js.map +1 -0
  160. package/{lib/types → dist}/server/logger.d.ts +10 -10
  161. package/dist/server/logger.js +25 -0
  162. package/dist/server/logger.js.map +1 -0
  163. package/{lib/types → dist}/server/master/api.d.ts +7 -7
  164. package/dist/server/master/api.js +50 -0
  165. package/dist/server/master/api.js.map +1 -0
  166. package/dist/server/master/index.d.ts +3 -0
  167. package/dist/server/master/index.js +110 -0
  168. package/dist/server/master/index.js.map +1 -0
  169. package/{lib/types → dist}/server/master/master.d.ts +7 -7
  170. package/dist/server/master/master.js +40 -0
  171. package/dist/server/master/master.js.map +1 -0
  172. package/{lib/types → dist}/server/master/pool.d.ts +30 -31
  173. package/dist/server/master/pool.js +186 -0
  174. package/dist/server/master/pool.js.map +1 -0
  175. package/{lib/types → dist}/server/master/runner.d.ts +21 -26
  176. package/dist/server/master/runner.js +172 -0
  177. package/dist/server/master/runner.js.map +1 -0
  178. package/dist/server/master/server.d.ts +2 -0
  179. package/dist/server/master/server.js +114 -0
  180. package/dist/server/master/server.js.map +1 -0
  181. package/{lib/types → dist}/server/messages.d.ts +26 -27
  182. package/dist/server/messages.js +222 -0
  183. package/dist/server/messages.js.map +1 -0
  184. package/{lib/types → dist}/server/selenium/browser.d.ts +19 -17
  185. package/dist/server/selenium/browser.js +637 -0
  186. package/dist/server/selenium/browser.js.map +1 -0
  187. package/dist/server/selenium/index.d.ts +2 -0
  188. package/dist/server/selenium/index.js +19 -0
  189. package/dist/server/selenium/index.js.map +1 -0
  190. package/{lib/types → dist}/server/selenium/selenoid.d.ts +3 -3
  191. package/dist/server/selenium/selenoid.js +120 -0
  192. package/dist/server/selenium/selenoid.js.map +1 -0
  193. package/dist/server/stories.d.ts +3 -0
  194. package/dist/server/stories.js +92 -0
  195. package/dist/server/stories.js.map +1 -0
  196. package/dist/server/storybook/providers/browser.d.ts +2 -0
  197. package/dist/server/storybook/providers/browser.js +60 -0
  198. package/dist/server/storybook/providers/browser.js.map +1 -0
  199. package/dist/server/storybook/providers/hybrid.d.ts +2 -0
  200. package/dist/server/storybook/providers/hybrid.js +59 -0
  201. package/dist/server/storybook/providers/hybrid.js.map +1 -0
  202. package/dist/server/telemetry.d.ts +2 -0
  203. package/dist/server/telemetry.js +196 -0
  204. package/dist/server/telemetry.js.map +1 -0
  205. package/{lib/types → dist}/server/testsFiles/parser.d.ts +8 -12
  206. package/dist/server/testsFiles/parser.js +50 -0
  207. package/dist/server/testsFiles/parser.js.map +1 -0
  208. package/dist/server/update.d.ts +2 -0
  209. package/dist/server/update.js +53 -0
  210. package/dist/server/update.js.map +1 -0
  211. package/dist/server/utils.d.ts +25 -0
  212. package/dist/server/utils.js +157 -0
  213. package/dist/server/utils.js.map +1 -0
  214. package/{lib/types → dist}/server/worker/chai-image.d.ts +5 -6
  215. package/dist/server/worker/chai-image.js +113 -0
  216. package/dist/server/worker/chai-image.js.map +1 -0
  217. package/{lib/types → dist}/server/worker/helpers.d.ts +8 -8
  218. package/dist/server/worker/helpers.js +57 -0
  219. package/dist/server/worker/helpers.js.map +1 -0
  220. package/dist/server/worker/index.d.ts +1 -0
  221. package/dist/server/worker/index.js +6 -0
  222. package/dist/server/worker/index.js.map +1 -0
  223. package/{lib/types → dist}/server/worker/reporter.d.ts +8 -8
  224. package/dist/server/worker/reporter.js +130 -0
  225. package/dist/server/worker/reporter.js.map +1 -0
  226. package/dist/server/worker/worker.d.ts +4 -0
  227. package/dist/server/worker/worker.js +211 -0
  228. package/dist/server/worker/worker.js.map +1 -0
  229. package/{lib/types → dist}/shared/index.d.ts +7 -7
  230. package/dist/shared/index.js +77 -0
  231. package/dist/shared/index.js.map +1 -0
  232. package/{lib/types → dist}/shared/serializeRegExp.d.ts +9 -9
  233. package/dist/shared/serializeRegExp.js +25 -0
  234. package/dist/shared/serializeRegExp.js.map +1 -0
  235. package/{lib/types → dist}/types.d.ts +459 -490
  236. package/dist/types.js +61 -0
  237. package/dist/types.js.map +1 -0
  238. package/docs/config.md +30 -30
  239. package/docs/tests.md +3 -3
  240. package/manager/package.json +3 -0
  241. package/package.json +115 -156
  242. package/preset/README.md +3 -0
  243. package/preset/package.json +3 -0
  244. package/preview/README.md +3 -0
  245. package/preview/package.json +3 -0
  246. package/src/cli.ts +3 -0
  247. package/src/client/addon/components/Addon.tsx +53 -0
  248. package/src/client/addon/components/Icons.tsx +28 -0
  249. package/src/client/addon/components/Panel.tsx +53 -0
  250. package/src/client/addon/components/TestSelect.tsx +48 -0
  251. package/src/client/addon/components/Tools.tsx +93 -0
  252. package/src/client/addon/controller.ts +224 -0
  253. package/src/client/addon/decorator.ts +3 -0
  254. package/src/client/addon/index.ts +2 -0
  255. package/src/client/addon/manager.ts +44 -0
  256. package/src/client/addon/preset.ts +3 -0
  257. package/src/client/addon/preview.ts +7 -0
  258. package/src/client/addon/readyForCapture.ts +9 -0
  259. package/src/client/addon/utils.tsx +24 -0
  260. package/src/client/addon/withCreevey.ts +326 -0
  261. package/src/client/shared/components/ImagesView/BlendView.tsx +71 -0
  262. package/src/client/shared/components/ImagesView/ImagesView.tsx +70 -0
  263. package/src/client/shared/components/ImagesView/SideBySideView.tsx +139 -0
  264. package/src/client/shared/components/ImagesView/SlideView.tsx +146 -0
  265. package/src/client/shared/components/ImagesView/SwapView.tsx +81 -0
  266. package/src/client/shared/components/ImagesView/common.ts +23 -0
  267. package/src/client/shared/components/ImagesView/index.ts +5 -0
  268. package/src/client/shared/components/PageFooter/PageFooter.tsx +44 -0
  269. package/src/client/shared/components/PageFooter/Paging.tsx +105 -0
  270. package/src/client/shared/components/PageHeader/ImagePreview.tsx +82 -0
  271. package/src/client/shared/components/PageHeader/PageHeader.tsx +123 -0
  272. package/src/client/shared/components/ResultsPage.tsx +135 -0
  273. package/src/client/shared/creeveyClientApi.ts +64 -0
  274. package/src/client/shared/helpers.ts +422 -0
  275. package/src/client/shared/viewMode.ts +10 -0
  276. package/src/client/web/CreeveyApp.tsx +177 -0
  277. package/src/client/web/CreeveyContext.tsx +20 -0
  278. package/src/client/web/CreeveyLoader.tsx +56 -0
  279. package/src/client/web/CreeveyView/SideBar/Checkbox.tsx +118 -0
  280. package/src/client/web/CreeveyView/SideBar/Search.tsx +140 -0
  281. package/src/client/web/CreeveyView/SideBar/SideBar.tsx +125 -0
  282. package/src/client/web/CreeveyView/SideBar/SideBarHeader.tsx +138 -0
  283. package/src/client/web/CreeveyView/SideBar/SuiteLink.tsx +118 -0
  284. package/src/client/web/CreeveyView/SideBar/TestLink.tsx +67 -0
  285. package/src/client/web/CreeveyView/SideBar/TestStatusIcon.tsx +58 -0
  286. package/src/client/web/CreeveyView/SideBar/TestsStatus.tsx +105 -0
  287. package/src/client/web/CreeveyView/SideBar/Toggle.tsx +85 -0
  288. package/src/client/web/CreeveyView/SideBar/index.ts +1 -0
  289. package/src/client/web/KeyboardEventsContext.tsx +121 -0
  290. package/src/client/web/index.html +28 -0
  291. package/src/client/web/index.tsx +63 -0
  292. package/src/creevey.ts +47 -0
  293. package/src/index.ts +4 -0
  294. package/src/server/config.ts +83 -0
  295. package/src/server/docker.ts +136 -0
  296. package/src/server/index.ts +51 -0
  297. package/{lib/esm/server/logger.js → src/server/logger.ts} +8 -7
  298. package/src/server/master/api.ts +55 -0
  299. package/src/server/master/index.ts +111 -0
  300. package/src/server/master/master.ts +47 -0
  301. package/src/server/master/pool.ts +203 -0
  302. package/src/server/master/runner.ts +189 -0
  303. package/src/server/master/server.ts +124 -0
  304. package/src/server/messages.ts +273 -0
  305. package/src/server/selenium/browser.ts +837 -0
  306. package/src/server/selenium/index.ts +2 -0
  307. package/src/server/selenium/selenoid.ts +154 -0
  308. package/src/server/stories.ts +133 -0
  309. package/src/server/storybook/providers/browser.ts +58 -0
  310. package/src/server/storybook/providers/hybrid.ts +70 -0
  311. package/src/server/telemetry.ts +212 -0
  312. package/src/server/testsFiles/parser.ts +62 -0
  313. package/src/server/update.ts +74 -0
  314. package/src/server/utils.ts +206 -0
  315. package/src/server/worker/chai-image.ts +147 -0
  316. package/src/server/worker/helpers.ts +61 -0
  317. package/src/server/worker/index.ts +1 -0
  318. package/src/server/worker/reporter.ts +170 -0
  319. package/src/server/worker/worker.ts +239 -0
  320. package/src/shared/index.ts +76 -0
  321. package/src/shared/serializeRegExp.ts +26 -0
  322. package/src/types.ts +500 -0
  323. package/types/chai.d.ts +0 -1
  324. package/types/global.d.ts +5 -0
  325. package/types/mocha.d.ts +1 -1
  326. package/addon/package.json +0 -4
  327. package/jest.config.js +0 -6
  328. package/lib/cjs/cli.js +0 -5
  329. package/lib/cjs/client/addon/Manager.js +0 -264
  330. package/lib/cjs/client/addon/components/Addon.js +0 -55
  331. package/lib/cjs/client/addon/components/Icons.js +0 -46
  332. package/lib/cjs/client/addon/components/Panel.js +0 -72
  333. package/lib/cjs/client/addon/components/TestSelect.js +0 -65
  334. package/lib/cjs/client/addon/components/Tools.js +0 -95
  335. package/lib/cjs/client/addon/decorator.js +0 -11
  336. package/lib/cjs/client/addon/index.js +0 -31
  337. package/lib/cjs/client/addon/preset.js +0 -62
  338. package/lib/cjs/client/addon/readyForCapture.js +0 -12
  339. package/lib/cjs/client/addon/register.js +0 -72
  340. package/lib/cjs/client/addon/utils.js +0 -38
  341. package/lib/cjs/client/addon/withCreevey.js +0 -346
  342. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +0 -87
  343. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +0 -92
  344. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +0 -154
  345. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +0 -166
  346. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +0 -91
  347. package/lib/cjs/client/shared/components/ImagesView/index.js +0 -45
  348. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +0 -50
  349. package/lib/cjs/client/shared/components/PageFooter/Paging.js +0 -94
  350. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +0 -82
  351. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +0 -119
  352. package/lib/cjs/client/shared/components/ResultsPage.js +0 -143
  353. package/lib/cjs/client/shared/creeveyClientApi.js +0 -76
  354. package/lib/cjs/client/shared/helpers.js +0 -411
  355. package/lib/cjs/client/shared/viewMode.js +0 -17
  356. package/lib/cjs/client/web/142.js +0 -2
  357. package/lib/cjs/client/web/142.js.LICENSE.txt +0 -12
  358. package/lib/cjs/client/web/32.js +0 -1
  359. package/lib/cjs/client/web/551.js +0 -1
  360. package/lib/cjs/client/web/566.js +0 -2
  361. package/lib/cjs/client/web/566.js.LICENSE.txt +0 -31
  362. package/lib/cjs/client/web/691.js +0 -2
  363. package/lib/cjs/client/web/691.js.LICENSE.txt +0 -8
  364. package/lib/cjs/client/web/725.js +0 -1
  365. package/lib/cjs/client/web/main.js +0 -2
  366. package/lib/cjs/creevey.js +0 -69
  367. package/lib/cjs/index.js +0 -62
  368. package/lib/cjs/server/config.js +0 -96
  369. package/lib/cjs/server/docker.js +0 -146
  370. package/lib/cjs/server/extract.js +0 -50
  371. package/lib/cjs/server/index.js +0 -83
  372. package/lib/cjs/server/loaders/babel/creevey-plugin.js +0 -86
  373. package/lib/cjs/server/loaders/babel/helpers.js +0 -469
  374. package/lib/cjs/server/loaders/babel/register.js +0 -124
  375. package/lib/cjs/server/loaders/hooks/mdx.js +0 -30
  376. package/lib/cjs/server/loaders/hooks/svelte.js +0 -65
  377. package/lib/cjs/server/loaders/webpack/compile.js +0 -293
  378. package/lib/cjs/server/loaders/webpack/creevey-loader.js +0 -179
  379. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +0 -39
  380. package/lib/cjs/server/loaders/webpack/mdx-loader.js +0 -72
  381. package/lib/cjs/server/loaders/webpack/start.js +0 -41
  382. package/lib/cjs/server/logger.js +0 -48
  383. package/lib/cjs/server/master/api.js +0 -75
  384. package/lib/cjs/server/master/index.js +0 -146
  385. package/lib/cjs/server/master/master.js +0 -57
  386. package/lib/cjs/server/master/pool.js +0 -197
  387. package/lib/cjs/server/master/runner.js +0 -281
  388. package/lib/cjs/server/master/server.js +0 -129
  389. package/lib/cjs/server/messages.js +0 -264
  390. package/lib/cjs/server/selenium/browser.js +0 -672
  391. package/lib/cjs/server/selenium/index.js +0 -31
  392. package/lib/cjs/server/selenium/selenoid.js +0 -172
  393. package/lib/cjs/server/stories.js +0 -159
  394. package/lib/cjs/server/storybook/entry.js +0 -70
  395. package/lib/cjs/server/storybook/helpers.js +0 -159
  396. package/lib/cjs/server/storybook/providers/browser.js +0 -74
  397. package/lib/cjs/server/storybook/providers/hybrid.js +0 -84
  398. package/lib/cjs/server/storybook/providers/nodejs.js +0 -239
  399. package/lib/cjs/server/testsFiles/parser.js +0 -72
  400. package/lib/cjs/server/testsFiles/register.js +0 -48
  401. package/lib/cjs/server/update.js +0 -79
  402. package/lib/cjs/server/utils.js +0 -183
  403. package/lib/cjs/server/worker/chai-image.js +0 -142
  404. package/lib/cjs/server/worker/helpers.js +0 -69
  405. package/lib/cjs/server/worker/index.js +0 -15
  406. package/lib/cjs/server/worker/reporter.js +0 -108
  407. package/lib/cjs/server/worker/worker.js +0 -268
  408. package/lib/cjs/shared/index.js +0 -101
  409. package/lib/cjs/shared/serializeRegExp.js +0 -42
  410. package/lib/cjs/types.js +0 -74
  411. package/lib/esm/cli.js +0 -4
  412. package/lib/esm/client/addon/Manager.js +0 -248
  413. package/lib/esm/client/addon/components/Addon.js +0 -39
  414. package/lib/esm/client/addon/components/Icons.js +0 -31
  415. package/lib/esm/client/addon/components/Panel.js +0 -53
  416. package/lib/esm/client/addon/components/TestSelect.js +0 -51
  417. package/lib/esm/client/addon/components/Tools.js +0 -74
  418. package/lib/esm/client/addon/decorator.js +0 -2
  419. package/lib/esm/client/addon/index.js +0 -2
  420. package/lib/esm/client/addon/preset.js +0 -41
  421. package/lib/esm/client/addon/readyForCapture.js +0 -5
  422. package/lib/esm/client/addon/register.js +0 -51
  423. package/lib/esm/client/addon/utils.js +0 -31
  424. package/lib/esm/client/addon/withCreevey.js +0 -322
  425. package/lib/esm/client/shared/components/ImagesView/BlendView.js +0 -67
  426. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +0 -69
  427. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +0 -131
  428. package/lib/esm/client/shared/components/ImagesView/SlideView.js +0 -143
  429. package/lib/esm/client/shared/components/ImagesView/SwapView.js +0 -71
  430. package/lib/esm/client/shared/components/ImagesView/index.js +0 -5
  431. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +0 -36
  432. package/lib/esm/client/shared/components/PageFooter/Paging.js +0 -80
  433. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +0 -68
  434. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +0 -97
  435. package/lib/esm/client/shared/components/ResultsPage.js +0 -115
  436. package/lib/esm/client/shared/creeveyClientApi.js +0 -67
  437. package/lib/esm/client/shared/helpers.js +0 -353
  438. package/lib/esm/client/shared/viewMode.js +0 -6
  439. package/lib/esm/creevey.js +0 -54
  440. package/lib/esm/index.js +0 -5
  441. package/lib/esm/server/config.js +0 -73
  442. package/lib/esm/server/docker.js +0 -123
  443. package/lib/esm/server/extract.js +0 -34
  444. package/lib/esm/server/index.js +0 -64
  445. package/lib/esm/server/loaders/babel/creevey-plugin.js +0 -72
  446. package/lib/esm/server/loaders/babel/helpers.js +0 -452
  447. package/lib/esm/server/loaders/babel/register.js +0 -103
  448. package/lib/esm/server/loaders/hooks/mdx.js +0 -15
  449. package/lib/esm/server/loaders/hooks/svelte.js +0 -49
  450. package/lib/esm/server/loaders/webpack/compile.js +0 -270
  451. package/lib/esm/server/loaders/webpack/creevey-loader.js +0 -158
  452. package/lib/esm/server/loaders/webpack/dummy-hmr.js +0 -32
  453. package/lib/esm/server/loaders/webpack/mdx-loader.js +0 -58
  454. package/lib/esm/server/loaders/webpack/start.js +0 -27
  455. package/lib/esm/server/master/api.js +0 -64
  456. package/lib/esm/server/master/index.js +0 -125
  457. package/lib/esm/server/master/master.js +0 -38
  458. package/lib/esm/server/master/pool.js +0 -176
  459. package/lib/esm/server/master/runner.js +0 -259
  460. package/lib/esm/server/master/server.js +0 -105
  461. package/lib/esm/server/messages.js +0 -232
  462. package/lib/esm/server/selenium/browser.js +0 -639
  463. package/lib/esm/server/selenium/index.js +0 -2
  464. package/lib/esm/server/selenium/selenoid.js +0 -149
  465. package/lib/esm/server/stories.js +0 -140
  466. package/lib/esm/server/storybook/entry.js +0 -46
  467. package/lib/esm/server/storybook/helpers.js +0 -98
  468. package/lib/esm/server/storybook/providers/browser.js +0 -60
  469. package/lib/esm/server/storybook/providers/hybrid.js +0 -64
  470. package/lib/esm/server/storybook/providers/nodejs.js +0 -217
  471. package/lib/esm/server/testsFiles/parser.js +0 -50
  472. package/lib/esm/server/testsFiles/register.js +0 -35
  473. package/lib/esm/server/update.js +0 -61
  474. package/lib/esm/server/utils.js +0 -142
  475. package/lib/esm/server/worker/chai-image.js +0 -130
  476. package/lib/esm/server/worker/helpers.js +0 -60
  477. package/lib/esm/server/worker/index.js +0 -1
  478. package/lib/esm/server/worker/reporter.js +0 -86
  479. package/lib/esm/server/worker/worker.js +0 -238
  480. package/lib/esm/shared/index.js +0 -78
  481. package/lib/esm/shared/serializeRegExp.js +0 -24
  482. package/lib/esm/types.js +0 -43
  483. package/lib/types/cli.d.ts +0 -1
  484. package/lib/types/client/addon/components/Addon.d.ts +0 -8
  485. package/lib/types/client/addon/components/Tools.d.ts +0 -6
  486. package/lib/types/client/addon/decorator.d.ts +0 -1
  487. package/lib/types/client/addon/index.d.ts +0 -2
  488. package/lib/types/client/addon/preset.d.ts +0 -23
  489. package/lib/types/client/addon/register.d.ts +0 -3
  490. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +0 -3
  491. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +0 -3
  492. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +0 -3
  493. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +0 -3
  494. package/lib/types/client/shared/components/ImagesView/index.d.ts +0 -5
  495. package/lib/types/client/web/CreeveyLoader.d.ts +0 -2
  496. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +0 -33
  497. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +0 -9
  498. package/lib/types/client/web/CreeveyView/SideBar/index.d.ts +0 -1
  499. package/lib/types/index.d.ts +0 -2
  500. package/lib/types/server/extract.d.ts +0 -2
  501. package/lib/types/server/loaders/babel/creevey-plugin.d.ts +0 -1
  502. package/lib/types/server/loaders/babel/helpers.d.ts +0 -19
  503. package/lib/types/server/loaders/babel/register.d.ts +0 -5
  504. package/lib/types/server/loaders/hooks/mdx.d.ts +0 -1
  505. package/lib/types/server/loaders/hooks/svelte.d.ts +0 -1
  506. package/lib/types/server/loaders/webpack/compile.d.ts +0 -2
  507. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +0 -4
  508. package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +0 -10
  509. package/lib/types/server/loaders/webpack/mdx-loader.d.ts +0 -6
  510. package/lib/types/server/loaders/webpack/start.d.ts +0 -1
  511. package/lib/types/server/master/index.d.ts +0 -3
  512. package/lib/types/server/master/server.d.ts +0 -2
  513. package/lib/types/server/selenium/index.d.ts +0 -2
  514. package/lib/types/server/stories.d.ts +0 -8
  515. package/lib/types/server/storybook/entry.d.ts +0 -18
  516. package/lib/types/server/storybook/helpers.d.ts +0 -24
  517. package/lib/types/server/storybook/providers/browser.d.ts +0 -4
  518. package/lib/types/server/storybook/providers/hybrid.d.ts +0 -4
  519. package/lib/types/server/storybook/providers/nodejs.d.ts +0 -9
  520. package/lib/types/server/testsFiles/register.d.ts +0 -2
  521. package/lib/types/server/update.d.ts +0 -2
  522. package/lib/types/server/utils.d.ts +0 -20
  523. package/lib/types/server/worker/index.d.ts +0 -1
  524. package/lib/types/server/worker/worker.d.ts +0 -4
  525. package/preset.js +0 -9
  526. package/types/babel__register.d.ts +0 -1
  527. package/types/event-source-polyfill.d.ts +0 -6
  528. package/types/mdx.d.ts +0 -7
  529. /package/{addon → manager}/README.md +0 -0
@@ -1,217 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/ban-ts-comment */
2
- import path from 'path';
3
- import cluster from 'cluster';
4
- import chokidar from 'chokidar';
5
- import { noop } from '../../../types';
6
- import { getCreeveyCache } from '../../utils';
7
- import { subscribeOn } from '../../messages';
8
- import { importStorybookClientLogger, importStorybookConfig, importStorybookCoreCommon, importStorybookCoreEvents, isStorybookVersionGreaterThan, isStorybookVersionLessThan } from '../helpers';
9
- import { logger } from '../../logger';
10
- import { denormalizeStoryParameters } from '../../../shared';
11
-
12
- async function initStorybookEnvironment() {
13
- // @ts-expect-error There is no @types/global-jsdom package
14
- (await import('global-jsdom')).default(undefined, {
15
- url: 'http://localhost'
16
- }); // NOTE Cutoff `jsdom` part from userAgent, because storybook check enviroment and create events channel if runs in browser
17
- // https://github.com/storybookjs/storybook/blob/v5.2.8/lib/core/src/client/preview/start.js#L98
18
- // Example: "Mozilla/5.0 (linux) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/15.2.1"
19
-
20
- Object.defineProperty(window.navigator, 'userAgent', {
21
- value: window.navigator.userAgent.split(' ').filter(token => !token.startsWith('jsdom')).join(' ')
22
- }); // TODO Look at creevey debug flag
23
-
24
- const {
25
- logger
26
- } = await importStorybookClientLogger(); // NOTE: Disable duplication warnings for >=6.2 storybook
27
-
28
- if (cluster.isWorker) logger.warn = noop; // NOTE: disable logger for 5.x storybook
29
-
30
- logger.debug = noop;
31
- return import('../entry');
32
- }
33
-
34
- function watchStories(channel, watcher, initialFiles) {
35
- const watchingFiles = initialFiles;
36
- let storiesByFiles = new Map();
37
- subscribeOn('shutdown', () => void watcher.close());
38
- watcher.add(Array.from(watchingFiles));
39
- watcher.on('change', filePath => storiesByFiles.set(path.isAbsolute(filePath) ? filePath : `./${filePath.replace(/\\/g, '/')}`, []));
40
- watcher.on('unlink', filePath => storiesByFiles.set(path.isAbsolute(filePath) ? filePath : `./${filePath.replace(/\\/g, '/')}`, []));
41
- return data => {
42
- const stories = isStorybookVersionLessThan(6) || isStorybookVersionGreaterThan(6, 3) ? data.stories : denormalizeStoryParameters(data);
43
- const files = new Set(Object.values(stories).map(story => story.parameters.fileName));
44
- const addedFiles = Array.from(files).filter(filePath => !watchingFiles.has(filePath));
45
- const removedFiles = Array.from(watchingFiles).filter(filePath => !files.has(filePath));
46
- watcher.add(addedFiles);
47
- addedFiles.forEach(filePath => {
48
- watchingFiles.add(filePath);
49
- storiesByFiles.set(filePath, []);
50
- });
51
- removedFiles.forEach(filePath => watchingFiles.delete(filePath));
52
- Object.values(stories).forEach(story => {
53
- var _storiesByFiles$get;
54
-
55
- return (_storiesByFiles$get = storiesByFiles.get(story.parameters.fileName)) === null || _storiesByFiles$get === void 0 ? void 0 : _storiesByFiles$get.push(story);
56
- });
57
- channel.emit('storiesUpdated', storiesByFiles);
58
- storiesByFiles = new Map();
59
- };
60
- }
61
-
62
- function loadStoriesFromBundle(watch) {
63
- const bundlePath = path.join(getCreeveyCache(), 'storybook/main.js');
64
-
65
- if (watch) {
66
- subscribeOn('webpack', message => {
67
- if (message.type != 'rebuild succeeded') return;
68
- Object.values(global.__CREEVEY_HMR_DATA__).filter(({
69
- callback
70
- }) => callback).forEach(({
71
- data,
72
- callback
73
- }) => callback(data));
74
- delete require.cache[bundlePath];
75
- import(bundlePath);
76
- });
77
- }
78
-
79
- import(bundlePath);
80
- }
81
-
82
- async function loadStoriesDirectly(config, {
83
- watcher,
84
- debug
85
- }) {
86
- const {
87
- toRequireContext,
88
- normalizeStoriesEntry
89
- } = await importStorybookCoreCommon();
90
- const {
91
- addParameters,
92
- configure
93
- } = await import('../entry');
94
- const requireContext = await (await import('../../loaders/babel/register')).default(config, debug);
95
-
96
- const preview = (() => {
97
- try {
98
- return require.resolve(`${config.storybookDir}/preview`);
99
- } catch (_) {
100
- /* noop */
101
- }
102
- })();
103
-
104
- const {
105
- stories
106
- } = await importStorybookConfig();
107
- const contexts = stories.map(entry => {
108
- const normalizedEntry = isStorybookVersionLessThan(6, 4) ? entry : normalizeStoriesEntry(entry, {
109
- configDir: config.storybookDir,
110
- workingDir: process.cwd()
111
- });
112
- const {
113
- path: storiesPath,
114
- recursive,
115
- match
116
- } = toRequireContext(normalizedEntry);
117
- watcher === null || watcher === void 0 ? void 0 : watcher.add(path.resolve(config.storybookDir, storiesPath));
118
- return () => requireContext(storiesPath, recursive, new RegExp(match));
119
- });
120
-
121
- let disposeCallback = data => void data;
122
-
123
- Object.assign(module, {
124
- hot: {
125
- data: {},
126
-
127
- accept() {
128
- /* noop */
129
- },
130
-
131
- dispose(callback) {
132
- disposeCallback = callback;
133
- }
134
-
135
- }
136
- });
137
-
138
- async function startStorybook() {
139
- if (preview) {
140
- const {
141
- parameters,
142
- globals,
143
- globalTypes
144
- } = await import(preview);
145
- if (parameters) addParameters(parameters);
146
- if (globals) addParameters({
147
- globals
148
- });
149
- if (globalTypes) addParameters({
150
- globalTypes
151
- });
152
- }
153
-
154
- try {
155
- configure(contexts.map(ctx => ctx()), module, false);
156
- } catch (error) {
157
- if (cluster.isPrimary) logger.error(error);
158
- }
159
- }
160
-
161
- watcher === null || watcher === void 0 ? void 0 : watcher.add(config.storybookDir);
162
- watcher === null || watcher === void 0 ? void 0 : watcher.on('all', (_event, filename) => {
163
- var _module$hot;
164
-
165
- disposeCallback((_module$hot = module.hot) === null || _module$hot === void 0 ? void 0 : _module$hot.data);
166
- delete require.cache[filename];
167
- void startStorybook();
168
- });
169
- void startStorybook();
170
- } // TODO Do we need to support multiple storybooks here?
171
-
172
-
173
- export async function loadStories(config, {
174
- watch,
175
- debug
176
- }, storiesListener) {
177
- const storybookApi = await initStorybookEnvironment();
178
- const Events = await importStorybookCoreEvents();
179
- const {
180
- channel
181
- } = storybookApi;
182
- channel.removeAllListeners(Events.CURRENT_STORY_WAS_SET);
183
- channel.on('storiesUpdated', storiesListener);
184
- let watcher;
185
- if (watch) watcher = chokidar.watch([], {
186
- ignoreInitial: true
187
- });
188
- const loadPromise = new Promise(resolve => {
189
- channel.once(Events.SET_STORIES, data => {
190
- const stories = isStorybookVersionLessThan(6) || isStorybookVersionGreaterThan(6, 3) ? data.stories : denormalizeStoryParameters(data);
191
- const files = new Set(Object.values(stories).map(story => story.parameters.fileName));
192
- if (watcher) channel.on(Events.SET_STORIES, watchStories(channel, watcher, files));
193
- resolve(stories);
194
- });
195
- });
196
- if (config.useWebpackToExtractTests) loadStoriesFromBundle(watch);else void loadStoriesDirectly(config, {
197
- watcher,
198
- debug
199
- });
200
- return loadPromise;
201
- }
202
- export async function extractStoriesData(config, {
203
- watch,
204
- debug
205
- }) {
206
- const storybookApi = await initStorybookEnvironment();
207
- const Events = await importStorybookCoreEvents();
208
- const {
209
- channel
210
- } = storybookApi;
211
- channel.removeAllListeners(Events.CURRENT_STORY_WAS_SET);
212
- const loadPromise = new Promise(resolve => channel.once(Events.SET_STORIES, resolve));
213
- if (config.useWebpackToExtractTests) loadStoriesFromBundle(watch);else void loadStoriesDirectly(config, {
214
- debug
215
- });
216
- return loadPromise;
217
- }
@@ -1,50 +0,0 @@
1
- import { toId, storyNameFromExport } from '@storybook/csf';
2
- export default async function parse(files) {
3
- result = {};
4
- await Promise.all(files.map(async file => import(file)));
5
- return result;
6
- }
7
- let result = {};
8
- let kindTitle = '';
9
- let storyTitle = '';
10
- let storyParams = null;
11
-
12
- const setStoryParameters = params => {
13
- storyParams = params;
14
- };
15
-
16
- const getStoryId = (kindTitle, storyTitle) => {
17
- return toId(kindTitle, storyNameFromExport(storyTitle));
18
- };
19
-
20
- export const kind = (title, kindFn) => {
21
- kindTitle = title;
22
- kindFn();
23
- kindTitle = '';
24
- };
25
- export const story = (title, storyFn) => {
26
- var _result$storyId;
27
-
28
- storyTitle = title;
29
- storyParams = null;
30
- storyFn({
31
- setStoryParameters
32
- });
33
- const storyId = getStoryId(kindTitle, storyTitle);
34
- result[storyId] = Object.assign({}, storyParams, {
35
- tests: (_result$storyId = result[storyId]) === null || _result$storyId === void 0 ? void 0 : _result$storyId.tests
36
- });
37
- storyTitle = '';
38
- storyParams = null;
39
- };
40
- export const test = (title, testFn) => {
41
- const storyId = getStoryId(kindTitle, storyTitle);
42
-
43
- if (!result[storyId]) {
44
- result[storyId] = {};
45
- }
46
-
47
- result[storyId].tests = Object.assign({}, result[storyId].tests, {
48
- [title]: testFn
49
- });
50
- };
@@ -1,35 +0,0 @@
1
- import { addHook } from 'pirates';
2
- import { getTsconfig } from 'get-tsconfig';
3
- export default async function register(config) {
4
- addHook(() => '', {
5
- exts: ['.jpg', '.jpeg', '.png', '.gif', '.eot', '.otf', '.svg', '.ttf', '.woff', '.woff2', '.css', '.less', '.scss', '.styl'],
6
- ignoreNodeModules: false
7
- });
8
- const {
9
- path: tsConfigPath
10
- } = getTsconfig(config.tsConfig) || {}; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
11
-
12
- (await import('@babel/register')).default(config.babelOptions({
13
- babelrc: false,
14
- rootMode: 'upward-optional',
15
- ignore: [/node_modules/],
16
- extensions: ['.js', '.jsx', '.ts', '.tsx'],
17
- parserOpts: {
18
- sourceType: 'module',
19
- plugins: ['jsx', 'typescript']
20
- },
21
- presets: ['@babel/preset-typescript', ['@babel/preset-env', {
22
- targets: {
23
- node: '10'
24
- },
25
- modules: 'commonjs'
26
- }]],
27
- plugins: [['@babel/plugin-transform-runtime'], ['babel-plugin-tsconfig-paths', {
28
- tsconfig: tsConfigPath
29
- }]]
30
- }));
31
- (await import('ts-node')).register({
32
- project: tsConfigPath,
33
- transpileOnly: true
34
- });
35
- }
@@ -1,61 +0,0 @@
1
- import path from 'path';
2
- import fs, { mkdirSync } from 'fs';
3
- import micromatch from 'micromatch';
4
- import { isDefined } from '../types';
5
-
6
- function tryToLoadTestsData(filename) {
7
- try {
8
- // eslint-disable-next-line @typescript-eslint/no-var-requires
9
- return require(filename);
10
- } catch (_) {
11
- /* noop */
12
- }
13
- }
14
-
15
- const actualRegex = /^(.*)-actual-(\d+)\.png$/i;
16
-
17
- function approve(dirents, srcPath, dstPath, testPaths, isMatch) {
18
- dirents.filter(dirent => dirent.isFile()).map(dirent => actualRegex.exec(dirent.name)).filter(isDefined).filter(([fileName, imageName]) => !testPaths || testPaths.find(([token]) => token == imageName) && isMatch(path.join(srcPath, fileName))).reduce((images, [, imageName, retry]) => Number(retry) > (images.get(imageName) ?? -1) ? images.set(imageName, Number(retry)) : images, new Map()).forEach((retry, imageName) => {
19
- mkdirSync(dstPath, {
20
- recursive: true
21
- });
22
- fs.copyFileSync(path.join(srcPath, `${imageName}-actual-${retry}.png`), path.join(dstPath, `${imageName}.png`));
23
- });
24
- }
25
-
26
- function traverse(srcPath, dstPath, testPaths, isMatch) {
27
- const dirents = fs.readdirSync(srcPath, {
28
- withFileTypes: true
29
- });
30
- approve(dirents, srcPath, dstPath, testPaths, isMatch);
31
- dirents.filter(dirent => dirent.isDirectory()).map(dirent => [dirent.name, testPaths === null || testPaths === void 0 ? void 0 : testPaths.map(([token, ...restPath]) => token == dirent.name ? restPath : null).filter(isDefined)]).filter(([, paths]) => !paths || paths.length > 0).forEach(([dirname, paths]) => traverse(path.join(srcPath, dirname), path.join(dstPath, dirname), paths, isMatch));
32
- }
33
-
34
- export default function update(config, grepPattern) {
35
- const {
36
- reportDir,
37
- screenDir
38
- } = config;
39
- const isMatch = grepPattern ? micromatch.matcher(grepPattern, {
40
- contains: true
41
- }) : () => true;
42
- const testsMeta = tryToLoadTestsData(`${reportDir}/tests.json`);
43
- const testsReport = tryToLoadTestsData(`${reportDir}/data`);
44
- let testPaths = null;
45
-
46
- if (testsMeta && testsReport) {
47
- testPaths = Object.values(testsMeta).filter(isDefined).filter(({
48
- id
49
- }) => {
50
- var _testsReport$id;
51
-
52
- return ((_testsReport$id = testsReport[id]) === null || _testsReport$id === void 0 ? void 0 : _testsReport$id.status) == 'failed';
53
- }).map(({
54
- storyPath,
55
- testName,
56
- browser
57
- }) => [...storyPath, ...(testName ? [testName] : []), browser]);
58
- }
59
-
60
- traverse(reportDir, screenDir, testPaths, value => isMatch(path.relative(reportDir, value)));
61
- }
@@ -1,142 +0,0 @@
1
- import { createWriteStream, existsSync, readFileSync, readdirSync, unlink } from 'fs';
2
- import cluster from 'cluster';
3
- import { isDefined, noop, isFunction } from '../types';
4
- import { emitShutdownMessage, sendShutdownMessage } from './messages';
5
- import findCacheDir from 'find-cache-dir';
6
- import { get } from 'https';
7
- export const isShuttingDown = {
8
- current: false
9
- };
10
- export const LOCALHOST_REGEXP = /(localhost|127\.0\.0\.1)/i;
11
- export const extensions = ['.js', '.jsx', '.ts', '.tsx'];
12
- export const skipOptionKeys = ['in', 'kinds', 'stories', 'tests', 'reason'];
13
-
14
- function matchBy(pattern, value) {
15
- return typeof pattern == 'string' && pattern == value || Array.isArray(pattern) && pattern.includes(value) || pattern instanceof RegExp && pattern.test(value) || !isDefined(pattern);
16
- }
17
-
18
- export function shouldSkip(browser, meta, skipOptions, test) {
19
- if (typeof skipOptions != 'object') {
20
- return skipOptions;
21
- }
22
-
23
- if (Array.isArray(skipOptions)) {
24
- for (const skip of skipOptions) {
25
- const reason = shouldSkip(browser, meta, skip, test);
26
- if (reason) return reason;
27
- }
28
-
29
- return false;
30
- }
31
-
32
- let hasSkipOptionKeys = false;
33
-
34
- for (const skipKey in skipOptions) {
35
- if (skipOptionKeys.includes(skipKey)) {
36
- hasSkipOptionKeys = true;
37
- continue;
38
- }
39
-
40
- const reason = shouldSkip(browser, meta, {
41
- reason: skipKey,
42
- ...skipOptions[skipKey]
43
- }, test);
44
- if (reason) return reason;
45
- }
46
-
47
- if (!hasSkipOptionKeys) return false;
48
- const {
49
- in: browsers,
50
- kinds,
51
- stories,
52
- tests,
53
- reason = true
54
- } = skipOptions;
55
- const {
56
- kind,
57
- story
58
- } = meta;
59
- const skipByBrowser = matchBy(browsers, browser);
60
- const skipByKind = matchBy(kinds, kind);
61
- const skipByStory = matchBy(stories, story);
62
- const skipByTest = !isDefined(test) || matchBy(tests, test);
63
- return skipByBrowser && skipByKind && skipByStory && skipByTest && reason;
64
- }
65
- export async function shutdownWorkers() {
66
- isShuttingDown.current = true;
67
- await Promise.all(Object.values(cluster.workers ?? {}).filter(isDefined).filter(worker => worker.isConnected()).map(worker => new Promise(resolve => {
68
- const timeout = setTimeout(() => worker.kill(), 10000);
69
- worker.on('exit', () => {
70
- clearTimeout(timeout);
71
- resolve();
72
- });
73
- sendShutdownMessage(worker);
74
- })));
75
- emitShutdownMessage();
76
- }
77
- export function shutdown() {
78
- // eslint-disable-next-line no-process-exit
79
- process.exit();
80
- }
81
- export function getCreeveyCache() {
82
- return findCacheDir({
83
- name: 'creevey',
84
- cwd: __dirname
85
- });
86
- }
87
- export async function runSequence(seq, predicate) {
88
- for (const fn of seq) {
89
- if (predicate()) await fn();
90
- }
91
- }
92
- export function testsToImages(tests) {
93
- return new Set([].concat(...tests.filter(isDefined).map(({
94
- browser,
95
- testName,
96
- storyPath,
97
- results
98
- }) => {
99
- var _results$slice$;
100
-
101
- return Object.keys((results === null || results === void 0 ? void 0 : (_results$slice$ = results.slice(-1)[0]) === null || _results$slice$ === void 0 ? void 0 : _results$slice$.images) ?? {}).map(image => `${[...storyPath, testName, browser, browser == image ? undefined : image].filter(isDefined).join('/')}.png`);
102
- })));
103
- } // https://tuhrig.de/how-to-know-you-are-inside-a-docker-container/
104
-
105
- export const isInsideDocker = existsSync('/proc/1/cgroup') && /docker/.test(readFileSync('/proc/1/cgroup', 'utf8'));
106
- export const downloadBinary = (downloadUrl, destination) => new Promise((resolve, reject) => get(downloadUrl, response => {
107
- if (response.statusCode == 302) {
108
- const {
109
- location
110
- } = response.headers;
111
- if (!location) return reject(new Error(`Couldn't download selenoid. Status code: ${response.statusCode ?? 'UNKNOWN'}`));
112
- return resolve(downloadBinary(location, destination));
113
- }
114
-
115
- if (response.statusCode != 200) return reject(new Error(`Couldn't download selenoid. Status code: ${response.statusCode ?? 'UNKNOWN'}`));
116
- const fileStream = createWriteStream(destination);
117
- response.pipe(fileStream);
118
- fileStream.on('finish', () => {
119
- fileStream.close();
120
- resolve();
121
- });
122
- fileStream.on('error', error => {
123
- unlink(destination, noop);
124
- reject(error);
125
- });
126
- }));
127
- export function removeProps(obj, propPath) {
128
- const [prop, ...restPath] = propPath;
129
-
130
- if (restPath.length > 0) {
131
- if (typeof prop == 'string') obj[prop] && removeProps(obj[prop], restPath);
132
- if (isFunction(prop)) Object.keys(obj).filter(prop).forEach(key => obj[key] && removeProps(obj[key], restPath));
133
- } else {
134
- if (typeof prop == 'string') delete obj[prop];
135
- if (isFunction(prop)) Object.keys(obj).filter(prop).forEach(key => delete obj[key]);
136
- }
137
- }
138
- export function readDirRecursive(dirPath) {
139
- return [].concat(...readdirSync(dirPath, {
140
- withFileTypes: true
141
- }).map(dirent => dirent.isDirectory() ? readDirRecursive(`${dirPath}/${dirent.name}`) : [`${dirPath}/${dirent.name}`]));
142
- }
@@ -1,130 +0,0 @@
1
- import { PNG } from 'pngjs';
2
- import pixelmatch from 'pixelmatch';
3
-
4
- function normalizeImageSize(image, width, height) {
5
- const normalizedImage = Buffer.alloc(4 * width * height);
6
-
7
- for (let y = 0; y < height; y++) {
8
- for (let x = 0; x < width; x++) {
9
- const i = (y * width + x) * 4;
10
-
11
- if (x < image.width && y < image.height) {
12
- const j = (y * image.width + x) * 4;
13
- normalizedImage[i + 0] = image.data[j + 0];
14
- normalizedImage[i + 1] = image.data[j + 1];
15
- normalizedImage[i + 2] = image.data[j + 2];
16
- normalizedImage[i + 3] = image.data[j + 3];
17
- } else {
18
- normalizedImage[i + 0] = 0;
19
- normalizedImage[i + 1] = 0;
20
- normalizedImage[i + 2] = 0;
21
- normalizedImage[i + 3] = 0;
22
- }
23
- }
24
- }
25
-
26
- return normalizedImage;
27
- }
28
-
29
- function hasDiffPixels(diff) {
30
- for (let i = 0; i < diff.length; i += 4) {
31
- if (diff[i + 0] == 255 && diff[i + 1] == 0 && diff[i + 2] == 0 && diff[i + 3] == 255) return true;
32
- }
33
-
34
- return false;
35
- }
36
-
37
- function compareImages(expect, actual, diffOptions) {
38
- const expectImage = PNG.sync.read(expect);
39
- const actualImage = PNG.sync.read(actual);
40
- const width = Math.max(actualImage.width, expectImage.width);
41
- const height = Math.max(actualImage.height, expectImage.height);
42
- const diffImage = new PNG({
43
- width,
44
- height
45
- });
46
- let actualImageData = actualImage.data;
47
-
48
- if (actualImage.width < width || actualImage.height < height) {
49
- actualImageData = normalizeImageSize(actualImage, width, height);
50
- }
51
-
52
- let expectImageData = expectImage.data;
53
-
54
- if (expectImage.width < width || expectImage.height < height) {
55
- expectImageData = normalizeImageSize(expectImage, width, height);
56
- }
57
-
58
- pixelmatch(expectImageData, actualImageData, diffImage.data, width, height, diffOptions);
59
- return {
60
- isEqual: !hasDiffPixels(diffImage.data),
61
- diff: PNG.sync.write(diffImage)
62
- };
63
- }
64
-
65
- export default function (getExpected, diffOptions) {
66
- return function chaiImage({
67
- Assertion
68
- }, utils) {
69
- async function assertImage(actual, imageName) {
70
- let onCompare = () => Promise.resolve();
71
-
72
- let expected = await getExpected(imageName);
73
- if (!(expected instanceof Buffer) && expected != null) ({
74
- expected,
75
- onCompare
76
- } = expected);
77
-
78
- if (expected == null) {
79
- await onCompare(actual);
80
- return imageName ? `Expected image '${imageName}' does not exists` : 'Expected image does not exists';
81
- }
82
-
83
- if (actual.equals(expected)) return await onCompare(actual);
84
- const {
85
- isEqual,
86
- diff
87
- } = compareImages(expected, actual, diffOptions);
88
- if (isEqual) return await onCompare(actual);
89
- await onCompare(actual, expected, diff);
90
- return imageName ? `Expected image '${imageName}' to match` : 'Expected image to match';
91
- }
92
-
93
- utils.addMethod(Assertion.prototype, 'matchImage', async function matchImage(imageName) {
94
- const actual = utils.flag(this, 'object');
95
- const errorMessage = await assertImage(typeof actual == 'string' ? Buffer.from(actual, 'base64') : actual, imageName);
96
-
97
- if (errorMessage) {
98
- throw createImageError(imageName ? {
99
- [imageName]: errorMessage
100
- } : errorMessage);
101
- }
102
- });
103
- utils.addMethod(Assertion.prototype, 'matchImages', async function matchImages() {
104
- const errors = {};
105
- await Promise.all(Object.entries(utils.flag(this, 'object')).map(async ([imageName, imageOrBase64]) => {
106
- let errorMessage;
107
-
108
- try {
109
- errorMessage = await assertImage(typeof imageOrBase64 == 'string' ? Buffer.from(imageOrBase64, 'base64') : imageOrBase64, imageName);
110
- } catch (error) {
111
- errorMessage = error.stack;
112
- }
113
-
114
- if (errorMessage) {
115
- errors[imageName] = errorMessage;
116
- }
117
- }));
118
-
119
- if (Object.keys(errors).length > 0) {
120
- throw createImageError(errors);
121
- }
122
- });
123
- };
124
- }
125
-
126
- function createImageError(imageErrors) {
127
- const error = new Error('Expected image to match');
128
- error.images = imageErrors;
129
- return error;
130
- }
@@ -1,60 +0,0 @@
1
- import { Suite, Test } from 'mocha';
2
- import { isDefined } from '../../types';
3
- import { loadTestsFromStories } from '../stories';
4
-
5
- function findOrCreateSuite(name, parent) {
6
- const suite = parent.suites.find(({
7
- title
8
- }) => title == name) || new Suite(name, parent.ctx);
9
-
10
- if (!suite.parent) {
11
- suite.parent = parent;
12
- parent.addSuite(suite);
13
- }
14
-
15
- return suite;
16
- }
17
-
18
- function createTest(name, fn, skip = false) {
19
- const test = new Test(name, skip ? undefined : fn);
20
- test.pending = Boolean(skip); // NOTE Can't define skip reason in mocha https://github.com/mochajs/mocha/issues/2026
21
-
22
- test.skipReason = skip;
23
- return test;
24
- }
25
-
26
- function addTest(rootSuite, test) {
27
- const [testName, ...suitePath] = [...test.storyPath, test.testName].reverse().filter(isDefined);
28
- const suite = suitePath.reduceRight((subSuite, suiteName) => findOrCreateSuite(suiteName, subSuite), rootSuite);
29
- const mochaTest = createTest(testName, test.fn, test.skip);
30
- suite.addTest(mochaTest);
31
- mochaTest.ctx = Object.setPrototypeOf({
32
- id: test.id,
33
- story: test.story
34
- }, suite.ctx);
35
- return mochaTest;
36
- }
37
-
38
- function removeTestOrSuite(testOrSuite) {
39
- const {
40
- parent
41
- } = testOrSuite;
42
- if (!parent) return;
43
- if (testOrSuite instanceof Test) parent.tests = parent.tests.filter(test => test != testOrSuite);
44
- if (testOrSuite instanceof Suite) parent.suites = parent.suites.filter(suite => suite != testOrSuite);
45
- if (parent.tests.length == 0 && parent.suites.length == 0) removeTestOrSuite(parent);
46
- }
47
-
48
- export async function addTestsFromStories(rootSuite, config, {
49
- browser,
50
- ...options
51
- }) {
52
- const mochaTestsById = new Map();
53
- const tests = await loadTestsFromStories([browser], listener => config.storiesProvider(config, options, listener), testsDiff => Object.entries(testsDiff).forEach(([id, newTest]) => {
54
- const oldTest = mochaTestsById.get(id);
55
- mochaTestsById.delete(id);
56
- if (oldTest) removeTestOrSuite(oldTest);
57
- if (newTest) mochaTestsById.set(id, addTest(rootSuite, newTest));
58
- }));
59
- Object.values(tests).filter(isDefined).forEach(test => mochaTestsById.set(test.id, addTest(rootSuite, test)));
60
- }