creevey 0.8.0-beta.0 → 0.8.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 (199) hide show
  1. package/CHANGELOG.md +30 -7
  2. package/README.md +9 -1
  3. package/addon/README.md +3 -0
  4. package/addon/package.json +4 -0
  5. package/docs/config.md +29 -26
  6. package/jest.config.js +6 -0
  7. package/lib/cjs/client/addon/Manager.js +122 -271
  8. package/lib/cjs/client/addon/components/Addon.js +17 -38
  9. package/lib/cjs/client/addon/components/Icons.js +11 -7
  10. package/lib/cjs/client/addon/components/Panel.js +17 -13
  11. package/lib/cjs/client/addon/components/TestSelect.js +11 -9
  12. package/lib/cjs/client/addon/components/Tools.js +21 -40
  13. package/lib/cjs/client/addon/decorator.js +1 -1
  14. package/lib/cjs/client/addon/index.js +31 -0
  15. package/lib/cjs/client/addon/preset.ie11.js +74 -0
  16. package/lib/cjs/client/addon/preset.js +13 -31
  17. package/lib/cjs/client/addon/readyForCapture.js +12 -0
  18. package/lib/cjs/client/addon/register.js +46 -70
  19. package/lib/cjs/client/addon/utils.js +6 -2
  20. package/lib/cjs/client/addon/withCreevey.js +221 -155
  21. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +26 -24
  22. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +22 -18
  23. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +44 -66
  24. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +38 -50
  25. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +26 -45
  26. package/lib/cjs/client/shared/components/ImagesView/index.js +9 -9
  27. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +12 -8
  28. package/lib/cjs/client/shared/components/PageFooter/Paging.js +14 -18
  29. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +22 -18
  30. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +42 -67
  31. package/lib/cjs/client/shared/components/ResultsPage.js +39 -69
  32. package/lib/cjs/client/shared/creeveyClientApi.js +55 -82
  33. package/lib/cjs/client/shared/helpers.js +140 -211
  34. package/lib/cjs/client/shared/viewMode.js +5 -5
  35. package/lib/cjs/client/web/142.js +2 -0
  36. package/lib/cjs/client/web/142.js.LICENSE.txt +12 -0
  37. package/lib/cjs/client/web/32.js +1 -0
  38. package/lib/cjs/client/web/551.js +1 -0
  39. package/lib/cjs/client/web/566.js +2 -0
  40. package/lib/cjs/client/web/566.js.LICENSE.txt +31 -0
  41. package/lib/cjs/client/web/691.js +2 -0
  42. package/lib/cjs/client/web/691.js.LICENSE.txt +8 -0
  43. package/lib/cjs/client/web/725.js +1 -0
  44. package/lib/cjs/client/web/main.js +2 -38
  45. package/lib/cjs/client/web/main.js.LICENSE.txt +49 -0
  46. package/lib/cjs/creevey.js +3 -5
  47. package/lib/cjs/index.js +10 -15
  48. package/lib/cjs/server/config.js +5 -4
  49. package/lib/cjs/server/docker.js +3 -7
  50. package/lib/cjs/server/extract.js +7 -4
  51. package/lib/cjs/server/index.js +3 -5
  52. package/lib/cjs/server/loaders/babel/creevey-plugin.js +1 -3
  53. package/lib/cjs/server/loaders/babel/helpers.js +13 -23
  54. package/lib/cjs/server/loaders/babel/register.js +2 -4
  55. package/lib/cjs/server/loaders/webpack/compile.js +34 -51
  56. package/lib/cjs/server/loaders/webpack/creevey-loader.js +20 -22
  57. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +2 -7
  58. package/lib/cjs/server/loaders/webpack/mdx-loader.js +2 -2
  59. package/lib/cjs/server/loaders/webpack/start.js +1 -1
  60. package/lib/cjs/server/logger.js +2 -1
  61. package/lib/cjs/server/master/index.js +4 -4
  62. package/lib/cjs/server/master/master.js +1 -0
  63. package/lib/cjs/server/master/pool.js +38 -47
  64. package/lib/cjs/server/master/runner.js +53 -66
  65. package/lib/cjs/server/master/server.js +78 -4
  66. package/lib/cjs/server/messages.js +128 -18
  67. package/lib/cjs/server/selenium/browser.js +129 -55
  68. package/lib/cjs/server/selenium/selenoid.js +5 -7
  69. package/lib/cjs/server/stories.js +58 -72
  70. package/lib/cjs/server/storybook/entry.js +7 -22
  71. package/lib/cjs/server/storybook/helpers.js +20 -27
  72. package/lib/cjs/server/storybook/providers/browser.js +74 -0
  73. package/lib/cjs/server/storybook/{nodejs-provider.js → providers/nodejs.js} +37 -20
  74. package/lib/cjs/server/update.js +1 -5
  75. package/lib/cjs/server/utils.js +26 -35
  76. package/lib/cjs/server/worker/helpers.js +2 -6
  77. package/lib/cjs/server/worker/reporter.js +8 -20
  78. package/lib/cjs/server/worker/worker.js +21 -19
  79. package/lib/cjs/shared/index.js +101 -0
  80. package/lib/cjs/shared/serializeRegExp.js +42 -0
  81. package/lib/cjs/types.js +11 -6
  82. package/lib/esm/client/addon/Manager.js +122 -271
  83. package/lib/esm/client/addon/components/Addon.js +15 -34
  84. package/lib/esm/client/addon/components/Icons.js +10 -6
  85. package/lib/esm/client/addon/components/Panel.js +17 -13
  86. package/lib/esm/client/addon/components/TestSelect.js +11 -9
  87. package/lib/esm/client/addon/components/Tools.js +19 -36
  88. package/lib/esm/client/addon/decorator.js +1 -1
  89. package/lib/esm/client/addon/index.js +2 -0
  90. package/lib/esm/client/addon/preset.ie11.js +59 -0
  91. package/lib/esm/client/addon/preset.js +12 -26
  92. package/lib/esm/client/addon/readyForCapture.js +5 -0
  93. package/lib/esm/client/addon/register.js +42 -66
  94. package/lib/esm/client/addon/utils.js +3 -2
  95. package/lib/esm/client/addon/withCreevey.js +209 -156
  96. package/lib/esm/client/shared/components/ImagesView/BlendView.js +23 -20
  97. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +21 -17
  98. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +42 -63
  99. package/lib/esm/client/shared/components/ImagesView/SlideView.js +36 -47
  100. package/lib/esm/client/shared/components/ImagesView/SwapView.js +24 -42
  101. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +12 -8
  102. package/lib/esm/client/shared/components/PageFooter/Paging.js +14 -18
  103. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +22 -18
  104. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +37 -60
  105. package/lib/esm/client/shared/components/ResultsPage.js +36 -64
  106. package/lib/esm/client/shared/creeveyClientApi.js +57 -84
  107. package/lib/esm/client/shared/helpers.js +124 -195
  108. package/lib/esm/client/shared/viewMode.js +4 -4
  109. package/lib/esm/creevey.js +3 -5
  110. package/lib/esm/index.js +2 -3
  111. package/lib/esm/server/config.js +4 -5
  112. package/lib/esm/server/docker.js +2 -2
  113. package/lib/esm/server/extract.js +6 -4
  114. package/lib/esm/server/index.js +3 -4
  115. package/lib/esm/server/loaders/babel/creevey-plugin.js +1 -3
  116. package/lib/esm/server/loaders/babel/helpers.js +12 -22
  117. package/lib/esm/server/loaders/babel/register.js +3 -5
  118. package/lib/esm/server/loaders/webpack/compile.js +35 -52
  119. package/lib/esm/server/loaders/webpack/creevey-loader.js +9 -10
  120. package/lib/esm/server/loaders/webpack/dummy-hmr.js +2 -6
  121. package/lib/esm/server/loaders/webpack/mdx-loader.js +2 -2
  122. package/lib/esm/server/loaders/webpack/start.js +1 -1
  123. package/lib/esm/server/master/index.js +4 -4
  124. package/lib/esm/server/master/master.js +1 -0
  125. package/lib/esm/server/master/pool.js +38 -49
  126. package/lib/esm/server/master/runner.js +53 -66
  127. package/lib/esm/server/master/server.js +76 -6
  128. package/lib/esm/server/messages.js +118 -14
  129. package/lib/esm/server/selenium/browser.js +126 -57
  130. package/lib/esm/server/selenium/selenoid.js +4 -6
  131. package/lib/esm/server/stories.js +58 -70
  132. package/lib/esm/server/storybook/entry.js +5 -22
  133. package/lib/esm/server/storybook/helpers.js +11 -20
  134. package/lib/esm/server/storybook/providers/browser.js +60 -0
  135. package/lib/esm/server/storybook/{nodejs-provider.js → providers/nodejs.js} +35 -19
  136. package/lib/esm/server/update.js +1 -5
  137. package/lib/esm/server/utils.js +18 -31
  138. package/lib/esm/server/worker/helpers.js +2 -6
  139. package/lib/esm/server/worker/reporter.js +8 -20
  140. package/lib/esm/server/worker/worker.js +22 -20
  141. package/lib/esm/shared/index.js +78 -0
  142. package/lib/esm/shared/serializeRegExp.js +24 -0
  143. package/lib/esm/types.js +3 -0
  144. package/lib/types/client/addon/Manager.d.ts +2 -2
  145. package/lib/types/client/addon/components/TestSelect.d.ts +0 -1
  146. package/lib/types/client/addon/index.d.ts +2 -0
  147. package/lib/types/client/addon/preset.d.ts +2 -1
  148. package/lib/types/client/addon/preset.ie11.d.ts +10 -0
  149. package/lib/types/client/addon/readyForCapture.d.ts +6 -0
  150. package/lib/types/client/addon/utils.d.ts +1 -0
  151. package/lib/types/client/addon/withCreevey.d.ts +13 -2
  152. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +1 -1
  153. package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +0 -1
  154. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +1 -1
  155. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +1 -1
  156. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +1 -1
  157. package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +0 -1
  158. package/lib/types/client/shared/components/PageFooter/Paging.d.ts +0 -1
  159. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +1 -1
  160. package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +0 -1
  161. package/lib/types/client/shared/components/ResultsPage.d.ts +1 -1
  162. package/lib/types/client/web/CreeveyApp.d.ts +0 -1
  163. package/lib/types/client/web/CreeveyLoader.d.ts +1 -2
  164. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +1 -1
  165. package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +0 -1
  166. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +6 -6
  167. package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +0 -1
  168. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +1 -1
  169. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +1 -1
  170. package/lib/types/index.d.ts +0 -1
  171. package/lib/types/server/loaders/babel/register.d.ts +1 -1
  172. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +4 -2
  173. package/lib/types/server/logger.d.ts +6 -2
  174. package/lib/types/server/master/master.d.ts +1 -0
  175. package/lib/types/server/master/pool.d.ts +1 -0
  176. package/lib/types/server/master/server.d.ts +1 -1
  177. package/lib/types/server/messages.d.ts +17 -6
  178. package/lib/types/server/selenium/browser.d.ts +5 -2
  179. package/lib/types/server/stories.d.ts +2 -2
  180. package/lib/types/server/storybook/entry.d.ts +2 -3
  181. package/lib/types/server/storybook/helpers.d.ts +1 -1
  182. package/lib/types/server/storybook/providers/browser.d.ts +4 -0
  183. package/lib/types/server/storybook/providers/nodejs.d.ts +9 -0
  184. package/lib/types/server/utils.d.ts +5 -1
  185. package/lib/types/server/worker/helpers.d.ts +2 -1
  186. package/lib/types/shared/index.d.ts +7 -0
  187. package/lib/types/shared/serializeRegExp.d.ts +9 -0
  188. package/lib/types/types.d.ts +32 -5
  189. package/package.json +120 -103
  190. package/preset/ie11.js +5 -0
  191. package/{preset.js → preset/index.js} +2 -2
  192. package/types/mdx.d.ts +3 -2
  193. package/types/mocha.d.ts +1 -0
  194. package/lib/cjs/client/web/1.js +0 -13
  195. package/lib/cjs/client/web/2.js +0 -1
  196. package/lib/cjs/shared.js +0 -35
  197. package/lib/esm/shared.js +0 -22
  198. package/lib/types/server/storybook/nodejs-provider.d.ts +0 -5
  199. package/lib/types/shared.d.ts +0 -4
