creevey 0.8.0-beta.0 → 0.8.0

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 (199) hide show
  1. package/CHANGELOG.md +30 -7
  2. package/README.md +9 -1
  3. package/addon/README.md +3 -0
  4. package/addon/package.json +4 -0
  5. package/docs/config.md +29 -26
  6. package/jest.config.js +6 -0
  7. package/lib/cjs/client/addon/Manager.js +122 -271
  8. package/lib/cjs/client/addon/components/Addon.js +17 -38
  9. package/lib/cjs/client/addon/components/Icons.js +11 -7
  10. package/lib/cjs/client/addon/components/Panel.js +17 -13
  11. package/lib/cjs/client/addon/components/TestSelect.js +11 -9
  12. package/lib/cjs/client/addon/components/Tools.js +21 -40
  13. package/lib/cjs/client/addon/decorator.js +1 -1
  14. package/lib/cjs/client/addon/index.js +31 -0
  15. package/lib/cjs/client/addon/preset.ie11.js +74 -0
  16. package/lib/cjs/client/addon/preset.js +13 -31
  17. package/lib/cjs/client/addon/readyForCapture.js +12 -0
  18. package/lib/cjs/client/addon/register.js +46 -70
  19. package/lib/cjs/client/addon/utils.js +6 -2
  20. package/lib/cjs/client/addon/withCreevey.js +221 -155
  21. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +26 -24
  22. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +22 -18
  23. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +44 -66
  24. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +38 -50
  25. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +26 -45
  26. package/lib/cjs/client/shared/components/ImagesView/index.js +9 -9
  27. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +12 -8
  28. package/lib/cjs/client/shared/components/PageFooter/Paging.js +14 -18
  29. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +22 -18
  30. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +42 -67
  31. package/lib/cjs/client/shared/components/ResultsPage.js +39 -69
  32. package/lib/cjs/client/shared/creeveyClientApi.js +55 -82
  33. package/lib/cjs/client/shared/helpers.js +140 -211
  34. package/lib/cjs/client/shared/viewMode.js +5 -5
  35. package/lib/cjs/client/web/142.js +2 -0
  36. package/lib/cjs/client/web/142.js.LICENSE.txt +12 -0
  37. package/lib/cjs/client/web/32.js +1 -0
  38. package/lib/cjs/client/web/551.js +1 -0
  39. package/lib/cjs/client/web/566.js +2 -0
  40. package/lib/cjs/client/web/566.js.LICENSE.txt +31 -0
  41. package/lib/cjs/client/web/691.js +2 -0
  42. package/lib/cjs/client/web/691.js.LICENSE.txt +8 -0
  43. package/lib/cjs/client/web/725.js +1 -0
  44. package/lib/cjs/client/web/main.js +2 -38
  45. package/lib/cjs/client/web/main.js.LICENSE.txt +49 -0
  46. package/lib/cjs/creevey.js +3 -5
  47. package/lib/cjs/index.js +10 -15
  48. package/lib/cjs/server/config.js +5 -4
  49. package/lib/cjs/server/docker.js +3 -7
  50. package/lib/cjs/server/extract.js +7 -4
  51. package/lib/cjs/server/index.js +3 -5
  52. package/lib/cjs/server/loaders/babel/creevey-plugin.js +1 -3
  53. package/lib/cjs/server/loaders/babel/helpers.js +13 -23
  54. package/lib/cjs/server/loaders/babel/register.js +2 -4
  55. package/lib/cjs/server/loaders/webpack/compile.js +34 -51
  56. package/lib/cjs/server/loaders/webpack/creevey-loader.js +20 -22
  57. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +2 -7
  58. package/lib/cjs/server/loaders/webpack/mdx-loader.js +2 -2
  59. package/lib/cjs/server/loaders/webpack/start.js +1 -1
  60. package/lib/cjs/server/logger.js +2 -1
  61. package/lib/cjs/server/master/index.js +4 -4
  62. package/lib/cjs/server/master/master.js +1 -0
  63. package/lib/cjs/server/master/pool.js +38 -47
  64. package/lib/cjs/server/master/runner.js +53 -66
  65. package/lib/cjs/server/master/server.js +78 -4
  66. package/lib/cjs/server/messages.js +128 -18
  67. package/lib/cjs/server/selenium/browser.js +129 -55
  68. package/lib/cjs/server/selenium/selenoid.js +5 -7
  69. package/lib/cjs/server/stories.js +58 -72
  70. package/lib/cjs/server/storybook/entry.js +7 -22
  71. package/lib/cjs/server/storybook/helpers.js +20 -27
  72. package/lib/cjs/server/storybook/providers/browser.js +74 -0
  73. package/lib/cjs/server/storybook/{nodejs-provider.js → providers/nodejs.js} +37 -20
  74. package/lib/cjs/server/update.js +1 -5
  75. package/lib/cjs/server/utils.js +26 -35
  76. package/lib/cjs/server/worker/helpers.js +2 -6
  77. package/lib/cjs/server/worker/reporter.js +8 -20
  78. package/lib/cjs/server/worker/worker.js +21 -19
  79. package/lib/cjs/shared/index.js +101 -0
  80. package/lib/cjs/shared/serializeRegExp.js +42 -0
  81. package/lib/cjs/types.js +11 -6
  82. package/lib/esm/client/addon/Manager.js +122 -271
  83. package/lib/esm/client/addon/components/Addon.js +15 -34
  84. package/lib/esm/client/addon/components/Icons.js +10 -6
  85. package/lib/esm/client/addon/components/Panel.js +17 -13
  86. package/lib/esm/client/addon/components/TestSelect.js +11 -9
  87. package/lib/esm/client/addon/components/Tools.js +19 -36
  88. package/lib/esm/client/addon/decorator.js +1 -1
  89. package/lib/esm/client/addon/index.js +2 -0
  90. package/lib/esm/client/addon/preset.ie11.js +59 -0
  91. package/lib/esm/client/addon/preset.js +12 -26
  92. package/lib/esm/client/addon/readyForCapture.js +5 -0
  93. package/lib/esm/client/addon/register.js +42 -66
  94. package/lib/esm/client/addon/utils.js +3 -2
  95. package/lib/esm/client/addon/withCreevey.js +209 -156
  96. package/lib/esm/client/shared/components/ImagesView/BlendView.js +23 -20
  97. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +21 -17
  98. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +42 -63
  99. package/lib/esm/client/shared/components/ImagesView/SlideView.js +36 -47
  100. package/lib/esm/client/shared/components/ImagesView/SwapView.js +24 -42
  101. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +12 -8
  102. package/lib/esm/client/shared/components/PageFooter/Paging.js +14 -18
  103. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +22 -18
  104. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +37 -60
  105. package/lib/esm/client/shared/components/ResultsPage.js +36 -64
  106. package/lib/esm/client/shared/creeveyClientApi.js +57 -84
  107. package/lib/esm/client/shared/helpers.js +124 -195
  108. package/lib/esm/client/shared/viewMode.js +4 -4
  109. package/lib/esm/creevey.js +3 -5
  110. package/lib/esm/index.js +2 -3
  111. package/lib/esm/server/config.js +4 -5
  112. package/lib/esm/server/docker.js +2 -2
  113. package/lib/esm/server/extract.js +6 -4
  114. package/lib/esm/server/index.js +3 -4
  115. package/lib/esm/server/loaders/babel/creevey-plugin.js +1 -3
  116. package/lib/esm/server/loaders/babel/helpers.js +12 -22
  117. package/lib/esm/server/loaders/babel/register.js +3 -5
  118. package/lib/esm/server/loaders/webpack/compile.js +35 -52
  119. package/lib/esm/server/loaders/webpack/creevey-loader.js +9 -10
  120. package/lib/esm/server/loaders/webpack/dummy-hmr.js +2 -6
  121. package/lib/esm/server/loaders/webpack/mdx-loader.js +2 -2
  122. package/lib/esm/server/loaders/webpack/start.js +1 -1
  123. package/lib/esm/server/master/index.js +4 -4
  124. package/lib/esm/server/master/master.js +1 -0
  125. package/lib/esm/server/master/pool.js +38 -49
  126. package/lib/esm/server/master/runner.js +53 -66
  127. package/lib/esm/server/master/server.js +76 -6
  128. package/lib/esm/server/messages.js +118 -14
  129. package/lib/esm/server/selenium/browser.js +126 -57
  130. package/lib/esm/server/selenium/selenoid.js +4 -6
  131. package/lib/esm/server/stories.js +58 -70
  132. package/lib/esm/server/storybook/entry.js +5 -22
  133. package/lib/esm/server/storybook/helpers.js +11 -20
  134. package/lib/esm/server/storybook/providers/browser.js +60 -0
  135. package/lib/esm/server/storybook/{nodejs-provider.js → providers/nodejs.js} +35 -19
  136. package/lib/esm/server/update.js +1 -5
  137. package/lib/esm/server/utils.js +18 -31
  138. package/lib/esm/server/worker/helpers.js +2 -6
  139. package/lib/esm/server/worker/reporter.js +8 -20
  140. package/lib/esm/server/worker/worker.js +22 -20
  141. package/lib/esm/shared/index.js +78 -0
  142. package/lib/esm/shared/serializeRegExp.js +24 -0
  143. package/lib/esm/types.js +3 -0
  144. package/lib/types/client/addon/Manager.d.ts +2 -2
  145. package/lib/types/client/addon/components/TestSelect.d.ts +0 -1
  146. package/lib/types/client/addon/index.d.ts +2 -0
  147. package/lib/types/client/addon/preset.d.ts +2 -1
  148. package/lib/types/client/addon/preset.ie11.d.ts +10 -0
  149. package/lib/types/client/addon/readyForCapture.d.ts +6 -0
  150. package/lib/types/client/addon/utils.d.ts +1 -0
  151. package/lib/types/client/addon/withCreevey.d.ts +13 -2
  152. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +1 -1
  153. package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +0 -1
  154. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +1 -1
  155. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +1 -1
  156. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +1 -1
  157. package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +0 -1
  158. package/lib/types/client/shared/components/PageFooter/Paging.d.ts +0 -1
  159. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +1 -1
  160. package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +0 -1
  161. package/lib/types/client/shared/components/ResultsPage.d.ts +1 -1
  162. package/lib/types/client/web/CreeveyApp.d.ts +0 -1
  163. package/lib/types/client/web/CreeveyLoader.d.ts +1 -2
  164. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +1 -1
  165. package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +0 -1
  166. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +6 -6
  167. package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +0 -1
  168. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +1 -1
  169. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +1 -1
  170. package/lib/types/index.d.ts +0 -1
  171. package/lib/types/server/loaders/babel/register.d.ts +1 -1
  172. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +4 -2
  173. package/lib/types/server/logger.d.ts +6 -2
  174. package/lib/types/server/master/master.d.ts +1 -0
  175. package/lib/types/server/master/pool.d.ts +1 -0
  176. package/lib/types/server/master/server.d.ts +1 -1
  177. package/lib/types/server/messages.d.ts +17 -6
  178. package/lib/types/server/selenium/browser.d.ts +5 -2
  179. package/lib/types/server/stories.d.ts +2 -2
  180. package/lib/types/server/storybook/entry.d.ts +2 -3
  181. package/lib/types/server/storybook/helpers.d.ts +1 -1
  182. package/lib/types/server/storybook/providers/browser.d.ts +4 -0
  183. package/lib/types/server/storybook/providers/nodejs.d.ts +9 -0
  184. package/lib/types/server/utils.d.ts +5 -1
  185. package/lib/types/server/worker/helpers.d.ts +2 -1
  186. package/lib/types/shared/index.d.ts +7 -0
  187. package/lib/types/shared/serializeRegExp.d.ts +9 -0
  188. package/lib/types/types.d.ts +32 -5
  189. package/package.json +120 -103
  190. package/preset/ie11.js +5 -0
  191. package/{preset.js → preset/index.js} +2 -2
  192. package/types/mdx.d.ts +3 -2
  193. package/types/mocha.d.ts +1 -0
  194. package/lib/cjs/client/web/1.js +0 -13
  195. package/lib/cjs/client/web/2.js +0 -1
  196. package/lib/cjs/shared.js +0 -35
  197. package/lib/esm/shared.js +0 -22
  198. package/lib/types/server/storybook/nodejs-provider.d.ts +0 -5
  199. package/lib/types/shared.d.ts +0 -4
