creevey 0.9.2 → 0.10.0-beta.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 (259) hide show
  1. package/chromatic.config.json +5 -0
  2. package/dist/client/addon/components/Addon.d.ts +1 -0
  3. package/dist/client/addon/components/Addon.js.map +1 -1
  4. package/dist/client/addon/components/Icons.d.ts +1 -0
  5. package/dist/client/addon/components/Icons.js.map +1 -1
  6. package/dist/client/addon/components/Panel.d.ts +1 -0
  7. package/dist/client/addon/components/Panel.js.map +1 -1
  8. package/dist/client/addon/components/TestSelect.d.ts +1 -0
  9. package/dist/client/addon/components/TestSelect.js +4 -3
  10. package/dist/client/addon/components/TestSelect.js.map +1 -1
  11. package/dist/client/addon/components/Tools.d.ts +1 -0
  12. package/dist/client/addon/components/Tools.js +7 -8
  13. package/dist/client/addon/components/Tools.js.map +1 -1
  14. package/dist/client/addon/controller.d.ts +1 -1
  15. package/dist/client/addon/controller.js.map +1 -1
  16. package/dist/client/addon/decorator.d.ts +1 -1
  17. package/dist/client/addon/manager.js +3 -2
  18. package/dist/client/addon/manager.js.map +1 -1
  19. package/dist/client/addon/preview.d.ts +1 -1
  20. package/dist/client/addon/withCreevey.d.ts +6 -8
  21. package/dist/client/addon/withCreevey.js +21 -19
  22. package/dist/client/addon/withCreevey.js.map +1 -1
  23. package/dist/client/shared/components/ImagesView/BlendView.d.ts +1 -1
  24. package/dist/client/shared/components/ImagesView/BlendView.js.map +1 -1
  25. package/dist/client/shared/components/ImagesView/ImagesView.d.ts +1 -0
  26. package/dist/client/shared/components/ImagesView/ImagesView.js.map +1 -1
  27. package/dist/client/shared/components/ImagesView/SideBySideView.d.ts +1 -1
  28. package/dist/client/shared/components/ImagesView/SideBySideView.js.map +1 -1
  29. package/dist/client/shared/components/ImagesView/SlideView.d.ts +1 -1
  30. package/dist/client/shared/components/ImagesView/SlideView.js.map +1 -1
  31. package/dist/client/shared/components/ImagesView/SwapView.d.ts +1 -1
  32. package/dist/client/shared/components/ImagesView/SwapView.js.map +1 -1
  33. package/dist/client/shared/components/PageFooter/PageFooter.d.ts +1 -0
  34. package/dist/client/shared/components/PageFooter/PageFooter.js +1 -1
  35. package/dist/client/shared/components/PageFooter/PageFooter.js.map +1 -1
  36. package/dist/client/shared/components/PageFooter/Paging.d.ts +2 -2
  37. package/dist/client/shared/components/PageFooter/Paging.js +8 -6
  38. package/dist/client/shared/components/PageFooter/Paging.js.map +1 -1
  39. package/dist/client/shared/components/PageHeader/ImagePreview.js.map +1 -1
  40. package/dist/client/shared/components/PageHeader/PageHeader.d.ts +1 -0
  41. package/dist/client/shared/components/PageHeader/PageHeader.js +2 -1
  42. package/dist/client/shared/components/PageHeader/PageHeader.js.map +1 -1
  43. package/dist/client/shared/components/ResultsPage.d.ts +2 -2
  44. package/dist/client/shared/components/ResultsPage.js.map +1 -1
  45. package/dist/client/web/CreeveyApp.d.ts +1 -0
  46. package/dist/client/web/CreeveyApp.js.map +1 -1
  47. package/dist/client/web/CreeveyLoader.d.ts +1 -0
  48. package/dist/client/web/CreeveyLoader.js.map +1 -1
  49. package/dist/client/web/CreeveyView/SideBar/Checkbox.d.ts +1 -1
  50. package/dist/client/web/CreeveyView/SideBar/Checkbox.js +4 -4
  51. package/dist/client/web/CreeveyView/SideBar/Checkbox.js.map +1 -1
  52. package/dist/client/web/CreeveyView/SideBar/Search.d.ts +1 -0
  53. package/dist/client/web/CreeveyView/SideBar/Search.js +4 -4
  54. package/dist/client/web/CreeveyView/SideBar/Search.js.map +1 -1
  55. package/dist/client/web/CreeveyView/SideBar/SideBar.d.ts +1 -1
  56. package/dist/client/web/CreeveyView/SideBar/SideBar.js +1 -7
  57. package/dist/client/web/CreeveyView/SideBar/SideBar.js.map +1 -1
  58. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.d.ts +1 -0
  59. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js +5 -4
  60. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js.map +1 -1
  61. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +1 -0
  62. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js +4 -3
  63. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js.map +1 -1
  64. package/dist/client/web/CreeveyView/SideBar/SuiteLink.d.ts +3 -7
  65. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js +6 -5
  66. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js.map +1 -1
  67. package/dist/client/web/CreeveyView/SideBar/TestLink.d.ts +1 -0
  68. package/dist/client/web/CreeveyView/SideBar/TestLink.js +5 -1
  69. package/dist/client/web/CreeveyView/SideBar/TestLink.js.map +1 -1
  70. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js +15 -8
  71. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js.map +1 -1
  72. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js +5 -4
  73. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js.map +1 -1
  74. package/dist/client/web/CreeveyView/SideBar/Toggle.d.ts +1 -0
  75. package/dist/client/web/CreeveyView/SideBar/Toggle.js.map +1 -1
  76. package/dist/client/web/KeyboardEventsContext.d.ts +3 -4
  77. package/dist/client/web/KeyboardEventsContext.js.map +1 -1
  78. package/dist/client/web/assets/index-DkmZfG9C.js +591 -0
  79. package/dist/client/web/index.html +1 -1
  80. package/dist/client/web/index.js +5 -6
  81. package/dist/client/web/index.js.map +1 -1
  82. package/dist/creevey.js +21 -9
  83. package/dist/creevey.js.map +1 -1
  84. package/dist/index.js +7 -3
  85. package/dist/index.js.map +1 -1
  86. package/dist/server/config.d.ts +1 -1
  87. package/dist/server/config.js +9 -5
  88. package/dist/server/config.js.map +1 -1
  89. package/dist/server/docker.d.ts +2 -2
  90. package/dist/server/docker.js +46 -40
  91. package/dist/server/docker.js.map +1 -1
  92. package/dist/server/index.js +54 -15
  93. package/dist/server/index.js.map +1 -1
  94. package/dist/server/master/master.d.ts +1 -5
  95. package/dist/server/master/master.js +3 -3
  96. package/dist/server/master/master.js.map +1 -1
  97. package/dist/server/master/pool.d.ts +2 -1
  98. package/dist/server/master/pool.js +9 -5
  99. package/dist/server/master/pool.js.map +1 -1
  100. package/dist/server/master/runner.d.ts +1 -1
  101. package/dist/server/master/runner.js +2 -2
  102. package/dist/server/master/runner.js.map +1 -1
  103. package/dist/server/master/server.js +1 -0
  104. package/dist/server/master/server.js.map +1 -1
  105. package/dist/server/master/start.d.ts +3 -0
  106. package/dist/server/master/{index.js → start.js} +6 -9
  107. package/dist/server/master/start.js.map +1 -0
  108. package/dist/server/messages.d.ts +4 -10
  109. package/dist/server/messages.js +4 -58
  110. package/dist/server/messages.js.map +1 -1
  111. package/dist/server/playwright/docker-file.d.ts +1 -0
  112. package/dist/server/playwright/docker-file.js +26 -0
  113. package/dist/server/playwright/docker-file.js.map +1 -0
  114. package/dist/server/playwright/docker.d.ts +1 -0
  115. package/dist/server/playwright/docker.js +31 -0
  116. package/dist/server/playwright/docker.js.map +1 -0
  117. package/dist/server/playwright/internal.d.ts +25 -0
  118. package/dist/server/playwright/internal.js +319 -0
  119. package/dist/server/playwright/internal.js.map +1 -0
  120. package/dist/server/playwright/webdriver.d.ts +16 -0
  121. package/dist/server/playwright/webdriver.js +105 -0
  122. package/dist/server/playwright/webdriver.js.map +1 -0
  123. package/dist/server/providers/browser.d.ts +2 -0
  124. package/dist/server/{storybook/providers → providers}/browser.js +6 -7
  125. package/dist/server/providers/browser.js.map +1 -0
  126. package/dist/server/providers/hybrid.d.ts +2 -0
  127. package/dist/server/{storybook/providers → providers}/hybrid.js +8 -8
  128. package/dist/server/providers/hybrid.js.map +1 -0
  129. package/dist/server/reporter.d.ts +26 -0
  130. package/dist/server/{worker/reporter.js → reporter.js} +34 -56
  131. package/dist/server/reporter.js.map +1 -0
  132. package/dist/server/selenium/internal.d.ts +31 -0
  133. package/dist/server/selenium/internal.js +606 -0
  134. package/dist/server/selenium/internal.js.map +1 -0
  135. package/dist/server/selenium/selenoid.js +6 -13
  136. package/dist/server/selenium/selenoid.js.map +1 -1
  137. package/dist/server/selenium/webdriver.d.ts +24 -0
  138. package/dist/server/selenium/webdriver.js +106 -0
  139. package/dist/server/selenium/webdriver.js.map +1 -0
  140. package/dist/server/stories.js +16 -9
  141. package/dist/server/stories.js.map +1 -1
  142. package/dist/server/telemetry.d.ts +1 -1
  143. package/dist/server/telemetry.js +4 -4
  144. package/dist/server/telemetry.js.map +1 -1
  145. package/dist/server/utils.d.ts +3 -4
  146. package/dist/server/utils.js +10 -9
  147. package/dist/server/utils.js.map +1 -1
  148. package/dist/server/webdriver.d.ts +19 -0
  149. package/dist/server/webdriver.js +79 -0
  150. package/dist/server/webdriver.js.map +1 -0
  151. package/dist/server/worker/chai-image.d.ts +2 -5
  152. package/dist/server/worker/chai-image.js +14 -102
  153. package/dist/server/worker/chai-image.js.map +1 -1
  154. package/dist/server/worker/match-image.d.ts +14 -0
  155. package/dist/server/worker/match-image.js +231 -0
  156. package/dist/server/worker/match-image.js.map +1 -0
  157. package/dist/server/worker/start.d.ts +2 -0
  158. package/dist/server/worker/start.js +258 -0
  159. package/dist/server/worker/start.js.map +1 -0
  160. package/dist/types.d.ts +126 -64
  161. package/dist/types.js +15 -9
  162. package/dist/types.js.map +1 -1
  163. package/package.json +108 -110
  164. package/src/client/addon/components/Addon.tsx +1 -1
  165. package/src/client/addon/components/Icons.tsx +1 -1
  166. package/src/client/addon/components/Panel.tsx +1 -1
  167. package/src/client/addon/components/TestSelect.tsx +5 -5
  168. package/src/client/addon/components/Tools.tsx +9 -9
  169. package/src/client/addon/controller.ts +1 -1
  170. package/src/client/addon/manager.ts +4 -4
  171. package/src/client/addon/withCreevey.ts +26 -28
  172. package/src/client/shared/components/ImagesView/BlendView.tsx +1 -1
  173. package/src/client/shared/components/ImagesView/ImagesView.tsx +2 -2
  174. package/src/client/shared/components/ImagesView/SideBySideView.tsx +1 -1
  175. package/src/client/shared/components/ImagesView/SlideView.tsx +1 -1
  176. package/src/client/shared/components/ImagesView/SwapView.tsx +1 -1
  177. package/src/client/shared/components/PageFooter/PageFooter.tsx +2 -2
  178. package/src/client/shared/components/PageFooter/Paging.tsx +13 -13
  179. package/src/client/shared/components/PageHeader/ImagePreview.tsx +1 -1
  180. package/src/client/shared/components/PageHeader/PageHeader.tsx +4 -3
  181. package/src/client/shared/components/ResultsPage.tsx +1 -1
  182. package/src/client/web/CreeveyApp.tsx +1 -1
  183. package/src/client/web/CreeveyLoader.tsx +1 -1
  184. package/src/client/web/CreeveyView/SideBar/Checkbox.tsx +6 -7
  185. package/src/client/web/CreeveyView/SideBar/Search.tsx +4 -4
  186. package/src/client/web/CreeveyView/SideBar/SideBar.tsx +3 -10
  187. package/src/client/web/CreeveyView/SideBar/SideBarFooter.tsx +7 -6
  188. package/src/client/web/CreeveyView/SideBar/SideBarHeader.tsx +7 -6
  189. package/src/client/web/CreeveyView/SideBar/SuiteLink.tsx +8 -6
  190. package/src/client/web/CreeveyView/SideBar/TestLink.tsx +8 -3
  191. package/src/client/web/CreeveyView/SideBar/TestStatusIcon.tsx +18 -10
  192. package/src/client/web/CreeveyView/SideBar/TestsStatus.tsx +7 -10
  193. package/src/client/web/CreeveyView/SideBar/Toggle.tsx +1 -2
  194. package/src/client/web/KeyboardEventsContext.tsx +3 -4
  195. package/src/client/web/index.html +1 -1
  196. package/src/client/web/index.tsx +4 -3
  197. package/src/creevey.ts +25 -8
  198. package/src/index.ts +4 -2
  199. package/src/server/config.ts +12 -8
  200. package/src/server/docker.ts +58 -44
  201. package/src/server/index.ts +57 -18
  202. package/src/server/master/master.ts +3 -6
  203. package/src/server/master/pool.ts +20 -7
  204. package/src/server/master/runner.ts +2 -2
  205. package/src/server/master/server.ts +1 -0
  206. package/src/server/master/{index.ts → start.ts} +13 -11
  207. package/src/server/messages.ts +11 -75
  208. package/src/server/playwright/docker-file.ts +21 -0
  209. package/src/server/playwright/docker.ts +41 -0
  210. package/src/server/playwright/internal.ts +387 -0
  211. package/src/server/playwright/webdriver.ts +126 -0
  212. package/src/server/{storybook/providers → providers}/browser.ts +7 -8
  213. package/src/server/{storybook/providers → providers}/hybrid.ts +19 -19
  214. package/src/server/{worker/reporter.ts → reporter.ts} +40 -72
  215. package/src/server/selenium/internal.ts +785 -0
  216. package/src/server/selenium/selenoid.ts +12 -17
  217. package/src/server/selenium/webdriver.ts +136 -0
  218. package/src/server/stories.ts +18 -11
  219. package/src/server/telemetry.ts +2 -2
  220. package/src/server/utils.ts +9 -9
  221. package/src/server/webdriver.ts +127 -0
  222. package/src/server/worker/chai-image.ts +21 -133
  223. package/src/server/worker/match-image.ts +303 -0
  224. package/src/server/worker/start.ts +303 -0
  225. package/src/types.ts +161 -60
  226. package/dist/client/web/202.js +0 -1
  227. package/dist/client/web/270.js +0 -43
  228. package/dist/client/web/752.js +0 -1
  229. package/dist/client/web/main.js +0 -79
  230. package/dist/client/web/main.js.LICENSE.txt +0 -34
  231. package/dist/server/master/index.d.ts +0 -3
  232. package/dist/server/master/index.js.map +0 -1
  233. package/dist/server/selenium/browser.d.ts +0 -19
  234. package/dist/server/selenium/browser.js +0 -640
  235. package/dist/server/selenium/browser.js.map +0 -1
  236. package/dist/server/selenium/index.d.ts +0 -2
  237. package/dist/server/selenium/index.js +0 -19
  238. package/dist/server/selenium/index.js.map +0 -1
  239. package/dist/server/storybook/providers/browser.d.ts +0 -2
  240. package/dist/server/storybook/providers/browser.js.map +0 -1
  241. package/dist/server/storybook/providers/hybrid.d.ts +0 -2
  242. package/dist/server/storybook/providers/hybrid.js.map +0 -1
  243. package/dist/server/worker/helpers.d.ts +0 -8
  244. package/dist/server/worker/helpers.js +0 -57
  245. package/dist/server/worker/helpers.js.map +0 -1
  246. package/dist/server/worker/index.d.ts +0 -1
  247. package/dist/server/worker/index.js +0 -6
  248. package/dist/server/worker/index.js.map +0 -1
  249. package/dist/server/worker/reporter.d.ts +0 -8
  250. package/dist/server/worker/reporter.js.map +0 -1
  251. package/dist/server/worker/worker.d.ts +0 -4
  252. package/dist/server/worker/worker.js +0 -217
  253. package/dist/server/worker/worker.js.map +0 -1
  254. package/src/server/selenium/browser.ts +0 -840
  255. package/src/server/selenium/index.ts +0 -2
  256. package/src/server/worker/helpers.ts +0 -61
  257. package/src/server/worker/index.ts +0 -1
  258. package/src/server/worker/worker.ts +0 -245
  259. package/types/mocha.d.ts +0 -20