@@ -0,0 +1,24 @@
1
+ export const isRegExp = exp => {
2
+ return exp instanceof RegExp;
3
+ };
4
+ export const isSerializedRegExp = exp => {
5
+ return typeof exp === 'object' && exp !== null && Reflect.get(exp, '__regexp') === true;
6
+ };
7
+ export const serializeRegExp = exp => {
8
+ const {
9
+ source,
10
+ flags
11
+ } = exp;
12
+ return {
13
+ __regexp: true,
14
+ source,
15
+ flags
16
+ };
17
+ };
18
+ export const deserializeRegExp = _ref => {
19
+ let {
20
+ source,
21
+ flags
22
+ } = _ref;
23
+ return new RegExp(source, flags);
24
+ };
package/lib/esm/types.js CHANGED
@@ -29,6 +29,9 @@ export function isProcessMessage(message) {
29
29
  export function isWorkerMessage(message) {
30
30
  return isProcessMessage(message) && message.scope == 'worker';
31
31
  }
32
+ export function isStoriesMessage(message) {
33
+ return isProcessMessage(message) && message.scope == 'stories';
34
+ }
32
35
  export function isTestMessage(message) {
33
36
  return isProcessMessage(message) && message.scope == 'test';
34
37
  }
@@ -1,5 +1,5 @@
1
1
  import { API } from '@storybook/api';
2
- import { SetStoriesPayload } from '@storybook/api/dist/ts3.9/lib/stories';
2
+ import { denormalizeStoryParameters } from '../../shared';
3
3
  import { CreeveyStatus, CreeveyUpdate, TestData, TestStatus, StoriesRaw } from '../../types';
4
4
  import { CreeveyClientApi } from '../shared/creeveyClientApi';
5
5
  export declare class CreeveyManager {
@@ -24,7 +24,7 @@ export declare class CreeveyManager {
24
24
  onImageApprove: (id: string, retry: number, image: string) => void;
25
25
  onStartAllStoryTests: () => void;
26
26
  onStartAllTests: () => void;
27
- onSetStories: (data: SetStoriesPayload) => void;
27
+ onSetStories: (data: Parameters<typeof denormalizeStoryParameters>['0']) => void;
28
28
  setActiveBrowser: (browser: string) => void;
29
29
  setSelectedTestId: (testId: string) => void;
30
30
  getStoryTests: (storyId: string) => TestData[];
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { TestData } from '../../../types';
3
2
  interface TestSelectProps {
4
3
  tests: TestData[];
@@ -0,0 +1,2 @@
1
+ export * from './withCreevey';
2
+ export * from './readyForCapture';
@@ -1,14 +1,15 @@
1
- /// <reference types="webpack-dev-server" />
2
1
  import { Configuration } from 'webpack';
3
2
  export declare function config(entry?: string[]): string[];
4
3
  export declare function managerEntries(entry?: string[]): string[];
5
4
  declare global {
5
+ const __CREEVEY_SERVER_HOST__: string;
6
6
  const __CREEVEY_SERVER_PORT__: number;
7
7
  const __CREEVEY_CLIENT_PORT__: number | null;
8
8
  }
9
9
  export interface CreeveyAddonOptions {
10
10
  creeveyConfigPath?: string;
11
11
  creeveyPreExtract?: string;
12
+ creeveyHost?: string;
12
13
  creeveyPort?: number;
13
14
  clientPort?: number;
14
15
  configType: string;
@@ -0,0 +1,10 @@
1
+ import type { Configuration } from 'webpack';
2
+ import { PluginItem } from '@babel/core';
3
+ interface BabelOptions {
4
+ extends: string | null;
5
+ presets: PluginItem[] | null;
6
+ }
7
+ export declare const babel: (config: BabelOptions) => BabelOptions;
8
+ export declare const managerWebpack: (webpackConfig?: Configuration) => Configuration;
9
+ export declare const webpack: (webpackConfig?: Configuration) => Configuration;
10
+ export {};
@@ -0,0 +1,6 @@
1
+ declare global {
2
+ interface Window {
3
+ __CREEVEY_SET_READY_FOR_CAPTURE__?: () => void;
4
+ }
5
+ }
6
+ export declare function readyForCapture(): void;
@@ -1,2 +1,3 @@
1
1
  import { TestStatus } from '../../types';
2
2
  export declare function getEmojiByTestStatus(status: TestStatus | undefined, skip?: string | boolean): string;
3
+ export declare const isInternetExplorer: boolean;
@@ -1,13 +1,24 @@
1
+ import type { PreviewWeb } from '@storybook/preview-web';
2
+ import type { AnyFramework } from '@storybook/csf';
3
+ import type { StoryStore } from '@storybook/client-api';
1
4
  import { MakeDecoratorResult, Channel } from '@storybook/addons';
2
- import { StorybookGlobals } from '../../types';
5
+ import { CaptureOptions, StoriesRaw, StorybookGlobals } from '../../types';
3
6
  declare global {
4
7
  interface Window {
5
- __CREEVEY_SELECT_STORY__: (storyId: string, kind: string, name: string, shouldWaitForReady: boolean, callback: (error?: string) => void) => void;
8
+ __CREEVEY_SERVER_HOST__: string;
9
+ __CREEVEY_SERVER_PORT__: number;
10
+ __CREEVEY_WORKER_ID__: number;
11
+ __CREEVEY_GET_STORIES__: () => Promise<StoriesRaw | void>;
12
+ __CREEVEY_SELECT_STORY__: (storyId: string, kind: string, name: string, shouldWaitForReady: boolean, callback: (response: [error?: string | null, isCaptureCalled?: boolean]) => void) => Promise<void>;
6
13
  __CREEVEY_UPDATE_GLOBALS__: (globals: StorybookGlobals) => void;
7
14
  __CREEVEY_INSERT_IGNORE_STYLES__: (ignoreElements: string[]) => HTMLStyleElement;
8
15
  __CREEVEY_REMOVE_IGNORE_STYLES__: (ignoreStyles: HTMLStyleElement) => void;
16
+ __CREEVEY_HAS_PLAY_COMPLETED_YET__: (callback: (isPlayCompleted: boolean) => void) => void;
9
17
  __CREEVEY_SET_READY_FOR_CAPTURE__?: () => void;
10
18
  __STORYBOOK_ADDONS_CHANNEL__: Channel;
19
+ __STORYBOOK_STORY_STORE__: StoryStore<AnyFramework>;
20
+ __STORYBOOK_PREVIEW__: PreviewWeb<AnyFramework>;
11
21
  }
12
22
  }
13
23
  export declare function withCreevey(): MakeDecoratorResult;
24
+ export declare function capture(options?: CaptureOptions): Promise<void>;
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import { ViewPropsWithTheme } from './ImagesView';
3
- export declare const BlendView: React.SFC<import("emotion-theming/types/helper").AddOptionalTo<ViewPropsWithTheme, "theme">>;
3
+ export declare const BlendView: React.FC<import("@storybook/theming").AddOptionalTo<ViewPropsWithTheme, "theme">>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { Images, ImagesViewMode } from '../../../../types';
3
2
  import { Theme } from '@storybook/theming';
4
3
  export declare const themeBorderColors: {
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import { ViewPropsWithTheme } from './ImagesView';
3
- export declare const SideBySideView: React.SFC<import("emotion-theming/types/helper").AddOptionalTo<ViewPropsWithTheme, "theme">>;
3
+ export declare const SideBySideView: React.FC<import("@storybook/theming").AddOptionalTo<ViewPropsWithTheme, "theme">>;
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import { ViewPropsWithTheme } from './ImagesView';
3
- export declare const SlideView: React.SFC<import("emotion-theming/types/helper").AddOptionalTo<ViewPropsWithTheme, "theme">>;
3
+ export declare const SlideView: React.FC<import("@storybook/theming").AddOptionalTo<ViewPropsWithTheme, "theme">>;
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import { ViewPropsWithTheme } from './ImagesView';
3
- export declare const SwapView: React.SFC<import("emotion-theming/types/helper").AddOptionalTo<ViewPropsWithTheme, "theme">>;
3
+ export declare const SwapView: React.FC<import("@storybook/theming").AddOptionalTo<ViewPropsWithTheme, "theme">>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export interface PageFooterProps {
3
2
  canApprove: boolean;
4
3
  retriesCount: number;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export interface PagingProps {
3
2
  activePage: number;
4
3
  onPageChange: (pageNumber: number) => void;
@@ -8,5 +8,5 @@ interface ImageSwapProps {
8
8
  theme: Theme;
9
9
  error?: boolean;
10
10
  }
11
- export declare const ImagePreview: React.SFC<import("emotion-theming/types/helper").AddOptionalTo<ImageSwapProps, "theme">>;
11
+ export declare const ImagePreview: React.FC<import("@storybook/theming").AddOptionalTo<ImageSwapProps, "theme">>;
12
12
  export {};
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { ImagesViewMode, Images } from '../../../../types';
3
2
  interface PageHeaderProps {
4
3
  title: string[];
@@ -14,5 +14,5 @@ interface TestResultsProps {
14
14
  height?: string;
15
15
  }
16
16
  export declare function ResultsPageInternal({ id, path, results, approved, theme, onImageApprove, showTitle, height, }: TestResultsProps): JSX.Element;
17
- export declare const ResultsPage: React.SFC<import("emotion-theming/types/helper").AddOptionalTo<TestResultsProps, "theme">>;
17
+ export declare const ResultsPage: React.FC<import("@storybook/theming").AddOptionalTo<TestResultsProps, "theme">>;
18
18
  export {};
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { CreeveySuite } from '../../types';
3
2
  import { CreeveyClientApi } from '../shared/creeveyClientApi';
4
3
  export interface CreeveyAppProps {
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
- export declare const rotate360: import("@emotion/serialize").Keyframes;
1
+ export declare const rotate360: import("@storybook/theming").Keyframes;
3
2
  export declare function CreeveyLoader(): JSX.Element;
@@ -8,7 +8,7 @@ interface BooleanProps {
8
8
  interface CheckboxState {
9
9
  indeterminate: boolean;
10
10
  }
11
- export declare const CheckboxContainer: import("@emotion/styled-base").StyledComponent<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement>>, Theme>;
11
+ export declare const CheckboxContainer: import("@storybook/theming").StyledComponent<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement>>, Theme>;
12
12
  export declare class Checkbox extends React.Component<BooleanProps, CheckboxState> {
13
13
  state: CheckboxState;
14
14
  handleIndeterminateChange: (value: boolean) => void;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { TestsStatusProps } from './TestsStatus';
3
2
  import { CreeveyViewFilter } from '../../../shared/helpers';
4
3
  interface SideBarHeaderProps {
@@ -4,9 +4,9 @@ import { Theme } from '@storybook/theming';
4
4
  export interface SuiteLinkProps {
5
5
  title: string;
6
6
  suite: CreeveySuite;
7
- 'data-tid'?: string;
7
+ 'data-testid'?: string;
8
8
  }
9
- export declare const Container: React.SFC<import("emotion-theming/types/helper").AddOptionalTo<Pick<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & Pick<{
9
+ export declare const Container: React.FC<import("@storybook/theming").AddOptionalTo<Pick<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & Pick<{
10
10
  theme: Theme;
11
11
  disabled?: boolean | undefined;
12
12
  }, "disabled"> & {
@@ -16,7 +16,7 @@ export declare const Container: React.SFC<import("emotion-theming/types/helper")
16
16
  }, "key" | "theme" | keyof React.HTMLAttributes<HTMLDivElement> | "disabled"> & {
17
17
  ref?: React.RefObject<HTMLDivElement> | ((instance: HTMLDivElement | null) => void) | null | undefined;
18
18
  }, "theme">>;
19
- export declare const Button: React.SFC<import("emotion-theming/types/helper").AddOptionalTo<Pick<React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement> & Pick<{
19
+ export declare const Button: React.FC<import("@storybook/theming").AddOptionalTo<Pick<React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement> & Pick<{
20
20
  theme: Theme;
21
21
  active?: boolean | undefined;
22
22
  focused?: boolean | undefined;
@@ -24,10 +24,10 @@ export declare const Button: React.SFC<import("emotion-theming/types/helper").Ad
24
24
  theme?: Theme | undefined;
25
25
  } & {
26
26
  children?: React.ReactNode;
27
- }, "key" | "theme" | "active" | keyof React.ButtonHTMLAttributes<HTMLButtonElement> | "focused"> & {
27
+ }, "key" | "theme" | keyof React.ButtonHTMLAttributes<HTMLButtonElement> | "active" | "focused"> & {
28
28
  ref?: ((instance: HTMLButtonElement | null) => void) | React.RefObject<HTMLButtonElement> | null | undefined;
29
29
  }, "theme">>;
30
- export declare const SuiteContainer: import("@emotion/styled-base").StyledComponent<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {
30
+ export declare const SuiteContainer: import("@storybook/theming").StyledComponent<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {
31
31
  padding: number;
32
32
  }, Theme>;
33
- export declare function SuiteLink({ title, suite, 'data-tid': dataTid }: SuiteLinkProps): JSX.Element;
33
+ export declare function SuiteLink({ title, suite, 'data-testid': dataTid }: SuiteLinkProps): JSX.Element;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { CreeveyTest } from '../../../../types';
3
2
  export interface TestLinkProps {
4
3
  title: string;
@@ -7,4 +7,4 @@ export interface TestStatusIconProps {
7
7
  skip?: string | boolean;
8
8
  theme: Theme;
9
9
  }
10
- export declare const TestStatusIcon: React.SFC<import("emotion-theming/types/helper").AddOptionalTo<TestStatusIconProps, "theme">>;
10
+ export declare const TestStatusIcon: React.FC<import("@storybook/theming").AddOptionalTo<TestStatusIconProps, "theme">>;
@@ -6,4 +6,4 @@ export interface TestsStatusProps extends CreeveyTestsStatus {
6
6
  onClickByStatus: (value: TestStatus) => void;
7
7
  theme?: Theme;
8
8
  }
9
- export declare const TestsStatus: React.SFC<import("emotion-theming/types/helper").AddOptionalTo<TestsStatusProps, "theme">>;
9
+ export declare const TestsStatus: React.FC<import("@storybook/theming").AddOptionalTo<TestsStatusProps, "theme">>;
@@ -1,3 +1,2 @@
1
1
  /// <reference types="../../types/chai" />
2
2
  export * from './types';
3
- export * from './client/addon/withCreevey';
@@ -1,5 +1,5 @@
1
1
  /// <reference types="webpack-env" />
2
2
  import { Config } from '../../../types';
3
- declare function getRequireContext(rootDir: string): (rootPath: string, deep?: boolean | undefined, filter?: RegExp | undefined) => __WebpackModuleApi.RequireContext;
3
+ declare function getRequireContext(rootDir: string): (rootPath: string, deep?: boolean, filter?: RegExp) => __WebpackModuleApi.RequireContext;
4
4
  export default function register(config: Config, debug?: boolean): Promise<ReturnType<typeof getRequireContext>>;
5
5
  export {};
@@ -1,2 +1,4 @@
1
- import { loader } from 'webpack';
2
- export default function (this: loader.LoaderContext | void, source: string): string;
1
+ import { getOptions } from 'loader-utils';
2
+ declare type LoaderContext = Parameters<typeof getOptions>[0];
3
+ export default function loader(this: LoaderContext | void, source: string): string;
4
+ export {};
@@ -1,6 +1,10 @@
1
- import { Chalk } from 'chalk';
1
+ import chalk from 'chalk';
2
2
  export { getLogger } from 'loglevel';
3
3
  export declare const colors: {
4
- [level: string]: Chalk;
4
+ TRACE: chalk.Chalk;
5
+ DEBUG: chalk.Chalk;
6
+ INFO: chalk.Chalk;
7
+ WARN: chalk.Chalk;
8
+ ERROR: chalk.Chalk;
5
9
  };
6
10
  export declare const logger: import("loglevel").Logger;
@@ -3,4 +3,5 @@ import Runner from './runner';
3
3
  export default function master(config: Config, options: {
4
4
  watch: boolean;
5
5
  debug: boolean;
6
+ port: number;
6
7
  }): Promise<Runner>;
@@ -26,5 +26,6 @@ export default class Pool extends EventEmitter {
26
26
  private exitHandler;
27
27
  private gracefullyKill;
28
28
  private shouldRetry;
29
+ private handleTestResult;
29
30
  private subscribe;
30
31
  }
@@ -1,2 +1,2 @@
1
1
  import { CreeveyApi } from './api';
2
- export default function server(reportDir: string, port: number): (api: CreeveyApi) => void;
2
+ export default function server(reportDir: string, port: number, ui: boolean): (api: CreeveyApi) => void;
@@ -1,18 +1,29 @@
1
1
  /// <reference types="webpack-env" />
2
2
  /// <reference types="node" />
3
- import cluster from 'cluster';
4
- import { WorkerMessage, TestMessage, WebpackMessage, DockerMessage, WorkerHandler, TestHandler, WebpackHandler, DockerHandler, ShutdownHandler } from '../types';
3
+ /// <reference types="node" />
4
+ import { Worker } from 'cluster';
5
+ import { WorkerMessage, StoriesMessage, TestMessage, WebpackMessage, DockerMessage, WorkerHandler, StoriesHandler, TestHandler, WebpackHandler, DockerHandler, ShutdownHandler } from '../types';
5
6
  export declare function emitWorkerMessage(message: WorkerMessage): boolean;
7
+ export declare function emitStoriesMessage(message: StoriesMessage): boolean;
6
8
  export declare function emitTestMessage(message: TestMessage): boolean;
7
9
  export declare function emitWebpackMessage(message: WebpackMessage): boolean;
8
10
  export declare function emitDockerMessage(message: DockerMessage): boolean;
9
11
  export declare function emitShutdownMessage(): boolean;
10
- export declare function sendTestMessage(target: NodeJS.Process | cluster.Worker, message: TestMessage): void;
11
- export declare function sendDockerMessage(target: NodeJS.Process | cluster.Worker, message: DockerMessage): void;
12
- export declare function sendShutdownMessage(target: NodeJS.Process | cluster.Worker): void;
12
+ export declare function sendStoriesMessage(target: NodeJS.Process | Worker, message: StoriesMessage): void;
13
+ export declare function sendTestMessage(target: NodeJS.Process | Worker, message: TestMessage): void;
14
+ export declare function sendDockerMessage(target: NodeJS.Process | Worker, message: DockerMessage): void;
15
+ export declare function sendShutdownMessage(target: NodeJS.Process | Worker): void;
13
16
  export declare function subscribeOn(scope: 'worker', handler: WorkerHandler): () => void;
17
+ export declare function subscribeOn(scope: 'stories', handler: StoriesHandler): () => void;
14
18
  export declare function subscribeOn(scope: 'test', handler: TestHandler): () => void;
15
19
  export declare function subscribeOn(scope: 'webpack', handler: WebpackHandler): () => void;
16
20
  export declare function subscribeOn(scope: 'docker', handler: DockerHandler): () => void;
17
21
  export declare function subscribeOn(scope: 'shutdown', handler: ShutdownHandler): () => void;
18
- export declare function subscribeOn(scope: 'worker' | 'test' | 'webpack' | 'docker' | 'shutdown', handler: WorkerHandler | TestHandler | WebpackHandler | DockerHandler | ShutdownHandler): () => void;
22
+ export declare function subscribeOn(scope: 'worker' | 'stories' | 'test' | 'webpack' | 'docker' | 'shutdown', handler: WorkerHandler | StoriesHandler | TestHandler | WebpackHandler | DockerHandler | ShutdownHandler): () => void;
23
+ export declare function subscribeOnWorker(worker: Worker, scope: 'worker', handler: WorkerHandler): () => void;
24
+ export declare function subscribeOnWorker(worker: Worker, scope: 'stories', handler: StoriesHandler): () => void;
25
+ export declare function subscribeOnWorker(worker: Worker, scope: 'test', handler: TestHandler): () => void;
26
+ export declare function subscribeOnWorker(worker: Worker, scope: 'webpack', handler: WebpackHandler): () => void;
27
+ export declare function subscribeOnWorker(worker: Worker, scope: 'docker', handler: DockerHandler): () => void;
28
+ export declare function subscribeOnWorker(worker: Worker, scope: 'shutdown', handler: ShutdownHandler): () => void;
29
+ export declare function subscribeOnWorker(worker: Worker, scope: 'worker' | 'stories' | 'test' | 'webpack' | 'docker' | 'shutdown', handler: WorkerHandler | StoriesHandler | TestHandler | WebpackHandler | DockerHandler | ShutdownHandler): () => void;
@@ -1,6 +1,6 @@
1
1
  import { Context } from 'mocha';
2
2
  import { WebDriver } from 'selenium-webdriver';
3
- import { BrowserConfig, Config, StorybookGlobals } from '../../types';
3
+ import { Config, StorybookGlobals, StoriesRaw } from '../../types';
4
4
  declare global {
5
5
  interface Window {
6
6
  __CREEVEY_RESTORE_SCROLL__?: () => void;
@@ -9,6 +9,9 @@ declare global {
9
9
  __CREEVEY_REMOVE_IGNORE_STYLES__: (ignoreStyles: HTMLStyleElement) => void;
10
10
  }
11
11
  }
12
+ export declare function takeScreenshot(browser: WebDriver, captureElement?: string | null, ignoreElements?: string | string[] | null): Promise<string>;
12
13
  export declare function updateStorybookGlobals(browser: WebDriver, globals: StorybookGlobals): Promise<void>;
13
- export declare function getBrowser(config: Config, browserConfig: BrowserConfig): Promise<WebDriver | null>;
14
+ export declare function loadStoriesFromBrowser(port: number): Promise<StoriesRaw>;
15
+ export declare function getBrowser(config: Config, name: string): Promise<WebDriver | null>;
16
+ export declare function closeBrowser(): Promise<void>;
14
17
  export declare function switchStory(this: Context): Promise<void>;
@@ -1,5 +1,5 @@
1
- import type { ServerTest, StoryInput, SetStoriesData } from '../types';
2
- export declare function loadTestsFromStories(browsers: string[], provider: (storiesListener: (stories: Map<string, StoryInput[]>) => void) => Promise<SetStoriesData>, update?: (testsDiff: Partial<{
1
+ import type { StoriesRaw, ServerTest, StoryInput, SetStoriesData } from '../types';
2
+ export declare function loadTestsFromStories(browsers: string[], provider: (storiesListener: (stories: Map<string, StoryInput[]>) => void) => Promise<StoriesRaw>, update?: (testsDiff: Partial<{
3
3
  [id: string]: ServerTest;
4
4
  }>) => void): Promise<Partial<{
5
5
  [id: string]: ServerTest;
@@ -1,9 +1,8 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="webpack-env" />
3
3
  import type { StoryApi } from '@storybook/addons';
4
- import type { Channel } from '@storybook/channels';
5
- declare const start: typeof import("@storybook/core").start;
6
- export declare const channel: Channel;
4
+ declare const start: typeof import("@storybook/core-client").start;
5
+ export declare const channel: import("@storybook/channels").Channel;
7
6
  declare type ClientApi = ReturnType<typeof start>['clientApi'];
8
7
  export declare const clientApi: ClientApi;
9
8
  export declare const forceReRender: (() => never) | (() => void);
@@ -5,7 +5,7 @@ export declare const storybookDirRef: {
5
5
  export declare const resolveFromStorybook: (modulePath: string) => string;
6
6
  export declare const resolveFromStorybookAddonDocs: (modulePath: string) => string;
7
7
  export declare const resolveFromStorybookBuilderWebpack4: (modulePath: string) => string;
8
- export declare const resolveFromStorybookCore: (modulePath: string) => string;
8
+ export declare const resolveFromStorybookCoreClient: (modulePath: string) => string;
9
9
  export declare const resolveFromStorybookCoreServer: (modulePath: string) => string;
10
10
  export declare const importStorybookClientLogger: <T = typeof import("@storybook/client-logger")>() => Promise<T>;
11
11
  export declare const importStorybookCoreCommon: <T = typeof import("@storybook/core-common")>() => Promise<T>;
@@ -0,0 +1,4 @@
1
+ import type { Config, StoriesRaw, StoryInput } from '../../../types';
2
+ export declare function loadStories(_config: Config, { port }: {
3
+ port: number;
4
+ }, storiesListener: (stories: Map<string, StoryInput[]>) => void): Promise<StoriesRaw>;
@@ -0,0 +1,9 @@
1
+ import type { StoryInput, SetStoriesData, Config, StoriesRaw } from '../../../types';
2
+ export declare function loadStories(config: Config, { watch, debug }: {
3
+ watch: boolean;
4
+ debug: boolean;
5
+ }, storiesListener: (stories: Map<string, StoryInput[]>) => void): Promise<StoriesRaw>;
6
+ export declare function extractStoriesData(config: Config, { watch, debug }: {
7
+ watch: boolean;
8
+ debug: boolean;
9
+ }): Promise<SetStoriesData>;
@@ -1,4 +1,4 @@
1
- import { SkipOptions, TestData } from '../types';
1
+ import { SkipOptions, SkipOption, TestData } from '../types';
2
2
  export declare const isShuttingDown: {
3
3
  current: boolean;
4
4
  };
@@ -9,6 +9,10 @@ export declare function shouldSkip(browser: string, meta: {
9
9
  kind: string;
10
10
  story: string;
11
11
  }, skipOptions: SkipOptions, test?: string): string | boolean;
12
+ export declare function shouldSkipByOption(browser: string, meta: {
13
+ kind: string;
14
+ story: string;
15
+ }, skipOption: SkipOption | SkipOption[], reason: string, test?: string): string | boolean;
12
16
  export declare function shutdownWorkers(): Promise<void>;
13
17
  export declare function shutdown(): void;
14
18
  export declare function getCreeveyCache(): string;
@@ -1,7 +1,8 @@
1
1
  import { Suite } from 'mocha';
2
2
  import { Config } from '../../types';
3
- export declare function addTestsFromStories(rootSuite: Suite, config: Config, { browser, watch, debug }: {
3
+ export declare function addTestsFromStories(rootSuite: Suite, config: Config, { browser, ...options }: {
4
4
  browser: string;
5
5
  watch: boolean;
6
6
  debug: boolean;
7
+ port: number;
7
8
  }): Promise<void>;
@@ -0,0 +1,7 @@
1
+ import { Parameters } from '@storybook/api';
2
+ import { SetStoriesData, StoriesRaw, StoryInput } from '../types';
3
+ export declare const combineParameters: (...parameterSets: Parameters[]) => Parameters;
4
+ export declare const denormalizeStoryParameters: ({ globalParameters, kindParameters, stories, }: SetStoriesData) => StoriesRaw;
5
+ export declare const serializeRawStories: (stories: StoriesRaw) => StoriesRaw;
6
+ export declare const deserializeRawStories: (stories: StoriesRaw) => StoriesRaw;
7
+ export declare const deserializeStory: (story: StoryInput) => StoryInput;
@@ -0,0 +1,9 @@
1
+ export interface SerializedRegExp {
2
+ __regexp: true;
3
+ source: string;
4
+ flags: string;
5
+ }
6
+ export declare const isRegExp: (exp: unknown) => exp is RegExp;
7
+ export declare const isSerializedRegExp: (exp: unknown) => exp is SerializedRegExp;
8
+ export declare const serializeRegExp: (exp: RegExp) => SerializedRegExp;
9
+ export declare const deserializeRegExp: ({ source, flags }: SerializedRegExp) => RegExp;
@@ -9,6 +9,7 @@ import type Pixelmatch from 'pixelmatch';
9
9
  import type { Context } from 'mocha';
10
10
  export declare type DiffOptions = typeof Pixelmatch extends (x1: any, x2: any, x3: any, x4: any, x5: any, options?: infer T) => void ? T : never;
11
11
  export declare type SetStoriesData = {
12
+ v?: number;
12
13
  globalParameters: {
13
14
  creevey?: CreeveyStoryParams;
14
15
  };
@@ -206,11 +207,13 @@ export interface Config {
206
207
  * module.exports = {
207
208
  * storiesProvider: provider
208
209
  * }
210
+ * ```
209
211
  */
210
- storiesProvider: (config: Config, { watch, debug, }: {
212
+ storiesProvider: (config: Config, options: {
211
213
  watch: boolean;
212
214
  debug: boolean;
213
- }, storiesListener: (stories: Map<string, StoryInput[]>) => void) => Promise<SetStoriesData>;
215
+ port: number;
216
+ }, storiesListener: (stories: Map<string, StoryInput[]>) => void) => Promise<StoriesRaw>;
214
217
  /**
215
218
  * Define custom babel options for load stories transformation
216
219
  */
@@ -271,6 +274,22 @@ export declare type WorkerMessage = {
271
274
  error: string;
272
275
  };
273
276
  };
277
+ export declare type StoriesMessage = {
278
+ type: 'get';
279
+ payload?: never;
280
+ } | {
281
+ type: 'set';
282
+ payload: {
283
+ stories: StoriesRaw;
284
+ oldTests: string[];
285
+ };
286
+ } | {
287
+ type: 'update';
288
+ payload: [string, StoryInput[]][];
289
+ } | {
290
+ type: 'capture';
291
+ payload?: CaptureOptions;
292
+ };
274
293
  export declare type TestMessage = {
275
294
  type: 'start';
276
295
  payload: {
@@ -307,6 +326,8 @@ export declare type DockerMessage = {
307
326
  export declare type ShutdownMessage = unknown;
308
327
  export declare type ProcessMessage = (WorkerMessage & {
309
328
  scope: 'worker';
329
+ }) | (StoriesMessage & {
330
+ scope: 'stories';
310
331
  }) | (TestMessage & {
311
332
  scope: 'test';
312
333
  }) | (WebpackMessage & {
@@ -317,6 +338,7 @@ export declare type ProcessMessage = (WorkerMessage & {
317
338
  scope: 'shutdown';
318
339
  });
319
340
  export declare type WorkerHandler = (message: WorkerMessage) => void;
341
+ export declare type StoriesHandler = (message: StoriesMessage) => void;
320
342
  export declare type TestHandler = (message: TestMessage) => void;
321
343
  export declare type WebpackHandler = (message: WebpackMessage) => void;
322
344
  export declare type DockerHandler = (message: DockerMessage) => void;
@@ -378,13 +400,12 @@ export interface CreeveyUpdate {
378
400
  removedTests?: TestMeta[];
379
401
  }
380
402
  export interface SkipOption {
381
- reason?: string;
382
403
  in?: string | string[] | RegExp;
383
404
  kinds?: string | string[] | RegExp;
384
405
  stories?: string | string[] | RegExp;
385
406
  tests?: string | string[] | RegExp;
386
407
  }
387
- export declare type SkipOptions = boolean | string | SkipOption | SkipOption[] | Record<string, SkipOption | SkipOption[]>;
408
+ export declare type SkipOptions = boolean | string | Record<string, SkipOption | SkipOption[]>;
388
409
  export declare type CreeveyTestFunction = (this: {
389
410
  browser: WebDriver;
390
411
  until: typeof until;
@@ -394,9 +415,12 @@ export declare type CreeveyTestFunction = (this: {
394
415
  updateStoryArgs: <Args extends Record<string, unknown>>(updatedArgs: Args) => Promise<void>;
395
416
  readonly captureElement?: WebElementPromise;
396
417
  }) => Promise<void>;
397
- export interface CreeveyStoryParams {
418
+ export interface CaptureOptions {
419
+ imageName?: string;
398
420
  captureElement?: string | null;
399
421
  ignoreElements?: string | string[] | null;
422
+ }
423
+ export interface CreeveyStoryParams extends CaptureOptions {
400
424
  waitForReady?: boolean;
401
425
  delay?: number | {
402
426
  for: string[];
@@ -429,6 +453,8 @@ export declare type Response = {
429
453
  } | {
430
454
  type: 'update';
431
455
  payload: CreeveyUpdate;
456
+ } | {
457
+ type: 'capture';
432
458
  };
433
459
  export interface CreeveyTest extends TestData {
434
460
  checked: boolean;
@@ -454,6 +480,7 @@ export declare function isFunction(x: unknown): x is (...args: any[]) => any;
454
480
  export declare function isImageError(error: unknown): error is ImagesError;
455
481
  export declare function isProcessMessage(message: unknown): message is ProcessMessage;
456
482
  export declare function isWorkerMessage(message: unknown): message is WorkerMessage;
483
+ export declare function isStoriesMessage(message: unknown): message is StoriesMessage;
457
484
  export declare function isTestMessage(message: unknown): message is TestMessage;
458
485
  export declare function isWebpackMessage(message: unknown): message is WebpackMessage;
459
486
  export declare function isDockerMessage(message: unknown): message is DockerMessage;