creevey 0.10.0-beta.4 → 0.10.0-beta.41

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 (227) hide show
  1. package/README.md +19 -41
  2. package/dist/client/addon/components/Addon.js +17 -7
  3. package/dist/client/addon/components/Addon.js.map +1 -1
  4. package/dist/client/addon/components/Panel.js +2 -2
  5. package/dist/client/addon/components/Panel.js.map +1 -1
  6. package/dist/client/addon/components/Tools.js +17 -7
  7. package/dist/client/addon/components/Tools.js.map +1 -1
  8. package/dist/client/addon/withCreevey.d.ts +2 -1
  9. package/dist/client/addon/withCreevey.js +11 -1
  10. package/dist/client/addon/withCreevey.js.map +1 -1
  11. package/dist/client/shared/components/ImagesView/BlendView.d.ts +1 -1
  12. package/dist/client/shared/components/ImagesView/BlendView.js +17 -7
  13. package/dist/client/shared/components/ImagesView/BlendView.js.map +1 -1
  14. package/dist/client/shared/components/ImagesView/SideBySideView.d.ts +1 -1
  15. package/dist/client/shared/components/ImagesView/SideBySideView.js +17 -7
  16. package/dist/client/shared/components/ImagesView/SideBySideView.js.map +1 -1
  17. package/dist/client/shared/components/ImagesView/SlideView.d.ts +1 -1
  18. package/dist/client/shared/components/ImagesView/SlideView.js +17 -7
  19. package/dist/client/shared/components/ImagesView/SlideView.js.map +1 -1
  20. package/dist/client/shared/components/ImagesView/SwapView.d.ts +1 -1
  21. package/dist/client/shared/components/ImagesView/SwapView.js +29 -7
  22. package/dist/client/shared/components/ImagesView/SwapView.js.map +1 -1
  23. package/dist/client/shared/components/PageHeader/ImagePreview.d.ts +1 -1
  24. package/dist/client/shared/components/PageHeader/ImagePreview.js +1 -0
  25. package/dist/client/shared/components/PageHeader/ImagePreview.js.map +1 -1
  26. package/dist/client/shared/components/PageHeader/PageHeader.js +20 -8
  27. package/dist/client/shared/components/PageHeader/PageHeader.js.map +1 -1
  28. package/dist/client/shared/components/ResultsPage.d.ts +1 -1
  29. package/dist/client/shared/components/ResultsPage.js +43 -13
  30. package/dist/client/shared/components/ResultsPage.js.map +1 -1
  31. package/dist/client/shared/creeveyClientApi.js +8 -1
  32. package/dist/client/shared/creeveyClientApi.js.map +1 -1
  33. package/dist/client/shared/helpers.d.ts +1 -3
  34. package/dist/client/shared/helpers.js +4 -19
  35. package/dist/client/shared/helpers.js.map +1 -1
  36. package/dist/client/web/CreeveyApp.js +42 -14
  37. package/dist/client/web/CreeveyApp.js.map +1 -1
  38. package/dist/client/web/CreeveyContext.d.ts +5 -0
  39. package/dist/client/web/CreeveyContext.js +20 -7
  40. package/dist/client/web/CreeveyContext.js.map +1 -1
  41. package/dist/client/web/CreeveyLoader.js +2 -2
  42. package/dist/client/web/CreeveyLoader.js.map +1 -1
  43. package/dist/client/web/CreeveyView/SideBar/Search.js +19 -9
  44. package/dist/client/web/CreeveyView/SideBar/Search.js.map +1 -1
  45. package/dist/client/web/CreeveyView/SideBar/SideBar.js +18 -7
  46. package/dist/client/web/CreeveyView/SideBar/SideBar.js.map +1 -1
  47. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js +60 -7
  48. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js.map +1 -1
  49. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js +17 -7
  50. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js.map +1 -1
  51. package/dist/client/web/CreeveyView/SideBar/SuiteLink.d.ts +2 -2
  52. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js +18 -10
  53. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js.map +1 -1
  54. package/dist/client/web/CreeveyView/SideBar/TestLink.js +18 -10
  55. package/dist/client/web/CreeveyView/SideBar/TestLink.js.map +1 -1
  56. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +1 -1
  57. package/dist/client/web/CreeveyView/SideBar/TestsStatus.d.ts +1 -1
  58. package/dist/client/web/KeyboardEventsContext.d.ts +1 -8
  59. package/dist/client/web/KeyboardEventsContext.js +79 -64
  60. package/dist/client/web/KeyboardEventsContext.js.map +1 -1
  61. package/dist/client/web/assets/index-C47njyZV.js +802 -0
  62. package/dist/client/web/index.html +1 -1
  63. package/dist/client/web/index.js +17 -7
  64. package/dist/client/web/index.js.map +1 -1
  65. package/dist/client/web/themes.d.ts +2 -0
  66. package/dist/client/web/themes.js +22 -0
  67. package/dist/client/web/themes.js.map +1 -0
  68. package/dist/creevey.js +16 -9
  69. package/dist/creevey.js.map +1 -1
  70. package/dist/index.d.ts +1 -0
  71. package/dist/server/config.d.ts +1 -1
  72. package/dist/server/config.js +30 -7
  73. package/dist/server/config.js.map +1 -1
  74. package/dist/server/connection.d.ts +3 -0
  75. package/dist/server/connection.js +28 -0
  76. package/dist/server/connection.js.map +1 -0
  77. package/dist/server/docker.d.ts +1 -1
  78. package/dist/server/docker.js +56 -32
  79. package/dist/server/docker.js.map +1 -1
  80. package/dist/server/index.js +64 -11
  81. package/dist/server/index.js.map +1 -1
  82. package/dist/server/logger.d.ts +2 -1
  83. package/dist/server/logger.js +7 -3
  84. package/dist/server/logger.js.map +1 -1
  85. package/dist/server/master/api.js +1 -1
  86. package/dist/server/master/api.js.map +1 -1
  87. package/dist/server/master/pool.d.ts +4 -3
  88. package/dist/server/master/pool.js +13 -66
  89. package/dist/server/master/pool.js.map +1 -1
  90. package/dist/server/master/queue.d.ts +13 -0
  91. package/dist/server/master/queue.js +71 -0
  92. package/dist/server/master/queue.js.map +1 -0
  93. package/dist/server/master/runner.d.ts +3 -0
  94. package/dist/server/master/runner.js +78 -10
  95. package/dist/server/master/runner.js.map +1 -1
  96. package/dist/server/master/server.js +1 -1
  97. package/dist/server/master/server.js.map +1 -1
  98. package/dist/server/master/start.js +13 -11
  99. package/dist/server/master/start.js.map +1 -1
  100. package/dist/server/playwright/docker-file.d.ts +1 -1
  101. package/dist/server/playwright/docker-file.js +15 -6
  102. package/dist/server/playwright/docker-file.js.map +1 -1
  103. package/dist/server/playwright/docker.d.ts +2 -1
  104. package/dist/server/playwright/docker.js +10 -2
  105. package/dist/server/playwright/docker.js.map +1 -1
  106. package/dist/server/playwright/index-source.mjs +16 -0
  107. package/dist/server/playwright/internal.d.ts +6 -6
  108. package/dist/server/playwright/internal.js +143 -91
  109. package/dist/server/playwright/internal.js.map +1 -1
  110. package/dist/server/playwright/webdriver.d.ts +1 -1
  111. package/dist/server/playwright/webdriver.js +5 -8
  112. package/dist/server/playwright/webdriver.js.map +1 -1
  113. package/dist/server/providers/browser.js +6 -4
  114. package/dist/server/providers/browser.js.map +1 -1
  115. package/dist/server/providers/hybrid.js +1 -1
  116. package/dist/server/providers/hybrid.js.map +1 -1
  117. package/dist/server/reporters/creevey.d.ts +7 -0
  118. package/dist/server/reporters/creevey.js +63 -0
  119. package/dist/server/reporters/creevey.js.map +1 -0
  120. package/dist/server/reporters/index.d.ts +2 -0
  121. package/dist/server/reporters/index.js +16 -0
  122. package/dist/server/reporters/index.js.map +1 -0
  123. package/dist/server/reporters/junit.d.ts +16 -0
  124. package/dist/server/reporters/junit.js +165 -0
  125. package/dist/server/reporters/junit.js.map +1 -0
  126. package/dist/server/reporters/teamcity.d.ts +7 -0
  127. package/dist/server/reporters/teamcity.js +60 -0
  128. package/dist/server/reporters/teamcity.js.map +1 -0
  129. package/dist/server/selenium/internal.d.ts +3 -4
  130. package/dist/server/selenium/internal.js +127 -108
  131. package/dist/server/selenium/internal.js.map +1 -1
  132. package/dist/server/selenium/selenoid.js +8 -6
  133. package/dist/server/selenium/selenoid.js.map +1 -1
  134. package/dist/server/selenium/webdriver.d.ts +1 -1
  135. package/dist/server/selenium/webdriver.js +5 -9
  136. package/dist/server/selenium/webdriver.js.map +1 -1
  137. package/dist/server/telemetry.js +2 -2
  138. package/dist/server/testsFiles/parser.js +45 -5
  139. package/dist/server/testsFiles/parser.js.map +1 -1
  140. package/dist/server/utils.d.ts +19 -1
  141. package/dist/server/utils.js +87 -8
  142. package/dist/server/utils.js.map +1 -1
  143. package/dist/server/webdriver.d.ts +5 -4
  144. package/dist/server/webdriver.js +23 -10
  145. package/dist/server/webdriver.js.map +1 -1
  146. package/dist/server/worker/chai-image.d.ts +1 -2
  147. package/dist/server/worker/chai-image.js +4 -3
  148. package/dist/server/worker/chai-image.js.map +1 -1
  149. package/dist/server/worker/context.d.ts +3 -0
  150. package/dist/server/worker/context.js +15 -0
  151. package/dist/server/worker/context.js.map +1 -0
  152. package/dist/server/worker/match-image.d.ts +4 -4
  153. package/dist/server/worker/match-image.js +7 -4
  154. package/dist/server/worker/match-image.js.map +1 -1
  155. package/dist/server/worker/start.js +47 -73
  156. package/dist/server/worker/start.js.map +1 -1
  157. package/dist/shared/index.d.ts +1 -1
  158. package/dist/types.d.ts +46 -10
  159. package/dist/types.js +2 -0
  160. package/dist/types.js.map +1 -1
  161. package/docs/cli.md +12 -0
  162. package/docs/config.md +179 -165
  163. package/docs/storybook.md +60 -0
  164. package/docs/tests.md +50 -45
  165. package/package.json +64 -63
  166. package/src/client/addon/components/Panel.tsx +2 -2
  167. package/src/client/addon/withCreevey.ts +10 -2
  168. package/src/client/shared/components/ImagesView/SwapView.tsx +18 -0
  169. package/src/client/shared/components/PageHeader/ImagePreview.tsx +1 -0
  170. package/src/client/shared/components/PageHeader/PageHeader.tsx +4 -2
  171. package/src/client/shared/components/ResultsPage.tsx +31 -8
  172. package/src/client/shared/creeveyClientApi.ts +9 -1
  173. package/src/client/shared/helpers.ts +4 -24
  174. package/src/client/web/CreeveyApp.tsx +27 -8
  175. package/src/client/web/CreeveyContext.tsx +9 -0
  176. package/src/client/web/CreeveyLoader.tsx +1 -1
  177. package/src/client/web/CreeveyView/SideBar/Search.tsx +3 -3
  178. package/src/client/web/CreeveyView/SideBar/SideBar.tsx +1 -0
  179. package/src/client/web/CreeveyView/SideBar/SideBarFooter.tsx +37 -6
  180. package/src/client/web/CreeveyView/SideBar/SuiteLink.tsx +3 -5
  181. package/src/client/web/CreeveyView/SideBar/TestLink.tsx +2 -4
  182. package/src/client/web/KeyboardEventsContext.tsx +61 -73
  183. package/src/client/web/themes.ts +24 -0
  184. package/src/creevey.ts +16 -10
  185. package/src/server/config.ts +30 -7
  186. package/src/server/connection.ts +26 -0
  187. package/src/server/docker.ts +63 -34
  188. package/src/server/index.ts +72 -14
  189. package/src/server/logger.ts +6 -2
  190. package/src/server/master/api.ts +1 -1
  191. package/src/server/master/pool.ts +23 -59
  192. package/src/server/master/queue.ts +77 -0
  193. package/src/server/master/runner.ts +96 -10
  194. package/src/server/master/server.ts +1 -1
  195. package/src/server/master/start.ts +16 -11
  196. package/src/server/playwright/docker-file.ts +18 -6
  197. package/src/server/playwright/docker.ts +16 -3
  198. package/src/server/playwright/index-source.mjs +16 -0
  199. package/src/server/playwright/internal.ts +182 -111
  200. package/src/server/playwright/webdriver.ts +6 -9
  201. package/src/server/providers/browser.ts +6 -4
  202. package/src/server/providers/hybrid.ts +1 -1
  203. package/src/server/reporters/creevey.ts +71 -0
  204. package/src/server/reporters/index.ts +11 -0
  205. package/src/server/reporters/junit.ts +205 -0
  206. package/src/server/reporters/teamcity.ts +74 -0
  207. package/src/server/selenium/internal.ts +131 -116
  208. package/src/server/selenium/selenoid.ts +8 -6
  209. package/src/server/selenium/webdriver.ts +6 -10
  210. package/src/server/telemetry.ts +2 -2
  211. package/src/server/testsFiles/parser.ts +52 -4
  212. package/src/server/utils.ts +97 -9
  213. package/src/server/webdriver.ts +24 -16
  214. package/src/server/worker/chai-image.ts +4 -4
  215. package/src/server/worker/context.ts +14 -0
  216. package/src/server/worker/match-image.ts +12 -8
  217. package/src/server/worker/start.ts +51 -86
  218. package/src/shared/index.ts +1 -1
  219. package/src/types.ts +50 -11
  220. package/types/global.d.ts +1 -0
  221. package/.yarnrc.yml +0 -1
  222. package/chromatic.config.json +0 -5
  223. package/dist/client/web/assets/index-DkmZfG9C.js +0 -591
  224. package/dist/server/reporter.d.ts +0 -26
  225. package/dist/server/reporter.js +0 -108
  226. package/dist/server/reporter.js.map +0 -1
  227. package/src/server/reporter.ts +0 -138