package/src/types.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  import type { StoryContextForEnhancers, DecoratorFunction } from '@storybook/csf';
2
2
  import type { IKey } from 'selenium-webdriver/lib/input.js';
3
3
  import type { Worker as ClusterWorker } from 'cluster';
4
- import type { until, WebDriver, WebElementPromise } from 'selenium-webdriver';
4
+ import type { /*Builder,*/ until } from 'selenium-webdriver';
5
5
  import type Pixelmatch from 'pixelmatch';
6
- import type { Context } from 'mocha';
6
+ import type { ODiffOptions } from 'odiff-bin';
7
7
  import type { expect } from 'chai';
8
+ import type EventEmitter from 'events';
9
+ import type Logger from 'loglevel';
10
+ // import type { Browser } from 'playwright-core';
8
11
 
9
12
  /* eslint-disable @typescript-eslint/no-explicit-any */
10
13
  export type DiffOptions = typeof Pixelmatch extends (
@@ -80,19 +83,30 @@ export interface CreeveyStory {
80
83
  };
81
84
  }
82
85
 
83
- export interface Capabilities {
86
+ // TODO Rework browser config
87
+ /*
88
+ export class ChromeConfig {
89
+ browserName: 'chrome'
90
+
91
+ constructor({ limit, version, ... })
92
+ }
93
+ */
94
+ export interface BrowserConfigObject {
84
95
  browserName: string;
96
+ /**
97
+ * Browser version. Ignored with Playwright webdriver
98
+ */
85
99
  browserVersion?: string;
86
- platformName?: string;
87
100
  /**
88
- * @deprecated use `browserVersion` instead
101
+ * Operation system name. Ignored with Playwright webdriver
89
102
  */
90
- version?: string;
91
- [prop: string]: unknown;
92
- }
93
-
94
- export type BrowserConfig = Capabilities & {
103
+ platformName?: string;
104
+ // customizeBuilder?: (builder: Builder) => Builder;
95
105
  limit?: number;
106
+ /**
107
+ * Selenium grid url
108
+ * @default config.gridUrl
109
+ */
96
110
  gridUrl?: string;
97
111
  storybookUrl?: string;
98
112
  /**
@@ -102,7 +116,7 @@ export type BrowserConfig = Capabilities & {
102
116
  _storybookGlobals?: StorybookGlobals;
103
117
  /**
104
118
  * Specify custom docker image. Used only with `useDocker == true`
105
- * @default `selenoid/${browserName}:${browserVersion ?? 'latest'}`
119
+ * @default `selenoid/${browserName}:${browserVersion ?? 'latest'}` or `mcr.microsoft.com/playwright:${playwrightVersion}`
106
120
  */
107
121
  dockerImage?: string;
108
122
  /**
@@ -110,12 +124,35 @@ export type BrowserConfig = Capabilities & {
110
124
  * Used only with `useDocker == false`
111
125
  */
112
126
  webdriverCommand?: string[];
127
+ // TODO Check version compatibility
128
+ // playwrightVersion?: string;
129
+ // /**
130
+ // * Use to start standalone playwright browser
131
+ // */
132
+ // playwrightBrowser?: () => Promise<Browser>;
113
133
  viewport?: { width: number; height: number };
114
- };
134
+
135
+ [name: string]: unknown;
136
+ }
115
137
 
