creevey 0.9.0-beta.13 → 0.9.0-beta.14

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 (216) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/.yarnrc.yml +1 -0
  3. package/lib/cjs/cli.js +1 -0
  4. package/lib/cjs/client/addon/Manager.js +151 -223
  5. package/lib/cjs/client/addon/components/Addon.js +2 -9
  6. package/lib/cjs/client/addon/components/Icons.js +1 -7
  7. package/lib/cjs/client/addon/components/Panel.js +5 -18
  8. package/lib/cjs/client/addon/components/TestSelect.js +12 -25
  9. package/lib/cjs/client/addon/components/Tools.js +17 -28
  10. package/lib/cjs/client/addon/decorator.js +1 -4
  11. package/lib/cjs/client/addon/index.js +0 -4
  12. package/lib/cjs/client/addon/preset.js +3 -12
  13. package/lib/cjs/client/addon/preview.js +1 -4
  14. package/lib/cjs/client/addon/readyForCapture.js +1 -4
  15. package/lib/cjs/client/addon/register.js +11 -26
  16. package/lib/cjs/client/addon/utils.js +1 -9
  17. package/lib/cjs/client/addon/withCreevey.js +55 -134
  18. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +5 -17
  19. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +8 -24
  20. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +7 -23
  21. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +7 -22
  22. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +5 -17
  23. package/lib/cjs/client/shared/components/ImagesView/index.js +0 -5
  24. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +1 -8
  25. package/lib/cjs/client/shared/components/PageFooter/Paging.js +2 -19
  26. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +21 -17
  27. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +5 -24
  28. package/lib/cjs/client/shared/components/ResultsPage.js +9 -37
  29. package/lib/cjs/client/shared/creeveyClientApi.js +3 -13
  30. package/lib/cjs/client/shared/helpers.js +21 -75
  31. package/lib/cjs/client/shared/viewMode.js +2 -6
  32. package/lib/cjs/client/web/192.js +1 -0
  33. package/lib/cjs/client/web/632.js +43 -0
  34. package/lib/cjs/client/web/794.js +1 -0
  35. package/lib/cjs/client/web/main.js +78 -1
  36. package/lib/cjs/client/web/main.js.LICENSE.txt +0 -15
  37. package/lib/cjs/creevey.js +5 -21
  38. package/lib/cjs/index.js +0 -15
  39. package/lib/cjs/server/config.js +13 -33
  40. package/lib/cjs/server/docker.js +5 -27
  41. package/lib/cjs/server/index.js +8 -33
  42. package/lib/cjs/server/logger.js +5 -19
  43. package/lib/cjs/server/master/api.js +1 -14
  44. package/lib/cjs/server/master/index.js +15 -46
  45. package/lib/cjs/server/master/master.js +6 -21
  46. package/lib/cjs/server/master/pool.js +2 -37
  47. package/lib/cjs/server/master/runner.js +15 -42
  48. package/lib/cjs/server/master/server.js +5 -27
  49. package/lib/cjs/server/messages.js +7 -53
  50. package/lib/cjs/server/selenium/browser.js +51 -136
  51. package/lib/cjs/server/selenium/index.js +0 -4
  52. package/lib/cjs/server/selenium/selenoid.js +7 -33
  53. package/lib/cjs/server/stories.js +25 -30
  54. package/lib/cjs/server/storybook/providers/browser.js +5 -18
  55. package/lib/cjs/server/storybook/providers/hybrid.js +9 -29
  56. package/lib/cjs/server/testsFiles/parser.js +3 -19
  57. package/lib/cjs/server/testsFiles/register.js +7 -9
  58. package/lib/cjs/server/update.js +3 -20
  59. package/lib/cjs/server/utils.js +9 -41
  60. package/lib/cjs/server/worker/chai-image.js +1 -27
  61. package/lib/cjs/server/worker/helpers.js +2 -12
  62. package/lib/cjs/server/worker/index.js +1 -3
  63. package/lib/cjs/server/worker/reporter.js +8 -24
  64. package/lib/cjs/server/worker/worker.js +5 -49
  65. package/lib/cjs/shared/index.js +22 -36
  66. package/lib/cjs/shared/serializeRegExp.js +0 -8
  67. package/lib/cjs/types.js +4 -14
  68. package/lib/esm/cli.js +1 -1
  69. package/lib/esm/client/addon/Manager.js +151 -214
  70. package/lib/esm/client/addon/components/Panel.js +4 -6
  71. package/lib/esm/client/addon/components/TestSelect.js +11 -17
  72. package/lib/esm/client/addon/components/Tools.js +15 -14
  73. package/lib/esm/client/addon/preset.js +2 -8
  74. package/lib/esm/client/addon/readyForCapture.js +1 -3
  75. package/lib/esm/client/addon/register.js +6 -8
  76. package/lib/esm/client/addon/utils.js +0 -5
  77. package/lib/esm/client/addon/withCreevey.js +54 -116
  78. package/lib/esm/client/shared/components/ImagesView/BlendView.js +1 -1
  79. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +6 -8
  80. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +3 -4
  81. package/lib/esm/client/shared/components/ImagesView/SlideView.js +3 -3
  82. package/lib/esm/client/shared/components/ImagesView/SwapView.js +1 -1
  83. package/lib/esm/client/shared/components/PageFooter/Paging.js +1 -11
  84. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +18 -7
  85. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +3 -8
  86. package/lib/esm/client/shared/components/ResultsPage.js +6 -15
  87. package/lib/esm/client/shared/creeveyClientApi.js +3 -10
  88. package/lib/esm/client/shared/helpers.js +21 -47
  89. package/lib/esm/client/web/192.js +1 -0
  90. package/lib/esm/client/web/632.js +43 -0
  91. package/lib/esm/client/web/794.js +1 -0
  92. package/lib/esm/client/web/index.html +19 -0
  93. package/lib/esm/client/web/main.js +79 -0
  94. package/lib/esm/client/web/main.js.LICENSE.txt +34 -0
  95. package/lib/esm/creevey.js +4 -8
  96. package/lib/esm/index.js +0 -1
  97. package/lib/esm/server/config.js +7 -14
  98. package/lib/esm/server/docker.js +4 -12
  99. package/lib/esm/server/index.js +7 -21
  100. package/lib/esm/server/logger.js +0 -1
  101. package/lib/esm/server/master/api.js +0 -9
  102. package/lib/esm/server/master/index.js +15 -32
  103. package/lib/esm/server/master/master.js +2 -7
  104. package/lib/esm/server/master/pool.js +0 -23
  105. package/lib/esm/server/master/runner.js +14 -27
  106. package/lib/esm/server/master/server.js +4 -9
  107. package/lib/esm/server/messages.js +6 -38
  108. package/lib/esm/server/selenium/browser.js +50 -114
  109. package/lib/esm/server/selenium/selenoid.js +6 -17
  110. package/lib/esm/server/stories.js +24 -20
  111. package/lib/esm/server/storybook/providers/browser.js +4 -8
  112. package/lib/esm/server/storybook/providers/hybrid.js +6 -14
  113. package/lib/esm/server/testsFiles/parser.js +0 -6
  114. package/lib/esm/server/testsFiles/register.js +5 -2
  115. package/lib/esm/server/update.js +0 -8
  116. package/lib/esm/server/utils.js +3 -11
  117. package/lib/esm/server/worker/chai-image.js +0 -21
  118. package/lib/esm/server/worker/helpers.js +2 -9
  119. package/lib/esm/server/worker/reporter.js +7 -10
  120. package/lib/esm/server/worker/worker.js +4 -25
  121. package/lib/esm/shared/index.js +24 -25
  122. package/lib/esm/types.js +4 -1
  123. package/lib/types/client/addon/Manager.d.ts +1 -1
  124. package/lib/types/client/addon/components/Addon.d.ts +1 -0
  125. package/lib/types/client/addon/components/Icons.d.ts +1 -0
  126. package/lib/types/client/addon/components/Panel.d.ts +1 -0
  127. package/lib/types/client/addon/components/TestSelect.d.ts +1 -0
  128. package/lib/types/client/addon/components/Tools.d.ts +1 -0
  129. package/lib/types/client/addon/decorator.d.ts +1 -1
  130. package/lib/types/client/addon/preset.d.ts +2 -2
  131. package/lib/types/client/addon/preview.d.ts +1 -1
  132. package/lib/types/client/addon/withCreevey.d.ts +3 -2
  133. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +3 -1
  134. package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +1 -0
  135. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +3 -1
  136. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +3 -1
  137. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +3 -1
  138. package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +1 -0
  139. package/lib/types/client/shared/components/PageFooter/Paging.d.ts +1 -0
  140. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +3 -1
  141. package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +1 -0
  142. package/lib/types/client/shared/components/ResultsPage.d.ts +3 -1
  143. package/lib/types/client/web/CreeveyApp.d.ts +1 -0
  144. package/lib/types/client/web/CreeveyLoader.d.ts +2 -1
  145. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +4 -1
  146. package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +1 -0
  147. package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +1 -0
  148. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +19 -14
  149. package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +1 -0
  150. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +3 -1
  151. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +3 -1
  152. package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +1 -0
  153. package/lib/types/shared/index.d.ts +1 -1
  154. package/lib/types/types.d.ts +7 -28
  155. package/package.json +60 -78
  156. package/lib/cjs/client/addon/preset.ie11.js +0 -74
  157. package/lib/cjs/client/addon/preset.sb7.js +0 -19
  158. package/lib/cjs/client/web/142.js +0 -2
  159. package/lib/cjs/client/web/142.js.LICENSE.txt +0 -12
  160. package/lib/cjs/client/web/32.js +0 -1
  161. package/lib/cjs/client/web/551.js +0 -1
  162. package/lib/cjs/client/web/566.js +0 -2
  163. package/lib/cjs/client/web/566.js.LICENSE.txt +0 -31
  164. package/lib/cjs/client/web/691.js +0 -2
  165. package/lib/cjs/client/web/691.js.LICENSE.txt +0 -8
  166. package/lib/cjs/client/web/725.js +0 -1
  167. package/lib/cjs/server/extract.js +0 -46
  168. package/lib/cjs/server/loaders/babel/creevey-plugin.js +0 -86
  169. package/lib/cjs/server/loaders/babel/helpers.js +0 -469
  170. package/lib/cjs/server/loaders/babel/register.js +0 -124
  171. package/lib/cjs/server/loaders/hooks/mdx.js +0 -30
  172. package/lib/cjs/server/loaders/hooks/svelte.js +0 -65
  173. package/lib/cjs/server/loaders/webpack/compile.js +0 -269
  174. package/lib/cjs/server/loaders/webpack/creevey-loader.js +0 -172
  175. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +0 -39
  176. package/lib/cjs/server/loaders/webpack/mdx-loader.js +0 -72
  177. package/lib/cjs/server/loaders/webpack/start.js +0 -41
  178. package/lib/cjs/server/storybook/entry.js +0 -53
  179. package/lib/cjs/server/storybook/helpers.js +0 -158
  180. package/lib/cjs/server/storybook/providers/nodejs.js +0 -239
  181. package/lib/esm/client/addon/preset.ie11.js +0 -59
  182. package/lib/esm/client/addon/preset.sb7.js +0 -8
  183. package/lib/esm/server/extract.js +0 -32
  184. package/lib/esm/server/loaders/babel/creevey-plugin.js +0 -72
  185. package/lib/esm/server/loaders/babel/helpers.js +0 -452
  186. package/lib/esm/server/loaders/babel/register.js +0 -103
  187. package/lib/esm/server/loaders/hooks/mdx.js +0 -15
  188. package/lib/esm/server/loaders/hooks/svelte.js +0 -49
  189. package/lib/esm/server/loaders/webpack/compile.js +0 -246
  190. package/lib/esm/server/loaders/webpack/creevey-loader.js +0 -152
  191. package/lib/esm/server/loaders/webpack/dummy-hmr.js +0 -32
  192. package/lib/esm/server/loaders/webpack/mdx-loader.js +0 -58
  193. package/lib/esm/server/loaders/webpack/start.js +0 -27
  194. package/lib/esm/server/storybook/entry.js +0 -27
  195. package/lib/esm/server/storybook/helpers.js +0 -97
  196. package/lib/esm/server/storybook/providers/nodejs.js +0 -216
  197. package/lib/types/client/addon/preset.ie11.d.ts +0 -10
  198. package/lib/types/client/addon/preset.sb7.d.ts +0 -2
  199. package/lib/types/server/extract.d.ts +0 -2
  200. package/lib/types/server/loaders/babel/creevey-plugin.d.ts +0 -1
  201. package/lib/types/server/loaders/babel/helpers.d.ts +0 -19
  202. package/lib/types/server/loaders/babel/register.d.ts +0 -5
  203. package/lib/types/server/loaders/hooks/mdx.d.ts +0 -1
  204. package/lib/types/server/loaders/hooks/svelte.d.ts +0 -1
  205. package/lib/types/server/loaders/webpack/compile.d.ts +0 -2
  206. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +0 -4
  207. package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +0 -10
  208. package/lib/types/server/loaders/webpack/mdx-loader.d.ts +0 -6
  209. package/lib/types/server/loaders/webpack/start.d.ts +0 -1
  210. package/lib/types/server/storybook/entry.d.ts +0 -17
  211. package/lib/types/server/storybook/helpers.d.ts +0 -24
  212. package/lib/types/server/storybook/providers/nodejs.d.ts +0 -9
  213. package/preset/ie11.js +0 -5
  214. package/preset/index.js +0 -9
  215. package/preset/sb7.js +0 -5
  216. package/types/mdx.d.ts +0 -7
