creevey 0.7.39 → 0.8.0-beta.1
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 +33 -2
- package/README.md +9 -1
- package/addon/README.md +3 -0
- package/addon/package.json +4 -0
- package/docs/config.md +37 -5
- package/docs/grid.md +2 -1
- package/jest.config.js +6 -0
- package/lib/cjs/client/addon/Manager.js +124 -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 +5 -41
- 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 +3 -4
- package/lib/cjs/server/loaders/webpack/compile.js +33 -50
- 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 +6 -8
- package/lib/cjs/server/stories.js +58 -84
- package/lib/cjs/server/storybook/entry.js +8 -22
- package/lib/cjs/server/storybook/helpers.js +22 -21
- package/lib/cjs/server/storybook/providers/browser.js +74 -0
- package/lib/cjs/server/storybook/{nodejs-provider.js → providers/nodejs.js} +44 -22
- package/lib/cjs/server/update.js +1 -5
- package/lib/cjs/server/utils.js +36 -15
- 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 +124 -272
- 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 -34
- 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 -4
- package/lib/esm/server/loaders/webpack/compile.js +34 -51
- 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 +5 -7
- package/lib/esm/server/stories.js +60 -83
- package/lib/esm/server/storybook/entry.js +7 -24
- package/lib/esm/server/storybook/helpers.js +13 -16
- package/lib/esm/server/storybook/providers/browser.js +60 -0
- package/lib/esm/server/storybook/{nodejs-provider.js → providers/nodejs.js} +42 -21
- package/lib/esm/server/update.js +1 -5
- package/lib/esm/server/utils.js +28 -10
- 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/cli.d.ts +1 -1
- package/lib/types/client/addon/Manager.d.ts +37 -37
- package/lib/types/client/addon/components/Addon.d.ts +8 -8
- package/lib/types/client/addon/components/Icons.d.ts +7 -7
- package/lib/types/client/addon/components/Panel.d.ts +9 -9
- package/lib/types/client/addon/components/TestSelect.d.ts +8 -9
- package/lib/types/client/addon/components/Tools.d.ts +6 -6
- package/lib/types/client/addon/decorator.d.ts +1 -1
- package/lib/types/client/addon/index.d.ts +2 -0
- package/lib/types/client/addon/preset.d.ts +23 -22
- 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/register.d.ts +3 -3
- package/lib/types/client/addon/utils.d.ts +3 -6
- package/lib/types/client/addon/withCreevey.d.ts +24 -13
- package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +3 -3
- package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +24 -25
- package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +3 -3
- package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +3 -3
- package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +3 -3
- package/lib/types/client/shared/components/ImagesView/index.d.ts +5 -5
- package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +8 -9
- package/lib/types/client/shared/components/PageFooter/Paging.d.ts +7 -8
- package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +12 -12
- package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +16 -17
- package/lib/types/client/shared/components/ResultsPage.d.ts +18 -18
- package/lib/types/client/shared/creeveyClientApi.d.ts +9 -9
- package/lib/types/client/shared/helpers.d.ts +46 -46
- package/lib/types/client/shared/viewMode.d.ts +4 -4
- package/lib/types/client/web/CreeveyApp.d.ts +11 -12
- package/lib/types/client/web/CreeveyContext.d.ts +11 -11
- package/lib/types/client/web/CreeveyLoader.d.ts +2 -3
- package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +19 -19
- package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +6 -6
- package/lib/types/client/web/CreeveyView/SideBar/SideBar.d.ts +14 -14
- package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +12 -13
- package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +33 -33
- package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +7 -8
- package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +10 -10
- package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +9 -9
- package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +6 -6
- package/lib/types/client/web/CreeveyView/SideBar/index.d.ts +1 -1
- package/lib/types/client/web/KeyboardEventsContext.d.ts +13 -13
- package/lib/types/client/web/index.d.ts +4 -4
- package/lib/types/creevey.d.ts +1 -1
- package/lib/types/index.d.ts +0 -1
- package/lib/types/server/config.d.ts +4 -4
- package/lib/types/server/docker.d.ts +7 -7
- package/lib/types/server/extract.d.ts +2 -2
- package/lib/types/server/index.d.ts +2 -2
- package/lib/types/server/loaders/babel/creevey-plugin.d.ts +1 -1
- package/lib/types/server/loaders/babel/helpers.d.ts +19 -19
- package/lib/types/server/loaders/babel/register.d.ts +5 -5
- package/lib/types/server/loaders/hooks/mdx.d.ts +1 -1
- package/lib/types/server/loaders/hooks/svelte.d.ts +1 -1
- package/lib/types/server/loaders/webpack/compile.d.ts +2 -2
- package/lib/types/server/loaders/webpack/creevey-loader.d.ts +4 -2
- package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +10 -10
- package/lib/types/server/loaders/webpack/mdx-loader.d.ts +6 -6
- package/lib/types/server/loaders/webpack/start.d.ts +1 -1
- package/lib/types/server/logger.d.ts +10 -6
- package/lib/types/server/master/api.d.ts +7 -7
- package/lib/types/server/master/index.d.ts +3 -3
- package/lib/types/server/master/master.d.ts +7 -6
- package/lib/types/server/master/pool.d.ts +31 -30
- package/lib/types/server/master/runner.d.ts +26 -26
- package/lib/types/server/master/server.d.ts +2 -2
- package/lib/types/server/messages.d.ts +29 -18
- package/lib/types/server/selenium/browser.d.ts +17 -14
- package/lib/types/server/selenium/index.d.ts +2 -2
- package/lib/types/server/selenium/selenoid.d.ts +3 -3
- package/lib/types/server/stories.d.ts +8 -9
- package/lib/types/server/storybook/entry.d.ts +17 -14
- package/lib/types/server/storybook/helpers.d.ts +24 -23
- 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/update.d.ts +2 -2
- package/lib/types/server/utils.d.ts +19 -18
- package/lib/types/server/worker/chai-image.d.ts +6 -6
- package/lib/types/server/worker/helpers.d.ts +8 -7
- package/lib/types/server/worker/index.d.ts +1 -1
- package/lib/types/server/worker/reporter.d.ts +8 -8
- package/lib/types/server/worker/worker.d.ts +4 -4
- package/lib/types/shared/index.d.ts +7 -0
- package/lib/types/shared/serializeRegExp.d.ts +9 -0
- package/lib/types/types.d.ts +487 -459
- package/package.json +121 -99
- 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/types/server/storybook/nodejs-provider.d.ts +0 -5
- package/storybook-static/stories.json +0 -530
@@ -3,7 +3,6 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.flatStories = flatStories;
|
7
6
|
exports.loadTestsFromStories = loadTestsFromStories;
|
8
7
|
exports.saveStoriesJson = saveStoriesJson;
|
9
8
|
exports.saveTestsJson = saveTestsJson;
|
@@ -20,16 +19,17 @@ var _types = require("../types");
|
|
20
19
|
|
21
20
|
var _utils = require("./utils");
|
22
21
|
|
23
|
-
var _helpers = require("./storybook/helpers");
|
24
|
-
|
25
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
26
23
|
|
27
24
|
function storyTestFabric(delay, testFn) {
|
28
25
|
return async function storyTest() {
|
29
|
-
var _testFn$call;
|
30
|
-
|
31
26
|
delay ? await new Promise(resolve => setTimeout(resolve, delay)) : void 0;
|
32
|
-
await (
|
27
|
+
await (testFn ? testFn.call(this) : this.screenshots.length > 0 ? this.expect(this.screenshots.reduce((screenshots, {
|
28
|
+
imageName,
|
29
|
+
screenshot
|
30
|
+
}, index) => ({ ...screenshots,
|
31
|
+
[imageName ?? `screenshot_${index}`]: screenshot
|
32
|
+
}), {})).to.matchImages() : this.expect(await this.takeScreenshot()).to.matchImage());
|
33
33
|
};
|
34
34
|
}
|
35
35
|
|
@@ -55,78 +55,63 @@ function createCreeveyTest(browser, storyMeta, skipOptions, testName) {
|
|
55
55
|
};
|
56
56
|
}
|
57
57
|
|
58
|
-
function convertStories(
|
58
|
+
function convertStories(browserName, stories) {
|
59
59
|
const tests = {};
|
60
60
|
(Array.isArray(stories) ? stories : Object.values(stories)).forEach(storyMeta => {
|
61
61
|
// TODO Skip docsOnly stories for now
|
62
62
|
if (storyMeta.parameters.docsOnly) return;
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
};
|
83
|
-
return;
|
84
|
-
}
|
63
|
+
const {
|
64
|
+
delay: delayParam,
|
65
|
+
tests: storyTests,
|
66
|
+
skip
|
67
|
+
} = storyMeta.parameters.creevey ?? {};
|
68
|
+
const delay = typeof delayParam == 'number' ? delayParam : delayParam !== null && delayParam !== void 0 && delayParam.for.includes(browserName) ? delayParam.ms : 0; // typeof tests === "undefined" => rootSuite -> kindSuite -> storyTest -> [browsers.png]
|
69
|
+
// typeof tests === "function" => rootSuite -> kindSuite -> storyTest -> browser -> [images.png]
|
70
|
+
// typeof tests === "object" => rootSuite -> kindSuite -> storySuite -> test -> [browsers.png]
|
71
|
+
// typeof tests === "object" => rootSuite -> kindSuite -> storySuite -> test -> browser -> [images.png]
|
72
|
+
|
73
|
+
if (!storyTests) {
|
74
|
+
const test = createCreeveyTest(browserName, storyMeta, skip);
|
75
|
+
tests[test.id] = { ...test,
|
76
|
+
storyId: storyMeta.id,
|
77
|
+
story: storyMeta,
|
78
|
+
fn: storyTestFabric(delay)
|
79
|
+
};
|
80
|
+
return;
|
81
|
+
}
|
85
82
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
});
|
83
|
+
Object.entries(storyTests).forEach(([testName, testFn]) => {
|
84
|
+
const test = createCreeveyTest(browserName, storyMeta, skip, testName);
|
85
|
+
tests[test.id] = { ...test,
|
86
|
+
storyId: storyMeta.id,
|
87
|
+
story: storyMeta,
|
88
|
+
fn: storyTestFabric(delay, testFn)
|
89
|
+
};
|
94
90
|
});
|
95
91
|
});
|
96
92
|
return tests;
|
97
|
-
} // TODO use the storybook version, after the fix of skip option API
|
98
|
-
|
99
|
-
|
100
|
-
function flatStories({
|
101
|
-
globalParameters,
|
102
|
-
kindParameters,
|
103
|
-
stories
|
104
|
-
}) {
|
105
|
-
Object.values(stories).forEach(story => {
|
106
|
-
// NOTE: Copy-paste merge parameters from storybook
|
107
|
-
story.parameters = (0, _lodash.mergeWith)({}, globalParameters, kindParameters[story.kind], story.parameters, (objValue, srcValue) => Array.isArray(objValue) ? objValue.concat(srcValue) : undefined);
|
108
|
-
});
|
109
|
-
return stories;
|
110
93
|
}
|
111
94
|
|
112
95
|
async function loadTestsFromStories(browsers, provider, update) {
|
113
96
|
const testIdsByFiles = new Map();
|
114
|
-
const
|
97
|
+
const stories = await provider(storiesByFiles => {
|
115
98
|
const testsDiff = {};
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
99
|
+
const tests = {};
|
100
|
+
browsers.forEach(browser => {
|
101
|
+
Array.from(storiesByFiles.entries()).forEach(([filename, stories]) => {
|
102
|
+
var _testIdsByFiles$get;
|
103
|
+
|
104
|
+
Object.assign(tests, convertStories(browser, stories));
|
105
|
+
const changed = Object.keys(tests);
|
106
|
+
const removed = ((_testIdsByFiles$get = testIdsByFiles.get(filename)) === null || _testIdsByFiles$get === void 0 ? void 0 : _testIdsByFiles$get.filter(testId => !tests[testId])) ?? [];
|
107
|
+
if (changed.length == 0) testIdsByFiles.delete(filename);else testIdsByFiles.set(filename, changed);
|
108
|
+
Object.assign(testsDiff, tests);
|
109
|
+
removed.forEach(testId => testsDiff[testId] = undefined);
|
110
|
+
});
|
125
111
|
});
|
126
112
|
update === null || update === void 0 ? void 0 : update(testsDiff);
|
127
113
|
});
|
128
|
-
const
|
129
|
-
const tests = convertStories(browsers, stories);
|
114
|
+
const tests = browsers.reduce((tests, browser) => Object.assign(tests, convertStories(browser, stories)), {});
|
130
115
|
Object.values(tests).filter(_types.isDefined).forEach(({
|
131
116
|
id,
|
132
117
|
story: {
|
@@ -134,36 +119,25 @@ async function loadTestsFromStories(browsers, provider, update) {
|
|
134
119
|
fileName
|
135
120
|
}
|
136
121
|
}
|
137
|
-
}) =>
|
138
|
-
|
139
|
-
|
140
|
-
return (// TODO Don't use filename as a key, due possible collisions if two require.context with same structure of modules are defined
|
141
|
-
testIdsByFiles.set(fileName, [...((_testIdsByFiles$get2 = testIdsByFiles.get(fileName)) !== null && _testIdsByFiles$get2 !== void 0 ? _testIdsByFiles$get2 : []), id])
|
142
|
-
);
|
143
|
-
});
|
122
|
+
}) => // TODO Don't use filename as a key, due possible collisions if two require.context with same structure of modules are defined
|
123
|
+
testIdsByFiles.set(fileName, [...(testIdsByFiles.get(fileName) ?? []), id]));
|
144
124
|
return tests;
|
145
125
|
}
|
146
126
|
|
147
127
|
function saveStoriesJson(storiesData, extract) {
|
148
|
-
|
149
|
-
|
150
|
-
const outputDir = typeof extract == 'boolean' ? 'storybook-static' : extract;
|
151
|
-
|
152
|
-
if (!(0, _helpers.isStorybookVersionLessThan)(6)) {
|
153
|
-
// NOTE Copy-pasted from Storybook's `getStoriesJsonData` method
|
154
|
-
const allowed = ['fileName', 'docsOnly', 'framework', '__id', '__isArgsStory'];
|
155
|
-
storiesData.globalParameters = (0, _lodash.pick)(storiesData.globalParameters, allowed); // @ts-expect-error ignore error
|
128
|
+
const outputDir = typeof extract == 'boolean' ? 'storybook-static' : extract; // NOTE Copy-pasted from Storybook's `getStoriesJsonData` method
|
156
129
|
|
157
|
-
|
130
|
+
const allowed = ['fileName', 'docsOnly', 'framework', '__id', '__isArgsStory'];
|
131
|
+
storiesData.globalParameters = (0, _lodash.pick)(storiesData.globalParameters, allowed); // @ts-expect-error ignore error
|
158
132
|
|
159
|
-
|
160
|
-
parameters: (0, _lodash.pick)(v.parameters, allowed)
|
161
|
-
}));
|
162
|
-
} // TODO Fix args stories
|
133
|
+
storiesData.kindParameters = (0, _lodash.mapValues)(storiesData.kindParameters, v => (0, _lodash.pick)(v, allowed)); // @ts-expect-error ignore error
|
163
134
|
|
135
|
+
storiesData.stories = (0, _lodash.mapValues)(storiesData.stories, v => ({ ...(0, _lodash.pick)(v, ['id', 'name', 'kind', 'story']),
|
136
|
+
parameters: (0, _lodash.pick)(v.parameters, allowed)
|
137
|
+
})); // TODO Fix args stories
|
164
138
|
|
165
|
-
(0, _utils.removeProps)(storiesData
|
166
|
-
Object.values((
|
139
|
+
(0, _utils.removeProps)(storiesData ?? {}, ['stories', () => true, 'parameters', '__isArgsStory']);
|
140
|
+
Object.values((storiesData === null || storiesData === void 0 ? void 0 : storiesData.stories) ?? {}).forEach(story => (0, _types.isObject)(story) && 'parameters' in story && (0, _types.isObject)(story.parameters) && delete story.parameters.__isArgsStory);
|
167
141
|
(0, _fs.mkdirSync)(outputDir, {
|
168
142
|
recursive: true
|
169
143
|
});
|
@@ -3,23 +3,21 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.
|
6
|
+
exports.storiesOf = exports.setAddon = exports.raw = exports.getStorybook = exports.forceReRender = exports.configure = exports.clientApi = exports.clearDecorators = exports.channel = exports.addParameters = exports.addDecorator = void 0;
|
7
7
|
|
8
|
-
var
|
8
|
+
var _addons = require("@storybook/addons");
|
9
9
|
|
10
|
-
var
|
10
|
+
var _helpers = require("./helpers");
|
11
11
|
|
12
12
|
const framework = (0, _helpers.getStorybookFramework)(); // eslint-disable-next-line @typescript-eslint/no-var-requires
|
13
13
|
|
14
|
-
const core = require((0, _helpers.resolveFromStorybook)('@storybook/core'));
|
15
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
14
|
+
const core = require((0, _helpers.resolveFromStorybook)('@storybook/core'));
|
16
15
|
|
16
|
+
const start = core.start;
|
17
|
+
const api = start(() => void 0);
|
17
18
|
|
18
|
-
const
|
19
|
-
const api = start(() => void 0); //@ts-expect-error: 6.x has { channel }, but 5.x has { context: { channel } }
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
19
|
+
const channel = _addons.addons.getChannel();
|
21
20
|
|
22
|
-
const channel = (_api$channel = api.channel) !== null && _api$channel !== void 0 ? _api$channel : (_api$context = api.context) === null || _api$context === void 0 ? void 0 : _api$context.channel;
|
23
21
|
exports.channel = channel;
|
24
22
|
const clientApi = api.clientApi;
|
25
23
|
exports.clientApi = clientApi;
|
@@ -35,20 +33,8 @@ const storiesOf = (kind, m) => {
|
|
35
33
|
exports.storiesOf = storiesOf;
|
36
34
|
|
37
35
|
const configure = (...args) => {
|
38
|
-
|
39
|
-
//NOTE: Storybook <= 5.1 pass args as is
|
40
|
-
//@ts-expect-error: ignore it
|
41
|
-
return api.configApi.configure(...args);
|
42
|
-
}
|
43
|
-
|
44
|
-
if ((0, _helpers.isStorybookVersionLessThan)(6)) {
|
45
|
-
//NOTE: Storybook <= 5.3 pass `framework` as last argument
|
46
|
-
//@ts-expect-error: ignore it
|
47
|
-
return api.configure(...args, framework);
|
48
|
-
} //NOTE Storybook 6.x pass `framework` as first argument
|
36
|
+
//NOTE Storybook 6.x pass `framework` as first argument
|
49
37
|
//@ts-expect-error: ignore it
|
50
|
-
|
51
|
-
|
52
38
|
return api.configure(framework, ...args);
|
53
39
|
};
|
54
40
|
|
@@ -3,15 +3,18 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
+
exports.getStorybookFramework = getStorybookFramework;
|
7
|
+
exports.getStorybookVersion = getStorybookVersion;
|
6
8
|
exports.hasDocsAddon = hasDocsAddon;
|
7
9
|
exports.hasSvelteCSFAddon = hasSvelteCSFAddon;
|
8
|
-
exports.
|
9
|
-
exports.isStorybookVersionLessThan = isStorybookVersionLessThan;
|
10
|
-
exports.isStorybookVersion = isStorybookVersion;
|
11
|
-
exports.getStorybookFramework = getStorybookFramework;
|
10
|
+
exports.importStorybookClientLogger = void 0;
|
12
11
|
exports.importStorybookConfig = importStorybookConfig;
|
12
|
+
exports.importStorybookCoreEvents = exports.importStorybookCoreCommon = void 0;
|
13
13
|
exports.isCSFv3Enabled = isCSFv3Enabled;
|
14
|
-
exports.
|
14
|
+
exports.isStorybookVersion = isStorybookVersion;
|
15
|
+
exports.isStorybookVersionGreaterThan = isStorybookVersionGreaterThan;
|
16
|
+
exports.isStorybookVersionLessThan = isStorybookVersionLessThan;
|
17
|
+
exports.storybookDirRef = exports.storybookConfigRef = exports.resolveFromStorybookCoreServer = exports.resolveFromStorybookCore = exports.resolveFromStorybookBuilderWebpack4 = exports.resolveFromStorybookAddonDocs = exports.resolveFromStorybook = void 0;
|
15
18
|
|
16
19
|
var _path = _interopRequireDefault(require("path"));
|
17
20
|
|
@@ -91,23 +94,22 @@ function getStorybookVersion() {
|
|
91
94
|
}
|
92
95
|
|
93
96
|
function isStorybookVersionLessThan(major, minor) {
|
94
|
-
|
95
|
-
|
96
|
-
const [sbMajor, sbMinor] = ((_process$env$__CREEVE = process.env.__CREEVEY_STORYBOOK_VERSION__) !== null && _process$env$__CREEVE !== void 0 ? _process$env$__CREEVE : getStorybookVersion()).split('.');
|
97
|
+
const [sbMajor, sbMinor] = (process.env.__CREEVEY_STORYBOOK_VERSION__ ?? getStorybookVersion()).split('.');
|
97
98
|
return Number(sbMajor) < major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) < minor;
|
98
99
|
}
|
99
100
|
|
100
|
-
function
|
101
|
-
|
101
|
+
function isStorybookVersionGreaterThan(major, minor) {
|
102
|
+
const [sbMajor, sbMinor] = (process.env.__CREEVEY_STORYBOOK_VERSION__ ?? getStorybookVersion()).split('.');
|
103
|
+
return Number(sbMajor) > major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) > minor;
|
104
|
+
}
|
102
105
|
|
103
|
-
|
106
|
+
function isStorybookVersion(major, minor) {
|
107
|
+
const [sbMajor, sbMinor] = (process.env.__CREEVEY_STORYBOOK_VERSION__ ?? getStorybookVersion()).split('.');
|
104
108
|
return Number(sbMajor) == major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) == minor;
|
105
109
|
}
|
106
110
|
|
107
111
|
function getStorybookFramework() {
|
108
|
-
|
109
|
-
|
110
|
-
const framework = (_process$env$__CREEVE3 = process.env.__CREEVEY_STORYBOOK_FRAMEWORK__) !== null && _process$env$__CREEVE3 !== void 0 ? _process$env$__CREEVE3 : supportedFrameworks.find(framework => {
|
112
|
+
const framework = process.env.__CREEVEY_STORYBOOK_FRAMEWORK__ ?? supportedFrameworks.find(framework => {
|
111
113
|
try {
|
112
114
|
return require.resolve(resolveFromStorybook(`@storybook/${framework}`));
|
113
115
|
} catch (_) {
|
@@ -131,8 +133,8 @@ async function importStorybookConfig() {
|
|
131
133
|
try {
|
132
134
|
return storybookConfigRef.current = (await Promise.resolve(`${require.resolve(configPath)}`).then(s => _interopRequireWildcard(require(s)))).default;
|
133
135
|
} catch (_) {
|
134
|
-
const storybookUtilsPath =
|
135
|
-
const serverRequireModule =
|
136
|
+
const storybookUtilsPath = '@storybook/core-common/dist/cjs/utils';
|
137
|
+
const serverRequireModule = 'interpret-require'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
136
138
|
|
137
139
|
const {
|
138
140
|
getInterpretedFile
|
@@ -141,17 +143,16 @@ async function importStorybookConfig() {
|
|
141
143
|
const {
|
142
144
|
default: serverRequireFallback,
|
143
145
|
serverRequire = serverRequireFallback
|
144
|
-
} = await Promise.resolve(`${resolveFromStorybook(`${storybookUtilsPath}/${serverRequireModule}`)}`).then(s => _interopRequireWildcard(require(s))); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
146
|
+
} = await Promise.resolve(`${resolveFromStorybook(`${storybookUtilsPath}/${serverRequireModule}`)}`).then(s => _interopRequireWildcard(require(s))); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
|
145
147
|
|
146
|
-
const mainConfigFile =
|
147
|
-
getInterpretedFile(configPath); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
|
148
|
+
const mainConfigFile = getInterpretedFile(configPath); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
|
148
149
|
|
149
150
|
return storybookConfigRef.current = serverRequire(mainConfigFile);
|
150
151
|
}
|
151
152
|
}
|
152
153
|
|
153
154
|
async function isCSFv3Enabled() {
|
154
|
-
var _await$importStoryboo, _await$importStoryboo2
|
155
|
+
var _await$importStoryboo, _await$importStoryboo2;
|
155
156
|
|
156
|
-
return (_await$importStoryboo =
|
157
|
+
return ((_await$importStoryboo = await importStorybookConfig()) === null || _await$importStoryboo === void 0 ? void 0 : (_await$importStoryboo2 = _await$importStoryboo.features) === null || _await$importStoryboo2 === void 0 ? void 0 : _await$importStoryboo2.previewCsfV3) ?? false;
|
157
158
|
}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.loadStories = loadStories;
|
7
|
+
|
8
|
+
var _cluster = _interopRequireDefault(require("cluster"));
|
9
|
+
|
10
|
+
var _selenium = require("../../selenium");
|
11
|
+
|
12
|
+
var _messages = require("../../messages");
|
13
|
+
|
14
|
+
var _types = require("../../../types");
|
15
|
+
|
16
|
+
var _logger = require("../../logger");
|
17
|
+
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
19
|
+
|
20
|
+
async function loadStories(_config, {
|
21
|
+
port
|
22
|
+
}, storiesListener) {
|
23
|
+
if (_cluster.default.isPrimary) {
|
24
|
+
return new Promise(resolve => {
|
25
|
+
const worker = Object.values(_cluster.default.workers ?? {}).filter(_types.isDefined).find(worker => worker.isConnected());
|
26
|
+
|
27
|
+
if (worker) {
|
28
|
+
const unsubscribe = (0, _messages.subscribeOnWorker)(worker, 'stories', message => {
|
29
|
+
if (message.type == 'set') {
|
30
|
+
const {
|
31
|
+
stories,
|
32
|
+
oldTests
|
33
|
+
} = message.payload;
|
34
|
+
if (oldTests.length > 0) _logger.logger.warn(`If you use browser stories provider of CSFv3 Storybook feature\n` + `Creevey will not load tests defined in story parameters from following stories:\n` + oldTests.join('\n'));
|
35
|
+
unsubscribe();
|
36
|
+
resolve(stories);
|
37
|
+
}
|
38
|
+
});
|
39
|
+
(0, _messages.sendStoriesMessage)(worker, {
|
40
|
+
type: 'get'
|
41
|
+
});
|
42
|
+
}
|
43
|
+
|
44
|
+
(0, _messages.subscribeOn)('stories', message => {
|
45
|
+
// TODO updates only one browser :(
|
46
|
+
if (message.type == 'update') storiesListener(new Map(message.payload));
|
47
|
+
});
|
48
|
+
});
|
49
|
+
} else {
|
50
|
+
(0, _messages.subscribeOn)('stories', message => {
|
51
|
+
if (message.type == 'get') (0, _messages.emitStoriesMessage)({
|
52
|
+
type: 'set',
|
53
|
+
payload: {
|
54
|
+
stories,
|
55
|
+
oldTests: storiesWithOldTests
|
56
|
+
}
|
57
|
+
});
|
58
|
+
if (message.type == 'update') storiesListener(new Map(message.payload));
|
59
|
+
});
|
60
|
+
const stories = await (0, _selenium.loadStoriesFromBrowser)(port);
|
61
|
+
const storiesWithOldTests = [];
|
62
|
+
Object.values(stories).forEach(story => {
|
63
|
+
var _parameters, _parameters$creevey;
|
64
|
+
|
65
|
+
if ((_parameters = story.parameters) !== null && _parameters !== void 0 && (_parameters$creevey = _parameters.creevey) !== null && _parameters$creevey !== void 0 && _parameters$creevey.tests) {
|
66
|
+
var _parameters2, _parameters2$creevey;
|
67
|
+
|
68
|
+
(_parameters2 = story.parameters) === null || _parameters2 === void 0 ? true : (_parameters2$creevey = _parameters2.creevey) === null || _parameters2$creevey === void 0 ? true : delete _parameters2$creevey.tests;
|
69
|
+
storiesWithOldTests.push(`${story.kind}/${story.name}`);
|
70
|
+
}
|
71
|
+
});
|
72
|
+
return stories;
|
73
|
+
}
|
74
|
+
}
|
@@ -3,25 +3,24 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
+
exports.extractStoriesData = extractStoriesData;
|
6
7
|
exports.loadStories = loadStories;
|
7
8
|
|
8
9
|
var _path = _interopRequireDefault(require("path"));
|
9
10
|
|
10
|
-
var _cluster = require("cluster");
|
11
|
+
var _cluster = _interopRequireDefault(require("cluster"));
|
11
12
|
|
12
13
|
var _chokidar = _interopRequireDefault(require("chokidar"));
|
13
14
|
|
14
|
-
var _types = require("
|
15
|
+
var _types = require("../../../types");
|
15
16
|
|
16
|
-
var _utils = require("
|
17
|
+
var _utils = require("../../utils");
|
17
18
|
|
18
|
-
var _messages = require("
|
19
|
+
var _messages = require("../../messages");
|
19
20
|
|
20
|
-
var _helpers = require("
|
21
|
+
var _helpers = require("../helpers");
|
21
22
|
|
22
|
-
var _logger = require("
|
23
|
-
|
24
|
-
var _stories = require("../stories");
|
23
|
+
var _logger = require("../../logger");
|
25
24
|
|
26
25
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
27
26
|
|
@@ -30,7 +29,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
30
29
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
31
30
|
|
32
31
|
async function initStorybookEnvironment() {
|
33
|
-
// @ts-
|
32
|
+
// @ts-expect-error There is no @types/global-jsdom package
|
34
33
|
(await Promise.resolve().then(() => _interopRequireWildcard(require('global-jsdom')))).default(undefined, {
|
35
34
|
url: 'http://localhost'
|
36
35
|
}); // NOTE Cutoff `jsdom` part from userAgent, because storybook check enviroment and create events channel if runs in browser
|
@@ -45,10 +44,10 @@ async function initStorybookEnvironment() {
|
|
45
44
|
logger
|
46
45
|
} = await (0, _helpers.importStorybookClientLogger)(); // NOTE: Disable duplication warnings for >=6.2 storybook
|
47
46
|
|
48
|
-
if (_cluster.isWorker) logger.warn = _types.noop; // NOTE: disable logger for 5.x storybook
|
47
|
+
if (_cluster.default.isWorker) logger.warn = _types.noop; // NOTE: disable logger for 5.x storybook
|
49
48
|
|
50
49
|
logger.debug = _types.noop;
|
51
|
-
return Promise.resolve().then(() => _interopRequireWildcard(require('
|
50
|
+
return Promise.resolve().then(() => _interopRequireWildcard(require('../entry')));
|
52
51
|
}
|
53
52
|
|
54
53
|
function watchStories(channel, watcher, initialFiles) {
|
@@ -59,7 +58,7 @@ function watchStories(channel, watcher, initialFiles) {
|
|
59
58
|
watcher.on('change', filePath => storiesByFiles.set(_path.default.isAbsolute(filePath) ? filePath : `./${filePath.replace(/\\/g, '/')}`, []));
|
60
59
|
watcher.on('unlink', filePath => storiesByFiles.set(_path.default.isAbsolute(filePath) ? filePath : `./${filePath.replace(/\\/g, '/')}`, []));
|
61
60
|
return data => {
|
62
|
-
const stories =
|
61
|
+
const stories = data.stories;
|
63
62
|
const files = new Set(Object.values(stories).map(story => story.parameters.fileName));
|
64
63
|
const addedFiles = Array.from(files).filter(filePath => !watchingFiles.has(filePath));
|
65
64
|
const removedFiles = Array.from(watchingFiles).filter(filePath => !files.has(filePath));
|
@@ -104,13 +103,14 @@ async function loadStoriesDirectly(config, {
|
|
104
103
|
debug
|
105
104
|
}) {
|
106
105
|
const {
|
107
|
-
toRequireContext
|
106
|
+
toRequireContext,
|
107
|
+
normalizeStoriesEntry
|
108
108
|
} = await (0, _helpers.importStorybookCoreCommon)();
|
109
109
|
const {
|
110
110
|
addParameters,
|
111
111
|
configure
|
112
|
-
} = await Promise.resolve().then(() => _interopRequireWildcard(require('
|
113
|
-
const requireContext = await (await Promise.resolve().then(() => _interopRequireWildcard(require('
|
112
|
+
} = await Promise.resolve().then(() => _interopRequireWildcard(require('../entry')));
|
113
|
+
const requireContext = await (await Promise.resolve().then(() => _interopRequireWildcard(require('../../loaders/babel/register')))).default(config, debug);
|
114
114
|
|
115
115
|
const preview = (() => {
|
116
116
|
try {
|
@@ -123,12 +123,16 @@ async function loadStoriesDirectly(config, {
|
|
123
123
|
const {
|
124
124
|
stories
|
125
125
|
} = await (0, _helpers.importStorybookConfig)();
|
126
|
-
const contexts = stories.map(
|
126
|
+
const contexts = stories.map(entry => {
|
127
|
+
const normalizedEntry = normalizeStoriesEntry(entry, {
|
128
|
+
configDir: config.storybookDir,
|
129
|
+
workingDir: process.cwd()
|
130
|
+
});
|
127
131
|
const {
|
128
132
|
path: storiesPath,
|
129
133
|
recursive,
|
130
134
|
match
|
131
|
-
} = toRequireContext(
|
135
|
+
} = toRequireContext(normalizedEntry);
|
132
136
|
watcher === null || watcher === void 0 ? void 0 : watcher.add(_path.default.resolve(config.storybookDir, storiesPath));
|
133
137
|
return () => requireContext(storiesPath, recursive, new RegExp(match));
|
134
138
|
});
|
@@ -169,7 +173,7 @@ async function loadStoriesDirectly(config, {
|
|
169
173
|
try {
|
170
174
|
configure(contexts.map(ctx => ctx()), module, false);
|
171
175
|
} catch (error) {
|
172
|
-
if (_cluster.
|
176
|
+
if (_cluster.default.isPrimary) _logger.logger.error(error);
|
173
177
|
}
|
174
178
|
}
|
175
179
|
|
@@ -182,7 +186,8 @@ async function loadStoriesDirectly(config, {
|
|
182
186
|
void startStorybook();
|
183
187
|
});
|
184
188
|
void startStorybook();
|
185
|
-
}
|
189
|
+
} // TODO Do we need to support multiple storybooks here?
|
190
|
+
|
186
191
|
|
187
192
|
async function loadStories(config, {
|
188
193
|
watch,
|
@@ -195,16 +200,16 @@ async function loadStories(config, {
|
|
195
200
|
} = storybookApi;
|
196
201
|
channel.removeAllListeners(Events.CURRENT_STORY_WAS_SET);
|
197
202
|
channel.on('storiesUpdated', storiesListener);
|
198
|
-
let watcher
|
203
|
+
let watcher;
|
199
204
|
if (watch) watcher = _chokidar.default.watch([], {
|
200
205
|
ignoreInitial: true
|
201
206
|
});
|
202
207
|
const loadPromise = new Promise(resolve => {
|
203
208
|
channel.once(Events.SET_STORIES, data => {
|
204
|
-
const stories =
|
209
|
+
const stories = data.stories;
|
205
210
|
const files = new Set(Object.values(stories).map(story => story.parameters.fileName));
|
206
211
|
if (watcher) channel.on(Events.SET_STORIES, watchStories(channel, watcher, files));
|
207
|
-
resolve(
|
212
|
+
resolve(stories);
|
208
213
|
});
|
209
214
|
});
|
210
215
|
if (config.useWebpackToExtractTests) loadStoriesFromBundle(watch);else void loadStoriesDirectly(config, {
|
@@ -212,4 +217,21 @@ async function loadStories(config, {
|
|
212
217
|
debug
|
213
218
|
});
|
214
219
|
return loadPromise;
|
220
|
+
}
|
221
|
+
|
222
|
+
async function extractStoriesData(config, {
|
223
|
+
watch,
|
224
|
+
debug
|
225
|
+
}) {
|
226
|
+
const storybookApi = await initStorybookEnvironment();
|
227
|
+
const Events = await (0, _helpers.importStorybookCoreEvents)();
|
228
|
+
const {
|
229
|
+
channel
|
230
|
+
} = storybookApi;
|
231
|
+
channel.removeAllListeners(Events.CURRENT_STORY_WAS_SET);
|
232
|
+
const loadPromise = new Promise(resolve => channel.once(Events.SET_STORIES, resolve));
|
233
|
+
if (config.useWebpackToExtractTests) loadStoriesFromBundle(watch);else void loadStoriesDirectly(config, {
|
234
|
+
debug
|
235
|
+
});
|
236
|
+
return loadPromise;
|
215
237
|
}
|
package/lib/cjs/server/update.js
CHANGED
@@ -31,11 +31,7 @@ function tryToLoadTestsData(filename) {
|
|
31
31
|
const actualRegex = /^(.*)-actual-(\d+)\.png$/i;
|
32
32
|
|
33
33
|
function approve(dirents, srcPath, dstPath, testPaths, isMatch) {
|
34
|
-
dirents.filter(dirent => dirent.isFile()).map(dirent => actualRegex.exec(dirent.name)).filter(_types.isDefined).filter(([fileName, imageName]) => !testPaths || testPaths.find(([token]) => token == imageName) && isMatch(_path.default.join(srcPath, fileName))).reduce((images, [, imageName, retry]) => {
|
35
|
-
var _images$get;
|
36
|
-
|
37
|
-
return Number(retry) > ((_images$get = images.get(imageName)) !== null && _images$get !== void 0 ? _images$get : -1) ? images.set(imageName, Number(retry)) : images;
|
38
|
-
}, new Map()).forEach((retry, imageName) => {
|
34
|
+
dirents.filter(dirent => dirent.isFile()).map(dirent => actualRegex.exec(dirent.name)).filter(_types.isDefined).filter(([fileName, imageName]) => !testPaths || testPaths.find(([token]) => token == imageName) && isMatch(_path.default.join(srcPath, fileName))).reduce((images, [, imageName, retry]) => Number(retry) > (images.get(imageName) ?? -1) ? images.set(imageName, Number(retry)) : images, new Map()).forEach((retry, imageName) => {
|
39
35
|
(0, _fs.mkdirSync)(dstPath, {
|
40
36
|
recursive: true
|
41
37
|
});
|