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
@@ -4,409 +4,189 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.CreeveyManager = void 0;
7
-
8
7
  var _coreEvents = require("@storybook/core-events");
9
-
10
8
  var _shared = require("../../shared");
11
-
12
9
  var _types = require("../../types");
13
-
14
10
  var _creeveyClientApi = require("../shared/creeveyClientApi");
15
-
16
11
  var _helpers = require("../shared/helpers");
17
-
18
12
  var _register = require("./register");
19
-
20
13
  var _utils = require("./utils");
21
-
22
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
23
-
24
- 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."); }
25
-
26
- 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; }
27
-
28
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
29
-
30
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
31
-
32
- 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."); }
33
-
34
- 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); }
35
-
36
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
37
-
38
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
39
-
40
- 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; }
41
-
42
- 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); } }
43
-
44
- 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); }); }; }
45
-
46
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
47
-
48
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
49
-
50
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
51
-
52
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
53
-
54
- var CreeveyManager = /*#__PURE__*/function () {
55
- function CreeveyManager(storybookApi) {
56
- var _this = this;
57
-
58
- _classCallCheck(this, CreeveyManager);
59
-
60
- _defineProperty(this, "storyId", '');
61
-
62
- _defineProperty(this, "activeBrowser", '');
63
-
64
- _defineProperty(this, "selectedTestId", '');
65
-
66
- _defineProperty(this, "status", {
67
- isRunning: false,
68
- tests: {},
69
- browsers: []
70
- });
71
-
72
- _defineProperty(this, "creeveyApi", null);
73
-
74
- _defineProperty(this, "stories", {});
75
-
76
- _defineProperty(this, "updateStatusListeners", []);
77
-
78
- _defineProperty(this, "changeTestListeners", []);
79
-
80
- _defineProperty(this, "initAll", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
81
- return regeneratorRuntime.wrap(function _callee$(_context) {
82
- while (1) {
83
- switch (_context.prev = _context.next) {
84
- case 0:
85
- _this.storybookApi.on(_coreEvents.STORY_RENDERED, _this.onStoryRendered);
86
-
87
- _this.storybookApi.on(_coreEvents.SET_STORIES, _this.onSetStories);
88
-
89
- _context.next = 4;
90
- return (0, _creeveyClientApi.initCreeveyClientApi)();
91
-
92
- case 4:
93
- _this.creeveyApi = _context.sent;
94
-
95
- _this.creeveyApi.onUpdate(_this.handleCreeveyUpdate);
96
-
97
- _context.next = 8;
98
- return _this.creeveyApi.status;
99
-
100
- case 8:
101
- _this.status = _context.sent;
102
-
103
- case 9:
104
- case "end":
105
- return _context.stop();
106
- }
14
+ class CreeveyManager {
15
+ storyId = '';
16
+ activeBrowser = '';
17
+ selectedTestId = '';
18
+ status = {
19
+ isRunning: false,
20
+ tests: {},
21
+ browsers: []
22
+ };
23
+ creeveyApi = null;
24
+ stories = {};
25
+ updateStatusListeners = [];
26
+ changeTestListeners = [];
27
+ constructor(storybookApi) {
28
+ this.storybookApi = storybookApi;
29
+ this.storybookApi = storybookApi;
30
+ }
31
+ initAll = async () => {
32
+ this.storybookApi.on(_coreEvents.STORY_RENDERED, this.onStoryRendered);
33
+ this.storybookApi.on(_coreEvents.SET_STORIES, this.onSetStories);
34
+ this.creeveyApi = await (0, _creeveyClientApi.initCreeveyClientApi)();
35
+ this.creeveyApi.onUpdate(this.handleCreeveyUpdate);
36
+ this.status = await this.creeveyApi.status;
37
+ };
38
+ onUpdateStatus(listener) {
39
+ this.updateStatusListeners.push(listener);
40
+ return () => void (this.updateStatusListeners = this.updateStatusListeners.filter(x => x != listener));
41
+ }
42
+ onChangeTest(listener) {
43
+ this.changeTestListeners.push(listener);
44
+ return () => void (this.changeTestListeners = this.changeTestListeners.filter(x => x != listener));
45
+ }
46
+ handleCreeveyUpdate = update => {
47
+ const {
48
+ tests,
49
+ removedTests = [],
50
+ isRunning
51
+ } = update;
52
+ if ((0, _types.isDefined)(isRunning)) {
53
+ this.status.isRunning = isRunning;
54
+ }
55
+ if ((0, _types.isDefined)(tests)) {
56
+ const prevTests = this.status.tests;
57
+ const prevStories = this.stories || {};
58
+ Object.values(tests).filter(_types.isDefined).forEach(update => {
59
+ const {
60
+ id,
61
+ skip,
62
+ status,
63
+ results,
64
+ approved,
65
+ storyId
66
+ } = update;
67
+ const test = prevTests[id];
68
+ if (!test) {
69
+ return prevTests[id] = update;
107
70
  }
108
- }, _callee);
109
- })));
110
-
111
- _defineProperty(this, "handleCreeveyUpdate", function (update) {
112
- var tests = update.tests,
113
- _update$removedTests = update.removedTests,
114
- removedTests = _update$removedTests === void 0 ? [] : _update$removedTests,
115
- isRunning = update.isRunning;
116
-
117
- if ((0, _types.isDefined)(isRunning)) {
118
- _this.status.isRunning = isRunning;
119
- }
120
-
121
- if ((0, _types.isDefined)(tests)) {
122
- var prevTests = _this.status.tests;
123
- var prevStories = _this.stories || {};
124
- Object.values(tests).filter(_types.isDefined).forEach(function (update) {
125
- var _test$results;
126
-
127
- var id = update.id,
128
- skip = update.skip,
129
- status = update.status,
130
- results = update.results,
131
- approved = update.approved,
132
- storyId = update.storyId;
133
- var test = prevTests[id];
134
-
135
- if (!test) {
136
- return prevTests[id] = update;
137
- }
138
-
139
- if ((0, _types.isDefined)(skip)) test.skip = skip;
140
-
141
- if ((0, _types.isDefined)(status)) {
142
- test.status = status;
143
-
144
- if ((0, _types.isDefined)(storyId) && (0, _types.isDefined)(prevStories[storyId])) {
145
- var story = prevStories[storyId];
146
-
147
- var storyStatus = _this.getStoryTests(storyId);
148
-
149
- var oldStatus = storyStatus.map(function (x) {
150
- return x.id === id ? status : x.status;
151
- }).reduce(function (oldStatus, newStatus) {
152
- return (0, _helpers.calcStatus)(oldStatus, newStatus);
153
- }, undefined);
154
- story.name = _this.addStatusToStoryName(story.name, (0, _helpers.calcStatus)(oldStatus, status), skip || false);
155
- }
156
- }
157
-
158
- if ((0, _types.isDefined)(results)) test.results ? (_test$results = test.results).push.apply(_test$results, _toConsumableArray(results)) : test.results = results;
159
-
160
- if ((0, _types.isDefined)(approved)) {
161
- Object.entries(approved).forEach(function (_ref2) {
162
- var _ref3 = _slicedToArray(_ref2, 2),
163
- image = _ref3[0],
164
- retry = _ref3[1];
165
-
166
- return retry !== undefined && test && ((test.approved = (test === null || test === void 0 ? void 0 : test.approved) || {})[image] = retry);
167
- });
71
+ if ((0, _types.isDefined)(skip)) test.skip = skip;
72
+ if ((0, _types.isDefined)(status)) {
73
+ test.status = status;
74
+ if ((0, _types.isDefined)(storyId) && (0, _types.isDefined)(prevStories[storyId])) {
75
+ const story = prevStories[storyId];
76
+ const storyStatus = this.getStoryTests(storyId);
77
+ const oldStatus = storyStatus.map(x => x.id === id ? status : x.status).reduce((oldStatus, newStatus) => (0, _helpers.calcStatus)(oldStatus, newStatus), undefined);
78
+ story.name = this.addStatusToStoryName(story.name, (0, _helpers.calcStatus)(oldStatus, status), skip || false);
168
79
  }
169
- });
170
- removedTests.forEach(function (_ref4) {
171
- var id = _ref4.id;
172
- return delete prevTests[id];
173
- });
174
- _this.status.tests = prevTests;
175
- _this.stories = prevStories;
176
-
177
- _this.setPanelsTitle();
178
-
179
- void _this.storybookApi.setStories(_this.stories);
180
- }
181
-
182
- _this.updateStatusListeners.forEach(function (x) {
183
- return x(update);
184
- });
185
- });
186
-
187
- _defineProperty(this, "getCurrentTest", function () {
188
- return _this.status.tests[_this.selectedTestId];
189
- });
190
-
191
- _defineProperty(this, "onStoryRendered", function (storyId) {
192
- if (_this.storyId === '') void _this.addStatusesToSideBar();
193
-
194
- if (_this.storyId !== storyId) {
195
- var _this$getTestsByStory, _this$getTestsByStory2;
196
-
197
- _this.storyId = storyId;
198
- _this.selectedTestId = (_this$getTestsByStory = (_this$getTestsByStory2 = _this.getTestsByStoryIdAndBrowser(_this.activeBrowser)[0]) === null || _this$getTestsByStory2 === void 0 ? void 0 : _this$getTestsByStory2.id) !== null && _this$getTestsByStory !== void 0 ? _this$getTestsByStory : '';
199
-
200
- _this.setPanelsTitle();
201
-
202
- _this.changeTestListeners.forEach(function (x) {
203
- return x(_this.selectedTestId);
204
- });
205
- }
206
- });
207
-
208
- _defineProperty(this, "onStart", function () {
209
- var _this$creeveyApi;
210
-
211
- (_this$creeveyApi = _this.creeveyApi) === null || _this$creeveyApi === void 0 ? void 0 : _this$creeveyApi.start([_this.selectedTestId]);
212
- });
213
-
214
- _defineProperty(this, "onStop", function () {
215
- var _this$creeveyApi2;
216
-
217
- (_this$creeveyApi2 = _this.creeveyApi) === null || _this$creeveyApi2 === void 0 ? void 0 : _this$creeveyApi2.stop();
218
- });
219
-
220
- _defineProperty(this, "onImageApprove", function (id, retry, image) {
221
- var _this$creeveyApi3;
222
-
223
- return (_this$creeveyApi3 = _this.creeveyApi) === null || _this$creeveyApi3 === void 0 ? void 0 : _this$creeveyApi3.approve(id, retry, image);
224
- });
225
-
226
- _defineProperty(this, "onStartAllStoryTests", function () {
227
- var _this$creeveyApi4;
228
-
229
- var ids = Object.values(_this.status.tests).filter(_types.isDefined).filter(function (x) {
230
- return x.storyId === _this.storyId;
231
- }).map(function (x) {
232
- return x.id;
233
- });
234
- (_this$creeveyApi4 = _this.creeveyApi) === null || _this$creeveyApi4 === void 0 ? void 0 : _this$creeveyApi4.start(ids);
235
- });
236
-
237
- _defineProperty(this, "onStartAllTests", function () {
238
- var _this$creeveyApi5;
239
-
240
- var ids = Object.values(_this.status.tests).filter(_types.isDefined).map(function (x) {
241
- return x.id;
242
- });
243
- (_this$creeveyApi5 = _this.creeveyApi) === null || _this$creeveyApi5 === void 0 ? void 0 : _this$creeveyApi5.start(ids);
244
- });
245
-
246
- _defineProperty(this, "onSetStories", function (data) {
247
- var stories = data.v ? (0, _shared.denormalizeStoryParameters)(data) : data.stories;
248
- _this.stories = stories;
249
- });
250
-
251
- _defineProperty(this, "setActiveBrowser", function (browser) {
252
- var _this$getTestsByStory3, _this$getTestsByStory4;
253
-
254
- _this.activeBrowser = browser;
255
- _this.selectedTestId = (_this$getTestsByStory3 = (_this$getTestsByStory4 = _this.getTestsByStoryIdAndBrowser(_this.activeBrowser)[0]) === null || _this$getTestsByStory4 === void 0 ? void 0 : _this$getTestsByStory4.id) !== null && _this$getTestsByStory3 !== void 0 ? _this$getTestsByStory3 : '';
256
-
257
- _this.changeTestListeners.forEach(function (x) {
258
- return x(_this.selectedTestId);
80
+ }
81
+ if ((0, _types.isDefined)(results)) test.results ? test.results.push(...results) : test.results = results;
82
+ if ((0, _types.isDefined)(approved)) {
83
+ Object.entries(approved).forEach(_ref => {
84
+ let [image, retry] = _ref;
85
+ return retry !== undefined && test && ((test.approved = test?.approved || {})[image] = retry);
86
+ });
87
+ }
259
88
  });
260
- });
261
-
262
- _defineProperty(this, "setSelectedTestId", function (testId) {
263
- _this.selectedTestId = testId;
264
-
265
- _this.changeTestListeners.forEach(function (x) {
266
- return x(_this.selectedTestId);
89
+ removedTests.forEach(_ref2 => {
90
+ let {
91
+ id
92
+ } = _ref2;
93
+ return delete prevTests[id];
267
94
  });
268
- });
269
-
270
- _defineProperty(this, "getStoryTests", function (storyId) {
271
- if (!_this.status || !_this.status.tests) return [];
272
- return Object.values(_this.status.tests).filter(function (result) {
273
- return (result === null || result === void 0 ? void 0 : result.storyId) === storyId;
274
- }).filter(_types.isDefined);
275
- });
276
-
277
- _defineProperty(this, "getBrowsers", function () {
278
- return _this.status.browsers;
279
- });
280
-
281
- _defineProperty(this, "getTestsByStoryIdAndBrowser", function (browser) {
282
- return Object.values(_this.status.tests).filter(function (x) {
283
- return (x === null || x === void 0 ? void 0 : x.browser) === browser && x.storyId === _this.storyId;
284
- }).filter(_types.isDefined);
285
- });
286
-
287
- _defineProperty(this, "getTabTitle", function (browser) {
288
- var tests = _this.getTestsByStoryIdAndBrowser(browser);
289
-
290
- var browserStatus = tests.map(function (x) {
291
- return x && x.status;
292
- }).reduce(function (oldStatus, newStatus) {
293
- return (0, _helpers.calcStatus)(oldStatus, newStatus);
294
- }, undefined);
295
- var browserSkip = tests.length > 0 ? tests.every(function (x) {
296
- return x && x.skip;
297
- }) : false;
298
- var emojiStatus = (0, _utils.getEmojiByTestStatus)(browserStatus, browserSkip);
299
- return "".concat(emojiStatus ? "".concat(emojiStatus, " ") : '', "Creevey/").concat(browser);
300
- });
301
-
302
- _defineProperty(this, "setPanelsTitle", function () {
303
- var _this$storybookApi;
304
-
305
- var panels = (_this$storybookApi = _this.storybookApi) === null || _this$storybookApi === void 0 ? void 0 : _this$storybookApi.getPanels();
306
- if (!panels) return;
307
- var firstPanelBrowser = _this.activeBrowser;
308
-
309
- for (var p in panels) {
310
- var _panel$id;
311
-
312
- var panel = panels[p];
313
-
314
- if (((_panel$id = panel.id) === null || _panel$id === void 0 ? void 0 : _panel$id.indexOf(_register.ADDON_ID)) === 0 && panel.paramKey) {
315
- panel.title = _this.getTabTitle(panel.paramKey);
316
- if (!firstPanelBrowser) firstPanelBrowser = panel.paramKey;
317
- }
318
- }
319
-
320
- _this.storybookApi.setSelectedPanel("".concat(_register.ADDON_ID, "/panel/").concat(firstPanelBrowser));
321
- });
322
-
323
- this.storybookApi = storybookApi;
324
- }
325
-
326
- _createClass(CreeveyManager, [{
327
- key: "onUpdateStatus",
328
- value: function onUpdateStatus(listener) {
329
- var _this2 = this;
330
-
331
- this.updateStatusListeners.push(listener);
332
- return function () {
333
- return void (_this2.updateStatusListeners = _this2.updateStatusListeners.filter(function (x) {
334
- return x != listener;
335
- }));
336
- };
95
+ this.status.tests = prevTests;
96
+ this.stories = prevStories;
97
+ this.setPanelsTitle();
98
+ // TODO Check setStories method in 6.x and migrate properly
99
+ this.storybookApi.emit(_coreEvents.SET_STORIES, this.stories);
337
100
  }
338
- }, {
339
- key: "onChangeTest",
340
- value: function onChangeTest(listener) {
341
- var _this3 = this;
342
-
343
- this.changeTestListeners.push(listener);
344
- return function () {
345
- return void (_this3.changeTestListeners = _this3.changeTestListeners.filter(function (x) {
346
- return x != listener;
347
- }));
348
- };
101
+ this.updateStatusListeners.forEach(x => x(update));
102
+ };
103
+ getCurrentTest = () => {
104
+ return this.status.tests[this.selectedTestId];
105
+ };
106
+ onStoryRendered = storyId => {
107
+ if (this.storyId === '') this.addStatusesToSideBar();
108
+ if (this.storyId !== storyId) {
109
+ this.storyId = storyId;
110
+ this.selectedTestId = this.getTestsByStoryIdAndBrowser(this.activeBrowser)[0]?.id ?? '';
111
+ this.setPanelsTitle();
112
+ this.changeTestListeners.forEach(x => x(this.selectedTestId));
349
113
  }
350
- }, {
351
- key: "addStatusesToSideBar",
352
- value: function () {
353
- var _addStatusesToSideBar = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
354
- var _this4 = this;
355
-
356
- var stories;
357
- return regeneratorRuntime.wrap(function _callee2$(_context2) {
358
- while (1) {
359
- switch (_context2.prev = _context2.next) {
360
- case 0:
361
- if (Object.keys(this.stories).length) {
362
- _context2.next = 2;
363
- break;
364
- }
365
-
366
- return _context2.abrupt("return");
367
-
368
- case 2:
369
- stories = this.stories;
370
- Object.keys(this.stories).forEach(function (storyId) {
371
- var storyStatus = _this4.getStoryTests(storyId);
372
-
373
- var status = storyStatus.map(function (x) {
374
- return x.status;
375
- }).reduce(function (oldStatus, newStatus) {
376
- return (0, _helpers.calcStatus)(oldStatus, newStatus);
377
- }, undefined);
378
- var skip = storyStatus.length > 0 ? storyStatus.every(function (x) {
379
- return x.skip;
380
- }) : false;
381
- _this4.stories[storyId].name = _this4.addStatusToStoryName(stories[storyId].name, status, skip);
382
- });
383
- _context2.next = 6;
384
- return this.storybookApi.setStories(this.stories);
385
-
386
- case 6:
387
- case "end":
388
- return _context2.stop();
389
- }
390
- }
391
- }, _callee2, this);
392
- }));
393
-
394
- function addStatusesToSideBar() {
395
- return _addStatusesToSideBar.apply(this, arguments);
114
+ };
115
+ onStart = () => {
116
+ this.creeveyApi?.start([this.selectedTestId]);
117
+ };
118
+ onStop = () => {
119
+ this.creeveyApi?.stop();
120
+ };
121
+ onImageApprove = (id, retry, image) => this.creeveyApi?.approve(id, retry, image);
122
+ onStartAllStoryTests = () => {
123
+ const ids = Object.values(this.status.tests).filter(_types.isDefined).filter(x => x.storyId === this.storyId).map(x => x.id);
124
+ this.creeveyApi?.start(ids);
125
+ };
126
+ onStartAllTests = () => {
127
+ const ids = Object.values(this.status.tests).filter(_types.isDefined).map(x => x.id);
128
+ this.creeveyApi?.start(ids);
129
+ };
130
+ onSetStories = data => {
131
+ const stories = data.v ? (0, _shared.denormalizeStoryParameters)(data) : data.stories;
132
+ this.stories = stories;
133
+ };
134
+ setActiveBrowser = browser => {
135
+ this.activeBrowser = browser;
136
+ this.selectedTestId = this.getTestsByStoryIdAndBrowser(this.activeBrowser)[0]?.id ?? '';
137
+ this.changeTestListeners.forEach(x => x(this.selectedTestId));
138
+ };
139
+ setSelectedTestId = testId => {
140
+ this.selectedTestId = testId;
141
+ this.changeTestListeners.forEach(x => x(this.selectedTestId));
142
+ };
143
+ getStoryTests = storyId => {
144
+ if (!this.status || !this.status.tests) return [];
145
+ return Object.values(this.status.tests).filter(result => result?.storyId === storyId).filter(_types.isDefined);
146
+ };
147
+ getBrowsers = () => {
148
+ return this.status.browsers;
149
+ };
150
+ getTestsByStoryIdAndBrowser = browser => {
151
+ return Object.values(this.status.tests).filter(x => x?.browser === browser && x.storyId === this.storyId).filter(_types.isDefined);
152
+ };
153
+ getTabTitle = browser => {
154
+ const tests = this.getTestsByStoryIdAndBrowser(browser);
155
+ const browserStatus = tests.map(x => x && x.status).reduce((oldStatus, newStatus) => (0, _helpers.calcStatus)(oldStatus, newStatus), undefined);
156
+ const browserSkip = tests.length > 0 ? tests.every(x => x && x.skip) : false;
157
+ const emojiStatus = (0, _utils.getEmojiByTestStatus)(browserStatus, browserSkip);
158
+ return `${emojiStatus ? `${emojiStatus} ` : ''}Creevey/${browser}`;
159
+ };
160
+ setPanelsTitle = () => {
161
+ const panels = this.storybookApi?.getPanels();
162
+ if (!panels) return;
163
+ let firstPanelBrowser = this.activeBrowser;
164
+ for (const p in panels) {
165
+ const panel = panels[p];
166
+ if (panel.id?.indexOf(_register.ADDON_ID) === 0 && panel.paramKey) {
167
+ panel.title = this.getTabTitle(panel.paramKey);
168
+ if (!firstPanelBrowser) firstPanelBrowser = panel.paramKey;
396
169
  }
397
-
398
- return addStatusesToSideBar;
399
- }()
400
- }, {
401
- key: "addStatusToStoryName",
402
- value: function addStatusToStoryName(name, status, skip) {
403
- name = name.replace(/^(❌|✔|🟡|🕗|⏸) /, '');
404
- var emojiStatus = (0, _utils.getEmojiByTestStatus)(status, skip);
405
- return "".concat(emojiStatus ? "".concat(emojiStatus, " ") : '', " ").concat(name);
406
170
  }
407
- }]);
408
-
409
- return CreeveyManager;
410
- }();
411
-
171
+ this.storybookApi.setSelectedPanel(`${_register.ADDON_ID}/panel/${firstPanelBrowser}`);
172
+ };
173
+ addStatusesToSideBar() {
174
+ if (!Object.keys(this.stories).length) return;
175
+ const stories = this.stories;
176
+ Object.keys(this.stories).forEach(storyId => {
177
+ const storyStatus = this.getStoryTests(storyId);
178
+ const status = storyStatus.map(x => x.status).reduce((oldStatus, newStatus) => (0, _helpers.calcStatus)(oldStatus, newStatus), undefined);
179
+ const skip = storyStatus.length > 0 ? storyStatus.every(x => x.skip) : false;
180
+ this.stories[storyId].name = this.addStatusToStoryName(stories[storyId].name, status, skip);
181
+ });
182
+
183
+ // TODO Check setStories method in 6.x and migrate properly
184
+ this.storybookApi.emit(_coreEvents.SET_STORIES, this.stories);
185
+ }
186
+ addStatusToStoryName(name, status, skip) {
187
+ name = name.replace(/^(❌|✔|🟡|🕗|⏸) /, '');
188
+ const emojiStatus = (0, _utils.getEmojiByTestStatus)(status, skip);
189
+ return `${emojiStatus ? `${emojiStatus} ` : ''} ${name}`;
190
+ }
191
+ }
412
192
  exports.CreeveyManager = CreeveyManager;