@@ -4,25 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Tools = void 0;
7
-
8
7
  var _react = _interopRequireWildcard(require("react"));
9
-
10
8
  var _components = require("@storybook/components");
11
-
12
9
  var _Icons = require("./Icons");
13
-
14
10
  var _qs = require("qs");
15
-
16
11
  var _theming = require("@storybook/theming");
17
-
18
12
  var _types = require("../../../types");
19
-
20
13
  var _helpers = require("../../shared/helpers");
21
-
22
- 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); }
23
-
24
- 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; }
25
-
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
26
16
  const Button = (0, _theming.styled)(_components.IconButton)({
27
17
  '&:disabled': {
28
18
  opacity: 0.5,
@@ -32,7 +22,6 @@ const Button = (0, _theming.styled)(_components.IconButton)({
32
22
  color: 'inherit'
33
23
  }
34
24
  });
35
-
36
25
  const Tools = _ref => {
37
26
  let {
38
27
  manager
@@ -57,29 +46,30 @@ const Tools = _ref => {
57
46
  return unsubscribe;
58
47
  }, [manager]);
59
48
  if (!test) return null;
60
-
61
49
  function renderButton(type, title, onClick, icon) {
62
50
  const handleClick = () => {
63
51
  setButtonClicked(type);
64
52
  onClick();
65
53
  };
66
-
67
54
  const disabled = isRunning && buttonClicked != null && buttonClicked !== type;
68
- return /*#__PURE__*/_react.default.createElement(Button, {
69
- onClick: () => {
70
- isRunning ? manager.onStop() : handleClick();
71
- },
72
- title: disabled ? '' : title,
73
- disabled: disabled
74
- }, buttonClicked === type && isRunning ? /*#__PURE__*/_react.default.createElement(_components.Icons, {
75
- icon: 'stop'
76
- }) : icon);
55
+ return (
56
+ /*#__PURE__*/
57
+ // @ts-expect-error Fixed in https://github.com/storybookjs/storybook/pull/26623
58
+ _react.default.createElement(Button, {
59
+ onClick: () => {
60
+ isRunning ? manager.onStop() : handleClick();
61
+ },
62
+ title: disabled ? '' : title,
63
+ disabled: disabled
64
+ }, buttonClicked === type && isRunning ? /*#__PURE__*/_react.default.createElement(_components.Icons, {
65
+ icon: 'stop'
66
+ }) : icon)
67
+ );
77
68
  }
78
-
79
69
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_components.IconButton, {
80
- href: "http://localhost:".concat(__CREEVEY_CLIENT_PORT__ || __CREEVEY_SERVER_PORT__ || 3000, "/?").concat((0, _qs.stringify)({
70
+ href: `http://localhost:${__CREEVEY_CLIENT_PORT__ || __CREEVEY_SERVER_PORT__ || 3000}/?${(0, _qs.stringify)({
81
71
  testPath: (0, _helpers.getTestPath)(test)
82
- })),
72
+ })}`,
83
73
  target: "_blank",
84
74
  title: "Show in Creevey UI"
85
75
  }, /*#__PURE__*/_react.default.createElement(_components.Icons, {
@@ -91,5 +81,4 @@ const Tools = _ref => {
91
81
  icon: "play"
92
82
  })));
93
83
  };
94
-
95
84
  exports.Tools = Tools;
@@ -4,8 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.decorators = void 0;
7
-
8
7
  var _withCreevey = require("./withCreevey");
9
-
10
- const decorators = [(0, _withCreevey.withCreevey)()];
11
- exports.decorators = decorators;
8
+ const decorators = exports.decorators = [(0, _withCreevey.withCreevey)()];
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  var _withCreevey = require("./withCreevey");
8
-
9
7
  Object.keys(_withCreevey).forEach(function (key) {
10
8
  if (key === "default" || key === "__esModule") return;
11
9
  if (key in exports && exports[key] === _withCreevey[key]) return;
@@ -16,9 +14,7 @@ Object.keys(_withCreevey).forEach(function (key) {
16
14
  }
17
15
  });
18
16
  });
19
-
20
17
  var _readyForCapture = require("./readyForCapture");
21
-
22
18
  Object.keys(_readyForCapture).forEach(function (key) {
23
19
  if (key === "default" || key === "__esModule") return;
24
20
  if (key in exports && exports[key] === _readyForCapture[key]) return;
@@ -3,15 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.config = config;
7
- exports.managerEntries = managerEntries;
8
-
9
- function config() {
10
- let entry = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
11
- return [...entry, require.resolve('./decorator')];
12
- }
13
-
14
- function managerEntries() {
15
- let entry = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
16
- return [...entry, require.resolve('./register')];
17
- }
6
+ exports.previewAnnotations = exports.managerEntries = void 0;
7
+ const previewAnnotations = exports.previewAnnotations = [require.resolve('./preview')];
8
+ const managerEntries = exports.managerEntries = [require.resolve('./register')];
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _withCreevey = require("./withCreevey");
9
-
10
8
  const preview = {
11
9
  decorators: [(0, _withCreevey.withCreevey)()]
12
10
  };
13
- var _default = preview;
14
- exports.default = _default;
11
+ var _default = exports.default = preview;
@@ -4,9 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.readyForCapture = readyForCapture;
7
-
8
7
  function readyForCapture() {
9
- var _window$__CREEVEY_SET, _window;
10
-
11
- (_window$__CREEVEY_SET = (_window = window).__CREEVEY_SET_READY_FOR_CAPTURE__) === null || _window$__CREEVEY_SET === void 0 ? void 0 : _window$__CREEVEY_SET.call(_window);
8
+ window.__CREEVEY_SET_READY_FOR_CAPTURE__?.();
12
9
  }
@@ -5,64 +5,49 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ADDON_ID = void 0;
7
7
  exports.registerCreeveyPanels = registerCreeveyPanels;
8
-
9
- var _addons = require("@storybook/addons");
10
-
8
+ var _managerApi = require("@storybook/manager-api");
11
9
  var _react = _interopRequireDefault(require("react"));
12
-
13
10
  var _Addon = require("./components/Addon");
14
-
15
11
  var _Tools = require("./components/Tools");
16
-
17
12
  var _Manager = require("./Manager");
18
-
19
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
-
21
- const ADDON_ID = 'creevey';
22
- exports.ADDON_ID = ADDON_ID;
23
-
24
- _addons.addons.register(ADDON_ID, api => {
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ const ADDON_ID = exports.ADDON_ID = 'creevey';
15
+ _managerApi.addons.register(ADDON_ID, api => {
25
16
  void registerCreeveyPanels(api);
26
17
  });
27
-
28
18
  async function registerCreeveyPanels(storybookApi) {
29
19
  const manager = new _Manager.CreeveyManager(storybookApi);
30
-
31
- _addons.addons.addPanel("".concat(ADDON_ID, "/panel/run"), {
32
- title: "Creevey/Run",
20
+ _managerApi.addons.add(`${ADDON_ID}/panel/run`, {
21
+ title: `Creevey/Run`,
33
22
  match: _ref => {
34
23
  let {
35
24
  viewMode
36
25
  } = _ref;
37
26
  return !!(viewMode && /^story$/.exec(viewMode));
38
27
  },
39
- type: _addons.types.TOOL,
28
+ type: _managerApi.types.TOOL,
40
29
  // eslint-disable-next-line react/display-name
41
30
  render: () => /*#__PURE__*/_react.default.createElement(_Tools.Tools, {
42
31
  manager
43
32
  })
44
33
  });
45
-
46
34
  await manager.initAll();
47
35
  const browsers = manager.getBrowsers();
48
36
  browsers.forEach(browser => {
49
- const panelId = "".concat(ADDON_ID, "/panel/").concat(browser);
37
+ const panelId = `${ADDON_ID}/panel/${browser}`;
50
38
  const title = manager.getTabTitle(browser);
51
-
52
- _addons.addons.addPanel(panelId, {
39
+ _managerApi.addons.add(panelId, {
53
40
  title,
54
- type: _addons.types.PANEL,
41
+ type: _managerApi.types.PANEL,
55
42
  paramKey: browser,
56
43
  // NOTE key = PANEL_ID needs to correct render button in addons panel
57
44
  // eslint-disable-next-line react/display-name
58
45
  render: _ref2 => {
59
46
  let {
60
- active,
61
- key
47
+ active
62
48
  } = _ref2;
63
49
  return /*#__PURE__*/_react.default.createElement(_Addon.Addon, {
64
50
  active,
65
- key,
66
51
  manager,
67
52
  browser
68
53
  });
@@ -5,31 +5,25 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getEmojiByTestStatus = getEmojiByTestStatus;
7
7
  exports.isInternetExplorer = void 0;
8
-
9
8
  function getEmojiByTestStatus(status) {
10
9
  let skip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
11
-
12
10
  switch (status) {
13
11
  case 'failed':
14
12
  {
15
13
  return '❌';
16
14
  }
17
-
18
15
  case 'success':
19
16
  {
20
17
  return '✔';
21
18
  }
22
-
23
19
  case 'running':
24
20
  {
25
21
  return '🟡';
26
22
  }
27
-
28
23
  case 'pending':
29
24
  {
30
25
  return '🕗';
31
26
  }
32
-
33
27
  default:
34
28
  {
35
29
  if (skip) return '⏸';
@@ -37,6 +31,4 @@ function getEmojiByTestStatus(status) {
37
31
  }
38
32
  }
39
33
  }
40
-
41
- const isInternetExplorer = navigator.userAgent.includes('Trident/');
42
- exports.isInternetExplorer = isInternetExplorer;
34
+ const isInternetExplorer = exports.isInternetExplorer = navigator.userAgent.includes('Trident/');
@@ -5,40 +5,26 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.capture = capture;
7
7
  exports.withCreevey = withCreevey;
8
-
9
8
  var Events = _interopRequireWildcard(require("@storybook/core-events"));
10
-
11
- var polyfill = _interopRequireWildcard(require("event-source-polyfill"));
12
-
13
- var _addons = require("@storybook/addons");
14
-
9
+ var _previewApi = require("@storybook/preview-api");
15
10
  var _types = require("../../types");
16
-
17
11
  var _shared = require("../../shared");
18
-
19
12
  var _helpers = require("../shared/helpers");
20
-
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); }
22
-
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; }
24
-
25
- // import { buildQueries, within } from '@storybook/testing-library';
26
- // import { isInternetExplorer } from './utils';
27
- if (typeof process != 'object' || typeof process.version != 'string') {
28
- // NOTE If you don't use babel-polyfill or any other polyfills that add EventSource for IE11
29
- // You don't get hot reload in IE11. So put polyfill for that to better UX
30
- // Don't load in nodejs environment
31
- // 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
36
-
37
- window.EventSource = NativeEventSource || EventSourcePolyfill;
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ const disableAnimationsStyles = `
16
+ *,
17
+ *:hover,
18
+ *::before,
19
+ *::after {
20
+ animation-delay: -0.0001ms !important;
21
+ animation-duration: 0s !important;
22
+ animation-play-state: paused !important;
23
+ cursor: none !important;
24
+ caret-color: transparent !important;
25
+ transition: 0s !important;
38
26
  }
39
-
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";
41
-
27
+ `;
42
28
  async function resetCurrentStory(channel) {
43
29
  setTimeout(() => channel.emit(Events.SET_CURRENT_STORY, {
44
30
  storyId: true,
@@ -47,11 +33,9 @@ async function resetCurrentStory(channel) {
47
33
  }), 0);
48
34
  return new Promise(resolve => channel.once(Events.STORY_MISSING, resolve));
49
35
  }
50
-
51
36
  function catchRenderError(channel) {
52
37
  let rejectCallback;
53
38
  const promise = new Promise((_resolve, reject) => rejectCallback = reject);
54
-
55
39
  function errorHandler(_ref) {
56
40
  let {
57
41
  title,
@@ -62,65 +46,51 @@ function catchRenderError(channel) {
62
46
  stack: description
63
47
  });
64
48
  }
65
-
66
49
  function exceptionHandler(exception) {
67
50
  rejectCallback(exception);
68
51
  }
69
-
70
52
  function removeHandlers() {
71
53
  channel.off(Events.STORY_ERRORED, errorHandler);
72
54
  channel.off(Events.STORY_THREW_EXCEPTION, errorHandler);
73
55
  }
74
-
75
56
  channel.once(Events.STORY_ERRORED, errorHandler);
76
57
  channel.once(Events.STORY_THREW_EXCEPTION, exceptionHandler);
77
58
  return Object.assign(promise, {
78
59
  cancel: removeHandlers
79
60
  });
80
61
  }
81
-
82
62
  function waitForStoryRendered(channel) {
83
63
  let resolveCallback;
84
64
  const promise = new Promise(resolve => resolveCallback = resolve);
85
-
86
65
  function renderHandler() {
87
66
  resolveCallback();
88
67
  }
89
-
90
68
  function removeHandlers() {
91
69
  channel.off(Events.STORY_RENDERED, renderHandler);
92
70
  }
93
-
94
71
  channel.once(Events.STORY_RENDERED, renderHandler);
95
72
  return Object.assign(promise, {
96
73
  cancel: removeHandlers
97
74
  });
98
75
  }
99
-
100
76
  function waitForFontsLoaded() {
101
77
  if (!document.fonts) return;
102
78
  const areFontsLoading = Array.from(document.fonts).some(font => font.status == 'loading');
103
-
104
79
  if (areFontsLoading) {
105
80
  return new Promise(resolve => {
106
81
  const fontsLoadedHandler = () => {
107
82
  document.fonts.removeEventListener('loadingdone', fontsLoadedHandler);
108
83
  resolve();
109
84
  };
110
-
111
85
  document.fonts.addEventListener('loadingdone', fontsLoadedHandler);
112
86
  });
113
87
  }
114
88
  }
115
-
116
89
  function waitForCaptureCall() {
117
90
  return new Promise(resolve => captureResolver = resolve);
118
91
  }
119
-
120
92
  function initCreeveyState() {
121
- var _window$localStorage$;
122
-
123
- const prevState = JSON.parse((_window$localStorage$ = window.localStorage.getItem('Creevey_Tests')) !== null && _window$localStorage$ !== void 0 ? _window$localStorage$ : '{}');
93
+ const prevState = JSON.parse(window.localStorage.getItem('Creevey_Tests') ?? '{}');
124
94
  if (prevState.creeveyHost) window.__CREEVEY_SERVER_HOST__ = prevState.creeveyHost;
125
95
  if (prevState.creeveyPort) window.__CREEVEY_SERVER_PORT__ = prevState.creeveyPort;
126
96
  if (prevState.setStoriesCounter) setStoriesCounter = prevState.setStoriesCounter;
@@ -134,18 +104,16 @@ function initCreeveyState() {
134
104
  }));
135
105
  });
136
106
  }
137
-
138
107
  let isTestBrowser = false;
139
108
  let captureResolver;
140
109
  let waitForCreevey;
141
110
  let creeveyReady;
142
111
  let setStoriesCounter = 0;
143
-
144
112
  function withCreevey() {
113
+ const addonsChannel = () => window.__STORYBOOK_ADDONS_CHANNEL__;
145
114
  let currentStory = '';
146
115
  let isAnimationDisabled = false;
147
116
  initCreeveyState();
148
-
149
117
  function disableAnimation() {
150
118
  isAnimationDisabled = true;
151
119
  const style = document.createElement('style');
@@ -154,50 +122,30 @@ function withCreevey() {
154
122
  style.appendChild(textNode);
155
123
  document.head.appendChild(style);
156
124
  }
157
-
158
125
  async function getStories() {
159
- var _window$__STORYBOOK_S;
160
-
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();
166
-
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
- });
126
+ const stories = (0, _shared.serializeRawStories)(await window.__STORYBOOK_PREVIEW__.extract());
127
+ const storiesByFiles = new Map();
128
+ Object.values(stories).forEach(story => {
129
+ const fileName = story.parameters.fileName;
130
+ const storiesFromFile = storiesByFiles.get(fileName);
131
+ if (storiesFromFile) storiesFromFile.push(story);else storiesByFiles.set(fileName, [story]);
190
132
  });
191
-
192
- return storiesPromise;
133
+ void fetch(`http://${(0, _helpers.getConnectionUrl)()}/stories`, {
134
+ method: 'POST',
135
+ headers: {
136
+ 'Content-Type': 'application/json'
137
+ },
138
+ body: JSON.stringify({
139
+ setStoriesCounter,
140
+ stories: [...storiesByFiles.entries()]
141
+ })
142
+ });
143
+ return stories;
193
144
  }
194
-
195
145
  async function selectStory(storyId, kind, name, shouldWaitForReady, callback) {
196
146
  if (!isAnimationDisabled) disableAnimation();
197
147
  isTestBrowser = true;
198
-
199
- const channel = _addons.addons.getChannel();
200
-
148
+ const channel = addonsChannel();
201
149
  const waitForReady = shouldWaitForReady ? new Promise(resolve => window.__CREEVEY_SET_READY_FOR_CAPTURE__ = resolve) : Promise.resolve();
202
150
  if (storyId == currentStory) await resetCurrentStory(channel);else currentStory = storyId;
203
151
  let isCaptureCalled = false;
@@ -209,7 +157,6 @@ function withCreevey() {
209
157
  name,
210
158
  kind
211
159
  }), 0);
212
-
213
160
  try {
214
161
  await Promise.race([(async () => {
215
162
  await Promise.race([renderPromise, capturePromise]);
@@ -218,47 +165,48 @@ function withCreevey() {
218
165
  })(), errorPromise]);
219
166
  callback([null, isCaptureCalled]);
220
167
  } catch (reason) {
221
- var _reason$stack;
222
-
223
168
  // NOTE Event `STORY_THREW_EXCEPTION` triggered only in react and vue frameworks and return Error instance
224
169
  // 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;
170
+ const errorMessage = reason instanceof Error ? reason.stack ?? reason.message : (0, _types.isObject)(reason) ? `${reason.message}\n ${reason.stack}` : reason;
226
171
  callback([errorMessage]);
227
172
  } finally {
228
173
  renderPromise.cancel();
229
174
  errorPromise.cancel();
230
175
  }
231
176
  }
232
-
233
177
  function updateGlobals(globals) {
234
- _addons.addons.getChannel().emit(Events.UPDATE_GLOBALS, {
178
+ addonsChannel().emit(Events.UPDATE_GLOBALS, {
235
179
  globals
236
180
  });
237
181
  }
238
-
239
182
  function insertIgnoreStyles(ignoreSelectors) {
240
183
  const stylesElement = document.createElement('style');
241
184
  stylesElement.setAttribute('type', 'text/css');
242
185
  document.head.appendChild(stylesElement);
243
186
  ignoreSelectors.forEach(selector => {
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 ");
187
+ stylesElement.innerHTML += `
188
+ ${selector} {
189
+ background: #000 !important;
190
+ box-shadow: none !important;
191
+ text-shadow: none !important;
192
+ outline: 0 !important;
193
+ color: rgba(0,0,0,0) !important;
194
+ }
195
+ ${selector} *, ${selector}::before, ${selector}::after {
196
+ visibility: hidden !important;
197
+ }
198
+ `;
245
199
  });
246
200
  return stylesElement;
247
201
  }
248
-
249
202
  function removeIgnoreStyles(ignoreStyles) {
250
- var _ignoreStyles$parentN;
251
-
252
- (_ignoreStyles$parentN = ignoreStyles.parentNode) === null || _ignoreStyles$parentN === void 0 ? void 0 : _ignoreStyles$parentN.removeChild(ignoreStyles);
203
+ ignoreStyles.parentNode?.removeChild(ignoreStyles);
253
204
  }
254
-
255
205
  function hasPlayCompletedYet(callback) {
256
206
  creeveyReady();
257
207
  let isCaptureCalled = false;
258
208
  let isPlayCompleted = false;
259
-
260
- const channel = _addons.addons.getChannel();
261
-
209
+ const channel = addonsChannel();
262
210
  void waitForStoryRendered(channel).then(() => {
263
211
  if (isCaptureCalled) return;
264
212
  isPlayCompleted = true;
@@ -270,61 +218,35 @@ function withCreevey() {
270
218
  callback(false);
271
219
  });
272
220
  }
273
-
274
221
  window.__CREEVEY_GET_STORIES__ = getStories;
275
222
  window.__CREEVEY_SELECT_STORY__ = selectStory;
276
223
  window.__CREEVEY_UPDATE_GLOBALS__ = updateGlobals;
277
224
  window.__CREEVEY_INSERT_IGNORE_STYLES__ = insertIgnoreStyles;
278
225
  window.__CREEVEY_REMOVE_IGNORE_STYLES__ = removeIgnoreStyles;
279
226
  window.__CREEVEY_HAS_PLAY_COMPLETED_YET__ = hasPlayCompletedYet;
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
- // };
296
-
297
- return (0, _addons.makeDecorator)({
227
+ window.__CREEVEY_SET_READY_FOR_CAPTURE__ = _types.noop;
228
+ return (0, _previewApi.makeDecorator)({
298
229
  name: 'withCreevey',
299
230
  parameterName: 'creevey',
300
231
  wrapper: (getStory, context) => {
301
- var _ref2;
302
-
303
232
  // TODO Define proper types, like captureElement is a promise
304
233
  const {
305
234
  captureElement
306
- } = context.parameters.creevey = (_ref2 = context.parameters.creevey) !== null && _ref2 !== void 0 ? _ref2 : {};
235
+ } = context.parameters.creevey = context.parameters.creevey ?? {};
307
236
  Object.defineProperty(context.parameters.creevey, 'captureElement', {
308
237
  get() {
309
238
  switch (true) {
310
239
  case captureElement === undefined:
311
240
  return Promise.resolve(context.canvasElement);
312
-
313
241
  case captureElement === null:
314
242
  return Promise.resolve(document.documentElement);
315
-
316
243
  case typeof captureElement == 'string':
317
244
  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);
321
-
322
245
  case typeof captureElement == 'function':
323
246
  // TODO Define type for it
324
247
  return Promise.resolve(captureElement(context));
325
248
  }
326
249
  },
327
-
328
250
  enumerable: true,
329
251
  configurable: true
330
252
  });
@@ -332,12 +254,11 @@ function withCreevey() {
332
254
  }
333
255
  });
334
256
  }
335
-
336
257
  async function capture(options) {
337
258
  if (!isTestBrowser) return;
338
259
  captureResolver();
339
260
  waitForCreevey = new Promise(resolve => creeveyReady = resolve);
340
- await fetch("http://".concat((0, _helpers.getConnectionUrl)(), "/capture"), {
261
+ await fetch(`http://${(0, _helpers.getConnectionUrl)()}/capture`, {
341
262
  method: 'POST',
342
263
  headers: {
343
264
  'Content-Type': 'application/json'