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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/AUTHORS +2 -0
  2. package/CHANGELOG.md +281 -0
  3. package/README.md +19 -41
  4. package/dist/client/addon/components/Addon.js +18 -8
  5. package/dist/client/addon/components/Addon.js.map +1 -1
  6. package/dist/client/addon/components/Panel.js +4 -4
  7. package/dist/client/addon/components/Panel.js.map +1 -1
  8. package/dist/client/addon/components/TestSelect.js +2 -2
  9. package/dist/client/addon/components/TestSelect.js.map +1 -1
  10. package/dist/client/addon/components/Tools.js +19 -9
  11. package/dist/client/addon/components/Tools.js.map +1 -1
  12. package/dist/client/addon/controller.d.ts +1 -1
  13. package/dist/client/addon/controller.js +3 -3
  14. package/dist/client/addon/controller.js.map +1 -1
  15. package/dist/client/addon/decorator.d.ts +1 -1
  16. package/dist/client/addon/makeDecorator.d.ts +9 -0
  17. package/dist/client/addon/makeDecorator.js +48 -0
  18. package/dist/client/addon/makeDecorator.js.map +1 -0
  19. package/dist/client/addon/manager.js +38 -39
  20. package/dist/client/addon/manager.js.map +1 -1
  21. package/dist/client/addon/preset.d.ts +0 -1
  22. package/dist/client/addon/preset.js +3 -2
  23. package/dist/client/addon/preset.js.map +1 -1
  24. package/dist/client/addon/preview.d.ts +1 -1
  25. package/dist/client/addon/withCreevey.d.ts +5 -3
  26. package/dist/client/addon/withCreevey.js +14 -21
  27. package/dist/client/addon/withCreevey.js.map +1 -1
  28. package/dist/client/shared/components/ImagesView/BlendView.d.ts +2 -2
  29. package/dist/client/shared/components/ImagesView/BlendView.js +18 -8
  30. package/dist/client/shared/components/ImagesView/BlendView.js.map +1 -1
  31. package/dist/client/shared/components/ImagesView/ImagesView.js +1 -1
  32. package/dist/client/shared/components/ImagesView/ImagesView.js.map +1 -1
  33. package/dist/client/shared/components/ImagesView/SideBySideView.d.ts +2 -2
  34. package/dist/client/shared/components/ImagesView/SideBySideView.js +19 -9
  35. package/dist/client/shared/components/ImagesView/SideBySideView.js.map +1 -1
  36. package/dist/client/shared/components/ImagesView/SlideView.d.ts +2 -2
  37. package/dist/client/shared/components/ImagesView/SlideView.js +19 -9
  38. package/dist/client/shared/components/ImagesView/SlideView.js.map +1 -1
  39. package/dist/client/shared/components/ImagesView/SwapView.d.ts +2 -2
  40. package/dist/client/shared/components/ImagesView/SwapView.js +31 -9
  41. package/dist/client/shared/components/ImagesView/SwapView.js.map +1 -1
  42. package/dist/client/shared/components/ImagesView/common.d.ts +1 -1
  43. package/dist/client/shared/components/PageFooter/PageFooter.js +1 -1
  44. package/dist/client/shared/components/PageFooter/PageFooter.js.map +1 -1
  45. package/dist/client/shared/components/PageFooter/Paging.js +1 -1
  46. package/dist/client/shared/components/PageFooter/Paging.js.map +1 -1
  47. package/dist/client/shared/components/PageHeader/ImagePreview.d.ts +2 -2
  48. package/dist/client/shared/components/PageHeader/ImagePreview.js +2 -1
  49. package/dist/client/shared/components/PageHeader/ImagePreview.js.map +1 -1
  50. package/dist/client/shared/components/PageHeader/PageHeader.js +34 -13
  51. package/dist/client/shared/components/PageHeader/PageHeader.js.map +1 -1
  52. package/dist/client/shared/components/ResultsPage.d.ts +2 -2
  53. package/dist/client/shared/components/ResultsPage.js +45 -15
  54. package/dist/client/shared/components/ResultsPage.js.map +1 -1
  55. package/dist/client/shared/creeveyClientApi.js +18 -1
  56. package/dist/client/shared/creeveyClientApi.js.map +1 -1
  57. package/dist/client/shared/helpers.d.ts +1 -3
  58. package/dist/client/shared/helpers.js +4 -19
  59. package/dist/client/shared/helpers.js.map +1 -1
  60. package/dist/client/web/CreeveyApp.d.ts +1 -0
  61. package/dist/client/web/CreeveyApp.js +44 -15
  62. package/dist/client/web/CreeveyApp.js.map +1 -1
  63. package/dist/client/web/CreeveyContext.d.ts +6 -0
  64. package/dist/client/web/CreeveyContext.js +21 -7
  65. package/dist/client/web/CreeveyContext.js.map +1 -1
  66. package/dist/client/web/CreeveyLoader.d.ts +1 -1
  67. package/dist/client/web/CreeveyLoader.js +3 -3
  68. package/dist/client/web/CreeveyLoader.js.map +1 -1
  69. package/dist/client/web/CreeveyView/SideBar/Checkbox.d.ts +4 -4
  70. package/dist/client/web/CreeveyView/SideBar/Checkbox.js +36 -6
  71. package/dist/client/web/CreeveyView/SideBar/Checkbox.js.map +1 -1
  72. package/dist/client/web/CreeveyView/SideBar/Search.js +20 -10
  73. package/dist/client/web/CreeveyView/SideBar/Search.js.map +1 -1
  74. package/dist/client/web/CreeveyView/SideBar/SideBar.js +26 -12
  75. package/dist/client/web/CreeveyView/SideBar/SideBar.js.map +1 -1
  76. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js +67 -13
  77. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js.map +1 -1
  78. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js +32 -12
  79. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js.map +1 -1
  80. package/dist/client/web/CreeveyView/SideBar/SuiteLink.d.ts +6 -6
  81. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js +20 -13
  82. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js.map +1 -1
  83. package/dist/client/web/CreeveyView/SideBar/TestLink.js +20 -13
  84. package/dist/client/web/CreeveyView/SideBar/TestLink.js.map +1 -1
  85. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +2 -2
  86. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js +2 -2
  87. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js.map +1 -1
  88. package/dist/client/web/CreeveyView/SideBar/TestsStatus.d.ts +2 -2
  89. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js +3 -2
  90. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js.map +1 -1
  91. package/dist/client/web/CreeveyView/SideBar/Toggle.js +1 -1
  92. package/dist/client/web/CreeveyView/SideBar/Toggle.js.map +1 -1
  93. package/dist/client/web/KeyboardEventsContext.d.ts +1 -8
  94. package/dist/client/web/KeyboardEventsContext.js +79 -64
  95. package/dist/client/web/KeyboardEventsContext.js.map +1 -1
  96. package/dist/client/web/assets/index-CtSq3IhG.js +518 -0
  97. package/dist/client/web/index.html +1 -1
  98. package/dist/client/web/index.js +26 -11
  99. package/dist/client/web/index.js.map +1 -1
  100. package/dist/client/web/themes.d.ts +2 -0
  101. package/dist/client/web/themes.js +22 -0
  102. package/dist/client/web/themes.js.map +1 -0
  103. package/dist/creevey.d.ts +1 -1
  104. package/dist/creevey.js +122 -41
  105. package/dist/creevey.js.map +1 -1
  106. package/dist/index.d.ts +1 -0
  107. package/dist/playwright/generator.d.ts +25 -0
  108. package/dist/playwright/generator.js +243 -0
  109. package/dist/playwright/generator.js.map +1 -0
  110. package/dist/playwright/helpers.d.ts +2 -0
  111. package/dist/playwright/helpers.js +29 -0
  112. package/dist/playwright/helpers.js.map +1 -0
  113. package/dist/playwright/reporter.d.ts +83 -0
  114. package/dist/playwright/reporter.js +334 -0
  115. package/dist/playwright/reporter.js.map +1 -0
  116. package/dist/playwright/setup.d.ts +3 -0
  117. package/dist/playwright/setup.js +72 -0
  118. package/dist/playwright/setup.js.map +1 -0
  119. package/dist/playwright.d.ts +1 -0
  120. package/dist/playwright.js +3 -1
  121. package/dist/playwright.js.map +1 -1
  122. package/dist/server/compare.d.ts +18 -0
  123. package/dist/server/compare.js +182 -0
  124. package/dist/server/compare.js.map +1 -0
  125. package/dist/server/config.d.ts +3 -3
  126. package/dist/server/config.js +75 -8
  127. package/dist/server/config.js.map +1 -1
  128. package/dist/server/connection.d.ts +3 -0
  129. package/dist/server/connection.js +28 -0
  130. package/dist/server/connection.js.map +1 -0
  131. package/dist/server/docker.d.ts +1 -1
  132. package/dist/server/docker.js +54 -32
  133. package/dist/server/docker.js.map +1 -1
  134. package/dist/server/index.d.ts +2 -2
  135. package/dist/server/index.js +165 -64
  136. package/dist/server/index.js.map +1 -1
  137. package/dist/server/master/api.d.ts +11 -6
  138. package/dist/server/master/api.js +88 -25
  139. package/dist/server/master/api.js.map +1 -1
  140. package/dist/server/master/handlers/capture-handler.d.ts +5 -0
  141. package/dist/server/master/handlers/capture-handler.js +25 -0
  142. package/dist/server/master/handlers/capture-handler.js.map +1 -0
  143. package/dist/server/master/handlers/index.d.ts +4 -0
  144. package/dist/server/master/handlers/index.js +21 -0
  145. package/dist/server/master/handlers/index.js.map +1 -0
  146. package/dist/server/master/handlers/ping-handler.d.ts +2 -0
  147. package/dist/server/master/handlers/ping-handler.js +8 -0
  148. package/dist/server/master/handlers/ping-handler.js.map +1 -0
  149. package/dist/server/master/handlers/static-handler.d.ts +1 -0
  150. package/dist/server/master/handlers/static-handler.js +20 -0
  151. package/dist/server/master/handlers/static-handler.js.map +1 -0
  152. package/dist/server/master/handlers/stories-handler.d.ts +4 -0
  153. package/dist/server/master/handlers/stories-handler.js +24 -0
  154. package/dist/server/master/handlers/stories-handler.js.map +1 -0
  155. package/dist/server/master/master.js +7 -24
  156. package/dist/server/master/master.js.map +1 -1
  157. package/dist/server/master/pool.d.ts +1 -0
  158. package/dist/server/master/pool.js +5 -3
  159. package/dist/server/master/pool.js.map +1 -1
  160. package/dist/server/master/queue.d.ts +1 -1
  161. package/dist/server/master/queue.js +14 -6
  162. package/dist/server/master/queue.js.map +1 -1
  163. package/dist/server/master/runner.d.ts +6 -6
  164. package/dist/server/master/runner.js +98 -130
  165. package/dist/server/master/runner.js.map +1 -1
  166. package/dist/server/master/server.d.ts +1 -1
  167. package/dist/server/master/server.js +193 -88
  168. package/dist/server/master/server.js.map +1 -1
  169. package/dist/server/master/start.d.ts +1 -2
  170. package/dist/server/master/start.js +13 -29
  171. package/dist/server/master/start.js.map +1 -1
  172. package/dist/server/master/testsManager.d.ts +81 -0
  173. package/dist/server/master/testsManager.js +282 -0
  174. package/dist/server/master/testsManager.js.map +1 -0
  175. package/dist/server/playwright/docker-file.d.ts +1 -1
  176. package/dist/server/playwright/docker-file.js +17 -8
  177. package/dist/server/playwright/docker-file.js.map +1 -1
  178. package/dist/server/playwright/docker.d.ts +2 -1
  179. package/dist/server/playwright/docker.js +10 -2
  180. package/dist/server/playwright/docker.js.map +1 -1
  181. package/dist/server/playwright/index-source.mjs +16 -0
  182. package/dist/server/playwright/internal.d.ts +7 -7
  183. package/dist/server/playwright/internal.js +144 -84
  184. package/dist/server/playwright/internal.js.map +1 -1
  185. package/dist/server/playwright/webdriver.d.ts +3 -3
  186. package/dist/server/playwright/webdriver.js +0 -6
  187. package/dist/server/playwright/webdriver.js.map +1 -1
  188. package/dist/server/providers/browser.js +4 -3
  189. package/dist/server/providers/browser.js.map +1 -1
  190. package/dist/server/providers/hybrid.js +2 -2
  191. package/dist/server/providers/hybrid.js.map +1 -1
  192. package/dist/server/report.d.ts +10 -0
  193. package/dist/server/report.js +45 -0
  194. package/dist/server/report.js.map +1 -0
  195. package/dist/server/reporters/creevey.d.ts +7 -0
  196. package/dist/server/reporters/creevey.js +63 -0
  197. package/dist/server/reporters/creevey.js.map +1 -0
  198. package/dist/server/reporters/index.d.ts +2 -0
  199. package/dist/server/reporters/index.js +16 -0
  200. package/dist/server/reporters/index.js.map +1 -0
  201. package/dist/server/reporters/junit.d.ts +16 -0
  202. package/dist/server/reporters/junit.js +167 -0
  203. package/dist/server/reporters/junit.js.map +1 -0
  204. package/dist/server/reporters/teamcity.d.ts +7 -0
  205. package/dist/server/reporters/teamcity.js +60 -0
  206. package/dist/server/reporters/teamcity.js.map +1 -0
  207. package/dist/server/selenium/internal.d.ts +4 -4
  208. package/dist/server/selenium/internal.js +56 -40
  209. package/dist/server/selenium/internal.js.map +1 -1
  210. package/dist/server/selenium/selenoid.js +12 -6
  211. package/dist/server/selenium/selenoid.js.map +1 -1
  212. package/dist/server/selenium/webdriver.d.ts +3 -3
  213. package/dist/server/selenium/webdriver.js +4 -8
  214. package/dist/server/selenium/webdriver.js.map +1 -1
  215. package/dist/server/shutdown.d.ts +1 -0
  216. package/dist/server/shutdown.js +23 -0
  217. package/dist/server/shutdown.js.map +1 -0
  218. package/dist/server/stories.d.ts +0 -1
  219. package/dist/server/stories.js +0 -12
  220. package/dist/server/stories.js.map +1 -1
  221. package/dist/server/telemetry.js +3 -3
  222. package/dist/server/telemetry.js.map +1 -1
  223. package/dist/server/testsFiles/parser.js +45 -5
  224. package/dist/server/testsFiles/parser.js.map +1 -1
  225. package/dist/server/utils.d.ts +23 -0
  226. package/dist/server/utils.js +114 -15
  227. package/dist/server/utils.js.map +1 -1
  228. package/dist/server/webdriver.d.ts +1 -1
  229. package/dist/server/worker/context.d.ts +3 -0
  230. package/dist/server/worker/context.js +15 -0
  231. package/dist/server/worker/context.js.map +1 -0
  232. package/dist/server/worker/match-image.d.ts +8 -12
  233. package/dist/server/worker/match-image.js +11 -178
  234. package/dist/server/worker/match-image.js.map +1 -1
  235. package/dist/server/worker/start.d.ts +2 -2
  236. package/dist/server/worker/start.js +41 -64
  237. package/dist/server/worker/start.js.map +1 -1
  238. package/dist/shared/index.d.ts +1 -1
  239. package/dist/shared/index.js +9 -7
  240. package/dist/shared/index.js.map +1 -1
  241. package/dist/types.d.ts +84 -43
  242. package/dist/types.js +65 -1
  243. package/dist/types.js.map +1 -1
  244. package/docs/cli.md +80 -0
  245. package/docs/config.md +179 -165
  246. package/docs/examples/playwright-reporer/playwright.config.ts +37 -0
  247. package/docs/migration-0.9-to-0.10.md +144 -0
  248. package/docs/playwright-reporter.md +357 -0
  249. package/docs/storybook.md +60 -0
  250. package/docs/tests.md +50 -45
  251. package/package.json +78 -83
  252. package/playwright.config.mts +46 -0
  253. package/src/client/addon/components/Addon.tsx +1 -1
  254. package/src/client/addon/components/Panel.tsx +4 -4
  255. package/src/client/addon/components/TestSelect.tsx +2 -2
  256. package/src/client/addon/components/Tools.tsx +2 -2
  257. package/src/client/addon/controller.ts +4 -4
  258. package/src/client/addon/makeDecorator.ts +69 -0
  259. package/src/client/addon/manager.ts +38 -37
  260. package/src/client/addon/preset.ts +2 -1
  261. package/src/client/addon/withCreevey.ts +16 -19
  262. package/src/client/shared/components/ImagesView/BlendView.tsx +1 -1
  263. package/src/client/shared/components/ImagesView/ImagesView.tsx +1 -1
  264. package/src/client/shared/components/ImagesView/SideBySideView.tsx +2 -2
  265. package/src/client/shared/components/ImagesView/SlideView.tsx +2 -2
  266. package/src/client/shared/components/ImagesView/SwapView.tsx +20 -2
  267. package/src/client/shared/components/ImagesView/common.ts +1 -1
  268. package/src/client/shared/components/PageFooter/PageFooter.tsx +1 -1
  269. package/src/client/shared/components/PageFooter/Paging.tsx +1 -1
  270. package/src/client/shared/components/PageHeader/ImagePreview.tsx +2 -1
  271. package/src/client/shared/components/PageHeader/PageHeader.tsx +23 -7
  272. package/src/client/shared/components/ResultsPage.tsx +33 -10
  273. package/src/client/shared/creeveyClientApi.ts +19 -1
  274. package/src/client/shared/helpers.ts +4 -24
  275. package/src/client/web/CreeveyApp.tsx +30 -9
  276. package/src/client/web/CreeveyContext.tsx +11 -0
  277. package/src/client/web/CreeveyLoader.tsx +2 -2
  278. package/src/client/web/CreeveyView/SideBar/Checkbox.tsx +3 -3
  279. package/src/client/web/CreeveyView/SideBar/Search.tsx +4 -4
  280. package/src/client/web/CreeveyView/SideBar/SideBar.tsx +11 -6
  281. package/src/client/web/CreeveyView/SideBar/SideBarFooter.tsx +48 -15
  282. package/src/client/web/CreeveyView/SideBar/SideBarHeader.tsx +20 -5
  283. package/src/client/web/CreeveyView/SideBar/SuiteLink.tsx +12 -12
  284. package/src/client/web/CreeveyView/SideBar/TestLink.tsx +10 -10
  285. package/src/client/web/CreeveyView/SideBar/TestStatusIcon.tsx +2 -2
  286. package/src/client/web/CreeveyView/SideBar/TestsStatus.tsx +3 -2
  287. package/src/client/web/CreeveyView/SideBar/Toggle.tsx +1 -1
  288. package/src/client/web/KeyboardEventsContext.tsx +61 -73
  289. package/src/client/web/index.tsx +10 -5
  290. package/src/client/web/themes.ts +24 -0
  291. package/src/creevey.ts +92 -38
  292. package/src/playwright/generator.ts +322 -0
  293. package/src/playwright/helpers.ts +31 -0
  294. package/src/playwright/reporter.ts +381 -0
  295. package/src/playwright/setup.ts +84 -0
  296. package/src/playwright.ts +1 -0
  297. package/src/server/compare.ts +260 -0
  298. package/src/server/config.ts +52 -9
  299. package/src/server/connection.ts +26 -0
  300. package/src/server/docker.ts +62 -34
  301. package/src/server/index.ts +166 -79
  302. package/src/server/master/api.ts +94 -28
  303. package/src/server/master/handlers/capture-handler.ts +20 -0
  304. package/src/server/master/handlers/index.ts +4 -0
  305. package/src/server/master/handlers/ping-handler.ts +6 -0
  306. package/src/server/master/handlers/static-handler.ts +16 -0
  307. package/src/server/master/handlers/stories-handler.ts +20 -0
  308. package/src/server/master/master.ts +10 -27
  309. package/src/server/master/pool.ts +7 -3
  310. package/src/server/master/queue.ts +21 -7
  311. package/src/server/master/runner.ts +123 -134
  312. package/src/server/master/server.ts +214 -101
  313. package/src/server/master/start.ts +19 -41
  314. package/src/server/master/testsManager.ts +316 -0
  315. package/src/server/playwright/docker-file.ts +20 -8
  316. package/src/server/playwright/docker.ts +16 -3
  317. package/src/server/playwright/index-source.mjs +16 -0
  318. package/src/server/playwright/internal.ts +176 -103
  319. package/src/server/playwright/webdriver.ts +4 -10
  320. package/src/server/providers/browser.ts +4 -3
  321. package/src/server/providers/hybrid.ts +2 -3
  322. package/src/server/report.ts +51 -0
  323. package/src/server/reporters/creevey.ts +71 -0
  324. package/src/server/reporters/index.ts +11 -0
  325. package/src/server/reporters/junit.ts +207 -0
  326. package/src/server/reporters/teamcity.ts +74 -0
  327. package/src/server/selenium/internal.ts +70 -53
  328. package/src/server/selenium/selenoid.ts +13 -6
  329. package/src/server/selenium/webdriver.ts +8 -12
  330. package/src/server/shutdown.ts +19 -0
  331. package/src/server/stories.ts +1 -12
  332. package/src/server/telemetry.ts +3 -3
  333. package/src/server/testsFiles/parser.ts +52 -4
  334. package/src/server/utils.ts +124 -16
  335. package/src/server/webdriver.ts +1 -1
  336. package/src/server/worker/context.ts +14 -0
  337. package/src/server/worker/match-image.ts +16 -248
  338. package/src/server/worker/start.ts +49 -79
  339. package/src/shared/index.ts +10 -8
  340. package/src/types.ts +91 -58
  341. package/types/global.d.ts +1 -0
  342. package/dist/client/web/assets/index-DB8lHlJw.js +0 -591
  343. package/dist/server/reporter.d.ts +0 -26
  344. package/dist/server/reporter.js +0 -108
  345. package/dist/server/reporter.js.map +0 -1
  346. package/dist/server/update.d.ts +0 -2
  347. package/dist/server/update.js +0 -53
  348. package/dist/server/update.js.map +0 -1
  349. package/src/server/reporter.ts +0 -139
  350. package/src/server/update.ts +0 -74
