creevey 0.9.0-beta.2 → 0.9.0-beta.20

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 (226) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/.yarnrc.yml +1 -0
  3. package/CHANGELOG.md +51 -0
  4. package/README.md +9 -1
  5. package/addon/README.md +3 -0
  6. package/addon/package.json +5 -0
  7. package/docs/config.md +29 -26
  8. package/jest.config.js +6 -0
  9. package/lib/cjs/cli.js +1 -0
  10. package/lib/cjs/client/addon/Manager.js +170 -390
  11. package/lib/cjs/client/addon/components/Addon.js +17 -45
  12. package/lib/cjs/client/addon/components/Icons.js +12 -14
  13. package/lib/cjs/client/addon/components/Panel.js +21 -30
  14. package/lib/cjs/client/addon/components/TestSelect.js +20 -31
  15. package/lib/cjs/client/addon/components/Tools.js +35 -65
  16. package/lib/cjs/client/addon/decorator.js +1 -4
  17. package/lib/cjs/client/addon/index.js +27 -0
  18. package/lib/cjs/client/addon/preset.js +3 -76
  19. package/lib/cjs/client/addon/preview.js +11 -0
  20. package/lib/cjs/client/addon/readyForCapture.js +1 -4
  21. package/lib/cjs/client/addon/register.js +43 -82
  22. package/lib/cjs/client/addon/utils.js +4 -8
  23. package/lib/cjs/client/addon/withCreevey.js +145 -404
  24. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +25 -35
  25. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +29 -41
  26. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +46 -83
  27. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +39 -67
  28. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +26 -57
  29. package/lib/cjs/client/shared/components/ImagesView/index.js +9 -14
  30. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +13 -16
  31. package/lib/cjs/client/shared/components/PageFooter/Paging.js +16 -37
  32. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +42 -34
  33. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +40 -84
  34. package/lib/cjs/client/shared/components/ResultsPage.js +42 -99
  35. package/lib/cjs/client/shared/creeveyClientApi.js +56 -93
  36. package/lib/cjs/client/shared/helpers.js +149 -274
  37. package/lib/cjs/client/shared/viewMode.js +5 -9
  38. package/lib/cjs/client/web/192.js +1 -0
  39. package/lib/cjs/client/web/632.js +43 -0
  40. package/lib/cjs/client/web/794.js +1 -0
  41. package/lib/cjs/client/web/main.js +79 -38
  42. package/lib/cjs/client/web/main.js.LICENSE.txt +34 -0
  43. package/lib/cjs/creevey.js +15 -30
  44. package/lib/cjs/index.js +0 -15
  45. package/lib/cjs/server/config.js +16 -36
  46. package/lib/cjs/server/docker.js +8 -34
  47. package/lib/cjs/server/index.js +9 -34
  48. package/lib/cjs/server/logger.js +7 -20
  49. package/lib/cjs/server/master/api.js +1 -14
  50. package/lib/cjs/server/master/index.js +25 -49
  51. package/lib/cjs/server/master/master.js +6 -21
  52. package/lib/cjs/server/master/pool.js +10 -53
  53. package/lib/cjs/server/master/runner.js +65 -105
  54. package/lib/cjs/server/master/server.js +10 -29
  55. package/lib/cjs/server/messages.js +14 -62
  56. package/lib/cjs/server/selenium/browser.js +149 -185
  57. package/lib/cjs/server/selenium/index.js +0 -4
  58. package/lib/cjs/server/selenium/selenoid.js +18 -44
  59. package/lib/cjs/server/stories.js +35 -57
  60. package/lib/cjs/server/storybook/providers/browser.js +15 -29
  61. package/lib/cjs/server/storybook/providers/hybrid.js +16 -37
  62. package/lib/cjs/server/telemetry.js +167 -0
  63. package/lib/cjs/server/testsFiles/parser.js +3 -19
  64. package/lib/cjs/server/testsFiles/register.js +8 -14
  65. package/lib/cjs/server/update.js +4 -25
  66. package/lib/cjs/server/utils.js +35 -76
  67. package/lib/cjs/server/worker/chai-image.js +1 -27
  68. package/lib/cjs/server/worker/helpers.js +2 -12
  69. package/lib/cjs/server/worker/index.js +1 -3
  70. package/lib/cjs/server/worker/reporter.js +16 -43
  71. package/lib/cjs/server/worker/worker.js +32 -72
  72. package/lib/cjs/shared/index.js +87 -0
  73. package/lib/cjs/shared/serializeRegExp.js +34 -0
  74. package/lib/cjs/types.js +11 -20
  75. package/lib/esm/cli.js +1 -1
  76. package/lib/esm/client/addon/Manager.js +170 -381
  77. package/lib/esm/client/addon/components/Addon.js +15 -34
  78. package/lib/esm/client/addon/components/Icons.js +10 -6
  79. package/lib/esm/client/addon/components/Panel.js +20 -18
  80. package/lib/esm/client/addon/components/TestSelect.js +19 -23
  81. package/lib/esm/client/addon/components/Tools.js +33 -49
  82. package/lib/esm/client/addon/decorator.js +1 -1
  83. package/lib/esm/client/addon/index.js +2 -0
  84. package/lib/esm/client/addon/preset.js +2 -56
  85. package/lib/esm/client/addon/preview.js +5 -0
  86. package/lib/esm/client/addon/readyForCapture.js +1 -3
  87. package/lib/esm/client/addon/register.js +41 -67
  88. package/lib/esm/client/addon/utils.js +3 -7
  89. package/lib/esm/client/addon/withCreevey.js +142 -388
  90. package/lib/esm/client/shared/components/ImagesView/BlendView.js +22 -18
  91. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +27 -25
  92. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +43 -63
  93. package/lib/esm/client/shared/components/ImagesView/SlideView.js +36 -47
  94. package/lib/esm/client/shared/components/ImagesView/SwapView.js +23 -40
  95. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +12 -8
  96. package/lib/esm/client/shared/components/PageFooter/Paging.js +15 -29
  97. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +40 -25
  98. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +38 -66
  99. package/lib/esm/client/shared/components/ResultsPage.js +39 -75
  100. package/lib/esm/client/shared/creeveyClientApi.js +56 -90
  101. package/lib/esm/client/shared/helpers.js +133 -230
  102. package/lib/esm/client/shared/viewMode.js +4 -4
  103. package/lib/esm/client/web/192.js +1 -0
  104. package/lib/esm/client/web/632.js +43 -0
  105. package/lib/esm/client/web/794.js +1 -0
  106. package/lib/esm/client/web/index.html +19 -0
  107. package/lib/esm/client/web/main.js +79 -0
  108. package/lib/esm/client/web/main.js.LICENSE.txt +34 -0
  109. package/lib/esm/creevey.js +13 -16
  110. package/lib/esm/index.js +1 -4
  111. package/lib/esm/server/config.js +9 -16
  112. package/lib/esm/server/docker.js +6 -14
  113. package/lib/esm/server/index.js +8 -22
  114. package/lib/esm/server/logger.js +0 -1
  115. package/lib/esm/server/master/api.js +0 -9
  116. package/lib/esm/server/master/index.js +25 -35
  117. package/lib/esm/server/master/master.js +2 -7
  118. package/lib/esm/server/master/pool.js +8 -41
  119. package/lib/esm/server/master/runner.js +64 -90
  120. package/lib/esm/server/master/server.js +9 -11
  121. package/lib/esm/server/messages.js +8 -42
  122. package/lib/esm/server/selenium/browser.js +147 -163
  123. package/lib/esm/server/selenium/selenoid.js +16 -27
  124. package/lib/esm/server/stories.js +34 -46
  125. package/lib/esm/server/storybook/providers/browser.js +12 -17
  126. package/lib/esm/server/storybook/providers/hybrid.js +11 -22
  127. package/lib/esm/server/telemetry.js +160 -0
  128. package/lib/esm/server/testsFiles/parser.js +0 -6
  129. package/lib/esm/server/testsFiles/register.js +6 -7
  130. package/lib/esm/server/update.js +1 -13
  131. package/lib/esm/server/utils.js +20 -41
  132. package/lib/esm/server/worker/chai-image.js +0 -21
  133. package/lib/esm/server/worker/helpers.js +2 -9
  134. package/lib/esm/server/worker/reporter.js +15 -29
  135. package/lib/esm/server/worker/worker.js +31 -48
  136. package/lib/esm/shared/index.js +77 -0
  137. package/lib/esm/shared/serializeRegExp.js +24 -0
  138. package/lib/esm/types.js +5 -1
  139. package/lib/types/client/addon/Manager.d.ts +3 -3
  140. package/lib/types/client/addon/components/Addon.d.ts +1 -0
  141. package/lib/types/client/addon/components/Icons.d.ts +1 -0
  142. package/lib/types/client/addon/components/Panel.d.ts +1 -0
  143. package/lib/types/client/addon/components/Tools.d.ts +1 -0
  144. package/lib/types/client/addon/decorator.d.ts +1 -1
  145. package/lib/types/client/addon/index.d.ts +2 -0
  146. package/lib/types/client/addon/preset.d.ts +2 -24
  147. package/lib/types/client/addon/preview.d.ts +4 -0
  148. package/lib/types/client/addon/utils.d.ts +1 -0
  149. package/lib/types/client/addon/withCreevey.d.ts +4 -3
  150. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +3 -1
  151. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +3 -1
  152. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +3 -1
  153. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +3 -1
  154. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +3 -1
  155. package/lib/types/client/shared/components/ResultsPage.d.ts +3 -1
  156. package/lib/types/client/web/CreeveyLoader.d.ts +1 -1
  157. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +6 -3
  158. package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +1 -0
  159. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +19 -14
  160. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +3 -1
  161. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +3 -1
  162. package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +1 -0
  163. package/lib/types/client/web/KeyboardEventsContext.d.ts +4 -2
  164. package/lib/types/index.d.ts +4 -1
  165. package/lib/types/server/logger.d.ts +6 -2
  166. package/lib/types/server/messages.d.ts +14 -12
  167. package/lib/types/server/selenium/browser.d.ts +5 -3
  168. package/lib/types/server/storybook/providers/browser.d.ts +2 -4
  169. package/lib/types/server/storybook/providers/hybrid.d.ts +2 -4
  170. package/lib/types/server/telemetry.d.ts +2 -0
  171. package/lib/types/server/utils.d.ts +5 -1
  172. package/lib/types/shared/index.d.ts +7 -0
  173. package/lib/types/shared/serializeRegExp.d.ts +9 -0
  174. package/lib/types/types.d.ts +29 -36
  175. package/package.json +132 -133
  176. package/types/global.d.ts +5 -0
  177. package/lib/cjs/client/web/1.js +0 -13
  178. package/lib/cjs/client/web/2.js +0 -1
  179. package/lib/cjs/server/extract.js +0 -50
  180. package/lib/cjs/server/loaders/babel/creevey-plugin.js +0 -88
  181. package/lib/cjs/server/loaders/babel/helpers.js +0 -479
  182. package/lib/cjs/server/loaders/babel/register.js +0 -126
  183. package/lib/cjs/server/loaders/hooks/mdx.js +0 -30
  184. package/lib/cjs/server/loaders/hooks/svelte.js +0 -65
  185. package/lib/cjs/server/loaders/webpack/compile.js +0 -286
  186. package/lib/cjs/server/loaders/webpack/creevey-loader.js +0 -174
  187. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +0 -44
  188. package/lib/cjs/server/loaders/webpack/mdx-loader.js +0 -72
  189. package/lib/cjs/server/loaders/webpack/start.js +0 -41
  190. package/lib/cjs/server/storybook/entry.js +0 -68
  191. package/lib/cjs/server/storybook/helpers.js +0 -165
  192. package/lib/cjs/server/storybook/providers/nodejs.js +0 -239
  193. package/lib/cjs/shared.js +0 -124
  194. package/lib/esm/server/extract.js +0 -34
  195. package/lib/esm/server/loaders/babel/creevey-plugin.js +0 -74
  196. package/lib/esm/server/loaders/babel/helpers.js +0 -462
  197. package/lib/esm/server/loaders/babel/register.js +0 -105
  198. package/lib/esm/server/loaders/hooks/mdx.js +0 -15
  199. package/lib/esm/server/loaders/hooks/svelte.js +0 -49
  200. package/lib/esm/server/loaders/webpack/compile.js +0 -263
  201. package/lib/esm/server/loaders/webpack/creevey-loader.js +0 -153
  202. package/lib/esm/server/loaders/webpack/dummy-hmr.js +0 -36
  203. package/lib/esm/server/loaders/webpack/mdx-loader.js +0 -58
  204. package/lib/esm/server/loaders/webpack/start.js +0 -27
  205. package/lib/esm/server/storybook/entry.js +0 -44
  206. package/lib/esm/server/storybook/helpers.js +0 -106
  207. package/lib/esm/server/storybook/providers/nodejs.js +0 -217
  208. package/lib/esm/shared.js +0 -93
  209. package/lib/types/server/extract.d.ts +0 -2
  210. package/lib/types/server/loaders/babel/creevey-plugin.d.ts +0 -1
  211. package/lib/types/server/loaders/babel/helpers.d.ts +0 -19
  212. package/lib/types/server/loaders/babel/register.d.ts +0 -5
  213. package/lib/types/server/loaders/hooks/mdx.d.ts +0 -1
  214. package/lib/types/server/loaders/hooks/svelte.d.ts +0 -1
  215. package/lib/types/server/loaders/webpack/compile.d.ts +0 -2
  216. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +0 -2
  217. package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +0 -10
  218. package/lib/types/server/loaders/webpack/mdx-loader.d.ts +0 -6
  219. package/lib/types/server/loaders/webpack/start.d.ts +0 -1
  220. package/lib/types/server/storybook/entry.d.ts +0 -18
  221. package/lib/types/server/storybook/helpers.d.ts +0 -24
  222. package/lib/types/server/storybook/providers/nodejs.d.ts +0 -9
  223. package/lib/types/shared.d.ts +0 -16
  224. package/preset.js +0 -9
  225. package/storybook-static/stories.json +0 -21
  226. package/types/mdx.d.ts +0 -6