@@ -1,33 +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 _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; }
6
-
7
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
8
-
9
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
10
-
11
- 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."); }
12
-
13
- 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); }
14
-
15
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
16
-
17
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
18
-
19
- 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; }
20
-
21
- 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); } }
22
-
23
- 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); }); }; }
24
-
25
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
26
-
27
- 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); } }
28
-
29
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
30
-
31
1
  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; }
32
2
 
33
3
  import { SET_STORIES, STORY_RENDERED } from '@storybook/core-events';
@@ -37,11 +7,9 @@ import { initCreeveyClientApi } from '../shared/creeveyClientApi';
37
7
  import { calcStatus } from '../shared/helpers';
38
8
  import { ADDON_ID } from './register';
39
9
  import { getEmojiByTestStatus } from './utils';
40
- export var CreeveyManager = /*#__PURE__*/function () {
41
- function CreeveyManager(storybookApi) {
42
- var _this = this;
43
-
44
- _classCallCheck(this, CreeveyManager);
10
+ export class CreeveyManager {
11
+ constructor(storybookApi) {
12
+ this.storybookApi = storybookApi;
45
13
 
46
14
  _defineProperty(this, "storyId", '');
47
15
 
@@ -63,60 +31,38 @@ export var CreeveyManager = /*#__PURE__*/function () {
63
31
 
64
32
  _defineProperty(this, "changeTestListeners", []);
65
33
 
66
- _defineProperty(this, "initAll", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
67
- return regeneratorRuntime.wrap(function _callee$(_context) {
68
- while (1) {
69
- switch (_context.prev = _context.next) {
70
- case 0:
71
- _this.storybookApi.on(STORY_RENDERED, _this.onStoryRendered);
72
-
73
- _this.storybookApi.on(SET_STORIES, _this.onSetStories);
74
-
75
- _context.next = 4;
76
- return initCreeveyClientApi();
77
-
78
- case 4:
79
- _this.creeveyApi = _context.sent;
80
-
81
- _this.creeveyApi.onUpdate(_this.handleCreeveyUpdate);
82
-
83
- _context.next = 8;
84
- return _this.creeveyApi.status;
85
-
86
- case 8:
87
- _this.status = _context.sent;
88
-
89
- case 9:
90
- case "end":
91
- return _context.stop();
92
- }
93
- }
94
- }, _callee);
95
- })));
34
+ _defineProperty(this, "initAll", async () => {
35
+ this.storybookApi.on(STORY_RENDERED, this.onStoryRendered);
36
+ this.storybookApi.on(SET_STORIES, this.onSetStories);
37
+ this.creeveyApi = await initCreeveyClientApi();
38
+ this.creeveyApi.onUpdate(this.handleCreeveyUpdate);
39
+ this.status = await this.creeveyApi.status;
40
+ });
96
41
 
97
- _defineProperty(this, "handleCreeveyUpdate", function (update) {
98
- var tests = update.tests,
99
- _update$removedTests = update.removedTests,
100
- removedTests = _update$removedTests === void 0 ? [] : _update$removedTests,
101
- isRunning = update.isRunning;
42
+ _defineProperty(this, "handleCreeveyUpdate", update => {
43
+ const {
44
+ tests,
45
+ removedTests = [],
46
+ isRunning
47
+ } = update;
102
48
 
103
49
  if (isDefined(isRunning)) {
104
- _this.status.isRunning = isRunning;
50
+ this.status.isRunning = isRunning;
105
51
  }
106
52
 
107
53
  if (isDefined(tests)) {
108
- var prevTests = _this.status.tests;
109
- var prevStories = _this.stories || {};
110
- Object.values(tests).filter(isDefined).forEach(function (update) {
111
- var _test$results;
112
-
113
- var id = update.id,
114
- skip = update.skip,
115
- status = update.status,
116
- results = update.results,
117
- approved = update.approved,
118
- storyId = update.storyId;
119
- var test = prevTests[id];
54
+ const prevTests = this.status.tests;
55
+ const prevStories = this.stories || {};
56
+ Object.values(tests).filter(isDefined).forEach(update => {
57
+ const {
58
+ id,
59
+ skip,
60
+ status,
61
+ results,
62
+ approved,
63
+ storyId
64
+ } = update;
65
+ const test = prevTests[id];
120
66
 
121
67
  if (!test) {
122
68
  return prevTests[id] = update;
@@ -128,270 +74,175 @@ export var CreeveyManager = /*#__PURE__*/function () {
128
74
  test.status = status;
129
75
 
130
76
  if (isDefined(storyId) && isDefined(prevStories[storyId])) {
131
- var story = prevStories[storyId];
132
-
133
- var storyStatus = _this.getStoryTests(storyId);
134
-
135
- var oldStatus = storyStatus.map(function (x) {
136
- return x.id === id ? status : x.status;
137
- }).reduce(function (oldStatus, newStatus) {
138
- return calcStatus(oldStatus, newStatus);
139
- }, undefined);
140
- story.name = _this.addStatusToStoryName(story.name, calcStatus(oldStatus, status), skip || false);
77
+ const story = prevStories[storyId];
78
+ const storyStatus = this.getStoryTests(storyId);
79
+ const oldStatus = storyStatus.map(x => x.id === id ? status : x.status).reduce((oldStatus, newStatus) => calcStatus(oldStatus, newStatus), undefined);
80
+ story.name = this.addStatusToStoryName(story.name, calcStatus(oldStatus, status), skip || false);
141
81
  }
142
82
  }
143
83
 
144
- if (isDefined(results)) test.results ? (_test$results = test.results).push.apply(_test$results, _toConsumableArray(results)) : test.results = results;
84
+ if (isDefined(results)) test.results ? test.results.push(...results) : test.results = results;
145
85
 
146
86
  if (isDefined(approved)) {
147
- Object.entries(approved).forEach(function (_ref2) {
148
- var _ref3 = _slicedToArray(_ref2, 2),
149
- image = _ref3[0],
150
- retry = _ref3[1];
151
-
87
+ Object.entries(approved).forEach(_ref => {
88
+ let [image, retry] = _ref;
152
89
  return retry !== undefined && test && ((test.approved = (test === null || test === void 0 ? void 0 : test.approved) || {})[image] = retry);
153
90
  });
154
91
  }
155
92
  });
156
- removedTests.forEach(function (_ref4) {
157
- var id = _ref4.id;
93
+ removedTests.forEach(_ref2 => {
94
+ let {
95
+ id
96
+ } = _ref2;
158
97
  return delete prevTests[id];
159
98
  });
160
- _this.status.tests = prevTests;
161
- _this.stories = prevStories;
162
-
163
- _this.setPanelsTitle();
164
-
165
- void _this.storybookApi.setStories(_this.stories);
99
+ this.status.tests = prevTests;
100
+ this.stories = prevStories;
101
+ this.setPanelsTitle();
102
+ void this.storybookApi.setStories(this.stories);
166
103
  }
167
104
 
168
- _this.updateStatusListeners.forEach(function (x) {
169
- return x(update);
170
- });
105
+ this.updateStatusListeners.forEach(x => x(update));
171
106
  });
172
107
 
173
- _defineProperty(this, "getCurrentTest", function () {
174
- return _this.status.tests[_this.selectedTestId];
108
+ _defineProperty(this, "getCurrentTest", () => {
109
+ return this.status.tests[this.selectedTestId];
175
110
  });
176
111
 
177
- _defineProperty(this, "onStoryRendered", function (storyId) {
178
- if (_this.storyId === '') void _this.addStatusesToSideBar();
112
+ _defineProperty(this, "onStoryRendered", storyId => {
113
+ if (this.storyId === '') void this.addStatusesToSideBar();
179
114
 
180
- if (_this.storyId !== storyId) {
115
+ if (this.storyId !== storyId) {
181
116
  var _this$getTestsByStory, _this$getTestsByStory2;
182
117
 
183
- _this.storyId = storyId;
184
- _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 : '';
185
-
186
- _this.setPanelsTitle();
187
-
188
- _this.changeTestListeners.forEach(function (x) {
189
- return x(_this.selectedTestId);
190
- });
118
+ this.storyId = storyId;
119
+ 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 : '';
120
+ this.setPanelsTitle();
121
+ this.changeTestListeners.forEach(x => x(this.selectedTestId));
191
122
  }
192
123
  });
193
124
 
194
- _defineProperty(this, "onStart", function () {
125
+ _defineProperty(this, "onStart", () => {
195
126
  var _this$creeveyApi;
196
127
 
197
- (_this$creeveyApi = _this.creeveyApi) === null || _this$creeveyApi === void 0 ? void 0 : _this$creeveyApi.start([_this.selectedTestId]);
128
+ (_this$creeveyApi = this.creeveyApi) === null || _this$creeveyApi === void 0 ? void 0 : _this$creeveyApi.start([this.selectedTestId]);
198
129
  });
199
130
 
200
- _defineProperty(this, "onStop", function () {
131
+ _defineProperty(this, "onStop", () => {
201
132
  var _this$creeveyApi2;
202
133
 
203
- (_this$creeveyApi2 = _this.creeveyApi) === null || _this$creeveyApi2 === void 0 ? void 0 : _this$creeveyApi2.stop();
134
+ (_this$creeveyApi2 = this.creeveyApi) === null || _this$creeveyApi2 === void 0 ? void 0 : _this$creeveyApi2.stop();
204
135
  });
205
136
 
206
- _defineProperty(this, "onImageApprove", function (id, retry, image) {
137
+ _defineProperty(this, "onImageApprove", (id, retry, image) => {
207
138
  var _this$creeveyApi3;
208
139
 
209
- return (_this$creeveyApi3 = _this.creeveyApi) === null || _this$creeveyApi3 === void 0 ? void 0 : _this$creeveyApi3.approve(id, retry, image);
140
+ return (_this$creeveyApi3 = this.creeveyApi) === null || _this$creeveyApi3 === void 0 ? void 0 : _this$creeveyApi3.approve(id, retry, image);
210
141
  });
211
142
 
212
- _defineProperty(this, "onStartAllStoryTests", function () {
143
+ _defineProperty(this, "onStartAllStoryTests", () => {
213
144
  var _this$creeveyApi4;
214
145
 
215
- var ids = Object.values(_this.status.tests).filter(isDefined).filter(function (x) {
216
- return x.storyId === _this.storyId;
217
- }).map(function (x) {
218
- return x.id;
219
- });
220
- (_this$creeveyApi4 = _this.creeveyApi) === null || _this$creeveyApi4 === void 0 ? void 0 : _this$creeveyApi4.start(ids);
146
+ const ids = Object.values(this.status.tests).filter(isDefined).filter(x => x.storyId === this.storyId).map(x => x.id);
147
+ (_this$creeveyApi4 = this.creeveyApi) === null || _this$creeveyApi4 === void 0 ? void 0 : _this$creeveyApi4.start(ids);
221
148
  });
222
149
 
223
- _defineProperty(this, "onStartAllTests", function () {
150
+ _defineProperty(this, "onStartAllTests", () => {
224
151
  var _this$creeveyApi5;
225
152
 
226
- var ids = Object.values(_this.status.tests).filter(isDefined).map(function (x) {
227
- return x.id;
228
- });
229
- (_this$creeveyApi5 = _this.creeveyApi) === null || _this$creeveyApi5 === void 0 ? void 0 : _this$creeveyApi5.start(ids);
153
+ const ids = Object.values(this.status.tests).filter(isDefined).map(x => x.id);
154
+ (_this$creeveyApi5 = this.creeveyApi) === null || _this$creeveyApi5 === void 0 ? void 0 : _this$creeveyApi5.start(ids);
230
155
  });
231
156
 
232
- _defineProperty(this, "onSetStories", function (data) {
233
- // TODO: Send PR to storybook to fix this
234
- var stories = data.v ? denormalizeStoryParameters(data) : data.stories;
235
- _this.stories = stories;
157
+ _defineProperty(this, "onSetStories", data => {
158
+ const stories = data.v ? denormalizeStoryParameters(data) : data.stories;
159
+ this.stories = stories;
236
160
  });
237
161
 
238
- _defineProperty(this, "setActiveBrowser", function (browser) {
162
+ _defineProperty(this, "setActiveBrowser", browser => {
239
163
  var _this$getTestsByStory3, _this$getTestsByStory4;
240
164
 
241
- _this.activeBrowser = browser;
242
- _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 : '';
243
-
244
- _this.changeTestListeners.forEach(function (x) {
245
- return x(_this.selectedTestId);
246
- });
165
+ this.activeBrowser = browser;
166
+ 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 : '';
167
+ this.changeTestListeners.forEach(x => x(this.selectedTestId));
247
168
  });
248
169
 
249
- _defineProperty(this, "setSelectedTestId", function (testId) {
250
- _this.selectedTestId = testId;
251
-
252
- _this.changeTestListeners.forEach(function (x) {
253
- return x(_this.selectedTestId);
254
- });
170
+ _defineProperty(this, "setSelectedTestId", testId => {
171
+ this.selectedTestId = testId;
172
+ this.changeTestListeners.forEach(x => x(this.selectedTestId));
255
173
  });
256
174
 
257
- _defineProperty(this, "getStoryTests", function (storyId) {
258
- if (!_this.status || !_this.status.tests) return [];
259
- return Object.values(_this.status.tests).filter(function (result) {
260
- return (result === null || result === void 0 ? void 0 : result.storyId) === storyId;
261
- }).filter(isDefined);
175
+ _defineProperty(this, "getStoryTests", storyId => {
176
+ if (!this.status || !this.status.tests) return [];
177
+ return Object.values(this.status.tests).filter(result => (result === null || result === void 0 ? void 0 : result.storyId) === storyId).filter(isDefined);
262
178
  });
263
179
 
264
- _defineProperty(this, "getBrowsers", function () {
265
- return _this.status.browsers;
180
+ _defineProperty(this, "getBrowsers", () => {
181
+ return this.status.browsers;
266
182
  });
267
183
 
268
- _defineProperty(this, "getTestsByStoryIdAndBrowser", function (browser) {
269
- return Object.values(_this.status.tests).filter(function (x) {
270
- return (x === null || x === void 0 ? void 0 : x.browser) === browser && x.storyId === _this.storyId;
271
- }).filter(isDefined);
184
+ _defineProperty(this, "getTestsByStoryIdAndBrowser", browser => {
185
+ return Object.values(this.status.tests).filter(x => (x === null || x === void 0 ? void 0 : x.browser) === browser && x.storyId === this.storyId).filter(isDefined);
272
186
  });
273
187
 
274
- _defineProperty(this, "getTabTitle", function (browser) {
275
- var tests = _this.getTestsByStoryIdAndBrowser(browser);
276
-
277
- var browserStatus = tests.map(function (x) {
278
- return x && x.status;
279
- }).reduce(function (oldStatus, newStatus) {
280
- return calcStatus(oldStatus, newStatus);
281
- }, undefined);
282
- var browserSkip = tests.length > 0 ? tests.every(function (x) {
283
- return x && x.skip;
284
- }) : false;
285
- var emojiStatus = getEmojiByTestStatus(browserStatus, browserSkip);
188
+ _defineProperty(this, "getTabTitle", browser => {
189
+ const tests = this.getTestsByStoryIdAndBrowser(browser);
190
+ const browserStatus = tests.map(x => x && x.status).reduce((oldStatus, newStatus) => calcStatus(oldStatus, newStatus), undefined);
191
+ const browserSkip = tests.length > 0 ? tests.every(x => x && x.skip) : false;
192
+ const emojiStatus = getEmojiByTestStatus(browserStatus, browserSkip);
286
193
  return "".concat(emojiStatus ? "".concat(emojiStatus, " ") : '', "Creevey/").concat(browser);
287
194
  });
288
195
 
289
- _defineProperty(this, "setPanelsTitle", function () {
196
+ _defineProperty(this, "setPanelsTitle", () => {
290
197
  var _this$storybookApi;
291
198
 
292
- var panels = (_this$storybookApi = _this.storybookApi) === null || _this$storybookApi === void 0 ? void 0 : _this$storybookApi.getPanels();
199
+ const panels = (_this$storybookApi = this.storybookApi) === null || _this$storybookApi === void 0 ? void 0 : _this$storybookApi.getPanels();
293
200
  if (!panels) return;
294
- var firstPanelBrowser = _this.activeBrowser;
201
+ let firstPanelBrowser = this.activeBrowser;
295
202
 
296
- for (var p in panels) {
203
+ for (const p in panels) {
297
204
  var _panel$id;
298
205
 
299
- var panel = panels[p];
206
+ const panel = panels[p];
300
207
 
301
208
  if (((_panel$id = panel.id) === null || _panel$id === void 0 ? void 0 : _panel$id.indexOf(ADDON_ID)) === 0 && panel.paramKey) {
302
- panel.title = _this.getTabTitle(panel.paramKey);
209
+ panel.title = this.getTabTitle(panel.paramKey);
303
210
  if (!firstPanelBrowser) firstPanelBrowser = panel.paramKey;
304
211
  }
305
212
  }
306
213
 
307
- _this.storybookApi.setSelectedPanel("".concat(ADDON_ID, "/panel/").concat(firstPanelBrowser));
214
+ this.storybookApi.setSelectedPanel("".concat(ADDON_ID, "/panel/").concat(firstPanelBrowser));
308
215
  });
309
216
 
310
217
  this.storybookApi = storybookApi;
311
218
  }
312
219
 
313
- _createClass(CreeveyManager, [{
314
- key: "onUpdateStatus",
315
- value: function onUpdateStatus(listener) {
316
- var _this2 = this;
317
-
318
- this.updateStatusListeners.push(listener);
319
- return function () {
320
- return void (_this2.updateStatusListeners = _this2.updateStatusListeners.filter(function (x) {
321
- return x != listener;
322
- }));
323
- };
324
- }
325
- }, {
326
- key: "onChangeTest",
327
- value: function onChangeTest(listener) {
328
- var _this3 = this;
329
-
330
- this.changeTestListeners.push(listener);
331
- return function () {
332
- return void (_this3.changeTestListeners = _this3.changeTestListeners.filter(function (x) {
333
- return x != listener;
334
- }));
335
- };
336
- }
337
- }, {
338
- key: "addStatusesToSideBar",
339
- value: function () {
340
- var _addStatusesToSideBar = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
341
- var _this4 = this;
342
-
343
- var stories;
344
- return regeneratorRuntime.wrap(function _callee2$(_context2) {
345
- while (1) {
346
- switch (_context2.prev = _context2.next) {
347
- case 0:
348
- if (Object.keys(this.stories).length) {
349
- _context2.next = 2;
350
- break;
351
- }
352
-
353
- return _context2.abrupt("return");
354
-
355
- case 2:
356
- stories = this.stories;
357
- Object.keys(this.stories).forEach(function (storyId) {
358
- var storyStatus = _this4.getStoryTests(storyId);
359
-
360
- var status = storyStatus.map(function (x) {
361
- return x.status;
362
- }).reduce(function (oldStatus, newStatus) {
363
- return calcStatus(oldStatus, newStatus);
364
- }, undefined);
365
- var skip = storyStatus.length > 0 ? storyStatus.every(function (x) {
366
- return x.skip;
367
- }) : false;
368
- _this4.stories[storyId].name = _this4.addStatusToStoryName(stories[storyId].name, status, skip);
369
- });
370
- _context2.next = 6;
371
- return this.storybookApi.setStories(this.stories);
372
-
373
- case 6:
374
- case "end":
375
- return _context2.stop();
376
- }
377
- }
378
- }, _callee2, this);
379
- }));
220
+ onUpdateStatus(listener) {
221
+ this.updateStatusListeners.push(listener);
222
+ return () => void (this.updateStatusListeners = this.updateStatusListeners.filter(x => x != listener));
223
+ }
380
224
 
381
- function addStatusesToSideBar() {
382
- return _addStatusesToSideBar.apply(this, arguments);
383
- }
225
+ onChangeTest(listener) {
226
+ this.changeTestListeners.push(listener);
227
+ return () => void (this.changeTestListeners = this.changeTestListeners.filter(x => x != listener));
228
+ }
229
+
230
+ async addStatusesToSideBar() {
231
+ if (!Object.keys(this.stories).length) return;
232
+ const stories = this.stories;
233
+ Object.keys(this.stories).forEach(storyId => {
234
+ const storyStatus = this.getStoryTests(storyId);
235
+ const status = storyStatus.map(x => x.status).reduce((oldStatus, newStatus) => calcStatus(oldStatus, newStatus), undefined);
236
+ const skip = storyStatus.length > 0 ? storyStatus.every(x => x.skip) : false;
237
+ this.stories[storyId].name = this.addStatusToStoryName(stories[storyId].name, status, skip);
238
+ });
239
+ await this.storybookApi.setStories(this.stories);
240
+ }
241
+
242
+ addStatusToStoryName(name, status, skip) {
243
+ name = name.replace(/^(❌|✔|🟡|🕗|⏸) /, '');
244
+ const emojiStatus = getEmojiByTestStatus(status, skip);
245
+ return "".concat(emojiStatus ? "".concat(emojiStatus, " ") : '', " ").concat(name);
246
+ }
384
247
 
385
- return addStatusesToSideBar;
386
- }()
387
- }, {
388
- key: "addStatusToStoryName",
389
- value: function addStatusToStoryName(name, status, skip) {
390
- name = name.replace(/^(❌|✔|🟡|🕗|⏸) /, '');
391
- var emojiStatus = getEmojiByTestStatus(status, skip);
392
- return "".concat(emojiStatus ? "".concat(emojiStatus, " ") : '', " ").concat(name);
393
- }
394
- }]);
395
-
396
- return CreeveyManager;
397
- }();
248
+ }
@@ -1,50 +1,31 @@
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 { Placeholder } from '@storybook/components';
14
2
  import React, { useEffect, useState } from 'react';
15
3
  import { Panel } from './Panel';
16
- export var Addon = function Addon(_ref) {
17
- var active = _ref.active,
18
- browser = _ref.browser,
19
- manager = _ref.manager;
20
-
21
- var _useState = useState([]),
22
- _useState2 = _slicedToArray(_useState, 2),
23
- tests = _useState2[0],
24
- setTests = _useState2[1];
25
-
26
- var _useState3 = useState(manager.selectedTestId),
27
- _useState4 = _slicedToArray(_useState3, 2),
28
- selectedTestId = _useState4[0],
29
- setSelectedTestId = _useState4[1];
30
-
31
- useEffect(function () {
4
+ export const Addon = _ref => {
5
+ let {
6
+ active,
7
+ browser,
8
+ manager
9
+ } = _ref;
10
+ const [tests, setTests] = useState([]);
11
+ const [selectedTestId, setSelectedTestId] = useState(manager.selectedTestId);
12
+ useEffect(() => {
32
13
  if (active) {
33
14
  manager.setActiveBrowser(browser);
34
- var browserTests = manager.getTestsByStoryIdAndBrowser(manager.activeBrowser);
15
+ const browserTests = manager.getTestsByStoryIdAndBrowser(manager.activeBrowser);
35
16
  setTests(browserTests);
36
17
  }
37
18
  }, [active, browser, manager]);
38
- useEffect(function () {
39
- var unsubscribe = manager.onChangeTest(function (testId) {
19
+ useEffect(() => {
20
+ const unsubscribe = manager.onChangeTest(testId => {
40
21
  setSelectedTestId(testId);
41
- var status = manager.getTestsByStoryIdAndBrowser(manager.activeBrowser);
22
+ const status = manager.getTestsByStoryIdAndBrowser(manager.activeBrowser);
42
23
  setTests(status);
43
24
  });
44
25
  return unsubscribe;
45
26
  }, [manager]);
46
- useEffect(function () {
47
- var unsubscribe = manager.onUpdateStatus(function () {
27
+ useEffect(() => {
28
+ const unsubscribe = manager.onUpdateStatus(() => {
48
29
  setTests(manager.getTestsByStoryIdAndBrowser(manager.activeBrowser));
49
30
  });
50
31
  return unsubscribe;
@@ -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,31 +4,35 @@ 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
22
  border: "1px solid ".concat(theme.appBorderColor)
19
23
  };
20
24
  });
21
- export var Panel = function Panel(_ref3) {
25
+ export const Panel = _ref3 => {
22
26
  var _result$results, _result$results$lengt, _result$results2;
23
27
 
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';
28
+ let {
29
+ tests,
30
+ selectedTestId,
31
+ onChangeTest,
32
+ onImageApprove
33
+ } = _ref3;
34
+ const result = tests.find(x => x.id === selectedTestId);
35
+ const isRunning = (result === null || result === void 0 ? void 0 : result.status) === 'running';
32
36
  return /*#__PURE__*/React.createElement("div", null, tests.length > 1 && /*#__PURE__*/React.createElement(TestSelectContainer, null, /*#__PURE__*/React.createElement(TestSelect, {
33
37
  tests: tests,
34
38
  selectedTestId: selectedTestId,