package/src/types.ts CHANGED
@@ -1,24 +1,11 @@
1
- import type { StoryContextForEnhancers, DecoratorFunction } from '@storybook/csf';
1
+ import * as v from 'valibot';
2
2
  import type { Worker as ClusterWorker } from 'cluster';
3
- import type Pixelmatch from 'pixelmatch';
4
- import type { ODiffOptions } from 'odiff-bin';
5
3
  import type { expect } from 'chai';
6
4
  import type EventEmitter from 'events';
7
- import { LaunchOptions } from 'playwright-core';
8
- // import type { Browser } from 'playwright-core';
9
-
10
- /* eslint-disable @typescript-eslint/no-explicit-any */
11
- export type DiffOptions = typeof Pixelmatch extends (
12
- x1: any,
13
- x2: any,
14
- x3: any,
15
- x4: any,
16
- x5: any,
17
- options?: infer T,
18
- ) => void
19
- ? T
20
- : never;
21
- /* eslint-enable @typescript-eslint/no-explicit-any */
5
+ import type { ODiffOptions } from 'odiff-bin';
6
+ import type { LaunchOptions } from 'playwright-core';
7
+ import type { PixelmatchOptions } from 'pixelmatch';
8
+ import type { StoryContextForEnhancers, DecoratorFunction } from 'storybook/internal/types';
22
9
 
