creevey 0.9.0-beta.0 → 0.9.0-beta.10

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 (203) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +9 -1
  3. package/addon/README.md +3 -0
  4. package/addon/package.json +5 -0
  5. package/docs/config.md +29 -26
  6. package/jest.config.js +6 -0
  7. package/lib/cjs/client/addon/Manager.js +122 -270
  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 +22 -41
  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 +4 -68
  17. package/lib/cjs/client/addon/preset.sb7.js +19 -0
  18. package/lib/cjs/client/addon/preview.js +14 -0
  19. package/lib/cjs/client/addon/register.js +46 -70
  20. package/lib/cjs/client/addon/utils.js +6 -2
  21. package/lib/cjs/client/addon/withCreevey.js +161 -366
  22. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +23 -21
  23. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +22 -18
  24. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +42 -64
  25. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +35 -48
  26. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +24 -43
  27. package/lib/cjs/client/shared/components/ImagesView/index.js +9 -9
  28. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +12 -8
  29. package/lib/cjs/client/shared/components/PageFooter/Paging.js +14 -18
  30. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +22 -18
  31. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +42 -67
  32. package/lib/cjs/client/shared/components/ResultsPage.js +39 -69
  33. package/lib/cjs/client/shared/creeveyClientApi.js +55 -82
  34. package/lib/cjs/client/shared/helpers.js +139 -210
  35. package/lib/cjs/client/shared/viewMode.js +5 -5
  36. package/lib/cjs/client/web/142.js +2 -0
  37. package/lib/cjs/client/web/142.js.LICENSE.txt +12 -0
  38. package/lib/cjs/client/web/32.js +1 -0
  39. package/lib/cjs/client/web/551.js +1 -0
  40. package/lib/cjs/client/web/566.js +2 -0
  41. package/lib/cjs/client/web/566.js.LICENSE.txt +31 -0
  42. package/lib/cjs/client/web/691.js +2 -0
  43. package/lib/cjs/client/web/691.js.LICENSE.txt +8 -0
  44. package/lib/cjs/client/web/725.js +1 -0
  45. package/lib/cjs/client/web/main.js +2 -38
  46. package/lib/cjs/client/web/main.js.LICENSE.txt +49 -0
  47. package/lib/cjs/creevey.js +3 -5
  48. package/lib/cjs/index.js +5 -5
  49. package/lib/cjs/server/config.js +3 -5
  50. package/lib/cjs/server/docker.js +3 -7
  51. package/lib/cjs/server/extract.js +1 -5
  52. package/lib/cjs/server/index.js +1 -1
  53. package/lib/cjs/server/loaders/babel/creevey-plugin.js +1 -3
  54. package/lib/cjs/server/loaders/babel/helpers.js +13 -23
  55. package/lib/cjs/server/loaders/babel/register.js +2 -4
  56. package/lib/cjs/server/loaders/webpack/compile.js +34 -51
  57. package/lib/cjs/server/loaders/webpack/creevey-loader.js +20 -22
  58. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +2 -7
  59. package/lib/cjs/server/loaders/webpack/mdx-loader.js +2 -2
  60. package/lib/cjs/server/loaders/webpack/start.js +1 -1
  61. package/lib/cjs/server/logger.js +2 -1
  62. package/lib/cjs/server/master/index.js +2 -2
  63. package/lib/cjs/server/master/pool.js +9 -18
  64. package/lib/cjs/server/master/runner.js +53 -66
  65. package/lib/cjs/server/master/server.js +5 -3
  66. package/lib/cjs/server/messages.js +8 -10
  67. package/lib/cjs/server/selenium/browser.js +58 -70
  68. package/lib/cjs/server/selenium/selenoid.js +5 -7
  69. package/lib/cjs/server/stories.js +16 -33
  70. package/lib/cjs/server/storybook/entry.js +7 -22
  71. package/lib/cjs/server/storybook/helpers.js +21 -28
  72. package/lib/cjs/server/storybook/providers/browser.js +10 -14
  73. package/lib/cjs/server/storybook/providers/hybrid.js +17 -14
  74. package/lib/cjs/server/storybook/providers/nodejs.js +12 -12
  75. package/lib/cjs/server/{parser.js → testsFiles/parser.js} +1 -14
  76. package/lib/cjs/server/testsFiles/register.js +44 -0
  77. package/lib/cjs/server/update.js +1 -5
  78. package/lib/cjs/server/utils.js +27 -36
  79. package/lib/cjs/server/worker/reporter.js +8 -20
  80. package/lib/cjs/server/worker/worker.js +9 -19
  81. package/lib/cjs/shared/index.js +101 -0
  82. package/lib/cjs/shared/serializeRegExp.js +42 -0
  83. package/lib/cjs/types.js +7 -6
  84. package/lib/esm/client/addon/Manager.js +122 -270
  85. package/lib/esm/client/addon/components/Addon.js +15 -34
  86. package/lib/esm/client/addon/components/Icons.js +10 -6
  87. package/lib/esm/client/addon/components/Panel.js +17 -13
  88. package/lib/esm/client/addon/components/TestSelect.js +11 -9
  89. package/lib/esm/client/addon/components/Tools.js +20 -37
  90. package/lib/esm/client/addon/decorator.js +1 -1
  91. package/lib/esm/client/addon/index.js +2 -0
  92. package/lib/esm/client/addon/preset.ie11.js +59 -0
  93. package/lib/esm/client/addon/preset.js +4 -52
  94. package/lib/esm/client/addon/preset.sb7.js +8 -0
  95. package/lib/esm/client/addon/preview.js +5 -0
  96. package/lib/esm/client/addon/register.js +42 -66
  97. package/lib/esm/client/addon/utils.js +3 -2
  98. package/lib/esm/client/addon/withCreevey.js +156 -363
  99. package/lib/esm/client/shared/components/ImagesView/BlendView.js +21 -17
  100. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +21 -17
  101. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +40 -60
  102. package/lib/esm/client/shared/components/ImagesView/SlideView.js +33 -44
  103. package/lib/esm/client/shared/components/ImagesView/SwapView.js +22 -39
  104. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +12 -8
  105. package/lib/esm/client/shared/components/PageFooter/Paging.js +14 -18
  106. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +22 -18
  107. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +37 -60
  108. package/lib/esm/client/shared/components/ResultsPage.js +36 -64
  109. package/lib/esm/client/shared/creeveyClientApi.js +57 -84
  110. package/lib/esm/client/shared/helpers.js +123 -194
  111. package/lib/esm/client/shared/viewMode.js +4 -4
  112. package/lib/esm/creevey.js +3 -5
  113. package/lib/esm/index.js +2 -4
  114. package/lib/esm/server/config.js +3 -5
  115. package/lib/esm/server/docker.js +2 -2
  116. package/lib/esm/server/extract.js +1 -3
  117. package/lib/esm/server/index.js +1 -1
  118. package/lib/esm/server/loaders/babel/creevey-plugin.js +1 -3
  119. package/lib/esm/server/loaders/babel/helpers.js +12 -22
  120. package/lib/esm/server/loaders/babel/register.js +3 -5
  121. package/lib/esm/server/loaders/webpack/compile.js +35 -52
  122. package/lib/esm/server/loaders/webpack/creevey-loader.js +9 -10
  123. package/lib/esm/server/loaders/webpack/dummy-hmr.js +2 -6
  124. package/lib/esm/server/loaders/webpack/mdx-loader.js +2 -2
  125. package/lib/esm/server/loaders/webpack/start.js +1 -1
  126. package/lib/esm/server/master/index.js +2 -2
  127. package/lib/esm/server/master/pool.js +7 -18
  128. package/lib/esm/server/master/runner.js +53 -66
  129. package/lib/esm/server/master/server.js +5 -3
  130. package/lib/esm/server/messages.js +3 -5
  131. package/lib/esm/server/selenium/browser.js +54 -66
  132. package/lib/esm/server/selenium/selenoid.js +4 -6
  133. package/lib/esm/server/stories.js +16 -32
  134. package/lib/esm/server/storybook/entry.js +5 -22
  135. package/lib/esm/server/storybook/helpers.js +12 -21
  136. package/lib/esm/server/storybook/providers/browser.js +6 -9
  137. package/lib/esm/server/storybook/providers/hybrid.js +10 -13
  138. package/lib/esm/server/storybook/providers/nodejs.js +10 -11
  139. package/lib/esm/server/{parser.js → testsFiles/parser.js} +1 -14
  140. package/lib/esm/server/testsFiles/register.js +31 -0
  141. package/lib/esm/server/update.js +1 -5
  142. package/lib/esm/server/utils.js +18 -31
  143. package/lib/esm/server/worker/reporter.js +8 -20
  144. package/lib/esm/server/worker/worker.js +9 -19
  145. package/lib/esm/shared/index.js +78 -0
  146. package/lib/esm/shared/serializeRegExp.js +24 -0
  147. package/lib/esm/types.js +1 -0
  148. package/lib/types/client/addon/Manager.d.ts +2 -2
  149. package/lib/types/client/addon/components/TestSelect.d.ts +0 -1
  150. package/lib/types/client/addon/index.d.ts +2 -0
  151. package/lib/types/client/addon/preset.d.ts +0 -22
  152. package/lib/types/client/addon/preset.ie11.d.ts +10 -0
  153. package/lib/types/client/addon/preset.sb7.d.ts +2 -0
  154. package/lib/types/client/addon/preview.d.ts +4 -0
  155. package/lib/types/client/addon/utils.d.ts +1 -0
  156. package/lib/types/client/addon/withCreevey.d.ts +1 -1
  157. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +1 -1
  158. package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +0 -1
  159. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +1 -1
  160. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +1 -1
  161. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +1 -1
  162. package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +0 -1
  163. package/lib/types/client/shared/components/PageFooter/Paging.d.ts +0 -1
  164. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +1 -1
  165. package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +0 -1
  166. package/lib/types/client/shared/components/ResultsPage.d.ts +1 -1
  167. package/lib/types/client/web/CreeveyApp.d.ts +0 -1
  168. package/lib/types/client/web/CreeveyLoader.d.ts +1 -2
  169. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +1 -1
  170. package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +0 -1
  171. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +4 -4
  172. package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +0 -1
  173. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +1 -1
  174. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +1 -1
  175. package/lib/types/index.d.ts +4 -2
  176. package/lib/types/server/config.d.ts +1 -1
  177. package/lib/types/server/loaders/babel/register.d.ts +1 -1
  178. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +4 -2
  179. package/lib/types/server/logger.d.ts +6 -2
  180. package/lib/types/server/messages.d.ts +13 -12
  181. package/lib/types/server/selenium/browser.d.ts +5 -3
  182. package/lib/types/server/storybook/entry.d.ts +2 -3
  183. package/lib/types/server/storybook/helpers.d.ts +1 -1
  184. package/lib/types/server/storybook/providers/browser.d.ts +2 -4
  185. package/lib/types/server/storybook/providers/hybrid.d.ts +2 -4
  186. package/lib/types/server/storybook/providers/nodejs.d.ts +3 -3
  187. package/lib/types/server/{parser.d.ts → testsFiles/parser.d.ts} +1 -1
  188. package/lib/types/server/testsFiles/register.d.ts +2 -0
  189. package/lib/types/server/utils.d.ts +5 -1
  190. package/lib/types/{shared.d.ts → shared/index.d.ts} +1 -10
  191. package/lib/types/shared/serializeRegExp.d.ts +9 -0
  192. package/lib/types/types.d.ts +7 -9
  193. package/package.json +119 -102
  194. package/preset/ie11.js +5 -0
  195. package/{preset.js → preset/index.js} +2 -2
  196. package/preset/sb7.js +5 -0
  197. package/types/global.d.ts +5 -0
  198. package/types/mdx.d.ts +3 -2
  199. package/lib/cjs/client/web/1.js +0 -13
  200. package/lib/cjs/client/web/2.js +0 -1
  201. package/lib/cjs/shared.js +0 -107
  202. package/lib/esm/shared.js +0 -76
  203. package/storybook-static/stories.json +0 -21
