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.
- package/CHANGELOG.md +30 -7
- package/README.md +9 -1
- package/addon/README.md +3 -0
- package/addon/package.json +4 -0
- package/docs/config.md +29 -26
- package/jest.config.js +6 -0
- package/lib/cjs/client/addon/Manager.js +122 -271
- package/lib/cjs/client/addon/components/Addon.js +17 -38
- package/lib/cjs/client/addon/components/Icons.js +11 -7
- package/lib/cjs/client/addon/components/Panel.js +17 -13
- package/lib/cjs/client/addon/components/TestSelect.js +11 -9
- package/lib/cjs/client/addon/components/Tools.js +21 -40
- package/lib/cjs/client/addon/decorator.js +1 -1
- package/lib/cjs/client/addon/index.js +31 -0
- package/lib/cjs/client/addon/preset.ie11.js +74 -0
- package/lib/cjs/client/addon/preset.js +13 -31
- package/lib/cjs/client/addon/readyForCapture.js +12 -0
- package/lib/cjs/client/addon/register.js +46 -70
- package/lib/cjs/client/addon/utils.js +6 -2
- package/lib/cjs/client/addon/withCreevey.js +221 -155
- package/lib/cjs/client/shared/components/ImagesView/BlendView.js +26 -24
- package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +22 -18
- package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +44 -66
- package/lib/cjs/client/shared/components/ImagesView/SlideView.js +38 -50
- package/lib/cjs/client/shared/components/ImagesView/SwapView.js +26 -45
- package/lib/cjs/client/shared/components/ImagesView/index.js +9 -9
- package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +12 -8
- package/lib/cjs/client/shared/components/PageFooter/Paging.js +14 -18
- package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +22 -18
- package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +42 -67
- package/lib/cjs/client/shared/components/ResultsPage.js +39 -69
- package/lib/cjs/client/shared/creeveyClientApi.js +55 -82
- package/lib/cjs/client/shared/helpers.js +140 -211
- package/lib/cjs/client/shared/viewMode.js +5 -5
- package/lib/cjs/client/web/142.js +2 -0
- package/lib/cjs/client/web/142.js.LICENSE.txt +12 -0
- package/lib/cjs/client/web/32.js +1 -0
- package/lib/cjs/client/web/551.js +1 -0
- package/lib/cjs/client/web/566.js +2 -0
- package/lib/cjs/client/web/566.js.LICENSE.txt +31 -0
- package/lib/cjs/client/web/691.js +2 -0
- package/lib/cjs/client/web/691.js.LICENSE.txt +8 -0
- package/lib/cjs/client/web/725.js +1 -0
- package/lib/cjs/client/web/main.js +2 -38
- package/lib/cjs/client/web/main.js.LICENSE.txt +49 -0
- package/lib/cjs/creevey.js +3 -5
- package/lib/cjs/index.js +10 -15
- package/lib/cjs/server/config.js +5 -4
- package/lib/cjs/server/docker.js +3 -7
- package/lib/cjs/server/extract.js +7 -4
- package/lib/cjs/server/index.js +3 -5
- package/lib/cjs/server/loaders/babel/creevey-plugin.js +1 -3
- package/lib/cjs/server/loaders/babel/helpers.js +13 -23
- package/lib/cjs/server/loaders/babel/register.js +2 -4
- package/lib/cjs/server/loaders/webpack/compile.js +34 -51
- package/lib/cjs/server/loaders/webpack/creevey-loader.js +20 -22
- package/lib/cjs/server/loaders/webpack/dummy-hmr.js +2 -7
- package/lib/cjs/server/loaders/webpack/mdx-loader.js +2 -2
- package/lib/cjs/server/loaders/webpack/start.js +1 -1
- package/lib/cjs/server/logger.js +2 -1
- package/lib/cjs/server/master/index.js +4 -4
- package/lib/cjs/server/master/master.js +1 -0
- package/lib/cjs/server/master/pool.js +38 -47
- package/lib/cjs/server/master/runner.js +53 -66
- package/lib/cjs/server/master/server.js +78 -4
- package/lib/cjs/server/messages.js +128 -18
- package/lib/cjs/server/selenium/browser.js +129 -55
- package/lib/cjs/server/selenium/selenoid.js +5 -7
- package/lib/cjs/server/stories.js +58 -72
- package/lib/cjs/server/storybook/entry.js +7 -22
- package/lib/cjs/server/storybook/helpers.js +20 -27
- package/lib/cjs/server/storybook/providers/browser.js +74 -0
- package/lib/cjs/server/storybook/{nodejs-provider.js → providers/nodejs.js} +37 -20
- package/lib/cjs/server/update.js +1 -5
- package/lib/cjs/server/utils.js +26 -35
- package/lib/cjs/server/worker/helpers.js +2 -6
- package/lib/cjs/server/worker/reporter.js +8 -20
- package/lib/cjs/server/worker/worker.js +21 -19
- package/lib/cjs/shared/index.js +101 -0
- package/lib/cjs/shared/serializeRegExp.js +42 -0
- package/lib/cjs/types.js +11 -6
- package/lib/esm/client/addon/Manager.js +122 -271
- package/lib/esm/client/addon/components/Addon.js +15 -34
- package/lib/esm/client/addon/components/Icons.js +10 -6
- package/lib/esm/client/addon/components/Panel.js +17 -13
- package/lib/esm/client/addon/components/TestSelect.js +11 -9
- package/lib/esm/client/addon/components/Tools.js +19 -36
- package/lib/esm/client/addon/decorator.js +1 -1
- package/lib/esm/client/addon/index.js +2 -0
- package/lib/esm/client/addon/preset.ie11.js +59 -0
- package/lib/esm/client/addon/preset.js +12 -26
- package/lib/esm/client/addon/readyForCapture.js +5 -0
- package/lib/esm/client/addon/register.js +42 -66
- package/lib/esm/client/addon/utils.js +3 -2
- package/lib/esm/client/addon/withCreevey.js +209 -156
- package/lib/esm/client/shared/components/ImagesView/BlendView.js +23 -20
- package/lib/esm/client/shared/components/ImagesView/ImagesView.js +21 -17
- package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +42 -63
- package/lib/esm/client/shared/components/ImagesView/SlideView.js +36 -47
- package/lib/esm/client/shared/components/ImagesView/SwapView.js +24 -42
- package/lib/esm/client/shared/components/PageFooter/PageFooter.js +12 -8
- package/lib/esm/client/shared/components/PageFooter/Paging.js +14 -18
- package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +22 -18
- package/lib/esm/client/shared/components/PageHeader/PageHeader.js +37 -60
- package/lib/esm/client/shared/components/ResultsPage.js +36 -64
- package/lib/esm/client/shared/creeveyClientApi.js +57 -84
- package/lib/esm/client/shared/helpers.js +124 -195
- package/lib/esm/client/shared/viewMode.js +4 -4
- package/lib/esm/creevey.js +3 -5
- package/lib/esm/index.js +2 -3
- package/lib/esm/server/config.js +4 -5
- package/lib/esm/server/docker.js +2 -2
- package/lib/esm/server/extract.js +6 -4
- package/lib/esm/server/index.js +3 -4
- package/lib/esm/server/loaders/babel/creevey-plugin.js +1 -3
- package/lib/esm/server/loaders/babel/helpers.js +12 -22
- package/lib/esm/server/loaders/babel/register.js +3 -5
- package/lib/esm/server/loaders/webpack/compile.js +35 -52
- package/lib/esm/server/loaders/webpack/creevey-loader.js +9 -10
- package/lib/esm/server/loaders/webpack/dummy-hmr.js +2 -6
- package/lib/esm/server/loaders/webpack/mdx-loader.js +2 -2
- package/lib/esm/server/loaders/webpack/start.js +1 -1
- package/lib/esm/server/master/index.js +4 -4
- package/lib/esm/server/master/master.js +1 -0
- package/lib/esm/server/master/pool.js +38 -49
- package/lib/esm/server/master/runner.js +53 -66
- package/lib/esm/server/master/server.js +76 -6
- package/lib/esm/server/messages.js +118 -14
- package/lib/esm/server/selenium/browser.js +126 -57
- package/lib/esm/server/selenium/selenoid.js +4 -6
- package/lib/esm/server/stories.js +58 -70
- package/lib/esm/server/storybook/entry.js +5 -22
- package/lib/esm/server/storybook/helpers.js +11 -20
- package/lib/esm/server/storybook/providers/browser.js +60 -0
- package/lib/esm/server/storybook/{nodejs-provider.js → providers/nodejs.js} +35 -19
- package/lib/esm/server/update.js +1 -5
- package/lib/esm/server/utils.js +18 -31
- package/lib/esm/server/worker/helpers.js +2 -6
- package/lib/esm/server/worker/reporter.js +8 -20
- package/lib/esm/server/worker/worker.js +22 -20
- package/lib/esm/shared/index.js +78 -0
- package/lib/esm/shared/serializeRegExp.js +24 -0
- package/lib/esm/types.js +3 -0
- package/lib/types/client/addon/Manager.d.ts +2 -2
- package/lib/types/client/addon/components/TestSelect.d.ts +0 -1
- package/lib/types/client/addon/index.d.ts +2 -0
- package/lib/types/client/addon/preset.d.ts +2 -1
- package/lib/types/client/addon/preset.ie11.d.ts +10 -0
- package/lib/types/client/addon/readyForCapture.d.ts +6 -0
- package/lib/types/client/addon/utils.d.ts +1 -0
- package/lib/types/client/addon/withCreevey.d.ts +13 -2
- package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +1 -1
- package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +0 -1
- package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +1 -1
- package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +1 -1
- package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +1 -1
- package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +0 -1
- package/lib/types/client/shared/components/PageFooter/Paging.d.ts +0 -1
- package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +1 -1
- package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +0 -1
- package/lib/types/client/shared/components/ResultsPage.d.ts +1 -1
- package/lib/types/client/web/CreeveyApp.d.ts +0 -1
- package/lib/types/client/web/CreeveyLoader.d.ts +1 -2
- package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +1 -1
- package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +0 -1
- package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +6 -6
- package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +0 -1
- package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +1 -1
- package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +1 -1
- package/lib/types/index.d.ts +0 -1
- package/lib/types/server/loaders/babel/register.d.ts +1 -1
- package/lib/types/server/loaders/webpack/creevey-loader.d.ts +4 -2
- package/lib/types/server/logger.d.ts +6 -2
- package/lib/types/server/master/master.d.ts +1 -0
- package/lib/types/server/master/pool.d.ts +1 -0
- package/lib/types/server/master/server.d.ts +1 -1
- package/lib/types/server/messages.d.ts +17 -6
- package/lib/types/server/selenium/browser.d.ts +5 -2
- package/lib/types/server/stories.d.ts +2 -2
- package/lib/types/server/storybook/entry.d.ts +2 -3
- package/lib/types/server/storybook/helpers.d.ts +1 -1
- package/lib/types/server/storybook/providers/browser.d.ts +4 -0
- package/lib/types/server/storybook/providers/nodejs.d.ts +9 -0
- package/lib/types/server/utils.d.ts +5 -1
- package/lib/types/server/worker/helpers.d.ts +2 -1
- package/lib/types/shared/index.d.ts +7 -0
- package/lib/types/shared/serializeRegExp.d.ts +9 -0
- package/lib/types/types.d.ts +32 -5
- package/package.json +120 -103
- package/preset/ie11.js +5 -0
- package/{preset.js → preset/index.js} +2 -2
- package/types/mdx.d.ts +3 -2
- package/types/mocha.d.ts +1 -0
- package/lib/cjs/client/web/1.js +0 -13
- package/lib/cjs/client/web/2.js +0 -1
- package/lib/cjs/shared.js +0 -35
- package/lib/esm/shared.js +0 -22
- package/lib/types/server/storybook/nodejs-provider.d.ts +0 -5
- 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
|
41
|
-
|
42
|
-
|
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",
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
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",
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
42
|
+
_defineProperty(this, "handleCreeveyUpdate", update => {
|
43
|
+
const {
|
44
|
+
tests,
|
45
|
+
removedTests = [],
|
46
|
+
isRunning
|
47
|
+
} = update;
|
102
48
|
|
103
49
|
if (isDefined(isRunning)) {
|
104
|
-
|
50
|
+
this.status.isRunning = isRunning;
|
105
51
|
}
|
106
52
|
|
107
53
|
if (isDefined(tests)) {
|
108
|
-
|
109
|
-
|
110
|
-
Object.values(tests).filter(isDefined).forEach(
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
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
|
-
|
132
|
-
|
133
|
-
|
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 ?
|
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(
|
148
|
-
|
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(
|
157
|
-
|
93
|
+
removedTests.forEach(_ref2 => {
|
94
|
+
let {
|
95
|
+
id
|
96
|
+
} = _ref2;
|
158
97
|
return delete prevTests[id];
|
159
98
|
});
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
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
|
-
|
169
|
-
return x(update);
|
170
|
-
});
|
105
|
+
this.updateStatusListeners.forEach(x => x(update));
|
171
106
|
});
|
172
107
|
|
173
|
-
_defineProperty(this, "getCurrentTest",
|
174
|
-
return
|
108
|
+
_defineProperty(this, "getCurrentTest", () => {
|
109
|
+
return this.status.tests[this.selectedTestId];
|
175
110
|
});
|
176
111
|
|
177
|
-
_defineProperty(this, "onStoryRendered",
|
178
|
-
if (
|
112
|
+
_defineProperty(this, "onStoryRendered", storyId => {
|
113
|
+
if (this.storyId === '') void this.addStatusesToSideBar();
|
179
114
|
|
180
|
-
if (
|
115
|
+
if (this.storyId !== storyId) {
|
181
116
|
var _this$getTestsByStory, _this$getTestsByStory2;
|
182
117
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
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",
|
125
|
+
_defineProperty(this, "onStart", () => {
|
195
126
|
var _this$creeveyApi;
|
196
127
|
|
197
|
-
(_this$creeveyApi =
|
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",
|
131
|
+
_defineProperty(this, "onStop", () => {
|
201
132
|
var _this$creeveyApi2;
|
202
133
|
|
203
|
-
(_this$creeveyApi2 =
|
134
|
+
(_this$creeveyApi2 = this.creeveyApi) === null || _this$creeveyApi2 === void 0 ? void 0 : _this$creeveyApi2.stop();
|
204
135
|
});
|
205
136
|
|
206
|
-
_defineProperty(this, "onImageApprove",
|
137
|
+
_defineProperty(this, "onImageApprove", (id, retry, image) => {
|
207
138
|
var _this$creeveyApi3;
|
208
139
|
|
209
|
-
return (_this$creeveyApi3 =
|
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",
|
143
|
+
_defineProperty(this, "onStartAllStoryTests", () => {
|
213
144
|
var _this$creeveyApi4;
|
214
145
|
|
215
|
-
|
216
|
-
|
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",
|
150
|
+
_defineProperty(this, "onStartAllTests", () => {
|
224
151
|
var _this$creeveyApi5;
|
225
152
|
|
226
|
-
|
227
|
-
|
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",
|
233
|
-
|
234
|
-
|
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",
|
162
|
+
_defineProperty(this, "setActiveBrowser", browser => {
|
239
163
|
var _this$getTestsByStory3, _this$getTestsByStory4;
|
240
164
|
|
241
|
-
|
242
|
-
|
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",
|
250
|
-
|
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",
|
258
|
-
if (!
|
259
|
-
return Object.values(
|
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",
|
265
|
-
return
|
180
|
+
_defineProperty(this, "getBrowsers", () => {
|
181
|
+
return this.status.browsers;
|
266
182
|
});
|
267
183
|
|
268
|
-
_defineProperty(this, "getTestsByStoryIdAndBrowser",
|
269
|
-
return Object.values(
|
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",
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
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",
|
196
|
+
_defineProperty(this, "setPanelsTitle", () => {
|
290
197
|
var _this$storybookApi;
|
291
198
|
|
292
|
-
|
199
|
+
const panels = (_this$storybookApi = this.storybookApi) === null || _this$storybookApi === void 0 ? void 0 : _this$storybookApi.getPanels();
|
293
200
|
if (!panels) return;
|
294
|
-
|
201
|
+
let firstPanelBrowser = this.activeBrowser;
|
295
202
|
|
296
|
-
for (
|
203
|
+
for (const p in panels) {
|
297
204
|
var _panel$id;
|
298
205
|
|
299
|
-
|
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 =
|
209
|
+
panel.title = this.getTabTitle(panel.paramKey);
|
303
210
|
if (!firstPanelBrowser) firstPanelBrowser = panel.paramKey;
|
304
211
|
}
|
305
212
|
}
|
306
213
|
|
307
|
-
|
214
|
+
this.storybookApi.setSelectedPanel("".concat(ADDON_ID, "/panel/").concat(firstPanelBrowser));
|
308
215
|
});
|
309
216
|
|
310
217
|
this.storybookApi = storybookApi;
|
311
218
|
}
|
312
219
|
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
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
|
-
|
382
|
-
|
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
|
-
|
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
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
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
|
-
|
15
|
+
const browserTests = manager.getTestsByStoryIdAndBrowser(manager.activeBrowser);
|
35
16
|
setTests(browserTests);
|
36
17
|
}
|
37
18
|
}, [active, browser, manager]);
|
38
|
-
useEffect(
|
39
|
-
|
19
|
+
useEffect(() => {
|
20
|
+
const unsubscribe = manager.onChangeTest(testId => {
|
40
21
|
setSelectedTestId(testId);
|
41
|
-
|
22
|
+
const status = manager.getTestsByStoryIdAndBrowser(manager.activeBrowser);
|
42
23
|
setTests(status);
|
43
24
|
});
|
44
25
|
return unsubscribe;
|
45
26
|
}, [manager]);
|
46
|
-
useEffect(
|
47
|
-
|
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
|
3
|
-
|
4
|
-
|
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
|
16
|
-
|
17
|
-
|
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
|
-
|
8
|
-
|
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
|
-
|
15
|
-
|
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
|
25
|
+
export const Panel = _ref3 => {
|
22
26
|
var _result$results, _result$results$lengt, _result$results2;
|
23
27
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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,
|