package/src/types.ts CHANGED
@@ -1,11 +1,10 @@
1
- import type { StoryContextForEnhancers, DecoratorFunction } from '@storybook/csf';
1
+ import type { StoryContextForEnhancers, DecoratorFunction } from '@storybook/types';
2
2
  import type { Worker as ClusterWorker } from 'cluster';
3
3
  import type Pixelmatch from 'pixelmatch';
4
4
  import type { ODiffOptions } from 'odiff-bin';
5
5
  import type { expect } from 'chai';
6
6
  import type EventEmitter from 'events';
7
- import type Logger from 'loglevel';
8
- import { LaunchOptions } from 'playwright-core';
7
+ import type { LaunchOptions } from 'playwright-core';
9
8
  // import type { Browser } from 'playwright-core';
10
9
 
11
10
  /* eslint-disable @typescript-eslint/no-explicit-any */
@@ -103,6 +102,7 @@ export class ChromeConfig {
103
102
  }
104
103
  */
105
104
  export interface BrowserConfigObject {
105
+ // TODO Restrict browser names for playwright images
106
106
  browserName: string;
107
107
  // customizeBuilder?: (builder: Builder) => Builder;
108
108
  limit?: number;
@@ -145,7 +145,13 @@ export interface BrowserConfigObject {
145
145
  [name: string]: unknown;
146
146
  };
147
147
 
148
- playwrightOptions?: Omit<LaunchOptions, 'logger'>;
148
+ playwrightOptions?: Omit<LaunchOptions, 'logger'> & {
149
+ trace?: {
150
+ screenshots?: boolean;
151
+ snapshots?: boolean;
152
+ sources?: boolean;
153
+ };
154
+ };
149
155
  }