@@ -3,15 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.withCreevey = withCreevey;
7
6
  exports.capture = capture;
7
+ exports.withCreevey = withCreevey;
8
8
 
9
9
  var Events = _interopRequireWildcard(require("@storybook/core-events"));
10
10
 
11
11
  var polyfill = _interopRequireWildcard(require("event-source-polyfill"));
12
12
 
13
- var _testingLibrary = require("@storybook/testing-library");
14
-
15
13
  var _addons = require("@storybook/addons");
16
14
 
17
15
  var _types = require("../../types");
@@ -20,89 +18,45 @@ var _shared = require("../../shared");
20
18
 
21
19
  var _helpers = require("../shared/helpers");
22
20
 
23
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
-
25
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
26
-
27
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
28
-
29
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
30
-
31
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
32
-
33
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
34
-
35
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
36
-
37
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
38
-
39
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
21
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
40
22
 
41
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
23
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
42
24
 
43
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
44
-
45
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
46
-
47
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
48
-
49
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
50
-
51
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
52
-
53
- if ((typeof process === "undefined" ? "undefined" : _typeof(process)) != 'object' || typeof process.version != 'string') {
25
+ // import { buildQueries, within } from '@storybook/testing-library';
26
+ // import { isInternetExplorer } from './utils';
27
+ if (typeof process != 'object' || typeof process.version != 'string') {
54
28
  // NOTE If you don't use babel-polyfill or any other polyfills that add EventSource for IE11
55
29
  // You don't get hot reload in IE11. So put polyfill for that to better UX
56
30
  // Don't load in nodejs environment
57
31
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
58
- var NativeEventSource = polyfill.NativeEventSource,
59
- EventSourcePolyfill = polyfill.EventSourcePolyfill; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
32
+ const {
33
+ NativeEventSource,
34
+ EventSourcePolyfill
35
+ } = polyfill; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
60
36
 
61
37
  window.EventSource = NativeEventSource || EventSourcePolyfill;
62
38
  }
63
39
 
64
- var 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";
40
+ 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";
65
41
 
66
- function resetCurrentStory(_x) {
67
- return _resetCurrentStory.apply(this, arguments);
68
- }
69
-
70
- function _resetCurrentStory() {
71
- _resetCurrentStory = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(channel) {
72
- return regeneratorRuntime.wrap(function _callee4$(_context4) {
73
- while (1) {
74
- switch (_context4.prev = _context4.next) {
75
- case 0:
76
- setTimeout(function () {
77
- return channel.emit(Events.SET_CURRENT_STORY, {
78
- storyId: true,
79
- name: '',
80
- kind: ''
81
- });
82
- }, 0);
83
- return _context4.abrupt("return", new Promise(function (resolve) {
84
- return channel.once(Events.STORY_MISSING, resolve);
85
- }));
86
-
87
- case 2:
88
- case "end":
89
- return _context4.stop();
90
- }
91
- }
92
- }, _callee4);
93
- }));
94
- return _resetCurrentStory.apply(this, arguments);
42
+ async function resetCurrentStory(channel) {
43
+ setTimeout(() => channel.emit(Events.SET_CURRENT_STORY, {
44
+ storyId: true,
45
+ name: '',
46
+ kind: ''
47
+ }), 0);
48
+ return new Promise(resolve => channel.once(Events.STORY_MISSING, resolve));
95
49
  }
