creevey 0.8.1-beta.1 → 0.8.1-sb7.1

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 (242) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/package.json +22 -19
  3. package/lib/cjs/cli.js +0 -5
  4. package/lib/cjs/client/addon/Manager.js +0 -264
  5. package/lib/cjs/client/addon/components/Addon.js +0 -55
  6. package/lib/cjs/client/addon/components/Icons.js +0 -46
  7. package/lib/cjs/client/addon/components/Panel.js +0 -72
  8. package/lib/cjs/client/addon/components/TestSelect.js +0 -65
  9. package/lib/cjs/client/addon/components/Tools.js +0 -95
  10. package/lib/cjs/client/addon/decorator.js +0 -11
  11. package/lib/cjs/client/addon/index.js +0 -31
  12. package/lib/cjs/client/addon/preset.ie11.js +0 -74
  13. package/lib/cjs/client/addon/preset.js +0 -62
  14. package/lib/cjs/client/addon/readyForCapture.js +0 -12
  15. package/lib/cjs/client/addon/register.js +0 -72
  16. package/lib/cjs/client/addon/utils.js +0 -42
  17. package/lib/cjs/client/addon/withCreevey.js +0 -350
  18. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +0 -87
  19. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +0 -92
  20. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +0 -154
  21. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +0 -166
  22. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +0 -91
  23. package/lib/cjs/client/shared/components/ImagesView/index.js +0 -45
  24. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +0 -50
  25. package/lib/cjs/client/shared/components/PageFooter/Paging.js +0 -94
  26. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +0 -82
  27. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +0 -119
  28. package/lib/cjs/client/shared/components/ResultsPage.js +0 -143
  29. package/lib/cjs/client/shared/creeveyClientApi.js +0 -76
  30. package/lib/cjs/client/shared/helpers.js +0 -411
  31. package/lib/cjs/client/shared/viewMode.js +0 -17
  32. package/lib/cjs/client/web/142.js +0 -2
  33. package/lib/cjs/client/web/142.js.LICENSE.txt +0 -12
  34. package/lib/cjs/client/web/32.js +0 -1
  35. package/lib/cjs/client/web/551.js +0 -1
  36. package/lib/cjs/client/web/566.js +0 -2
  37. package/lib/cjs/client/web/566.js.LICENSE.txt +0 -31
  38. package/lib/cjs/client/web/691.js +0 -2
  39. package/lib/cjs/client/web/691.js.LICENSE.txt +0 -8
  40. package/lib/cjs/client/web/725.js +0 -1
  41. package/lib/cjs/client/web/index.html +0 -19
  42. package/lib/cjs/client/web/main.js +0 -2
  43. package/lib/cjs/client/web/main.js.LICENSE.txt +0 -49
  44. package/lib/cjs/creevey.js +0 -69
  45. package/lib/cjs/index.js +0 -39
  46. package/lib/cjs/server/config.js +0 -93
  47. package/lib/cjs/server/docker.js +0 -146
  48. package/lib/cjs/server/extract.js +0 -46
  49. package/lib/cjs/server/index.js +0 -83
  50. package/lib/cjs/server/loaders/babel/creevey-plugin.js +0 -86
  51. package/lib/cjs/server/loaders/babel/helpers.js +0 -469
  52. package/lib/cjs/server/loaders/babel/register.js +0 -124
  53. package/lib/cjs/server/loaders/hooks/mdx.js +0 -30
  54. package/lib/cjs/server/loaders/hooks/svelte.js +0 -65
  55. package/lib/cjs/server/loaders/webpack/compile.js +0 -269
  56. package/lib/cjs/server/loaders/webpack/creevey-loader.js +0 -172
  57. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +0 -39
  58. package/lib/cjs/server/loaders/webpack/mdx-loader.js +0 -72
  59. package/lib/cjs/server/loaders/webpack/start.js +0 -41
  60. package/lib/cjs/server/logger.js +0 -48
  61. package/lib/cjs/server/master/api.js +0 -71
  62. package/lib/cjs/server/master/index.js +0 -152
  63. package/lib/cjs/server/master/master.js +0 -57
  64. package/lib/cjs/server/master/pool.js +0 -197
  65. package/lib/cjs/server/master/runner.js +0 -281
  66. package/lib/cjs/server/master/server.js +0 -131
  67. package/lib/cjs/server/messages.js +0 -264
  68. package/lib/cjs/server/selenium/browser.js +0 -656
  69. package/lib/cjs/server/selenium/index.js +0 -31
  70. package/lib/cjs/server/selenium/selenoid.js +0 -172
  71. package/lib/cjs/server/stories.js +0 -153
  72. package/lib/cjs/server/storybook/entry.js +0 -53
  73. package/lib/cjs/server/storybook/helpers.js +0 -158
  74. package/lib/cjs/server/storybook/providers/browser.js +0 -74
  75. package/lib/cjs/server/storybook/providers/nodejs.js +0 -239
  76. package/lib/cjs/server/update.js +0 -79
  77. package/lib/cjs/server/utils.js +0 -169
  78. package/lib/cjs/server/worker/chai-image.js +0 -142
  79. package/lib/cjs/server/worker/helpers.js +0 -69
  80. package/lib/cjs/server/worker/index.js +0 -15
  81. package/lib/cjs/server/worker/reporter.js +0 -108
  82. package/lib/cjs/server/worker/worker.js +0 -268
  83. package/lib/cjs/shared/index.js +0 -101
  84. package/lib/cjs/shared/serializeRegExp.js +0 -42
  85. package/lib/cjs/types.js +0 -74
  86. package/lib/esm/cli.js +0 -4
  87. package/lib/esm/client/addon/Manager.js +0 -248
  88. package/lib/esm/client/addon/components/Addon.js +0 -39
  89. package/lib/esm/client/addon/components/Icons.js +0 -31
  90. package/lib/esm/client/addon/components/Panel.js +0 -53
  91. package/lib/esm/client/addon/components/TestSelect.js +0 -51
  92. package/lib/esm/client/addon/components/Tools.js +0 -74
  93. package/lib/esm/client/addon/decorator.js +0 -2
  94. package/lib/esm/client/addon/index.js +0 -2
  95. package/lib/esm/client/addon/preset.ie11.js +0 -59
  96. package/lib/esm/client/addon/preset.js +0 -41
  97. package/lib/esm/client/addon/readyForCapture.js +0 -5
  98. package/lib/esm/client/addon/register.js +0 -51
  99. package/lib/esm/client/addon/utils.js +0 -32
  100. package/lib/esm/client/addon/withCreevey.js +0 -323
  101. package/lib/esm/client/shared/components/ImagesView/BlendView.js +0 -67
  102. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +0 -69
  103. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +0 -131
  104. package/lib/esm/client/shared/components/ImagesView/SlideView.js +0 -143
  105. package/lib/esm/client/shared/components/ImagesView/SwapView.js +0 -71
  106. package/lib/esm/client/shared/components/ImagesView/index.js +0 -5
  107. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +0 -36
  108. package/lib/esm/client/shared/components/PageFooter/Paging.js +0 -80
  109. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +0 -68
  110. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +0 -97
  111. package/lib/esm/client/shared/components/ResultsPage.js +0 -115
  112. package/lib/esm/client/shared/creeveyClientApi.js +0 -67
  113. package/lib/esm/client/shared/helpers.js +0 -353
  114. package/lib/esm/client/shared/viewMode.js +0 -6
  115. package/lib/esm/creevey.js +0 -54
  116. package/lib/esm/index.js +0 -3
  117. package/lib/esm/server/config.js +0 -70
  118. package/lib/esm/server/docker.js +0 -123
  119. package/lib/esm/server/extract.js +0 -32
  120. package/lib/esm/server/index.js +0 -64
  121. package/lib/esm/server/loaders/babel/creevey-plugin.js +0 -72
  122. package/lib/esm/server/loaders/babel/helpers.js +0 -452
  123. package/lib/esm/server/loaders/babel/register.js +0 -103
  124. package/lib/esm/server/loaders/hooks/mdx.js +0 -15
  125. package/lib/esm/server/loaders/hooks/svelte.js +0 -49
  126. package/lib/esm/server/loaders/webpack/compile.js +0 -246
  127. package/lib/esm/server/loaders/webpack/creevey-loader.js +0 -152
  128. package/lib/esm/server/loaders/webpack/dummy-hmr.js +0 -32
  129. package/lib/esm/server/loaders/webpack/mdx-loader.js +0 -58
  130. package/lib/esm/server/loaders/webpack/start.js +0 -27
  131. package/lib/esm/server/logger.js +0 -20
  132. package/lib/esm/server/master/api.js +0 -60
  133. package/lib/esm/server/master/index.js +0 -131
  134. package/lib/esm/server/master/master.js +0 -38
  135. package/lib/esm/server/master/pool.js +0 -176
  136. package/lib/esm/server/master/runner.js +0 -259
  137. package/lib/esm/server/master/server.js +0 -107
  138. package/lib/esm/server/messages.js +0 -232
  139. package/lib/esm/server/selenium/browser.js +0 -623
  140. package/lib/esm/server/selenium/index.js +0 -2
  141. package/lib/esm/server/selenium/selenoid.js +0 -149
  142. package/lib/esm/server/stories.js +0 -135
  143. package/lib/esm/server/storybook/entry.js +0 -27
  144. package/lib/esm/server/storybook/helpers.js +0 -97
  145. package/lib/esm/server/storybook/providers/browser.js +0 -58
  146. package/lib/esm/server/storybook/providers/nodejs.js +0 -216
  147. package/lib/esm/server/update.js +0 -61
  148. package/lib/esm/server/utils.js +0 -128
  149. package/lib/esm/server/worker/chai-image.js +0 -130
  150. package/lib/esm/server/worker/helpers.js +0 -60
  151. package/lib/esm/server/worker/index.js +0 -1
  152. package/lib/esm/server/worker/reporter.js +0 -86
  153. package/lib/esm/server/worker/worker.js +0 -238
  154. package/lib/esm/shared/index.js +0 -78
  155. package/lib/esm/shared/serializeRegExp.js +0 -24
  156. package/lib/esm/types.js +0 -43
  157. package/lib/types/cli.d.ts +0 -1
  158. package/lib/types/client/addon/Manager.d.ts +0 -37
  159. package/lib/types/client/addon/components/Addon.d.ts +0 -8
  160. package/lib/types/client/addon/components/Icons.d.ts +0 -7
  161. package/lib/types/client/addon/components/Panel.d.ts +0 -9
  162. package/lib/types/client/addon/components/TestSelect.d.ts +0 -8
  163. package/lib/types/client/addon/components/Tools.d.ts +0 -6
  164. package/lib/types/client/addon/decorator.d.ts +0 -1
  165. package/lib/types/client/addon/index.d.ts +0 -2
  166. package/lib/types/client/addon/preset.d.ts +0 -23
  167. package/lib/types/client/addon/preset.ie11.d.ts +0 -10
  168. package/lib/types/client/addon/readyForCapture.d.ts +0 -6
  169. package/lib/types/client/addon/register.d.ts +0 -3
  170. package/lib/types/client/addon/utils.d.ts +0 -3
  171. package/lib/types/client/addon/withCreevey.d.ts +0 -24
  172. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +0 -3
  173. package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +0 -24
  174. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +0 -3
  175. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +0 -3
  176. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +0 -3
  177. package/lib/types/client/shared/components/ImagesView/index.d.ts +0 -5
  178. package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +0 -8
  179. package/lib/types/client/shared/components/PageFooter/Paging.d.ts +0 -7
  180. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +0 -12
  181. package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +0 -16
  182. package/lib/types/client/shared/components/ResultsPage.d.ts +0 -18
  183. package/lib/types/client/shared/creeveyClientApi.d.ts +0 -9
  184. package/lib/types/client/shared/helpers.d.ts +0 -46
  185. package/lib/types/client/shared/viewMode.d.ts +0 -4
  186. package/lib/types/client/web/CreeveyApp.d.ts +0 -11
  187. package/lib/types/client/web/CreeveyContext.d.ts +0 -11
  188. package/lib/types/client/web/CreeveyLoader.d.ts +0 -2
  189. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +0 -19
  190. package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +0 -6
  191. package/lib/types/client/web/CreeveyView/SideBar/SideBar.d.ts +0 -14
  192. package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +0 -12
  193. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +0 -33
  194. package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +0 -7
  195. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +0 -10
  196. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +0 -9
  197. package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +0 -6
  198. package/lib/types/client/web/CreeveyView/SideBar/index.d.ts +0 -1
  199. package/lib/types/client/web/KeyboardEventsContext.d.ts +0 -13
  200. package/lib/types/client/web/index.d.ts +0 -4
  201. package/lib/types/creevey.d.ts +0 -1
  202. package/lib/types/index.d.ts +0 -2
  203. package/lib/types/server/config.d.ts +0 -4
  204. package/lib/types/server/docker.d.ts +0 -7
  205. package/lib/types/server/extract.d.ts +0 -2
  206. package/lib/types/server/index.d.ts +0 -2
  207. package/lib/types/server/loaders/babel/creevey-plugin.d.ts +0 -1
  208. package/lib/types/server/loaders/babel/helpers.d.ts +0 -19
  209. package/lib/types/server/loaders/babel/register.d.ts +0 -5
  210. package/lib/types/server/loaders/hooks/mdx.d.ts +0 -1
  211. package/lib/types/server/loaders/hooks/svelte.d.ts +0 -1
  212. package/lib/types/server/loaders/webpack/compile.d.ts +0 -2
  213. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +0 -4
  214. package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +0 -10
  215. package/lib/types/server/loaders/webpack/mdx-loader.d.ts +0 -6
  216. package/lib/types/server/loaders/webpack/start.d.ts +0 -1
  217. package/lib/types/server/logger.d.ts +0 -10
  218. package/lib/types/server/master/api.d.ts +0 -7
  219. package/lib/types/server/master/index.d.ts +0 -3
  220. package/lib/types/server/master/master.d.ts +0 -7
  221. package/lib/types/server/master/pool.d.ts +0 -31
  222. package/lib/types/server/master/runner.d.ts +0 -26
  223. package/lib/types/server/master/server.d.ts +0 -2
  224. package/lib/types/server/messages.d.ts +0 -29
  225. package/lib/types/server/selenium/browser.d.ts +0 -19
  226. package/lib/types/server/selenium/index.d.ts +0 -2
  227. package/lib/types/server/selenium/selenoid.d.ts +0 -3
  228. package/lib/types/server/stories.d.ts +0 -8
  229. package/lib/types/server/storybook/entry.d.ts +0 -17
  230. package/lib/types/server/storybook/helpers.d.ts +0 -24
  231. package/lib/types/server/storybook/providers/browser.d.ts +0 -2
  232. package/lib/types/server/storybook/providers/nodejs.d.ts +0 -6
  233. package/lib/types/server/update.d.ts +0 -2
  234. package/lib/types/server/utils.d.ts +0 -23
  235. package/lib/types/server/worker/chai-image.d.ts +0 -6
  236. package/lib/types/server/worker/helpers.d.ts +0 -8
  237. package/lib/types/server/worker/index.d.ts +0 -1
  238. package/lib/types/server/worker/reporter.d.ts +0 -8
  239. package/lib/types/server/worker/worker.d.ts +0 -4
  240. package/lib/types/shared/index.d.ts +0 -7
  241. package/lib/types/shared/serializeRegExp.d.ts +0 -9
  242. package/lib/types/types.d.ts +0 -486