116
138
  export type StorybookGlobals = Record<string, unknown>;
117
139
 
118
- export type Browser = boolean | string | BrowserConfig;
140
+ export type BrowserConfig = boolean | string | BrowserConfigObject;
141
+
142
+ export type CreeveyWebdriverConstructor = new (
143
+ browser: string,
144
+ gridUrl: string,
145
+ config: Config,
146
+ options: Options,
147
+ ) => CreeveyWebdriver;
148
+
149
+ export interface CreeveyWebdriver {
150
+ getSessionId(): Promise<string>;
151
+ openBrowser(fresh?: boolean): Promise<CreeveyWebdriver | null>;
152
+ closeBrowser(): Promise<void>;
153
+ loadStoriesFromBrowser(): Promise<StoriesRaw>;
154
+ switchStory(story: StoryInput, context: BaseCreeveyTestContext, logger: Logger.Logger): Promise<CreeveyTestContext>;
155
+ }
119
156
 
120
157
  export interface HookConfig {
121
158
  before?: () => unknown;
@@ -131,6 +168,9 @@ export interface DockerAuth {
131
168
  serveraddress?: string;
132
169
  }
133
170
 
171
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
172
+ export type BaseReporter = new (runner: EventEmitter, options: { reporterOptions: any }) => void;
173
+
134
174
  export interface Config {
135
175
  /**
136
176
  * Url to Selenium grid hub or standalone selenium.
@@ -156,21 +196,40 @@ export interface Config {
156
196
  * @default path.join(process.cwd(), './report')
157
197
  */
158
198
  reportDir: string;
199
+ /**
200
+ * Specify a custom reporter for test results. Creevey accepts only mocha-like reporters
201
+ * @optional
202
+ */
203
+ reporter: BaseReporter;
204
+ /**
205
+ * Options which are used by reporter
206
+ */
207
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
208
+ reporterOptions?: Record<string, any>;
159
209
  /**
160
210
  * How much test would be retried
161
211
  * @default 0
162
212
  */
163
213
  maxRetries: number;
214
+ /**
215
+ * How much time should be spent on each test
216
+ * @default 30000
217
+ */
218
+ testTimeout: number;
164
219
  /**
165
220
  * Define pixelmatch diff options
166
- * @default { threshold: 0, includeAA: true }
221
+ * @default { threshold: 0.05, includeAA: false }
167
222
  */
168
223
  diffOptions: DiffOptions;
224
+ /**
225
+ *
226
+ */
227
+ odiffOptions: ODiffOptions; // TODO Update description
169
228
  /**
170
229
  * Browser capabilities
171
230
  * @default { chrome: true }
172
231
  */
173
- browsers: Record<string, Browser>;
232
+ browsers: Record<string, BrowserConfig>;
174
233
  /**
175
234
  * Hooks that allow run custom script before and after creevey start
176
235
  */
@@ -204,11 +263,11 @@ export interface Config {
204
263
  * }
205
264
  * ```
206
265
  */
207
- storiesProvider: StoriesProvider;
266
+ storiesProvider: StoriesProvider; // TODO Update description
208
267
  /**
209
- * Define custom babel options for load stories transformation
268
+ *
210
269
  */
211
- babelOptions: (options: Record<string, unknown>) => Record<string, unknown>;
270
+ webdriver: CreeveyWebdriverConstructor; // TODO Update description
212
271
  /**
213
272
  * Allows you to start selenoid without docker
214
273
  * and use standalone browsers
@@ -240,7 +299,6 @@ export interface Config {
240
299
  dockerImagePlatform: string;
241
300
  testsRegex?: RegExp;
242
301
  testsDir?: string;
243
- tsConfig?: string;
244
302
  /**
245
303
  * Telemetry contains information about Creevey and Storybook versions, used Creevey config, browsers and tests meta.
246
304
  * It's being sent only for projects from git.skbkontur.ru
@@ -249,9 +307,12 @@ export interface Config {
249
307
  disableTelemetry?: boolean;
250
308
  }
251
309
 
252
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
253
- export interface StoriesProvider<T = any> {
254
- (config: Config, options: T, storiesListener: (stories: Map<string, StoryInput[]>) => void): Promise<StoriesRaw>;
310
+ export interface StoriesProvider {
311
+ (
312
+ config: Config,
313
+ storiesListener: (stories: Map<string, StoryInput[]>) => void,
314
+ webdriver?: CreeveyWebdriver,
315
+ ): Promise<StoriesRaw>;
255
316
  providerName?: string;
256
317
  }
257
318
 
@@ -265,17 +326,25 @@ export interface Options {
265
326
  update: boolean | string;
266
327
  debug: boolean;
267
328
  trace: boolean;
268
- tests: boolean;
269
329
  browser?: string;
330
+ /**
331
+ * @deprecated use {@link Config.reporter} instead
332
+ */
270
333
  reporter?: string;
271
334
  screenDir?: string;
272
335
  reportDir?: string;
336
+ gridUrl?: string;
273
337
  storybookUrl?: string;
274
- saveReport: boolean;
275
338
  failFast?: boolean;
339
+ odiff?: boolean;
276
340
  }
277
341
 
278
- export type WorkerMessage = { type: 'ready'; payload?: never } | { type: 'error'; payload: { error: string } };
342
+ export type WorkerError = 'browser' | 'test' | 'unknown';
343
+
344
+ export type WorkerMessage =
345
+ | { type: 'ready'; payload?: never }
346
+ | { type: 'port'; payload: { port: number } }
347
+ | { type: 'error'; payload: { subtype: WorkerError; error: string } };
279
348
 
280
349
  export type StoriesMessage =
281
350
  | { type: 'get'; payload?: never }
@@ -287,29 +356,17 @@ export type TestMessage =
287
356
  | { type: 'start'; payload: { id: string; path: string[]; retries: number } }
288
357
  | { type: 'end'; payload: TestResult };
289
358
 
290
- export type WebpackMessage =
291
- | { type: 'success'; payload?: never }
292
- | { type: 'fail'; payload?: never }
293
- | { type: 'rebuild succeeded'; payload?: never }
294
- | { type: 'rebuild failed'; payload?: never };
295
-
296
- export type DockerMessage = { type: 'start'; payload?: never } | { type: 'success'; payload: { gridUrl: string } };
297
-
298
359
  export type ShutdownMessage = object;
299
360
 
300
361
  export type ProcessMessage =
301
362
  | (WorkerMessage & { scope: 'worker' })
302
363
  | (StoriesMessage & { scope: 'stories' })
303
364
  | (TestMessage & { scope: 'test' })
304
- | (WebpackMessage & { scope: 'webpack' })
305
- | (DockerMessage & { scope: 'docker' })
306
365
  | (ShutdownMessage & { scope: 'shutdown' });
307
366
 
308
367
  export type WorkerHandler = (message: WorkerMessage) => void;
309
368
  export type StoriesHandler = (message: StoriesMessage) => void;
310
369
  export type TestHandler = (message: TestMessage) => void;
311
- export type WebpackHandler = (message: WebpackMessage) => void;
312
- export type DockerHandler = (message: DockerMessage) => void;
313
370
  export type ShutdownHandler = (message: ShutdownMessage) => void;
314
371
 
315
372
  export interface Worker extends ClusterWorker {
@@ -334,8 +391,8 @@ export interface TestResult {
334
391
  error?: string;
335
392
  }
336
393
 
337
- export interface ImagesError extends Error {
338
- images: string | Partial<Record<string, string>>;
394
+ export class ImagesError extends Error {
395
+ images?: string | Partial<Record<string, string>>;
339
396
  }
340
397
 
341
398
  export interface TestMeta {
@@ -354,9 +411,71 @@ export interface TestData extends TestMeta {
354
411
  approved?: Partial<Record<string, number>> | null;
355
412
  }
356
413
 
414
+ export interface BaseCreeveyTestContext {
415
+ browserName: string;
416
+ /**
417
+ * @deprecated In near future Creevey will additionally support Playwright as a webdriver, so any Selenium specific things might not be available. Please import `until` explicitly
418
+ */
419
+ until: typeof until;
420
+ /**
421
+ * @deprecated In near future Creevey will additionally support Playwright as a webdriver, so any Selenium specific things might not be available. Please import `keys` explicitly
422
+ */
423
+ keys: IKey;
424
+ /**
425
+ * @deprecated Usually for screenshot testing you don't need other type of assertions except matching images, but if you really need it, please use external `expect` libs
426
+ */
427
+ expect: typeof expect;
428
+ /**
429
+ * @internal
430
+ */
431
+ screenshots: { imageName?: string; screenshot: Buffer }[];
432
+ matchImage: (image: Buffer, imageName?: string) => Promise<void>;
433
+ matchImages: (images: Record<string, Buffer>) => Promise<void>;
434
+ }
435
+
436
+ export interface CreeveyTestContext extends BaseCreeveyTestContext {
437
+ takeScreenshot: () => Promise<Buffer>;
438
+ updateStoryArgs: (updatedArgs: Record<string, unknown>) => Promise<void>;
439
+ captureElement: string | null;
440
+ }
441
+
442
+ export enum TEST_EVENTS {
443
+ RUN_BEGIN = 'start',
444
+ RUN_END = 'end',
445
+ TEST_BEGIN = 'test',
446
+ TEST_END = 'test end',
447
+ TEST_FAIL = 'fail',
448
+ TEST_PASS = 'pass',
449
+ }
450
+
357
451
  export interface ServerTest extends TestData {
358
452
  story: StoryInput;
359
- fn: (this: Context) => Promise<void>;
453
+ fn: CreeveyTestFunction;
454
+ }
455
+
456
+ export interface FakeSuite {
457
+ title: string;
458
+ fullTitle: () => string;
459
+ titlePath: () => string[];
460
+ tests: FakeTest[];
461
+ }
462
+
463
+ // NOTE: Mocha-like test interface, used specifically for reporting
464
+ export interface FakeTest {
465
+ parent: FakeSuite;
466
+ title: string;
467
+ fullTitle: () => string;
468
+ titlePath: () => string[];
469
+ currentRetry: () => number;
470
+ retires: () => number;
471
+ slow: () => number;
472
+ duration?: number;
473
+ state?: 'failed' | 'passed';
474
+ // NOTE > duration, > duration / 2, > 0
475
+ speed?: 'slow' | 'medium' | 'fast';
476
+ err?: unknown;
477
+ // NOTE: image files
478
+ attachments?: string[];
360
479
  }
361
480
 
362
481
  export interface CreeveyStatus {
@@ -381,17 +500,7 @@ export interface SkipOption {
381
500
 
382
501
  export type SkipOptions = boolean | string | Record<string, SkipOption | SkipOption[]>;
383
502
 
384
- export interface CreeveyTestController {
385
- browser: WebDriver;
386
- until: typeof until;
387
- keys: IKey;
388
- expect: typeof expect;
389
- takeScreenshot: () => Promise<string>;
390
- updateStoryArgs: (updatedArgs: Record<string, unknown>) => Promise<void>;
391
- readonly captureElement?: WebElementPromise;
392
- }
393
-
394
- export type CreeveyTestFunction = (this: CreeveyTestController) => Promise<void>;
503
+ export type CreeveyTestFunction = (context: CreeveyTestContext) => Promise<void>;
395
504
 
396
505
  export interface CaptureOptions {
397
506
  imageName?: string;
@@ -474,7 +583,7 @@ export function isFunction(x: unknown): x is (...args: any[]) => any {
474
583
  }
475
584
 
476
585
  export function isImageError(error: unknown): error is ImagesError {
477
- return error instanceof Error && 'images' in error;
586
+ return error instanceof ImagesError && 'images' in error;
478
587
  }
479
588
 
480
589
  export function isProcessMessage(message: unknown): message is ProcessMessage {
@@ -492,11 +601,3 @@ export function isStoriesMessage(message: unknown): message is StoriesMessage {
492
601
  export function isTestMessage(message: unknown): message is TestMessage {
493
602
  return isProcessMessage(message) && message.scope == 'test';
494
603
  }
495
-
496
- export function isWebpackMessage(message: unknown): message is WebpackMessage {
497
- return isProcessMessage(message) && message.scope == 'webpack';
498
- }
499
-
500
- export function isDockerMessage(message: unknown): message is DockerMessage {
501
- return isProcessMessage(message) && message.scope == 'docker';
502
- }
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkcreevey=self.webpackChunkcreevey||[]).push([[202],{47202:(e,t,i)=>{i.r(t),i.d(t,{WithToolTipState:()=>o.vb,WithTooltip:()=>o.vb,WithTooltipPure:()=>o.o4});var o=i(31461)}}]);