96
50
 
97
51
  function catchRenderError(channel) {
98
- var rejectCallback;
99
- var promise = new Promise(function (_resolve, reject) {
100
- return rejectCallback = reject;
101
- });
52
+ let rejectCallback;
53
+ const promise = new Promise((_resolve, reject) => rejectCallback = reject);
102
54
 
103
55
  function errorHandler(_ref) {
104
- var title = _ref.title,
105
- description = _ref.description;
56
+ let {
57
+ title,
58
+ description
59
+ } = _ref;
106
60
  rejectCallback({
107
61
  message: title,
108
62
  stack: description
@@ -126,10 +80,8 @@ function catchRenderError(channel) {
126
80
  }
127
81
 
128
82
  function waitForStoryRendered(channel) {
129
- var resolveCallback;
130
- var promise = new Promise(function (resolve) {
131
- return resolveCallback = resolve;
132
- });
83
+ let resolveCallback;
84
+ const promise = new Promise(resolve => resolveCallback = resolve);
133
85
 
134
86
  function renderHandler() {
135
87
  resolveCallback();
@@ -147,13 +99,11 @@ function waitForStoryRendered(channel) {
147
99
 
148
100
  function waitForFontsLoaded() {
149
101
  if (!document.fonts) return;
150
- var areFontsLoading = Array.from(document.fonts).some(function (font) {
151
- return font.status == 'loading';
152
- });
102
+ const areFontsLoading = Array.from(document.fonts).some(font => font.status == 'loading');
153
103
 
154
104
  if (areFontsLoading) {
155
- return new Promise(function (resolve) {
156
- var fontsLoadedHandler = function fontsLoadedHandler() {
105
+ return new Promise(resolve => {
106
+ const fontsLoadedHandler = () => {
157
107
  document.fonts.removeEventListener('loadingdone', fontsLoadedHandler);
158
108
  resolve();
159
109
  };
@@ -164,247 +114,133 @@ function waitForFontsLoaded() {
164
114
  }
165
115
 
166
116
  function waitForCaptureCall() {
167
- return new Promise(function (resolve) {
168
- return captureResolver = resolve;
169
- });
117
+ return new Promise(resolve => captureResolver = resolve);
170
118
  }
171
119
 
172
120
  function initCreeveyState() {
173
121
  var _window$localStorage$;
174
122
 
175
- var prevState = JSON.parse((_window$localStorage$ = window.localStorage.getItem('Creevey_Tests')) !== null && _window$localStorage$ !== void 0 ? _window$localStorage$ : '{}');
123
+ const prevState = JSON.parse((_window$localStorage$ = window.localStorage.getItem('Creevey_Tests')) !== null && _window$localStorage$ !== void 0 ? _window$localStorage$ : '{}');
176
124
  if (prevState.creeveyHost) window.__CREEVEY_SERVER_HOST__ = prevState.creeveyHost;
177
125
  if (prevState.creeveyPort) window.__CREEVEY_SERVER_PORT__ = prevState.creeveyPort;
178
126
  if (prevState.setStoriesCounter) setStoriesCounter = prevState.setStoriesCounter;
179
127
  if (prevState.isTestBrowser) isTestBrowser = prevState.isTestBrowser;
180
- window.addEventListener('beforeunload', function () {
128
+ window.addEventListener('beforeunload', () => {
181
129
  window.localStorage.setItem('Creevey_Tests', JSON.stringify({
182
130
  creeveyHost: window.__CREEVEY_SERVER_HOST__,
183
131
  creeveyPort: window.__CREEVEY_SERVER_PORT__,
184
- setStoriesCounter: setStoriesCounter,
185
- isTestBrowser: isTestBrowser
132
+ setStoriesCounter,
133
+ isTestBrowser
186
134
  }));
187
135
  });
188
136
  }
189
137
 
190
- var isTestBrowser = false;
191
- var captureResolver;
192
- var waitForCreevey;
193
- var creeveyReady;
194
- var setStoriesCounter = 0;
138
+ let isTestBrowser = false;
139
+ let captureResolver;
140
+ let waitForCreevey;
141
+ let creeveyReady;
142
+ let setStoriesCounter = 0;
195
143
 
196
144
  function withCreevey() {
197
- var currentStory = '';
198
- var isAnimationDisabled = false;
145
+ let currentStory = '';
146
+ let isAnimationDisabled = false;
199
147
  initCreeveyState();
200
148
 
201
149
  function disableAnimation() {
202
150
  isAnimationDisabled = true;
203
- var style = document.createElement('style');
204
- var textNode = document.createTextNode(disableAnimationsStyles);
151
+ const style = document.createElement('style');
152
+ const textNode = document.createTextNode(disableAnimationsStyles);
205
153
  style.setAttribute('type', 'text/css');
206
154
  style.appendChild(textNode);
207
155
  document.head.appendChild(style);
208
156
  }
209
157
 
210
- function getStories() {
211
- return _getStories.apply(this, arguments);
212
- }
158
+ async function getStories() {
159
+ var _window$__STORYBOOK_S;
213
160
 
214
- function _getStories() {
215
- _getStories = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
216
- var _window$__STORYBOOK_S;
217
-
218
- var storiesPromise, store;
219
- return regeneratorRuntime.wrap(function _callee$(_context) {
220
- while (1) {
221
- switch (_context.prev = _context.next) {
222
- case 0:
223
- storiesPromise = new Promise(function (resolve) {
224
- return _addons.addons.getChannel().once(Events.SET_STORIES, function (data) {
225
- return resolve((0, _shared.serializeRawStories)((0, _shared.denormalizeStoryParameters)(data)));
226
- });
227
- });
228
- store = (_window$__STORYBOOK_S = window.__STORYBOOK_STORY_STORE__) !== null && _window$__STORYBOOK_S !== void 0 ? _window$__STORYBOOK_S : {}; // @ts-expect-error `pushToManager` exists only in Storybook 6.0 - 6.3
229
-
230
- if (!store.pushToManager) {
231
- _context.next = 6;
232
- break;
233
- }
234
-
235
- // @ts-expect-error `pushToManager` exists only in Storybook 6.0 - 6.3
236
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
237
- store.pushToManager();
238
- _context.next = 13;
239
- break;
240
-
241
- case 6:
242
- if (!store.cacheAllCSFFiles) {
243
- _context.next = 12;
244
- break;
245
- }
246
-
247
- _context.next = 9;
248
- return store.cacheAllCSFFiles();
249
-
250
- case 9:
251
- _addons.addons.getChannel().emit(Events.SET_STORIES, store.getSetStoriesPayload());
252
-
253
- _context.next = 13;
254
- break;
255
-
256
- case 12:
257
- return _context.abrupt("return");
258
-
259
- case 13:
260
- _addons.addons.getChannel().on(Events.SET_STORIES, function (data) {
261
- // TODO Figure out how to get only updated stories
262
- // TODO Subscribe on hmr? like use dummy-hmr
263
- setStoriesCounter += 1;
264
- var stories = (0, _shared.serializeRawStories)((0, _shared.denormalizeStoryParameters)(data));
265
- var storiesByFiles = new Map();
266
- Object.values(stories).forEach(function (story) {
267
- var storiesFromFile = storiesByFiles.get(story.parameters.fileName);
268
- if (storiesFromFile) storiesFromFile.push(story);else storiesByFiles.set(story.parameters.fileName, [story]);
269
- });
270
- void fetch("http://".concat((0, _helpers.getConnectionUrl)(), "/stories"), {
271
- method: 'POST',
272
- headers: {
273
- 'Content-Type': 'application/json'
274
- },
275
- body: JSON.stringify({
276
- setStoriesCounter: setStoriesCounter,
277
- stories: _toConsumableArray(storiesByFiles.entries())
278
- })
279
- });
280
- });
281
-
282
- return _context.abrupt("return", storiesPromise);
283
-
284
- case 15:
285
- case "end":
286
- return _context.stop();
287
- }
288
- }
289
- }, _callee);
290
- }));
291
- return _getStories.apply(this, arguments);
292
- }
161
+ const storiesPromise = new Promise(resolve => _addons.addons.getChannel().once(Events.SET_STORIES, data => resolve((0, _shared.serializeRawStories)((0, _shared.denormalizeStoryParameters)(data)))));
162
+ const store = (_window$__STORYBOOK_S = window.__STORYBOOK_STORY_STORE__) !== null && _window$__STORYBOOK_S !== void 0 ? _window$__STORYBOOK_S : {};
163
+
164
+ if (store.cacheAllCSFFiles) {
165
+ await store.cacheAllCSFFiles();
293
166
 
294
- function selectStory(_x2, _x3, _x4, _x5, _x6) {
295
- return _selectStory.apply(this, arguments);
167
+ _addons.addons.getChannel().emit(Events.SET_STORIES, store.getSetStoriesPayload());
168
+ } else return;
169
+
170
+ _addons.addons.getChannel().on(Events.SET_STORIES, data => {
171
+ // TODO Figure out how to get only updated stories
172
+ // TODO Subscribe on hmr? like use dummy-hmr
173
+ setStoriesCounter += 1;
174
+ const stories = (0, _shared.serializeRawStories)((0, _shared.denormalizeStoryParameters)(data));
175
+ const storiesByFiles = new Map();
176
+ Object.values(stories).forEach(story => {
177
+ const storiesFromFile = storiesByFiles.get(story.parameters.fileName);
178
+ if (storiesFromFile) storiesFromFile.push(story);else storiesByFiles.set(story.parameters.fileName, [story]);
179
+ });
180
+ void fetch("http://".concat((0, _helpers.getConnectionUrl)(), "/stories"), {
181
+ method: 'POST',
182
+ headers: {
183
+ 'Content-Type': 'application/json'
184
+ },
185
+ body: JSON.stringify({
186
+ setStoriesCounter,
187
+ stories: [...storiesByFiles.entries()]
188
+ })
189
+ });
190
+ });
191
+
192
+ return storiesPromise;
296
193
  }
297
194
 
298
- function _selectStory() {
299
- _selectStory = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(storyId, kind, name, shouldWaitForReady, callback) {
300
- var channel, waitForReady, isCaptureCalled, renderPromise, errorPromise, capturePromise, _reason$stack, errorMessage;
301
-
302
- return regeneratorRuntime.wrap(function _callee3$(_context3) {
303
- while (1) {
304
- switch (_context3.prev = _context3.next) {
305
- case 0:
306
- if (!isAnimationDisabled) disableAnimation();
307
- isTestBrowser = true;
308
- channel = _addons.addons.getChannel();
309
- waitForReady = shouldWaitForReady ? new Promise(function (resolve) {
310
- return window.__CREEVEY_SET_READY_FOR_CAPTURE__ = resolve;
311
- }) : Promise.resolve();
312
-
313
- if (!(storyId == currentStory)) {
314
- _context3.next = 9;
315
- break;
316
- }
317
-
318
- _context3.next = 7;
319
- return resetCurrentStory(channel);
320
-
321
- case 7:
322
- _context3.next = 10;
323
- break;
324
-
325
- case 9:
326
- currentStory = storyId;
327
-
328
- case 10:
329
- isCaptureCalled = false;
330
- renderPromise = waitForStoryRendered(channel);
331
- errorPromise = catchRenderError(channel);
332
- capturePromise = waitForCaptureCall().then(function () {
333
- return isCaptureCalled = true;
334
- });
335
- setTimeout(function () {
336
- return channel.emit(Events.SET_CURRENT_STORY, {
337
- storyId: storyId,
338
- name: name,
339
- kind: kind
340
- });
341
- }, 0);
342
- _context3.prev = 15;
343
- _context3.next = 18;
344
- return Promise.race([_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
345
- return regeneratorRuntime.wrap(function _callee2$(_context2) {
346
- while (1) {
347
- switch (_context2.prev = _context2.next) {
348
- case 0:
349
- _context2.next = 2;
350
- return Promise.race([renderPromise, capturePromise]);
351
-
352
- case 2:
353
- _context2.next = 4;
354
- return waitForFontsLoaded();
355
-
356
- case 4:
357
- _context2.next = 6;
358
- return waitForReady;
359
-
360
- case 6:
361
- case "end":
362
- return _context2.stop();
363
- }
364
- }
365
- }, _callee2);
366
- }))(), errorPromise]);
367
-
368
- case 18:
369
- callback([null, isCaptureCalled]);
370
- _context3.next = 25;
371
- break;
372
-
373
- case 21:
374
- _context3.prev = 21;
375
- _context3.t0 = _context3["catch"](15);
376
- // NOTE Event `STORY_THREW_EXCEPTION` triggered only in react and vue frameworks and return Error instance
377
- // NOTE Event `STORY_ERRORED` return error-like object without `name` field
378
- errorMessage = _context3.t0 instanceof Error ? (_reason$stack = _context3.t0.stack) !== null && _reason$stack !== void 0 ? _reason$stack : _context3.t0.message : (0, _types.isObject)(_context3.t0) ? "".concat(_context3.t0.message, "\n ").concat(_context3.t0.stack) : _context3.t0;
379
- callback([errorMessage]);
380
-
381
- case 25:
382
- _context3.prev = 25;
383
- renderPromise.cancel();
384
- errorPromise.cancel();
385
- return _context3.finish(25);
386
-
387
- case 29:
388
- case "end":
389
- return _context3.stop();
390
- }
391
- }
392
- }, _callee3, null, [[15, 21, 25, 29]]);
393
- }));
394
- return _selectStory.apply(this, arguments);
195
+ async function selectStory(storyId, kind, name, shouldWaitForReady, callback) {
196
+ if (!isAnimationDisabled) disableAnimation();
197
+ isTestBrowser = true;
198
+
199
+ const channel = _addons.addons.getChannel();
200
+
201
+ const waitForReady = shouldWaitForReady ? new Promise(resolve => window.__CREEVEY_SET_READY_FOR_CAPTURE__ = resolve) : Promise.resolve();
202
+ if (storyId == currentStory) await resetCurrentStory(channel);else currentStory = storyId;
203
+ let isCaptureCalled = false;
204
+ const renderPromise = waitForStoryRendered(channel);
205
+ const errorPromise = catchRenderError(channel);
206
+ const capturePromise = waitForCaptureCall().then(() => isCaptureCalled = true);
207
+ setTimeout(() => channel.emit(Events.SET_CURRENT_STORY, {
208
+ storyId,
209
+ name,
210
+ kind
211
+ }), 0);
212
+
213
+ try {
214
+ await Promise.race([(async () => {
215
+ await Promise.race([renderPromise, capturePromise]);
216
+ await waitForFontsLoaded();
217
+ await waitForReady;
218
+ })(), errorPromise]);
219
+ callback([null, isCaptureCalled]);
220
+ } catch (reason) {
221
+ var _reason$stack;
222
+
223
+ // NOTE Event `STORY_THREW_EXCEPTION` triggered only in react and vue frameworks and return Error instance
224
+ // NOTE Event `STORY_ERRORED` return error-like object without `name` field
225
+ const errorMessage = reason instanceof Error ? (_reason$stack = reason.stack) !== null && _reason$stack !== void 0 ? _reason$stack : reason.message : (0, _types.isObject)(reason) ? "".concat(reason.message, "\n ").concat(reason.stack) : reason;
226
+ callback([errorMessage]);
227
+ } finally {
228
+ renderPromise.cancel();
229
+ errorPromise.cancel();
230
+ }
395
231
  }
396
232
 
397
233
  function updateGlobals(globals) {
398
234
  _addons.addons.getChannel().emit(Events.UPDATE_GLOBALS, {
399
- globals: globals
235
+ globals
400
236
  });
401
237
  }
402
238
 
403
239
  function insertIgnoreStyles(ignoreSelectors) {
404
- var stylesElement = document.createElement('style');
240
+ const stylesElement = document.createElement('style');
405
241
  stylesElement.setAttribute('type', 'text/css');
406
242
  document.head.appendChild(stylesElement);
407
- ignoreSelectors.forEach(function (selector) {
243
+ ignoreSelectors.forEach(selector => {
408
244
  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 ");
409
245
  });
410
246
  return stylesElement;
@@ -418,17 +254,17 @@ function withCreevey() {
418
254
 
419
255
  function hasPlayCompletedYet(callback) {
420
256
  creeveyReady();
421
- var isCaptureCalled = false;
422
- var isPlayCompleted = false;
257
+ let isCaptureCalled = false;
258
+ let isPlayCompleted = false;
423
259
 
424
- var channel = _addons.addons.getChannel();
260
+ const channel = _addons.addons.getChannel();
425
261
 
426
- void waitForStoryRendered(channel).then(function () {
262
+ void waitForStoryRendered(channel).then(() => {
427
263
  if (isCaptureCalled) return;
428
264
  isPlayCompleted = true;
429
265
  callback(true);
430
266
  });
431
- void waitForCaptureCall().then(function () {
267
+ void waitForCaptureCall().then(() => {
432
268
  if (isPlayCompleted) return;
433
269
  isCaptureCalled = true;
434
270
  callback(false);
@@ -441,49 +277,35 @@ function withCreevey() {
441
277
  window.__CREEVEY_INSERT_IGNORE_STYLES__ = insertIgnoreStyles;
442
278
  window.__CREEVEY_REMOVE_IGNORE_STYLES__ = removeIgnoreStyles;
443
279
  window.__CREEVEY_HAS_PLAY_COMPLETED_YET__ = hasPlayCompletedYet;
444
- window.__CREEVEY_SET_READY_FOR_CAPTURE__ = _types.noop;
280
+ window.__CREEVEY_SET_READY_FOR_CAPTURE__ = _types.noop; // const queryAllByQuery = (container: HTMLElement, query: string): HTMLElement[] =>
281
+ // [...container.querySelectorAll(query)].filter((e) => e instanceof HTMLElement) as HTMLElement[];
282
+ // const getMultipleError = (_: Element | null, query: string): string => `Found multiple elements by query: ${query}`;
283
+ // const getMissingError = (_: Element | null, query: string): string => `Unable to find an element by query: ${query}`;
284
+ // const [queryByQuery, getAllByQuery, getByQuery, findAllByQuery, findByQuery] = buildQueries(
285
+ // queryAllByQuery,
286
+ // getMultipleError,
287
+ // getMissingError,
288
+ // );
289
+ // const queries = {
290
+ // queryByQuery,
291
+ // getAllByQuery,
292
+ // getByQuery,
293
+ // findAllByQuery,
294
+ // findByQuery,
295
+ // };
445
296
 
446
- var queryAllByQuery = function queryAllByQuery(container, query) {
447
- return _toConsumableArray(container.querySelectorAll(query)).filter(function (e) {
448
- return e instanceof HTMLElement;
449
- });
450
- };
451
-
452
- var getMultipleError = function getMultipleError(_, query) {
453
- return "Found multiple elements by query: ".concat(query);
454
- };
455
-
456
- var getMissingError = function getMissingError(_, query) {
457
- return "Unable to find an element by query: ".concat(query);
458
- };
459
-
460
- var _buildQueries = (0, _testingLibrary.buildQueries)(queryAllByQuery, getMultipleError, getMissingError),
461
- _buildQueries2 = _slicedToArray(_buildQueries, 5),
462
- queryByQuery = _buildQueries2[0],
463
- getAllByQuery = _buildQueries2[1],
464
- getByQuery = _buildQueries2[2],
465
- findAllByQuery = _buildQueries2[3],
466
- findByQuery = _buildQueries2[4];
467
-
468
- var queries = {
469
- queryByQuery: queryByQuery,
470
- getAllByQuery: getAllByQuery,
471
- getByQuery: getByQuery,
472
- findAllByQuery: findAllByQuery,
473
- findByQuery: findByQuery
474
- };
475
297
  return (0, _addons.makeDecorator)({
476
298
  name: 'withCreevey',
477
299
  parameterName: 'creevey',
478
- wrapper: function wrapper(getStory, context) {
300
+ wrapper: (getStory, context) => {
479
301
  var _ref2;
480
302
 
481
303
  // TODO Define proper types, like captureElement is a promise
482
- var _context$parameters$c = context.parameters.creevey = (_ref2 = context.parameters.creevey) !== null && _ref2 !== void 0 ? _ref2 : {},
483
- captureElement = _context$parameters$c.captureElement;
484
-
304
+ const {
305
+ captureElement
306
+ } = context.parameters.creevey = (_ref2 = context.parameters.creevey) !== null && _ref2 !== void 0 ? _ref2 : {};
485
307
  Object.defineProperty(context.parameters.creevey, 'captureElement', {
486
- get: function get() {
308
+ get() {
487
309
  switch (true) {
488
310
  case captureElement === undefined:
489
311
  return Promise.resolve(context.canvasElement);
@@ -492,13 +314,17 @@ function withCreevey() {
492
314
  return Promise.resolve(document.documentElement);
493
315
 
494
316
  case typeof captureElement == 'string':
495
- return (0, _testingLibrary.within)(context.canvasElement, queries).findByQuery(captureElement);
317
+ return Promise.resolve(context.canvasElement.querySelector(captureElement));
318
+ // return isInternetExplorer // some code from testing-library makes IE hang
319
+ // ? Promise.resolve(context.canvasElement.querySelector(captureElement as string))
320
+ // : within<typeof queries>(context.canvasElement, queries).findByQuery(captureElement as string);
496
321
 
497
322
  case typeof captureElement == 'function':
498
323
  // TODO Define type for it
499
324
  return Promise.resolve(captureElement(context));
500
325
  }
501
326
  },
327
+
502
328
  enumerable: true,
503
329
  configurable: true
504
330
  });
@@ -507,50 +333,19 @@ function withCreevey() {
507
333
  });
508
334
  }
509
335
 
510
- function capture(_x7) {
511
- return _capture.apply(this, arguments);
512
- }
513
-
514
- function _capture() {
515
- _capture = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(options) {
516
- return regeneratorRuntime.wrap(function _callee5$(_context5) {
517
- while (1) {
518
- switch (_context5.prev = _context5.next) {
519
- case 0:
520
- if (isTestBrowser) {
521
- _context5.next = 2;
522
- break;
523
- }
524
-
525
- return _context5.abrupt("return");
526
-
527
- case 2:
528
- captureResolver();
529
- waitForCreevey = new Promise(function (resolve) {
530
- return creeveyReady = resolve;
531
- });
532
- _context5.next = 6;
533
- return fetch("http://".concat((0, _helpers.getConnectionUrl)(), "/capture"), {
534
- method: 'POST',
535
- headers: {
536
- 'Content-Type': 'application/json'
537
- },
538
- body: JSON.stringify({
539
- workerId: window.__CREEVEY_WORKER_ID__,
540
- options: options
541
- })
542
- });
543
-
544
- case 6:
545
- _context5.next = 8;
546
- return waitForCreevey;
547
-
548
- case 8:
549
- case "end":
550
- return _context5.stop();
551
- }
552
- }
553
- }, _callee5);
554
- }));
555
- return _capture.apply(this, arguments);
336
+ async function capture(options) {
337
+ if (!isTestBrowser) return;
338
+ captureResolver();
339
+ waitForCreevey = new Promise(resolve => creeveyReady = resolve);
340
+ await fetch("http://".concat((0, _helpers.getConnectionUrl)(), "/capture"), {
341
+ method: 'POST',
342
+ headers: {
343
+ 'Content-Type': 'application/json'
344
+ },
345
+ body: JSON.stringify({
346
+ workerId: window.__CREEVEY_WORKER_ID__,
347
+ options
348
+ })
349
+ });
350
+ await waitForCreevey;
556
351
  }