@@ -1,7 +1,9 @@
1
1
  import React from 'react';
2
- export var NextIcon = function NextIcon(_ref) {
3
- var width = _ref.width,
4
- height = _ref.height;
2
+ export const NextIcon = _ref => {
3
+ let {
4
+ width,
5
+ height
6
+ } = _ref;
5
7
  return /*#__PURE__*/React.createElement("svg", {
6
8
  version: "1.1",
7
9
  width: width,
@@ -12,9 +14,11 @@ export var NextIcon = function NextIcon(_ref) {
12
14
  fill: "currentColor"
13
15
  }));
14
16
  };
15
- export var ForwardIcon = function ForwardIcon(_ref2) {
16
- var width = _ref2.width,
17
- height = _ref2.height;
17
+ export const ForwardIcon = _ref2 => {
18
+ let {
19
+ width,
20
+ height
21
+ } = _ref2;
18
22
  return /*#__PURE__*/React.createElement("svg", {
19
23
  version: "1.1",
20
24
  width: width,
@@ -4,40 +4,42 @@ import { ResultsPage } from '../../shared/components/ResultsPage';
4
4
  import { styled } from '@storybook/theming';
5
5
  import { getTestPath } from '../../shared/helpers';
6
6
  import TestSelect from './TestSelect';
7
- var Wrapper = styled.div(function (_ref) {
8
- var isRunning = _ref.isRunning;
7
+ const Wrapper = styled.div(_ref => {
8
+ let {
9
+ isRunning
10
+ } = _ref;
9
11
  return {
10
12
  opacity: isRunning ? 0.5 : 1,
11
13
  height: '100%'
12
14
  };
13
15
  });
14
- var TestSelectContainer = styled.div(function (_ref2) {
15
- var theme = _ref2.theme;
16
+ const TestSelectContainer = styled.div(_ref2 => {
17
+ let {
18
+ theme
19
+ } = _ref2;
16
20
  return {
17
21
  padding: '8px',
18
- border: "1px solid ".concat(theme.appBorderColor)
22
+ border: `1px solid ${theme.appBorderColor}`
19
23
  };
20
24
  });
21
- export var Panel = function Panel(_ref3) {
22
- var _result$results, _result$results$lengt, _result$results2;
23
-
24
- var tests = _ref3.tests,
25
- selectedTestId = _ref3.selectedTestId,
26
- onChangeTest = _ref3.onChangeTest,
27
- onImageApprove = _ref3.onImageApprove;
28
- var result = tests.find(function (x) {
29
- return x.id === selectedTestId;
30
- });
31
- var isRunning = (result === null || result === void 0 ? void 0 : result.status) === 'running';
25
+ export const Panel = _ref3 => {
26
+ let {
27
+ tests,
28
+ selectedTestId,
29
+ onChangeTest,
30
+ onImageApprove
31
+ } = _ref3;
32
+ const result = tests.find(x => x.id === selectedTestId);
33
+ const isRunning = result?.status === 'running';
32
34
  return /*#__PURE__*/React.createElement("div", null, tests.length > 1 && /*#__PURE__*/React.createElement(TestSelectContainer, null, /*#__PURE__*/React.createElement(TestSelect, {
33
35
  tests: tests,
34
36
  selectedTestId: selectedTestId,
35
37
  onChangeTest: onChangeTest
36
- })), isRunning && /*#__PURE__*/React.createElement(Loader, null), result !== null && result !== void 0 && (_result$results = result.results) !== null && _result$results !== void 0 && _result$results.length ? /*#__PURE__*/React.createElement(Wrapper, {
38
+ })), isRunning && /*#__PURE__*/React.createElement(Loader, null), result?.results?.length ? /*#__PURE__*/React.createElement(Wrapper, {
37
39
  isRunning: isRunning
38
40
  }, /*#__PURE__*/React.createElement(ResultsPage, {
39
41
  height: '100%',
40
- key: "".concat(result.id, "_").concat((_result$results$lengt = (_result$results2 = result.results) === null || _result$results2 === void 0 ? void 0 : _result$results2.length) !== null && _result$results$lengt !== void 0 ? _result$results$lengt : 0) // TODO
42
+ key: `${result.id}_${result.results?.length ?? 0}` // TODO
41
43
  ,
42
44
  id: result.id,
43
45
  path: getTestPath(result) // TODO Memo?
@@ -2,8 +2,10 @@ import { Button, Icons, TooltipLinkList, WithTooltip } from '@storybook/componen
2
2
  import { styled } from '@storybook/theming';
3
3
  import React from 'react';
4
4
  import { getEmojiByTestStatus } from '../utils';
5
- var LinkIconContainer = styled.span(function (_ref) {
6
- var theme = _ref.theme;
5
+ const LinkIconContainer = styled.span(_ref => {
6
+ let {
7
+ theme
8
+ } = _ref;
7
9
  return {
8
10
  display: 'inline-block',
9
11
  width: '20px',
@@ -12,32 +14,26 @@ var LinkIconContainer = styled.span(function (_ref) {
12
14
  };
13
15
  });
14
16
  export default function TestSelect(props) {
15
- var _props$tests$find$tes, _props$tests$find;
16
-
17
- var testName = (_props$tests$find$tes = (_props$tests$find = props.tests.find(function (x) {
18
- return x.id === props.selectedTestId;
19
- })) === null || _props$tests$find === void 0 ? void 0 : _props$tests$find.testName) !== null && _props$tests$find$tes !== void 0 ? _props$tests$find$tes : '';
17
+ const testName = props.tests.find(x => x.id === props.selectedTestId)?.testName ?? '';
20
18
  return /*#__PURE__*/React.createElement(WithTooltip, {
21
19
  trigger: "click",
22
20
  placement: "bottom",
23
21
  closeOnClick: true,
24
- tooltip: function tooltip(_ref2) {
25
- var onHide = _ref2.onHide;
22
+ tooltip: _ref2 => {
23
+ let {
24
+ onHide
25
+ } = _ref2;
26
26
  return /*#__PURE__*/React.createElement(TooltipLinkList, {
27
- links: props.tests.map(function (x) {
28
- var _x$testName;
29
-
30
- return {
31
- id: x.id,
32
- title: (_x$testName = x.testName) !== null && _x$testName !== void 0 ? _x$testName : '',
33
- active: props.selectedTestId === x.id,
34
- onClick: function onClick() {
35
- props.onChangeTest(x.id);
36
- onHide();
37
- },
38
- left: /*#__PURE__*/React.createElement(LinkIconContainer, null, getEmojiByTestStatus(x.status, x.skip))
39
- };
40
- })
27
+ links: props.tests.map(x => ({
28
+ id: x.id,
29
+ title: x.testName ?? '',
30
+ active: props.selectedTestId === x.id,
31
+ onClick: () => {
32
+ props.onChangeTest(x.id);
33
+ onHide();
34
+ },
35
+ left: /*#__PURE__*/React.createElement(LinkIconContainer, null, getEmojiByTestStatus(x.status, x.skip))
36
+ }))
41
37
  });
42
38
  }
43
39
  }, /*#__PURE__*/React.createElement(Button, {
@@ -1,15 +1,3 @@
1
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
-
3
- 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."); }
4
-
5
- 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); }
6
-
7
- 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; }
8
-
9
- 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; }
10
-
11
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
-
13
1
  import React, { Fragment, useState, useEffect } from 'react';
14
2
  import { IconButton, Icons, Separator } from '@storybook/components';
15
3
  import { ForwardIcon, NextIcon } from './Icons';
@@ -17,7 +5,7 @@ import { stringify } from 'qs';
17
5
  import { styled } from '@storybook/theming';
18
6
  import { isDefined } from '../../../types';
19
7
  import { getTestPath, useForceUpdate } from '../../shared/helpers';
20
- var Button = styled(IconButton)({
8
+ const Button = styled(IconButton)({
21
9
  '&:disabled': {
22
10
  opacity: 0.5,
23
11
  cursor: 'default'
@@ -26,58 +14,54 @@ var Button = styled(IconButton)({
26
14
  color: 'inherit'
27
15
  }
28
16
  });
29
- export var Tools = function Tools(_ref) {
30
- var manager = _ref.manager;
31
-
32
- var _useState = useState(),
33
- _useState2 = _slicedToArray(_useState, 2),
34
- buttonClicked = _useState2[0],
35
- setButtonClicked = _useState2[1];
36
-
37
- var _useState3 = useState(manager.status.isRunning),
38
- _useState4 = _slicedToArray(_useState3, 2),
39
- isRunning = _useState4[0],
40
- setRunning = _useState4[1];
41
-
42
- var forceUpdate = useForceUpdate();
43
- var test = manager.getCurrentTest();
44
- useEffect(function () {
45
- var unsubscribe = manager.onChangeTest(function () {
17
+ export const Tools = _ref => {
18
+ let {
19
+ manager
20
+ } = _ref;
21
+ const [buttonClicked, setButtonClicked] = useState();
22
+ const [isRunning, setRunning] = useState(manager.status.isRunning);
23
+ const forceUpdate = useForceUpdate();
24
+ const test = manager.getCurrentTest();
25
+ useEffect(() => {
26
+ const unsubscribe = manager.onChangeTest(() => {
46
27
  forceUpdate();
47
28
  });
48
29
  return unsubscribe;
49
30
  }, [manager, forceUpdate]);
50
- useEffect(function () {
51
- var unsubscribe = manager.onUpdateStatus(function (_ref2) {
52
- var isRunning = _ref2.isRunning;
31
+ useEffect(() => {
32
+ const unsubscribe = manager.onUpdateStatus(_ref2 => {
33
+ let {
34
+ isRunning
35
+ } = _ref2;
53
36
  if (isDefined(isRunning)) setRunning(isRunning);
54
37
  });
55
38
  return unsubscribe;
56
39
  }, [manager]);
57
40
  if (!test) return null;
58
-
59
41
  function renderButton(type, title, onClick, icon) {
60
- var handleClick = function handleClick() {
42
+ const handleClick = () => {
61
43
  setButtonClicked(type);
62
44
  onClick();
63
45
  };
64
-
65
- var disabled = isRunning && buttonClicked != null && buttonClicked !== type;
66
- return /*#__PURE__*/React.createElement(Button, {
67
- onClick: function onClick() {
68
- isRunning ? manager.onStop() : handleClick();
69
- },
70
- title: disabled ? '' : title,
71
- disabled: disabled
72
- }, buttonClicked === type && isRunning ? /*#__PURE__*/React.createElement(Icons, {
73
- icon: 'stop'
74
- }) : icon);
46
+ const disabled = isRunning && buttonClicked != null && buttonClicked !== type;
47
+ return (
48
+ /*#__PURE__*/
49
+ // @ts-expect-error Fixed in https://github.com/storybookjs/storybook/pull/26623
50
+ React.createElement(Button, {
51
+ onClick: () => {
52
+ isRunning ? manager.onStop() : handleClick();
53
+ },
54
+ title: disabled ? '' : title,
55
+ disabled: disabled
56
+ }, buttonClicked === type && isRunning ? /*#__PURE__*/React.createElement(Icons, {
57
+ icon: 'stop'
58
+ }) : icon)
59
+ );
75
60
  }
76
-
77
61
  return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(IconButton, {
78
- href: "http://localhost:".concat(__CREEVEY_CLIENT_PORT__ || __CREEVEY_SERVER_PORT__, "/?").concat(stringify({
62
+ href: `http://localhost:${__CREEVEY_CLIENT_PORT__ || __CREEVEY_SERVER_PORT__ || 3000}/?${stringify({
79
63
  testPath: getTestPath(test)
80
- })),
64
+ })}`,
81
65
  target: "_blank",
82
66
  title: "Show in Creevey UI"
83
67
  }, /*#__PURE__*/React.createElement(Icons, {
@@ -1,2 +1,2 @@
1
1
  import { withCreevey } from './withCreevey';
2
- export var decorators = [withCreevey()];
2
+ export const decorators = [withCreevey()];
@@ -0,0 +1,2 @@
1
+ export * from './withCreevey';
2
+ export * from './readyForCapture';
@@ -1,56 +1,2 @@
1
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
-
3
- 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."); }
4
-
5
- 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); }
6
-
7
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
8
-
9
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
10
-
11
- 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; }
12
-
13
- import path from 'path';
14
- import { exec } from 'shelljs';
15
- import { DefinePlugin as FallbackDefinePlugin } from 'webpack';
16
- import { isStorybookVersionLessThan, resolveFromStorybookCore, resolveFromStorybookCoreServer } from '../../server/storybook/helpers';
17
- export function config() {
18
- var entry = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
19
- return [].concat(_toConsumableArray(entry), [require.resolve('./decorator')]);
20
- }
21
- export function managerEntries() {
22
- var entry = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
23
- return [].concat(_toConsumableArray(entry), [require.resolve('./register')]);
24
- }
25
- export function managerWebpack(config, options) {
26
- var _options$presets$appl, _options$presets;
27
-
28
- // TODO How to execute with non-webpack bundlers
29
- if (options.configType == 'PRODUCTION' && !isStorybookVersionLessThan(6, 2) && options.skipExtract != true) {
30
- var args = [];
31
- if (options.creeveyPreExtract) args.push("--require \"".concat(options.creeveyPreExtract, "\""));
32
- args.push(path.join(__dirname, '../../cli'));
33
- args.push("--extract \"".concat(options.outputDir, "\""));
34
- if (options.creeveyConfigPath) args.push("--config \"".concat(options.creeveyConfigPath, "\""));
35
- exec("node ".concat(args.join(' ')), {
36
- async: true
37
- });
38
- }
39
-
40
- return ((_options$presets$appl = (_options$presets = options.presets) === null || _options$presets === void 0 ? void 0 : _options$presets.apply('webpackInstance')) !== null && _options$presets$appl !== void 0 ? _options$presets$appl : Promise.resolve(undefined)).then(function (webpack) {
41
- return webpack !== null && webpack !== void 0 ? webpack : import(isStorybookVersionLessThan(6, 2) ? resolveFromStorybookCore('webpack') : resolveFromStorybookCoreServer('webpack'));
42
- }).then(function (webpack) {
43
- var _config$plugins, _options$creeveyPort;
44
-
45
- var _ref = webpack !== null && webpack !== void 0 ? webpack : {},
46
- _ref$DefinePlugin = _ref.DefinePlugin,
47
- DefinePlugin = _ref$DefinePlugin === void 0 ? FallbackDefinePlugin : _ref$DefinePlugin;
48
-
49
- (_config$plugins = config.plugins) === null || _config$plugins === void 0 ? void 0 : _config$plugins.push(new DefinePlugin({
50
- __CREEVEY_SERVER_HOST__: options.creeveyHost,
51
- __CREEVEY_SERVER_PORT__: (_options$creeveyPort = options.creeveyPort) !== null && _options$creeveyPort !== void 0 ? _options$creeveyPort : 3000,
52
- __CREEVEY_CLIENT_PORT__: options.clientPort
53
- }));
54
- return config;
55
- });
56
- }
1
+ export const previewAnnotations = [require.resolve('./preview')];
2
+ export const managerEntries = [require.resolve('./register')];
@@ -0,0 +1,5 @@
1
+ import { withCreevey } from './withCreevey';
2
+ const preview = {
3
+ decorators: [withCreevey()]
4
+ };
5
+ export default preview;
@@ -1,5 +1,3 @@
1
1
  export function readyForCapture() {
2
- var _window$__CREEVEY_SET, _window;
3
-
4
- (_window$__CREEVEY_SET = (_window = window).__CREEVEY_SET_READY_FOR_CAPTURE__) === null || _window$__CREEVEY_SET === void 0 ? void 0 : _window$__CREEVEY_SET.call(_window);
2
+ window.__CREEVEY_SET_READY_FOR_CAPTURE__?.();
5
3
  }
@@ -1,75 +1,49 @@
1
- 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); } }
2
-
3
- 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); }); }; }
4
-
5
- import { addons, types } from '@storybook/addons';
1
+ import { addons, types } from '@storybook/manager-api';
6
2
  import React from 'react';
7
3
  import { Addon } from './components/Addon';
8
4
  import { Tools } from './components/Tools';
9
5
  import { CreeveyManager } from './Manager';
10
- export var ADDON_ID = 'creevey';
11
- addons.register(ADDON_ID, function (api) {
6
+ export const ADDON_ID = 'creevey';
7
+ addons.register(ADDON_ID, api => {
12
8
  void registerCreeveyPanels(api);
13
9
  });
14
- export function registerCreeveyPanels(_x) {
15
- return _registerCreeveyPanels.apply(this, arguments);
16
- }
17
-
18
- function _registerCreeveyPanels() {
19
- _registerCreeveyPanels = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(storybookApi) {
20
- var manager, browsers;
21
- return regeneratorRuntime.wrap(function _callee$(_context) {
22
- while (1) {
23
- switch (_context.prev = _context.next) {
24
- case 0:
25
- manager = new CreeveyManager(storybookApi);
26
- addons.addPanel("".concat(ADDON_ID, "/panel/run"), {
27
- title: "Creevey/Run",
28
- match: function match(_ref) {
29
- var viewMode = _ref.viewMode;
30
- return !!(viewMode && /^story$/.exec(viewMode));
31
- },
32
- type: types.TOOL,
33
- // eslint-disable-next-line react/display-name
34
- render: function render() {
35
- return /*#__PURE__*/React.createElement(Tools, {
36
- manager: manager
37
- });
38
- }
39
- });
40
- _context.next = 4;
41
- return manager.initAll();
42
-
43
- case 4:
44
- browsers = manager.getBrowsers();
45
- browsers.forEach(function (browser) {
46
- var panelId = "".concat(ADDON_ID, "/panel/").concat(browser);
47
- var title = manager.getTabTitle(browser);
48
- addons.addPanel(panelId, {
49
- title: title,
50
- type: types.PANEL,
51
- paramKey: browser,
52
- // NOTE key = PANEL_ID needs to correct render button in addons panel
53
- // eslint-disable-next-line react/display-name
54
- render: function render(_ref2) {
55
- var active = _ref2.active,
56
- key = _ref2.key;
57
- return /*#__PURE__*/React.createElement(Addon, {
58
- active: active,
59
- key: key,
60
- manager: manager,
61
- browser: browser
62
- });
63
- }
64
- });
65
- });
66
-
67
- case 6:
68
- case "end":
69
- return _context.stop();
70
- }
10
+ export async function registerCreeveyPanels(storybookApi) {
11
+ const manager = new CreeveyManager(storybookApi);
12
+ addons.add(`${ADDON_ID}/panel/run`, {
13
+ title: `Creevey/Run`,
14
+ match: _ref => {
15
+ let {
16
+ viewMode
17
+ } = _ref;
18
+ return !!(viewMode && /^story$/.exec(viewMode));
19
+ },
20
+ type: types.TOOL,
21
+ // eslint-disable-next-line react/display-name
22
+ render: () => /*#__PURE__*/React.createElement(Tools, {
23
+ manager
24
+ })
25
+ });
26
+ await manager.initAll();
27
+ const browsers = manager.getBrowsers();
28
+ browsers.forEach(browser => {
29
+ const panelId = `${ADDON_ID}/panel/${browser}`;
30
+ const title = manager.getTabTitle(browser);
31
+ addons.add(panelId, {
32
+ title,
33
+ type: types.PANEL,
34
+ paramKey: browser,
35
+ // NOTE key = PANEL_ID needs to correct render button in addons panel
36
+ // eslint-disable-next-line react/display-name
37
+ render: _ref2 => {
38
+ let {
39
+ active
40
+ } = _ref2;
41
+ return /*#__PURE__*/React.createElement(Addon, {
42
+ active,
43
+ manager,
44
+ browser
45
+ });
71
46
  }
72
- }, _callee);
73
- }));
74
- return _registerCreeveyPanels.apply(this, arguments);
47
+ });
48
+ });
75
49
  }
@@ -1,31 +1,27 @@
1
1
  export function getEmojiByTestStatus(status) {
2
- var skip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
3
-
2
+ let skip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4
3
  switch (status) {
5
4
  case 'failed':
6
5
  {
7
6
  return '❌';
8
7
  }
9
-
10
8
  case 'success':
11
9
  {
12
10
  return '✔';
13
11
  }
14
-
15
12
  case 'running':
16
13
  {
17
14
  return '🟡';
18
15
  }
19
-
20
16
  case 'pending':
21
17
  {
22
18
  return '🕗';
23
19
  }
24
-
25
20
  default:
26
21
  {
27
22
  if (skip) return '⏸';
28
23
  return '';
29
24
  }
30
25
  }
31
- }
26
+ }
27
+ export const isInternetExplorer = navigator.userAgent.includes('Trident/');