150
156
 
151
157
  export type StorybookGlobals = Record<string, unknown>;
@@ -164,7 +170,7 @@ export interface CreeveyWebdriver {
164
170
  openBrowser(fresh?: boolean): Promise<CreeveyWebdriver | null>;
165
171
  closeBrowser(): Promise<void>;
166
172
  loadStoriesFromBrowser(): Promise<StoriesRaw>;
167
- switchStory(story: StoryInput, context: BaseCreeveyTestContext, logger: Logger.Logger): Promise<CreeveyTestContext>;
173
+ switchStory(story: StoryInput, context: BaseCreeveyTestContext): Promise<CreeveyTestContext>;
168
174
  afterTest(test: ServerTest): Promise<void>;
169
175
  }
170
176
 
@@ -183,7 +189,7 @@ export interface DockerAuth {
183
189
  }
184
190
 
185
191
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
186
- export type BaseReporter = new (runner: EventEmitter, options: { reporterOptions: any }) => void;
192
+ export type BaseReporter = new (runner: EventEmitter, options: { reportDir: string; reporterOptions: any }) => void;
187
193
 
188
194
  export interface Config {
189
195
  /**
@@ -200,6 +206,11 @@ export interface Config {
200
206
  * Url where storybook hosted on
201
207
  */
202
208
  resolveStorybookUrl?: () => Promise<string>;
209
+ /**
210
+ * Command to automatically start Storybook if it is not running.
211
+ * For example, `npm run storybook`, `yarn run storybook` etc.
212
+ */
213
+ storybookAutorunCmd?: string;
203
214
  /**
204
215
  * Absolute path to directory with reference images
205
216
  * @default path.join(process.cwd(), './images')
@@ -213,8 +224,9 @@ export interface Config {
213
224
  /**
214
225
  * Specify a custom reporter for test results. Creevey accepts only mocha-like reporters
215
226
  * @optional
227
+ * @default 'creevey'
216
228
  */
217
- reporter: BaseReporter;
229
+ reporter: BaseReporter | 'creevey' | 'teamcity' | 'junit';
218
230
  /**
219
231
  * Options which are used by reporter
220
232
  */
@@ -307,6 +319,11 @@ export interface Config {
307
319
  * The `--ui` CLI option ignores this option
308
320
  */
309
321
  failFast: boolean;
322
+ /**
323
+ * Start workers in sequential queue
324
+ * @default false
325
+ */
326
+ useWorkerQueue: boolean;
310
327
  /**
311
328
  * Specify platform for docker images
312
329
  */
@@ -348,9 +365,13 @@ export interface Options {
348
365
  screenDir?: string;
349
366
  reportDir?: string;
350
367
  gridUrl?: string;
368
+ storybookStart?: boolean | string;
351
369
  storybookUrl?: string;
370
+ storybookPort?: string;
371
+ storybookAutorunCmd?: string;
352
372
  failFast?: boolean;
353
373
  odiff?: boolean;
374
+ noDocker?: boolean;
354
375
  }
355
376
 
356
377
  export type WorkerError = 'browser' | 'test' | 'unknown';
@@ -399,10 +420,17 @@ export type TestStatus = 'unknown' | 'pending' | 'running' | 'failed' | 'approve
399
420
 
400
421
  export interface TestResult {
401
422
  status: 'failed' | 'success';
423
+ retries: number;
402
424
  // TODO Remove checks `name == browser` in TestResultsView
403
425
  // images?: Partial<{ [name: string]: Images }> | Images;
404
426
  images?: Partial<Record<string, Images>>;
405
427
  error?: string;
428
+ // Test metadata for reporting
429
+ duration?: number;
430
+ attachments?: string[];
431
+ sessionId?: string;
432
+ browserName?: string;
433
+ workerId?: number;
406
434
  }
407
435
 
408
436
  export class ImagesError extends Error {
@@ -437,8 +465,8 @@ export interface BaseCreeveyTestContext {
437
465
  * @internal
438
466
  */
439
467
  screenshots: { imageName?: string; screenshot: Buffer }[];
440
- matchImage: (image: Buffer, imageName?: string) => Promise<void>;
441
- matchImages: (images: Record<string, Buffer>) => Promise<void>;
468
+ matchImage: (image: Buffer | string, imageName?: string) => Promise<void>;
469
+ matchImages: (images: Record<string, Buffer | string>) => Promise<void>;
442
470
  }
443
471
 
444
472
  export interface CreeveyTestContext extends BaseCreeveyTestContext {
@@ -450,6 +478,8 @@ export interface CreeveyTestContext extends BaseCreeveyTestContext {
450
478
  export enum TEST_EVENTS {
451
479
  RUN_BEGIN = 'start',
452
480
  RUN_END = 'end',
481
+ SUITE_BEGIN = 'suite',
482
+ SUITE_END = 'suite end',
453
483
  TEST_BEGIN = 'test',
454
484
  TEST_END = 'test end',
455
485
  TEST_FAIL = 'fail',
@@ -474,16 +504,25 @@ export interface FakeTest {
474
504
  title: string;
475
505
  fullTitle: () => string;
476
506
  titlePath: () => string[];
477
- currentRetry: () => number;
507
+ currentRetry: () => number | undefined;
478
508
  retires: () => number;
479
509
  slow: () => number;
480
510
  duration?: number;
481
511
  state?: 'failed' | 'passed';
482
512
  // NOTE > duration, > duration / 2, > 0
483
513
  speed?: 'slow' | 'medium' | 'fast';
484
- err?: unknown;
514
+ err?: string;
485
515
  // NOTE: image files
486
516
  attachments?: string[];
517
+
518
+ // NOTE: Creevey specific fields
519
+ creevey: {
520
+ sessionId: string;
521
+ browserName: string;
522
+ workerId: number;
523
+ willRetry: boolean;
524
+ images: Partial<Record<string, Partial<Images>>>;
525
+ };
487
526
  }
488
527
 
489
528
  export interface CreeveyStatus {
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;
package/.yarnrc.yml DELETED
@@ -1 +0,0 @@
1
- nodeLinker: node-modules
@@ -1,5 +0,0 @@
1
- {
2
- "onlyChanged": true,
3
- "projectId": "Project:5fd73972015e660021b97564",
4
- "zip": true
5
- }