23
10
  export interface SetStoriesData {
24
11
  v?: number;
@@ -102,6 +89,7 @@ export class ChromeConfig {
102
89
  }
103
90
  */
104
91
  export interface BrowserConfigObject {
92
+ // TODO Restrict browser names for playwright images
105
93
  browserName: string;
106
94
  // customizeBuilder?: (builder: Builder) => Builder;
107
95
  limit?: number;
@@ -115,6 +103,10 @@ export interface BrowserConfigObject {
115
103
  * Storybook's globals to set in a specific browser
116
104
  * @see https://github.com/storybookjs/storybook/blob/v6.0.0/docs/essentials/toolbars-and-globals.md
117
105
  */
106
+ storybookGlobals?: StorybookGlobals;
107
+ /**
108
+ * @deprecated Use `storybookGlobals` instead
109
+ */
118
110
  _storybookGlobals?: StorybookGlobals;
119
111
  /**
120
112
  * Specify custom docker image. Used only with `useDocker == true`
@@ -144,7 +136,13 @@ export interface BrowserConfigObject {
144
136
  [name: string]: unknown;
145
137
  };
146
138
 
147
- playwrightOptions?: Omit<LaunchOptions, 'logger'>;
139
+ playwrightOptions?: Omit<LaunchOptions, 'logger'> & {
140
+ trace?: {
141
+ screenshots?: boolean;
142
+ snapshots?: boolean;
143
+ sources?: boolean;
144
+ };
145
+ };
148
146
  }
149
147
 
150
148
  export type StorybookGlobals = Record<string, unknown>;
@@ -155,7 +153,7 @@ export type CreeveyWebdriverConstructor = new (
155
153
  browser: string,
156
154
  gridUrl: string,
157
155
  config: Config,
158
- options: Options,
156
+ options: WorkerOptions,
159
157
  ) => CreeveyWebdriver;
160
158
 
161
159
  export interface CreeveyWebdriver {
@@ -182,7 +180,7 @@ export interface DockerAuth {
182
180
  }
183
181
 
184
182
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
185
- export type BaseReporter = new (runner: EventEmitter, options: { reporterOptions: any }) => void;
183
+ export type BaseReporter = new (runner: EventEmitter, options: { reportDir: string; reporterOptions: any }) => void;
186
184
 
187
185
  export interface Config {
188
186
  /**
@@ -199,6 +197,11 @@ export interface Config {
199
197
  * Url where storybook hosted on
200
198
  */
201
199
  resolveStorybookUrl?: () => Promise<string>;
200
+ /**
201
+ * Command to automatically start Storybook if it is not running.
202
+ * For example, `npm run storybook` or `yarn storybook` etc.
203
+ */
204
+ storybookAutorunCmd?: string;
202
205
  /**
203
206
  * Absolute path to directory with reference images
204
207
  * @default path.join(process.cwd(), './images')
@@ -212,8 +215,9 @@ export interface Config {
212
215
  /**
213
216
  * Specify a custom reporter for test results. Creevey accepts only mocha-like reporters
214
217
  * @optional
218
+ * @default 'creevey'
215
219
  */
216
- reporter: BaseReporter;
220
+ reporter: BaseReporter | 'creevey' | 'teamcity' | 'junit';
217
221
  /**
218
222
  * Options which are used by reporter
219
223
  */
@@ -231,13 +235,14 @@ export interface Config {
231
235
  testTimeout: number;
232
236
  /**
233
237
  * Define pixelmatch diff options
234
- * @default { threshold: 0.05, includeAA: false }
238
+ * @default { threshold: 0.1, includeAA: false }
235
239
  */
236
- diffOptions: DiffOptions;
240
+ diffOptions: PixelmatchOptions;
237
241
  /**
238
- *
242
+ * Define odiff diff options
243
+ * @default { threshold: 0.1, antialiasing: true }
239
244
  */
240
- odiffOptions: ODiffOptions; // TODO Update description
245
+ odiffOptions: ODiffOptions;
241
246
  /**
242
247
  * Browser capabilities
243
248
  * @default { chrome: true }
@@ -255,20 +260,17 @@ export interface Config {
255
260
  /**
256
261
  * Creevey has two built-in stories providers.
257
262
  *
258
- * `nodejsStoriesProvider` - The first one is used by default except if CSFv3 is enabled in Storybook.
259
- * This provider builds and runs storybook in nodejs env, that allows write interaction tests by using Selenium API.
260
- * The downside is it depends from project build specific and slightly increases init time.
261
- *
262
- * `browserStoriesProvider` - The second one is used by default with CSFv3 storybook feature.
263
- * It load stories from storybook which is running in browser, like storyshots or loki do it.
263
+ * `browserStoriesProvider` - Extracts stories directly from the Storybook UI. It loads stories from storybook which is running in browser, like storyshots or loki do it.
264
264
  * The downside of this, you can't use interaction tests in Creevey, unless you use CSFv3.
265
265
  * Where you can define `play` method for each story
266
266
  *
267
+ * `hybridStoriesProvider` - Combines stories from Storybook with tests from separate files. This is the default provider used in the configuration.
268
+ *
267
269
  * Usage
268
270
  * ``` typescript
269
- * import { nodejsStoriesProvider as provider } from 'creevey'
270
- * // or
271
271
  * import { browserStoriesProvider as provider } from 'creevey'
272
+ * // or
273
+ * import { hybridStoriesProvider as provider } from 'creevey'
272
274
  *
273
275
  * // Creevey config
274
276
  * module.exports = {
@@ -336,26 +338,38 @@ export interface StoriesProvider {
336
338
 
337
339
  export type CreeveyConfig = Partial<Config>;
338
340
 
339
- export interface Options {
340
- _: string[];
341
- config?: string;
342
- port: number;
343
- ui: boolean;
344
- update: boolean | string;
345
- debug: boolean;
346
- trace: boolean;
347
- browser?: string;
348
- /**
349
- * @deprecated use {@link Config.reporter} instead
350
- */
351
- reporter?: string;
352
- screenDir?: string;
353
- reportDir?: string;
354
- gridUrl?: string;
355
- storybookUrl?: string;
356
- failFast?: boolean;
357
- odiff?: boolean;
358
- }
341
+ export const OptionsSchema = v.object({
342
+ ui: v.optional(v.boolean()),
343
+ storybookStart: v.optional(v.union([v.string(), v.boolean()])),
344
+ config: v.optional(v.string()),
345
+ debug: v.optional(v.boolean()),
346
+ port: v.number(),
347
+ failFast: v.optional(v.boolean()),
348
+ reportDir: v.optional(v.string()),
349
+ screenDir: v.optional(v.string()),
350
+ storybookUrl: v.optional(v.string()),
351
+ storybookPort: v.optional(v.number()),
352
+ reporter: v.optional(v.string()),
353
+ odiff: v.optional(v.boolean()),
354
+ trace: v.optional(v.boolean()),
355
+ docker: v.optional(v.boolean()),
356
+ });
357
+
358
+ export const WorkerOptionsSchema = v.object({
359
+ browser: v.string(),
360
+ storybookUrl: v.string(),
361
+ gridUrl: v.optional(v.string()),
362
+ config: v.optional(v.string()),
363
+ debug: v.optional(v.boolean()),
364
+ trace: v.optional(v.boolean()),
365
+ reportDir: v.optional(v.string()),
366
+ screenDir: v.optional(v.string()),
367
+ odiff: v.optional(v.boolean()),
368
+ port: v.number(),
369
+ });
370
+
371
+ export type Options = v.InferOutput<typeof OptionsSchema>;
372
+ export type WorkerOptions = v.InferOutput<typeof WorkerOptionsSchema>;
359
373
 
360
374
  export type WorkerError = 'browser' | 'test' | 'unknown';
361
375
 
@@ -403,10 +417,17 @@ export type TestStatus = 'unknown' | 'pending' | 'running' | 'failed' | 'approve
403
417
 
404
418
  export interface TestResult {
405
419
  status: 'failed' | 'success';
420
+ retries: number;
406
421
  // TODO Remove checks `name == browser` in TestResultsView
407
422
  // images?: Partial<{ [name: string]: Images }> | Images;
408
423
  images?: Partial<Record<string, Images>>;
409
424
  error?: string;
425
+ // Test metadata for reporting
426
+ duration?: number;
427
+ attachments?: string[];
428
+ sessionId?: string;
429
+ browserName?: string;
430
+ workerId?: number;
410
431
  }
411
432
 
412
433
  export class ImagesError extends Error {
@@ -441,8 +462,8 @@ export interface BaseCreeveyTestContext {
441
462
  * @internal
442
463
  */
443
464
  screenshots: { imageName?: string; screenshot: Buffer }[];
444
- matchImage: (image: Buffer, imageName?: string) => Promise<void>;
445
- matchImages: (images: Record<string, Buffer>) => Promise<void>;
465
+ matchImage: (image: Buffer | string, imageName?: string) => Promise<void>;
466
+ matchImages: (images: Record<string, Buffer | string>) => Promise<void>;
446
467
  }
447
468
 
448
469
  export interface CreeveyTestContext extends BaseCreeveyTestContext {
@@ -454,6 +475,8 @@ export interface CreeveyTestContext extends BaseCreeveyTestContext {
454
475
  export enum TEST_EVENTS {
455
476
  RUN_BEGIN = 'start',
456
477
  RUN_END = 'end',
478
+ SUITE_BEGIN = 'suite',
479
+ SUITE_END = 'suite end',
457
480
  TEST_BEGIN = 'test',
458
481
  TEST_END = 'test end',
459
482
  TEST_FAIL = 'fail',
@@ -478,22 +501,32 @@ export interface FakeTest {
478
501
  title: string;
479
502
  fullTitle: () => string;
480
503
  titlePath: () => string[];
481
- currentRetry: () => number;
504
+ currentRetry: () => number | undefined;
482
505
  retires: () => number;
483
506
  slow: () => number;
484
507
  duration?: number;
485
508
  state?: 'failed' | 'passed';
486
509
  // NOTE > duration, > duration / 2, > 0
487
510
  speed?: 'slow' | 'medium' | 'fast';
488
- err?: unknown;
511
+ err?: string;
489
512
  // NOTE: image files
490
513
  attachments?: string[];
514
+
515
+ // NOTE: Creevey specific fields
516
+ creevey: {
517
+ sessionId: string;
518
+ browserName: string;
519
+ workerId: number;
520
+ willRetry: boolean;
521
+ images: Partial<Record<string, Partial<Images>>>;
522
+ };
491
523
  }
492
524
 
493
525
  export interface CreeveyStatus {
494
526
  isRunning: boolean;
495
527
  tests: Partial<Record<string, TestData>>;
496
528
  browsers: string[];
529
+ isUpdateMode: boolean;
497
530
  }
498
531
 
499
532
  export interface CreeveyUpdate {
package/types/global.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable no-var */
2
2
 
3
+ declare var __CREEVEY_ENV__: boolean;
3
4
  declare var __CREEVEY_SERVER_HOST__: string;
4
5
  declare var __CREEVEY_SERVER_PORT__: number | null;
5
6
  declare var __CREEVEY_CLIENT_PORT__: number | null;