@@ -1,32 +0,0 @@
1
- export function getEmojiByTestStatus(status) {
2
- let skip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
3
-
4
- switch (status) {
5
- case 'failed':
6
- {
7
- return '❌';
8
- }
9
-
10
- case 'success':
11
- {
12
- return '✔';
13
- }
14
-
15
- case 'running':
16
- {
17
- return '🟡';
18
- }
19
-
20
- case 'pending':
21
- {
22
- return '🕗';
23
- }
24
-
25
- default:
26
- {
27
- if (skip) return '⏸';
28
- return '';
29
- }
30
- }
31
- }
32
- export const isInternetExplorer = navigator.userAgent.includes('Trident/');
@@ -1,323 +0,0 @@
1
- import * as Events from '@storybook/core-events';
2
- import * as polyfill from 'event-source-polyfill';
3
- import { buildQueries, within } from '@storybook/testing-library';
4
- import { addons, makeDecorator } from '@storybook/addons';
5
- import { isObject, noop } from '../../types';
6
- import { denormalizeStoryParameters, serializeRawStories } from '../../shared';
7
- import { getConnectionUrl } from '../shared/helpers';
8
- import { isInternetExplorer } from './utils';
9
-
10
- if (typeof process != 'object' || typeof process.version != 'string') {
11
- // NOTE If you don't use babel-polyfill or any other polyfills that add EventSource for IE11
12
- // You don't get hot reload in IE11. So put polyfill for that to better UX
13
- // Don't load in nodejs environment
14
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
15
- const {
16
- NativeEventSource,
17
- EventSourcePolyfill
18
- } = polyfill; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
19
-
20
- window.EventSource = NativeEventSource || EventSourcePolyfill;
21
- }
22
-
23
- const disableAnimationsStyles = "\n*,\n*:hover,\n*::before,\n*::after {\n animation-delay: -0.0001ms !important;\n animation-duration: 0s !important;\n animation-play-state: paused !important;\n cursor: none !important;\n caret-color: transparent !important;\n transition: 0s !important;\n}\n";
24
-
25
- async function resetCurrentStory(channel) {
26
- setTimeout(() => channel.emit(Events.SET_CURRENT_STORY, {
27
- storyId: true,
28
- name: '',
29
- kind: ''
30
- }), 0);
31
- return new Promise(resolve => channel.once(Events.STORY_MISSING, resolve));
32
- }
33
-
34
- function catchRenderError(channel) {
35
- let rejectCallback;
36
- const promise = new Promise((_resolve, reject) => rejectCallback = reject);
37
-
38
- function errorHandler(_ref) {
39
- let {
40
- title,
41
- description
42
- } = _ref;
43
- rejectCallback({
44
- message: title,
45
- stack: description
46
- });
47
- }
48
-
49
- function exceptionHandler(exception) {
50
- rejectCallback(exception);
51
- }
52
-
53
- function removeHandlers() {
54
- channel.off(Events.STORY_ERRORED, errorHandler);
55
- channel.off(Events.STORY_THREW_EXCEPTION, errorHandler);
56
- }
57
-
58
- channel.once(Events.STORY_ERRORED, errorHandler);
59
- channel.once(Events.STORY_THREW_EXCEPTION, exceptionHandler);
60
- return Object.assign(promise, {
61
- cancel: removeHandlers
62
- });
63
- }
64
-
65
- function waitForStoryRendered(channel) {
66
- let resolveCallback;
67
- const promise = new Promise(resolve => resolveCallback = resolve);
68
-
69
- function renderHandler() {
70
- resolveCallback();
71
- }
72
-
73
- function removeHandlers() {
74
- channel.off(Events.STORY_RENDERED, renderHandler);
75
- }
76
-
77
- channel.once(Events.STORY_RENDERED, renderHandler);
78
- return Object.assign(promise, {
79
- cancel: removeHandlers
80
- });
81
- }
82
-
83
- function waitForFontsLoaded() {
84
- if (!document.fonts) return;
85
- const areFontsLoading = Array.from(document.fonts).some(font => font.status == 'loading');
86
-
87
- if (areFontsLoading) {
88
- return new Promise(resolve => {
89
- const fontsLoadedHandler = () => {
90
- document.fonts.removeEventListener('loadingdone', fontsLoadedHandler);
91
- resolve();
92
- };
93
-
94
- document.fonts.addEventListener('loadingdone', fontsLoadedHandler);
95
- });
96
- }
97
- }
98
-
99
- function waitForCaptureCall() {
100
- return new Promise(resolve => captureResolver = resolve);
101
- }
102
-
103
- function initCreeveyState() {
104
- var _window$localStorage$;
105
-
106
- const prevState = JSON.parse((_window$localStorage$ = window.localStorage.getItem('Creevey_Tests')) !== null && _window$localStorage$ !== void 0 ? _window$localStorage$ : '{}');
107
- if (prevState.creeveyHost) window.__CREEVEY_SERVER_HOST__ = prevState.creeveyHost;
108
- if (prevState.creeveyPort) window.__CREEVEY_SERVER_PORT__ = prevState.creeveyPort;
109
- if (prevState.setStoriesCounter) setStoriesCounter = prevState.setStoriesCounter;
110
- if (prevState.isTestBrowser) isTestBrowser = prevState.isTestBrowser;
111
- window.addEventListener('beforeunload', () => {
112
- window.localStorage.setItem('Creevey_Tests', JSON.stringify({
113
- creeveyHost: window.__CREEVEY_SERVER_HOST__,
114
- creeveyPort: window.__CREEVEY_SERVER_PORT__,
115
- setStoriesCounter,
116
- isTestBrowser
117
- }));
118
- });
119
- }
120
-
121
- let isTestBrowser = false;
122
- let captureResolver;
123
- let waitForCreevey;
124
- let creeveyReady;
125
- let setStoriesCounter = 0;
126
- export function withCreevey() {
127
- let currentStory = '';
128
- let isAnimationDisabled = false;
129
- initCreeveyState();
130
-
131
- function disableAnimation() {
132
- isAnimationDisabled = true;
133
- const style = document.createElement('style');
134
- const textNode = document.createTextNode(disableAnimationsStyles);
135
- style.setAttribute('type', 'text/css');
136
- style.appendChild(textNode);
137
- document.head.appendChild(style);
138
- }
139
-
140
- async function getStories() {
141
- var _window$__STORYBOOK_S;
142
-
143
- const storiesPromise = new Promise(resolve => addons.getChannel().once(Events.SET_STORIES, data => resolve(serializeRawStories(denormalizeStoryParameters(data)))));
144
- const store = (_window$__STORYBOOK_S = window.__STORYBOOK_STORY_STORE__) !== null && _window$__STORYBOOK_S !== void 0 ? _window$__STORYBOOK_S : {};
145
-
146
- if (store.cacheAllCSFFiles) {
147
- await store.cacheAllCSFFiles();
148
- addons.getChannel().emit(Events.SET_STORIES, store.getSetStoriesPayload());
149
- } else return;
150
-
151
- addons.getChannel().on(Events.SET_STORIES, data => {
152
- // TODO Figure out how to get only updated stories
153
- // TODO Subscribe on hmr? like use dummy-hmr
154
- setStoriesCounter += 1;
155
- const stories = serializeRawStories(denormalizeStoryParameters(data));
156
- const storiesByFiles = new Map();
157
- Object.values(stories).forEach(story => {
158
- const storiesFromFile = storiesByFiles.get(story.parameters.fileName);
159
- if (storiesFromFile) storiesFromFile.push(story);else storiesByFiles.set(story.parameters.fileName, [story]);
160
- });
161
- void fetch("http://".concat(getConnectionUrl(), "/stories"), {
162
- method: 'POST',
163
- headers: {
164
- 'Content-Type': 'application/json'
165
- },
166
- body: JSON.stringify({
167
- setStoriesCounter,
168
- stories: [...storiesByFiles.entries()]
169
- })
170
- });
171
- });
172
- return storiesPromise;
173
- }
174
-
175
- async function selectStory(storyId, kind, name, shouldWaitForReady, callback) {
176
- if (!isAnimationDisabled) disableAnimation();
177
- isTestBrowser = true;
178
- const channel = addons.getChannel();
179
- const waitForReady = shouldWaitForReady ? new Promise(resolve => window.__CREEVEY_SET_READY_FOR_CAPTURE__ = resolve) : Promise.resolve();
180
- if (storyId == currentStory) await resetCurrentStory(channel);else currentStory = storyId;
181
- let isCaptureCalled = false;
182
- const renderPromise = waitForStoryRendered(channel);
183
- const errorPromise = catchRenderError(channel);
184
- const capturePromise = waitForCaptureCall().then(() => isCaptureCalled = true);
185
- setTimeout(() => channel.emit(Events.SET_CURRENT_STORY, {
186
- storyId,
187
- name,
188
- kind
189
- }), 0);
190
-
191
- try {
192
- await Promise.race([(async () => {
193
- await Promise.race([renderPromise, capturePromise]);
194
- await waitForFontsLoaded();
195
- await waitForReady;
196
- })(), errorPromise]);
197
- callback([null, isCaptureCalled]);
198
- } catch (reason) {
199
- var _reason$stack;
200
-
201
- // NOTE Event `STORY_THREW_EXCEPTION` triggered only in react and vue frameworks and return Error instance
202
- // NOTE Event `STORY_ERRORED` return error-like object without `name` field
203
- const errorMessage = reason instanceof Error ? (_reason$stack = reason.stack) !== null && _reason$stack !== void 0 ? _reason$stack : reason.message : isObject(reason) ? "".concat(reason.message, "\n ").concat(reason.stack) : reason;
204
- callback([errorMessage]);
205
- } finally {
206
- renderPromise.cancel();
207
- errorPromise.cancel();
208
- }
209
- }
210
-
211
- function updateGlobals(globals) {
212
- addons.getChannel().emit(Events.UPDATE_GLOBALS, {
213
- globals
214
- });
215
- }
216
-
217
- function insertIgnoreStyles(ignoreSelectors) {
218
- const stylesElement = document.createElement('style');
219
- stylesElement.setAttribute('type', 'text/css');
220
- document.head.appendChild(stylesElement);
221
- ignoreSelectors.forEach(selector => {
222
- stylesElement.innerHTML += "\n ".concat(selector, " {\n background: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n outline: 0 !important;\n color: rgba(0,0,0,0) !important;\n }\n ").concat(selector, " *, ").concat(selector, "::before, ").concat(selector, "::after {\n visibility: hidden !important;\n }\n ");
223
- });
224
- return stylesElement;
225
- }
226
-
227
- function removeIgnoreStyles(ignoreStyles) {
228
- var _ignoreStyles$parentN;
229
-
230
- (_ignoreStyles$parentN = ignoreStyles.parentNode) === null || _ignoreStyles$parentN === void 0 ? void 0 : _ignoreStyles$parentN.removeChild(ignoreStyles);
231
- }
232
-
233
- function hasPlayCompletedYet(callback) {
234
- creeveyReady();
235
- let isCaptureCalled = false;
236
- let isPlayCompleted = false;
237
- const channel = addons.getChannel();
238
- void waitForStoryRendered(channel).then(() => {
239
- if (isCaptureCalled) return;
240
- isPlayCompleted = true;
241
- callback(true);
242
- });
243
- void waitForCaptureCall().then(() => {
244
- if (isPlayCompleted) return;
245
- isCaptureCalled = true;
246
- callback(false);
247
- });
248
- }
249
-
250
- window.__CREEVEY_GET_STORIES__ = getStories;
251
- window.__CREEVEY_SELECT_STORY__ = selectStory;
252
- window.__CREEVEY_UPDATE_GLOBALS__ = updateGlobals;
253
- window.__CREEVEY_INSERT_IGNORE_STYLES__ = insertIgnoreStyles;
254
- window.__CREEVEY_REMOVE_IGNORE_STYLES__ = removeIgnoreStyles;
255
- window.__CREEVEY_HAS_PLAY_COMPLETED_YET__ = hasPlayCompletedYet;
256
- window.__CREEVEY_SET_READY_FOR_CAPTURE__ = noop;
257
-
258
- const queryAllByQuery = (container, query) => [...container.querySelectorAll(query)].filter(e => e instanceof HTMLElement);
259
-
260
- const getMultipleError = (_, query) => "Found multiple elements by query: ".concat(query);
261
-
262
- const getMissingError = (_, query) => "Unable to find an element by query: ".concat(query);
263
-
264
- const [queryByQuery, getAllByQuery, getByQuery, findAllByQuery, findByQuery] = buildQueries(queryAllByQuery, getMultipleError, getMissingError);
265
- const queries = {
266
- queryByQuery,
267
- getAllByQuery,
268
- getByQuery,
269
- findAllByQuery,
270
- findByQuery
271
- };
272
- return makeDecorator({
273
- name: 'withCreevey',
274
- parameterName: 'creevey',
275
- wrapper: (getStory, context) => {
276
- var _ref2;
277
-
278
- // TODO Define proper types, like captureElement is a promise
279
- const {
280
- captureElement
281
- } = context.parameters.creevey = (_ref2 = context.parameters.creevey) !== null && _ref2 !== void 0 ? _ref2 : {};
282
- Object.defineProperty(context.parameters.creevey, 'captureElement', {
283
- get() {
284
- switch (true) {
285
- case captureElement === undefined:
286
- return Promise.resolve(context.canvasElement);
287
-
288
- case captureElement === null:
289
- return Promise.resolve(document.documentElement);
290
-
291
- case typeof captureElement == 'string':
292
- return isInternetExplorer // some code from testing-library makes IE hang
293
- ? Promise.resolve(context.canvasElement.querySelector(captureElement)) : within(context.canvasElement, queries).findByQuery(captureElement);
294
-
295
- case typeof captureElement == 'function':
296
- // TODO Define type for it
297
- return Promise.resolve(captureElement(context));
298
- }
299
- },
300
-
301
- enumerable: true,
302
- configurable: true
303
- });
304
- return getStory(context);
305
- }
306
- });
307
- }
308
- export async function capture(options) {
309
- if (!isTestBrowser) return;
310
- captureResolver();
311
- waitForCreevey = new Promise(resolve => creeveyReady = resolve);
312
- await fetch("http://".concat(getConnectionUrl(), "/capture"), {
313
- method: 'POST',
314
- headers: {
315
- 'Content-Type': 'application/json'
316
- },
317
- body: JSON.stringify({
318
- workerId: window.__CREEVEY_WORKER_ID__,
319
- options
320
- })
321
- });
322
- await waitForCreevey;
323
- }
@@ -1,67 +0,0 @@
1
- import React, { useEffect, useRef } from 'react';
2
- import { getBorderColor, themeBorderColors } from './ImagesView';
3
- import { styled, withTheme } from '@storybook/theming';
4
- import { useApplyScale, useCalcScale, useLoadImages } from '../../helpers';
5
- import { readyForCapture } from '../../../addon/readyForCapture';
6
- const Container = styled.div({
7
- position: 'relative',
8
- display: 'flex',
9
- filter: 'invert(100%)'
10
- });
11
- const ImageContainer = styled.div({
12
- position: 'absolute',
13
- width: '100%',
14
- height: '100%',
15
- display: 'flex'
16
- });
17
- const Image = styled.img(_ref => {
18
- let {
19
- borderColor
20
- } = _ref;
21
- return {
22
- boxSizing: 'border-box',
23
- border: "1px solid ".concat(borderColor),
24
- maxWidth: '100%',
25
- filter: 'invert(100%)'
26
- };
27
- });
28
- const ActualImage = styled(Image)({
29
- mixBlendMode: 'difference'
30
- });
31
- const DiffImage = styled(Image)({
32
- opacity: '0'
33
- });
34
- export const BlendView = withTheme(_ref2 => {
35
- let {
36
- actual,
37
- diff,
38
- expect,
39
- theme
40
- } = _ref2;
41
- const expectImageRef = useRef(null);
42
- const diffImageRef = useRef(null);
43
- const actualImageRef = useRef(null);
44
- const loaded = useLoadImages(expect, diff, actual);
45
- const scale = useCalcScale(diffImageRef, loaded);
46
- useApplyScale(expectImageRef, scale, loaded);
47
- useApplyScale(actualImageRef, scale, loaded);
48
- useEffect(() => {
49
- if (loaded) readyForCapture();
50
- }, [loaded]);
51
- return /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(ImageContainer, null, /*#__PURE__*/React.createElement(Image, {
52
- ref: expectImageRef,
53
- borderColor: getBorderColor(theme, themeBorderColors.expect),
54
- alt: "expect",
55
- src: expect
56
- })), /*#__PURE__*/React.createElement(DiffImage, {
57
- ref: diffImageRef,
58
- borderColor: 'transparent',
59
- alt: "diff",
60
- src: diff
61
- }), /*#__PURE__*/React.createElement(ImageContainer, null, /*#__PURE__*/React.createElement(ActualImage, {
62
- ref: actualImageRef,
63
- borderColor: getBorderColor(theme, themeBorderColors.actual),
64
- alt: "actual",
65
- src: actual
66
- })));
67
- });
@@ -1,69 +0,0 @@
1
- import React from 'react';
2
- import { SideBySideView } from './SideBySideView';
3
- import { SwapView } from './SwapView';
4
- import { SlideView } from './SlideView';
5
- import { BlendView } from './BlendView';
6
- import { styled, withTheme } from '@storybook/theming';
7
- export const themeBorderColors = {
8
- actual: 'negative',
9
- expect: 'positive',
10
- diff: 'secondary'
11
- };
12
-
13
- const isColor = (theme, color) => color in theme.color;
14
-
15
- export function getBorderColor(theme, color) {
16
- return isColor(theme, color) ? theme.color[color] : color;
17
- }
18
- const views = {
19
- 'side-by-side': SideBySideView,
20
- swap: SwapView,
21
- slide: SlideView,
22
- blend: BlendView
23
- };
24
- const Container = styled.div({
25
- height: '100%',
26
- display: 'flex',
27
- textAlign: 'center',
28
- alignItems: 'center',
29
- justifyContent: 'center',
30
- padding: '0 20px'
31
- });
32
- const ImageLink = styled.a({
33
- lineHeight: 0
34
- });
35
- const ActualImage = withTheme(styled.img(_ref => {
36
- let {
37
- theme
38
- } = _ref;
39
- return {
40
- border: "1px solid ".concat(getBorderColor(theme, themeBorderColors.expect)),
41
- maxWidth: '100%'
42
- };
43
- }));
44
- export function ImagesView(_ref2) {
45
- let {
46
- url,
47
- image,
48
- canApprove,
49
- mode
50
- } = _ref2;
51
- const ViewComponent = views[mode];
52
- const {
53
- actual,
54
- diff,
55
- expect
56
- } = image;
57
- return /*#__PURE__*/React.createElement(Container, null, canApprove && diff && expect ? /*#__PURE__*/React.createElement(ViewComponent, {
58
- actual: "".concat(url, "/").concat(actual),
59
- diff: "".concat(url, "/").concat(diff),
60
- expect: "".concat(url, "/").concat(expect)
61
- }) : /*#__PURE__*/React.createElement(ImageLink, {
62
- href: "".concat(url, "/").concat(actual),
63
- target: "_blank",
64
- rel: "noopener noreferrer"
65
- }, /*#__PURE__*/React.createElement(ActualImage, {
66
- alt: "actual",
67
- src: "".concat(url, "/").concat(actual)
68
- })));
69
- }
@@ -1,131 +0,0 @@
1
- import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
2
- import { getBorderColor, themeBorderColors } from './ImagesView';
3
- import { styled, withTheme } from '@storybook/theming';
4
- import { useApplyScale, useLoadImages, useResizeObserver, getBorderSize } from '../../helpers';
5
- import { Loader } from '@storybook/components';
6
- import { readyForCapture } from '../../../addon/readyForCapture';
7
- const Container = styled.div({
8
- display: 'flex',
9
- flexWrap: 'nowrap',
10
- alignItems: 'center',
11
- justifyContent: 'center',
12
- height: '100%',
13
- width: '100%'
14
- });
15
- const ImagesLayout = styled.div(_ref => {
16
- let {
17
- layout
18
- } = _ref;
19
- return {
20
- display: 'flex',
21
- alignItems: 'flex-start',
22
- justifyContent: 'flex-start',
23
- flexDirection: layout == 'horizontal' ? 'row' : 'column',
24
- '& > :not(:first-of-type)': {
25
- marginLeft: layout == 'horizontal' ? '20px' : 0,
26
- marginTop: layout == 'horizontal' ? 0 : '20px'
27
- }
28
- };
29
- });
30
- const ImageLink = styled.a({
31
- lineHeight: 0,
32
- flexShrink: 0
33
- });
34
- const ImageDiffLink = styled.a({
35
- lineHeight: 0
36
- });
37
- const Image = styled.img(_ref2 => {
38
- let {
39
- borderColor
40
- } = _ref2;
41
- return {
42
- boxSizing: 'border-box',
43
- border: "1px solid ".concat(borderColor),
44
- maxWidth: '100%',
45
- flexShrink: 0
46
- };
47
- });
48
- const DiffImage = styled(Image)({
49
- flexShrink: 1
50
- });
51
- export const SideBySideView = withTheme(_ref3 => {
52
- let {
53
- actual,
54
- diff,
55
- expect,
56
- theme
57
- } = _ref3;
58
- const [layout, setLayout] = useState('horizontal');
59
- const [scale, setScale] = useState(1);
60
- const containerRef = useRef(null);
61
- const expectImageRef = useRef(null);
62
- const diffImageRef = useRef(null);
63
- const actualImageRef = useRef(null);
64
- const loaded = useLoadImages(expect, diff, actual);
65
- const calcScale = useCallback(() => {
66
- const containerElement = containerRef.current;
67
- const expectImage = expectImageRef.current;
68
- const diffImage = diffImageRef.current;
69
- const actualImage = actualImageRef.current;
70
- if (!containerElement || !expectImage || !actualImage || !diffImage || !loaded) return setScale(1);
71
- const borderSize = getBorderSize(diffImage);
72
-
73
- if (layout == 'vertical') {
74
- const ratio = (diffImage.getBoundingClientRect().width - borderSize * 2) / diffImage.naturalWidth;
75
- setScale(Math.min(1, ratio));
76
- }
77
-
78
- if (layout == 'horizontal') {
79
- const ratio = // NOTE: 40px because we have two margins by 20px and 6px for borders
80
- (containerElement.getBoundingClientRect().width - 40 - borderSize * 6) / [expectImage, diffImage, actualImage].map(image => image.naturalWidth).reduce((a, b) => a + b, 0);
81
- setScale(Math.min(1, ratio));
82
- }
83
- }, [loaded, layout]);
84
- useResizeObserver(containerRef, calcScale);
85
- useLayoutEffect(calcScale, [calcScale]);
86
- useLayoutEffect(() => {
87
- const diffImage = diffImageRef.current;
88
- if (!diffImage || !loaded) return;
89
- const ratio = diffImage.naturalWidth / diffImage.naturalHeight;
90
- setLayout(ratio >= 2 ? 'vertical' : 'horizontal');
91
- }, [loaded]);
92
- useApplyScale(expectImageRef, scale);
93
- useApplyScale(actualImageRef, scale);
94
- useEffect(() => {
95
- if (loaded) readyForCapture();
96
- }, [loaded]);
97
- return /*#__PURE__*/React.createElement(Container, {
98
- ref: containerRef
99
- }, loaded ? /*#__PURE__*/React.createElement(ImagesLayout, {
100
- layout: layout
101
- }, /*#__PURE__*/React.createElement(ImageLink, {
102
- href: expect,
103
- target: "_blank",
104
- rel: "noopener noreferrer"
105
- }, /*#__PURE__*/React.createElement(Image, {
106
- ref: expectImageRef,
107
- borderColor: getBorderColor(theme, themeBorderColors.expect),
108
- alt: "expect",
109
- src: expect
110
- })), /*#__PURE__*/React.createElement(ImageDiffLink, {
111
- href: diff,
112
- target: "_blank",
113
- rel: "noopener noreferrer"
114
- }, /*#__PURE__*/React.createElement(DiffImage, {
115
- ref: diffImageRef,
116
- borderColor: getBorderColor(theme, themeBorderColors.diff),
117
- alt: "diff",
118
- src: diff
119
- })), /*#__PURE__*/React.createElement(ImageLink, {
120
- href: actual,
121
- target: "_blank",
122
- rel: "noopener noreferrer"
123
- }, /*#__PURE__*/React.createElement(Image, {
124
- ref: actualImageRef,
125
- borderColor: getBorderColor(theme, themeBorderColors.actual),
126
- alt: "actual",
127
- src: actual
128
- }))) : /*#__PURE__*/React.createElement(Loader, {
129
- size: 64
130
- }));
131
- });