creevey 0.9.0-beta.2 → 0.9.0-non-webpack.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/AUTHORS +15 -15
- package/CHANGELOG.md +1275 -1275
- package/LICENSE +21 -21
- package/README.md +7 -0
- package/addon/README.md +3 -0
- package/addon/package.json +4 -0
- package/docs/config.md +212 -212
- package/docs/grid.md +10 -10
- package/docs/tests.md +63 -63
- package/jest.config.js +6 -0
- package/lib/cjs/client/addon/Manager.js +11 -5
- package/lib/cjs/client/addon/components/Addon.js +1 -1
- package/lib/cjs/client/addon/components/Icons.js +2 -2
- package/lib/cjs/client/addon/components/Tools.js +1 -1
- package/lib/cjs/client/addon/index.js +31 -0
- package/lib/cjs/client/addon/preset.js +3 -3
- package/lib/cjs/client/addon/register.js +7 -3
- package/lib/cjs/client/addon/withCreevey.js +57 -30
- package/lib/cjs/client/shared/components/ImagesView/BlendView.js +1 -1
- package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +1 -1
- package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +1 -1
- package/lib/cjs/client/shared/components/ImagesView/SlideView.js +1 -1
- package/lib/cjs/client/shared/components/ImagesView/SwapView.js +1 -1
- package/lib/cjs/client/shared/components/ImagesView/index.js +4 -4
- package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +1 -1
- package/lib/cjs/client/shared/components/ResultsPage.js +2 -2
- package/lib/cjs/client/shared/creeveyClientApi.js +6 -2
- package/lib/cjs/client/shared/helpers.js +22 -22
- package/lib/cjs/client/shared/viewMode.js +1 -1
- 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/index.html +19 -19
- 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 +4 -4
- package/lib/cjs/server/config.js +1 -1
- package/lib/cjs/server/docker.js +3 -7
- package/lib/cjs/server/index.js +1 -1
- 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 +1 -3
- package/lib/cjs/server/loaders/webpack/compile.js +31 -24
- package/lib/cjs/server/loaders/webpack/creevey-loader.js +10 -5
- package/lib/cjs/server/loaders/webpack/dummy-hmr.js +2 -7
- package/lib/cjs/server/loaders/webpack/mdx-loader.js +1 -1
- 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 +2 -2
- package/lib/cjs/server/master/pool.js +9 -18
- package/lib/cjs/server/master/runner.js +53 -66
- package/lib/cjs/server/master/server.js +2 -2
- package/lib/cjs/server/messages.js +8 -10
- package/lib/cjs/server/selenium/browser.js +23 -31
- package/lib/cjs/server/selenium/selenoid.js +5 -7
- package/lib/cjs/server/stories.js +9 -20
- package/lib/cjs/server/storybook/entry.js +5 -3
- package/lib/cjs/server/storybook/helpers.js +15 -21
- package/lib/cjs/server/storybook/providers/browser.js +5 -9
- package/lib/cjs/server/storybook/providers/nodejs.js +4 -4
- package/lib/cjs/server/update.js +1 -5
- package/lib/cjs/server/utils.js +13 -15
- package/lib/cjs/server/worker/reporter.js +8 -20
- package/lib/cjs/server/worker/worker.js +6 -16
- package/lib/cjs/shared/index.js +89 -0
- package/lib/cjs/shared/serializeRegExp.js +41 -0
- package/lib/cjs/types.js +6 -6
- package/lib/esm/client/addon/Manager.js +11 -5
- package/lib/esm/client/addon/components/Icons.js +1 -1
- package/lib/esm/client/addon/index.js +2 -0
- package/lib/esm/client/addon/preset.js +1 -1
- package/lib/esm/client/addon/register.js +6 -2
- package/lib/esm/client/addon/withCreevey.js +55 -30
- package/lib/esm/client/shared/creeveyClientApi.js +6 -2
- package/lib/esm/client/shared/helpers.js +6 -6
- package/lib/esm/creevey.js +3 -5
- package/lib/esm/index.js +1 -3
- package/lib/esm/server/docker.js +2 -2
- package/lib/esm/server/index.js +1 -1
- 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 +1 -3
- package/lib/esm/server/loaders/webpack/compile.js +31 -24
- package/lib/esm/server/loaders/webpack/creevey-loader.js +9 -4
- package/lib/esm/server/loaders/webpack/dummy-hmr.js +2 -6
- package/lib/esm/server/loaders/webpack/start.js +1 -1
- package/lib/esm/server/master/index.js +2 -2
- package/lib/esm/server/master/pool.js +7 -18
- package/lib/esm/server/master/runner.js +53 -66
- package/lib/esm/server/master/server.js +2 -2
- package/lib/esm/server/messages.js +3 -5
- package/lib/esm/server/selenium/browser.js +20 -28
- package/lib/esm/server/selenium/selenoid.js +4 -6
- package/lib/esm/server/stories.js +9 -20
- package/lib/esm/server/storybook/entry.js +4 -2
- package/lib/esm/server/storybook/helpers.js +7 -15
- package/lib/esm/server/storybook/providers/browser.js +4 -5
- package/lib/esm/server/storybook/providers/nodejs.js +3 -3
- package/lib/esm/server/update.js +1 -5
- package/lib/esm/server/utils.js +5 -9
- package/lib/esm/server/worker/reporter.js +8 -20
- package/lib/esm/server/worker/worker.js +6 -16
- package/lib/esm/shared/index.js +66 -0
- package/lib/esm/shared/serializeRegExp.js +23 -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 -24
- package/lib/types/client/addon/readyForCapture.d.ts +6 -6
- package/lib/types/client/addon/register.d.ts +3 -3
- package/lib/types/client/addon/utils.d.ts +2 -2
- package/lib/types/client/addon/withCreevey.d.ts +24 -24
- 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 -7
- package/lib/types/server/master/pool.d.ts +31 -31
- 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 +27 -27
- package/lib/types/server/selenium/browser.d.ts +17 -17
- 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 -8
- package/lib/types/server/storybook/entry.d.ts +18 -18
- package/lib/types/server/storybook/helpers.d.ts +24 -24
- package/lib/types/server/storybook/providers/browser.d.ts +4 -4
- package/lib/types/server/storybook/providers/hybrid.d.ts +4 -4
- package/lib/types/server/storybook/providers/nodejs.d.ts +9 -9
- package/lib/types/server/testsFiles/parser.d.ts +12 -12
- package/lib/types/server/testsFiles/register.d.ts +2 -2
- package/lib/types/server/update.d.ts +2 -2
- package/lib/types/server/utils.d.ts +20 -20
- package/lib/types/server/worker/chai-image.d.ts +6 -6
- package/lib/types/server/worker/helpers.d.ts +8 -8
- 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.d.ts → shared/index.d.ts} +7 -16
- package/lib/types/shared/serializeRegExp.d.ts +9 -0
- package/lib/types/types.d.ts +490 -489
- package/package.json +115 -102
- package/preset.js +9 -9
- package/types/babel__register.d.ts +1 -1
- package/types/chai.d.ts +12 -12
- package/types/event-source-polyfill.d.ts +6 -6
- package/types/mdx.d.ts +3 -2
- package/types/mocha.d.ts +20 -20
- package/types/png.d.ts +4 -4
- package/lib/cjs/client/web/1.js +0 -13
- package/lib/cjs/client/web/2.js +0 -1
- package/lib/cjs/shared.js +0 -124
- package/lib/esm/shared.js +0 -93
- package/storybook-static/stories.json +0 -21
@@ -19,69 +19,44 @@ var _pool = _interopRequireDefault(require("./pool"));
|
|
19
19
|
|
20
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
21
|
|
22
|
-
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; }
|
23
|
-
|
24
22
|
const copyFileAsync = (0, _util.promisify)(_fs.copyFile);
|
25
23
|
const mkdirAsync = (0, _util.promisify)(_fs.mkdir);
|
26
24
|
|
27
25
|
class Runner extends _events.EventEmitter {
|
26
|
+
pools = {};
|
27
|
+
tests = {};
|
28
|
+
|
28
29
|
get isRunning() {
|
29
30
|
return Object.values(this.pools).some(pool => pool.isRunning);
|
30
31
|
}
|
31
32
|
|
32
33
|
constructor(config) {
|
33
34
|
super();
|
35
|
+
this.failFast = config.failFast;
|
36
|
+
this.screenDir = config.screenDir;
|
37
|
+
this.reportDir = config.reportDir;
|
38
|
+
this.browsers = Object.keys(config.browsers);
|
39
|
+
this.browsers.map(browser => this.pools[browser] = new _pool.default(config, browser)).map(pool => pool.on('test', this.handlePoolMessage));
|
40
|
+
}
|
34
41
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
id,
|
50
|
-
status,
|
51
|
-
result
|
52
|
-
} = message;
|
53
|
-
const test = this.tests[id];
|
54
|
-
if (!test) return;
|
55
|
-
const {
|
56
|
-
browser,
|
57
|
-
testName,
|
58
|
-
storyPath,
|
59
|
-
storyId
|
60
|
-
} = test; // TODO Handle 'retrying' status
|
61
|
-
|
62
|
-
test.status = status == 'retrying' ? 'failed' : status;
|
63
|
-
|
64
|
-
if (!result) {
|
65
|
-
this.sendUpdate({
|
66
|
-
tests: {
|
67
|
-
[id]: {
|
68
|
-
id,
|
69
|
-
browser,
|
70
|
-
testName,
|
71
|
-
storyPath,
|
72
|
-
status: test.status,
|
73
|
-
storyId
|
74
|
-
}
|
75
|
-
}
|
76
|
-
});
|
77
|
-
return;
|
78
|
-
}
|
42
|
+
handlePoolMessage = message => {
|
43
|
+
const {
|
44
|
+
id,
|
45
|
+
status,
|
46
|
+
result
|
47
|
+
} = message;
|
48
|
+
const test = this.tests[id];
|
49
|
+
if (!test) return;
|
50
|
+
const {
|
51
|
+
browser,
|
52
|
+
testName,
|
53
|
+
storyPath,
|
54
|
+
storyId
|
55
|
+
} = test; // TODO Handle 'retrying' status
|
79
56
|
|
80
|
-
|
81
|
-
test.results = [];
|
82
|
-
}
|
57
|
+
test.status = status == 'retrying' ? 'failed' : status;
|
83
58
|
|
84
|
-
|
59
|
+
if (!result) {
|
85
60
|
this.sendUpdate({
|
86
61
|
tests: {
|
87
62
|
[id]: {
|
@@ -90,29 +65,41 @@ class Runner extends _events.EventEmitter {
|
|
90
65
|
testName,
|
91
66
|
storyPath,
|
92
67
|
status: test.status,
|
93
|
-
results: [result],
|
94
68
|
storyId
|
95
69
|
}
|
96
70
|
}
|
97
71
|
});
|
98
|
-
|
99
|
-
}
|
72
|
+
return;
|
73
|
+
}
|
100
74
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
75
|
+
if (!test.results) {
|
76
|
+
test.results = [];
|
77
|
+
}
|
78
|
+
|
79
|
+
test.results.push(result);
|
80
|
+
this.sendUpdate({
|
81
|
+
tests: {
|
82
|
+
[id]: {
|
83
|
+
id,
|
84
|
+
browser,
|
85
|
+
testName,
|
86
|
+
storyPath,
|
87
|
+
status: test.status,
|
88
|
+
results: [result],
|
89
|
+
storyId
|
90
|
+
}
|
107
91
|
}
|
108
92
|
});
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
this.
|
113
|
-
|
114
|
-
|
115
|
-
|
93
|
+
if (this.failFast && status == 'failed') this.stop();
|
94
|
+
};
|
95
|
+
handlePoolStop = () => {
|
96
|
+
if (!this.isRunning) {
|
97
|
+
this.sendUpdate({
|
98
|
+
isRunning: false
|
99
|
+
});
|
100
|
+
this.emit('stop');
|
101
|
+
}
|
102
|
+
};
|
116
103
|
|
117
104
|
async init() {
|
118
105
|
await Promise.all(Object.values(this.pools).map(pool => pool.init()));
|
@@ -75,7 +75,7 @@ function server(reportDir, port, ui) {
|
|
75
75
|
type: 'update',
|
76
76
|
payload: deserializedStories
|
77
77
|
});
|
78
|
-
Object.values(_cluster.default.workers).filter(_types.isDefined).filter(worker => worker.isConnected()).forEach(worker => (0, _messages.sendStoriesMessage)(worker, {
|
78
|
+
Object.values(_cluster.default.workers ?? {}).filter(_types.isDefined).filter(worker => worker.isConnected()).forEach(worker => (0, _messages.sendStoriesMessage)(worker, {
|
79
79
|
type: 'update',
|
80
80
|
payload: deserializedStories
|
81
81
|
}));
|
@@ -90,7 +90,7 @@ function server(reportDir, port, ui) {
|
|
90
90
|
workerId,
|
91
91
|
options
|
92
92
|
} = ctx.request.body;
|
93
|
-
const worker = Object.values(_cluster.default.workers).filter(_types.isDefined).find(worker => worker.process.pid == workerId); // NOTE: Hypothetical case when someone send to us capture req and we don't have a worker with browser session for it
|
93
|
+
const worker = Object.values(_cluster.default.workers ?? {}).filter(_types.isDefined).find(worker => worker.process.pid == workerId); // NOTE: Hypothetical case when someone send to us capture req and we don't have a worker with browser session for it
|
94
94
|
|
95
95
|
if (!worker) return;
|
96
96
|
await new Promise(resolve => {
|
@@ -3,16 +3,16 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.
|
6
|
+
exports.emitDockerMessage = emitDockerMessage;
|
7
|
+
exports.emitShutdownMessage = emitShutdownMessage;
|
7
8
|
exports.emitStoriesMessage = emitStoriesMessage;
|
8
9
|
exports.emitTestMessage = emitTestMessage;
|
9
10
|
exports.emitWebpackMessage = emitWebpackMessage;
|
10
|
-
exports.
|
11
|
-
exports.emitShutdownMessage = emitShutdownMessage;
|
12
|
-
exports.sendStoriesMessage = sendStoriesMessage;
|
13
|
-
exports.sendTestMessage = sendTestMessage;
|
11
|
+
exports.emitWorkerMessage = emitWorkerMessage;
|
14
12
|
exports.sendDockerMessage = sendDockerMessage;
|
15
13
|
exports.sendShutdownMessage = sendShutdownMessage;
|
14
|
+
exports.sendStoriesMessage = sendStoriesMessage;
|
15
|
+
exports.sendTestMessage = sendTestMessage;
|
16
16
|
exports.subscribeOn = subscribeOn;
|
17
17
|
exports.subscribeOnWorker = subscribeOnWorker;
|
18
18
|
|
@@ -21,10 +21,10 @@ var _cluster = _interopRequireDefault(require("cluster"));
|
|
21
21
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
22
22
|
|
23
23
|
function emitMessage(message) {
|
24
|
-
var _process$send, _process
|
24
|
+
var _process$send, _process;
|
25
25
|
|
26
26
|
if (_cluster.default.isWorker && !process.connected) return false;
|
27
|
-
return (_process$send = (_process
|
27
|
+
return ((_process$send = (_process = process).send) === null || _process$send === void 0 ? void 0 : _process$send.call(_process, message)) ?? // @ts-expect-error: wrong typings `process.emit` return boolean
|
28
28
|
process.emit('message', message);
|
29
29
|
}
|
30
30
|
|
@@ -190,9 +190,7 @@ function subscribeOn(scope, handler) {
|
|
190
190
|
const workers = new Map();
|
191
191
|
|
192
192
|
function subscribeOnWorker(worker, scope, handler) {
|
193
|
-
|
194
|
-
|
195
|
-
const workerHandlers = (_workers$get = workers.get(worker)) !== null && _workers$get !== void 0 ? _workers$get : createHandlers();
|
193
|
+
const workerHandlers = workers.get(worker) ?? createHandlers();
|
196
194
|
|
197
195
|
if (!workers.has(worker)) {
|
198
196
|
workers.set(worker, workerHandlers);
|
@@ -3,12 +3,12 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.takeScreenshot = takeScreenshot;
|
7
|
-
exports.updateStorybookGlobals = updateStorybookGlobals;
|
8
|
-
exports.loadStoriesFromBrowser = loadStoriesFromBrowser;
|
9
|
-
exports.getBrowser = getBrowser;
|
10
6
|
exports.closeBrowser = closeBrowser;
|
7
|
+
exports.getBrowser = getBrowser;
|
8
|
+
exports.loadStoriesFromBrowser = loadStoriesFromBrowser;
|
11
9
|
exports.switchStory = switchStory;
|
10
|
+
exports.takeScreenshot = takeScreenshot;
|
11
|
+
exports.updateStorybookGlobals = updateStorybookGlobals;
|
12
12
|
|
13
13
|
var _chalk = _interopRequireDefault(require("chalk"));
|
14
14
|
|
@@ -51,9 +51,7 @@ function getSessionData(grid, sessionId = '') {
|
|
51
51
|
gridUrl.pathname = `/host/${sessionId}`;
|
52
52
|
return new Promise((resolve, reject) => (gridUrl.protocol == 'https:' ? _https.default : _http.default).get(gridUrl.toString(), res => {
|
53
53
|
if (res.statusCode !== 200) {
|
54
|
-
|
55
|
-
|
56
|
-
return reject(new Error(`Couldn't get session data for ${sessionId}. Status code: ${(_res$statusCode = res.statusCode) !== null && _res$statusCode !== void 0 ? _res$statusCode : 'Unknown'}`));
|
54
|
+
return reject(new Error(`Couldn't get session data for ${sessionId}. Status code: ${res.statusCode ?? 'Unknown'}`));
|
57
55
|
}
|
58
56
|
|
59
57
|
let data = '';
|
@@ -63,9 +61,7 @@ function getSessionData(grid, sessionId = '') {
|
|
63
61
|
try {
|
64
62
|
resolve(JSON.parse(data));
|
65
63
|
} catch (error) {
|
66
|
-
|
67
|
-
|
68
|
-
reject(new Error(`Couldn't get session data for ${sessionId}. ${error instanceof Error ? (_error$stack = error.stack) !== null && _error$stack !== void 0 ? _error$stack : error.message : error}`));
|
64
|
+
reject(new Error(`Couldn't get session data for ${sessionId}. ${error instanceof Error ? error.stack ?? error.message : error}`));
|
69
65
|
}
|
70
66
|
});
|
71
67
|
}));
|
@@ -132,7 +128,7 @@ function getUrlChecker(browser) {
|
|
132
128
|
|
133
129
|
async function waitForStorybook(browser) {
|
134
130
|
// NOTE: Storybook 5.x doesn't have the `last` method
|
135
|
-
if ((0, _helpers.isStorybookVersionLessThan)(6)) {
|
131
|
+
if ((0, _helpers.isStorybookVersionLessThan)(6) || (0, _helpers.isStorybookVersionGreaterThan)(6, 4)) {
|
136
132
|
browserLogger.debug('Waiting for `load` event to make sure that storybook is initiated');
|
137
133
|
return browser.executeAsyncScript(function (callback) {
|
138
134
|
if (document.readyState == 'complete') return callback();
|
@@ -164,11 +160,11 @@ async function waitForStorybook(browser) {
|
|
164
160
|
}
|
165
161
|
|
166
162
|
async function resetMousePosition(browser) {
|
167
|
-
var
|
163
|
+
var _await$browser$getCap, _await$browser$getCap2;
|
168
164
|
|
169
165
|
browserLogger.debug('Resetting mouse position to the top-left corner');
|
170
166
|
const browserName = (await browser.getCapabilities()).getBrowserName();
|
171
|
-
const [browserVersion] = (
|
167
|
+
const [browserVersion] = ((_await$browser$getCap = (await browser.getCapabilities()).getBrowserVersion()) === null || _await$browser$getCap === void 0 ? void 0 : _await$browser$getCap.split('.')) ?? ((_await$browser$getCap2 = (await browser.getCapabilities()).get('version')) === null || _await$browser$getCap2 === void 0 ? void 0 : _await$browser$getCap2.split('.')) ?? []; // NOTE Reset mouse position to support keweb selenium grid browser versions
|
172
168
|
|
173
169
|
if (browserName == 'chrome' && browserVersion == '70') {
|
174
170
|
const {
|
@@ -252,10 +248,10 @@ const getScrollBarWidth = (() => {
|
|
252
248
|
|
253
249
|
|
254
250
|
async function hasScrollBar(browser) {
|
255
|
-
var _await$browser$
|
251
|
+
var _await$browser$getCap3;
|
256
252
|
|
257
253
|
const browserName = (await browser.getCapabilities()).getBrowserName();
|
258
|
-
const [browserVersion] = (
|
254
|
+
const [browserVersion] = ((_await$browser$getCap3 = (await browser.getCapabilities()).getBrowserVersion()) === null || _await$browser$getCap3 === void 0 ? void 0 : _await$browser$getCap3.split('.')) ?? [];
|
259
255
|
return browserName != 'Safari' && // NOTE This need to work with keweb selenium grid
|
260
256
|
!(browserName == 'firefox' && browserVersion == '61');
|
261
257
|
}
|
@@ -306,7 +302,8 @@ async function takeCompositeScreenshot(browser, windowRect, elementRect) {
|
|
306
302
|
const scrollOffset = isFitVertically || isScreenshotWithoutScrollBar ? 0 : scrollBarWidth;
|
307
303
|
const i = (y * compositeImage.width + x) * 4;
|
308
304
|
const j = // NOTE compositeImage(x, y) => image(x, y)
|
309
|
-
(y % viewportHeight * (viewportWidth + scrollOffset) + x % viewportWidth) * 4 + (
|
305
|
+
(y % viewportHeight * (viewportWidth + scrollOffset) + x % viewportWidth) * 4 + ( // NOTE Offset for last row/col image
|
306
|
+
isLastRow ? yOffset * (viewportWidth + scrollOffset) * 4 : 0) + (isLastCol ? xOffset * 4 : 0);
|
310
307
|
const image = images[row * cols + col];
|
311
308
|
compositeImage.data[i + 0] = image.data[j + 0];
|
312
309
|
compositeImage.data[i + 1] = image.data[j + 1];
|
@@ -355,7 +352,7 @@ async function takeScreenshot(browser, captureElement, ignoreElements) {
|
|
355
352
|
const {
|
356
353
|
elementRect,
|
357
354
|
windowRect
|
358
|
-
} = rects
|
355
|
+
} = rects ?? {};
|
359
356
|
if (!elementRect || !windowRect) throw new Error(`Couldn't find element with selector: '${captureElement}'`);
|
360
357
|
const isFitIntoViewport = elementRect.width + elementRect.left <= windowRect.width && elementRect.height + elementRect.top <= windowRect.height;
|
361
358
|
if (isFitIntoViewport) browserLogger.debug(`Capturing ${_chalk.default.cyan(captureElement)}`);else browserLogger.debug(`Capturing composite screenshot image of ${_chalk.default.cyan(captureElement)}`);
|
@@ -381,9 +378,9 @@ async function selectStory(browser, {
|
|
381
378
|
return callback(["Creevey can't switch story. This may happened if forget to add `creevey` addon to your storybook config, or storybook not loaded in browser due syntax error."]);
|
382
379
|
}
|
383
380
|
|
384
|
-
window.__CREEVEY_SELECT_STORY__(id, kind, name, shouldWaitForReady, callback);
|
381
|
+
void window.__CREEVEY_SELECT_STORY__(id, kind, name, shouldWaitForReady, callback);
|
385
382
|
}, id, kind, name, waitForReady);
|
386
|
-
const [errorMessage, isCaptureCalled = false] = result
|
383
|
+
const [errorMessage, isCaptureCalled = false] = result ?? [];
|
387
384
|
if (errorMessage) throw new Error(errorMessage);
|
388
385
|
return isCaptureCalled;
|
389
386
|
}
|
@@ -430,11 +427,8 @@ async function resolveCreeveyHost(browser, port) {
|
|
430
427
|
const addresses = getAddresses();
|
431
428
|
creeveyServerHost = await browser.executeAsyncScript(function (hosts, port, callback) {
|
432
429
|
void Promise.all(hosts.map(function (host) {
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
fetch('//' + host + ':' + port + '/ping').then(resolve).catch(reject);
|
437
|
-
}).then(function (response) {
|
430
|
+
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
|
431
|
+
return fetch('http://' + host + ':' + port + '/ping').then(function (response) {
|
438
432
|
return response.text();
|
439
433
|
}).then(function (pong) {
|
440
434
|
return pong == 'pong' ? host : null;
|
@@ -530,7 +524,7 @@ async function getBrowser(config, name) {
|
|
530
524
|
});
|
531
525
|
}, () => viewport && browser && resizeViewport(browser, viewport), () => browser && openStorybookPage(browser, realAddress, config.resolveStorybookUrl), () => browser && waitForStorybook(browser)], () => !_utils.isShuttingDown.current);
|
532
526
|
} catch (originalError) {
|
533
|
-
var
|
527
|
+
var _browser4;
|
534
528
|
|
535
529
|
if (_utils.isShuttingDown.current) {
|
536
530
|
var _browser3;
|
@@ -541,7 +535,7 @@ async function getBrowser(config, name) {
|
|
541
535
|
}
|
542
536
|
|
543
537
|
if (originalError instanceof Error && originalError.name == 'ResolveUrlError') throw originalError;
|
544
|
-
const error = new Error(`Can't load storybook root page by URL ${(
|
538
|
+
const error = new Error(`Can't load storybook root page by URL ${(await ((_browser4 = browser) === null || _browser4 === void 0 ? void 0 : _browser4.getCurrentUrl())) ?? realAddress}`);
|
545
539
|
if (originalError instanceof Error) error.stack = originalError.stack;
|
546
540
|
throw error;
|
547
541
|
}
|
@@ -579,7 +573,7 @@ async function closeBrowser() {
|
|
579
573
|
}
|
580
574
|
|
581
575
|
async function switchStory() {
|
582
|
-
var _this$currentTest, _this$currentTest$ctx
|
576
|
+
var _this$currentTest, _this$currentTest$ctx;
|
583
577
|
|
584
578
|
let testOrSuite = this.currentTest;
|
585
579
|
if (!testOrSuite) throw new Error("Can't switch story, because test context doesn't have 'currentTest' field");
|
@@ -606,7 +600,7 @@ async function switchStory() {
|
|
606
600
|
captureElement = '#root',
|
607
601
|
waitForReady,
|
608
602
|
ignoreElements
|
609
|
-
} =
|
603
|
+
} = parameters.creevey ?? {};
|
610
604
|
browserLogger.debug(`Switching to story ${_chalk.default.cyan(kind)}/${_chalk.default.cyan(name)} by id ${_chalk.default.magenta(id)}`);
|
611
605
|
if (captureElement) Object.defineProperty(this, 'captureElement', {
|
612
606
|
enumerable: true,
|
@@ -622,8 +616,6 @@ async function switchStory() {
|
|
622
616
|
let storyPlayResolver;
|
623
617
|
let waitForComplete = new Promise(resolve => storyPlayResolver = resolve);
|
624
618
|
const unsubscribe = (0, _messages.subscribeOn)('stories', message => {
|
625
|
-
var _payload$captureEleme, _payload$ignoreElemen;
|
626
|
-
|
627
619
|
if (message.type != 'capture') return;
|
628
620
|
const {
|
629
621
|
payload = {},
|
@@ -631,7 +623,7 @@ async function switchStory() {
|
|
631
623
|
imageName
|
632
624
|
} = {}
|
633
625
|
} = message;
|
634
|
-
void takeScreenshot(this.browser,
|
626
|
+
void takeScreenshot(this.browser, payload.captureElement ?? captureElement, payload.ignoreElements ?? ignoreElements).then(screenshot => {
|
635
627
|
this.screenshots.push({
|
636
628
|
imageName,
|
637
629
|
screenshot
|
@@ -3,8 +3,8 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.startSelenoidStandalone = startSelenoidStandalone;
|
7
6
|
exports.startSelenoidContainer = startSelenoidContainer;
|
7
|
+
exports.startSelenoidStandalone = startSelenoidStandalone;
|
8
8
|
|
9
9
|
var _path = _interopRequireDefault(require("path"));
|
10
10
|
|
@@ -20,7 +20,7 @@ var _core = require("@octokit/core");
|
|
20
20
|
|
21
21
|
var _messages = require("../messages");
|
22
22
|
|
23
|
-
var _cluster = require("cluster");
|
23
|
+
var _cluster = _interopRequireDefault(require("cluster"));
|
24
24
|
|
25
25
|
var _shelljs = require("shelljs");
|
26
26
|
|
@@ -62,8 +62,6 @@ async function createSelenoidConfig(browsers, {
|
|
62
62
|
}
|
63
63
|
|
64
64
|
async function downloadSelenoidBinary(destination) {
|
65
|
-
var _assets$find;
|
66
|
-
|
67
65
|
const platformNameMapping = {
|
68
66
|
darwin: 'selenoid_darwin_amd64',
|
69
67
|
linux: 'selenoid_linux_amd64',
|
@@ -80,9 +78,9 @@ async function downloadSelenoidBinary(destination) {
|
|
80
78
|
const {
|
81
79
|
browser_download_url: downloadUrl,
|
82
80
|
size: binarySize
|
83
|
-
} =
|
81
|
+
} = assets.find(({
|
84
82
|
name
|
85
|
-
}) => platformNameMapping[process.platform] == name)
|
83
|
+
}) => platformNameMapping[process.platform] == name) ?? {};
|
86
84
|
if ((0, _fs.existsSync)(destination) && (0, _fs.lstatSync)(destination).size == binarySize) return;
|
87
85
|
|
88
86
|
if (!downloadUrl) {
|
@@ -94,7 +92,7 @@ async function downloadSelenoidBinary(destination) {
|
|
94
92
|
|
95
93
|
async function startSelenoidStandalone(config, debug) {
|
96
94
|
config.gridUrl = 'http://localhost:4444/wd/hub';
|
97
|
-
if (_cluster.isWorker) return;
|
95
|
+
if (_cluster.default.isWorker) return;
|
98
96
|
const browsers = Object.values(config.browsers).filter(browser => !browser.gridUrl);
|
99
97
|
const selenoidConfigDir = await createSelenoidConfig(browsers, {
|
100
98
|
useDocker: false
|
@@ -25,14 +25,12 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
25
25
|
|
26
26
|
function storyTestFabric(delay, testFn) {
|
27
27
|
return async function storyTest() {
|
28
|
-
var _testFn$call;
|
29
|
-
|
30
28
|
delay ? await new Promise(resolve => setTimeout(resolve, delay)) : void 0;
|
31
|
-
await (
|
29
|
+
await (testFn ? testFn.call(this) : this.screenshots.length > 0 ? this.expect(this.screenshots.reduce((screenshots, {
|
32
30
|
imageName,
|
33
31
|
screenshot
|
34
32
|
}, index) => ({ ...screenshots,
|
35
|
-
[imageName
|
33
|
+
[imageName ?? `screenshot_${index}`]: screenshot
|
36
34
|
}), {})).to.matchImages() : this.expect(await this.takeScreenshot()).to.matchImage());
|
37
35
|
};
|
38
36
|
}
|
@@ -62,15 +60,13 @@ function createCreeveyTest(browser, storyMeta, skipOptions, testName) {
|
|
62
60
|
function convertStories(browserName, stories) {
|
63
61
|
const tests = {};
|
64
62
|
(Array.isArray(stories) ? stories : Object.values(stories)).forEach(storyMeta => {
|
65
|
-
var _storyMeta$parameters;
|
66
|
-
|
67
63
|
// TODO Skip docsOnly stories for now
|
68
64
|
if (storyMeta.parameters.docsOnly) return;
|
69
65
|
const {
|
70
66
|
delay: delayParam,
|
71
67
|
tests: storyTests,
|
72
68
|
skip
|
73
|
-
} =
|
69
|
+
} = storyMeta.parameters.creevey ?? {};
|
74
70
|
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]
|
75
71
|
// typeof tests === "function" => rootSuite -> kindSuite -> storyTest -> browser -> [images.png]
|
76
72
|
// typeof tests === "object" => rootSuite -> kindSuite -> storySuite -> test -> [browsers.png]
|
@@ -105,11 +101,11 @@ async function loadTestsFromStories(browsers, provider, update) {
|
|
105
101
|
const tests = {};
|
106
102
|
browsers.forEach(browser => {
|
107
103
|
Array.from(storiesByFiles.entries()).forEach(([filename, stories]) => {
|
108
|
-
var _testIdsByFiles$get
|
104
|
+
var _testIdsByFiles$get;
|
109
105
|
|
110
106
|
Object.assign(tests, convertStories(browser, stories));
|
111
107
|
const changed = Object.keys(tests);
|
112
|
-
const removed = (
|
108
|
+
const removed = ((_testIdsByFiles$get = testIdsByFiles.get(filename)) === null || _testIdsByFiles$get === void 0 ? void 0 : _testIdsByFiles$get.filter(testId => !tests[testId])) ?? [];
|
113
109
|
if (changed.length == 0) testIdsByFiles.delete(filename);else testIdsByFiles.set(filename, changed);
|
114
110
|
Object.assign(testsDiff, tests);
|
115
111
|
removed.forEach(testId => testsDiff[testId] = undefined);
|
@@ -125,19 +121,12 @@ async function loadTestsFromStories(browsers, provider, update) {
|
|
125
121
|
fileName
|
126
122
|
}
|
127
123
|
}
|
128
|
-
}) =>
|
129
|
-
|
130
|
-
|
131
|
-
return (// TODO Don't use filename as a key, due possible collisions if two require.context with same structure of modules are defined
|
132
|
-
testIdsByFiles.set(fileName, [...((_testIdsByFiles$get2 = testIdsByFiles.get(fileName)) !== null && _testIdsByFiles$get2 !== void 0 ? _testIdsByFiles$get2 : []), id])
|
133
|
-
);
|
134
|
-
});
|
124
|
+
}) => // TODO Don't use filename as a key, due possible collisions if two require.context with same structure of modules are defined
|
125
|
+
testIdsByFiles.set(fileName, [...(testIdsByFiles.get(fileName) ?? []), id]));
|
135
126
|
return tests;
|
136
127
|
}
|
137
128
|
|
138
129
|
function saveStoriesJson(storiesData, extract) {
|
139
|
-
var _storiesData$stories;
|
140
|
-
|
141
130
|
const outputDir = typeof extract == 'boolean' ? 'storybook-static' : extract;
|
142
131
|
|
143
132
|
if (!(0, _helpers.isStorybookVersionLessThan)(6)) {
|
@@ -153,8 +142,8 @@ function saveStoriesJson(storiesData, extract) {
|
|
153
142
|
} // TODO Fix args stories
|
154
143
|
|
155
144
|
|
156
|
-
(0, _utils.removeProps)(storiesData
|
157
|
-
Object.values((
|
145
|
+
(0, _utils.removeProps)(storiesData ?? {}, ['stories', () => true, 'parameters', '__isArgsStory']);
|
146
|
+
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);
|
158
147
|
(0, _fs.mkdirSync)(outputDir, {
|
159
148
|
recursive: true
|
160
149
|
});
|
@@ -3,13 +3,13 @@
|
|
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
8
|
var _addons = require("@storybook/addons");
|
9
9
|
|
10
10
|
var _helpers = require("./helpers");
|
11
11
|
|
12
|
-
var _api$
|
12
|
+
var _api$context;
|
13
13
|
|
14
14
|
const framework = (0, _helpers.getStorybookFramework)(); // eslint-disable-next-line @typescript-eslint/no-var-requires
|
15
15
|
|
@@ -19,7 +19,9 @@ const core = require((0, _helpers.resolveFromStorybook)('@storybook/core')); //@
|
|
19
19
|
|
20
20
|
const start = (0, _helpers.isStorybookVersionLessThan)(6, 2) ? core.default.start : core.start;
|
21
21
|
const api = start(() => void 0);
|
22
|
-
const channel = (0, _helpers.isStorybookVersionLessThan)(6, 4) ?
|
22
|
+
const channel = (0, _helpers.isStorybookVersionLessThan)(6, 4) ? //@ts-expect-error: 6.x has { channel }, but 5.x has { context: { channel } }
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
24
|
+
api.channel ?? ((_api$context = api.context) === null || _api$context === void 0 ? void 0 : _api$context.channel) : _addons.addons.getChannel();
|
23
25
|
exports.channel = channel;
|
24
26
|
const clientApi = api.clientApi;
|
25
27
|
exports.clientApi = clientApi;
|
@@ -3,16 +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.isStorybookVersionGreaterThan = isStorybookVersionGreaterThan;
|
11
|
-
exports.isStorybookVersion = isStorybookVersion;
|
12
|
-
exports.getStorybookFramework = getStorybookFramework;
|
10
|
+
exports.importStorybookClientLogger = void 0;
|
13
11
|
exports.importStorybookConfig = importStorybookConfig;
|
12
|
+
exports.importStorybookCoreEvents = exports.importStorybookCoreCommon = void 0;
|
14
13
|
exports.isCSFv3Enabled = isCSFv3Enabled;
|
15
|
-
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;
|
16
18
|
|
17
19
|
var _path = _interopRequireDefault(require("path"));
|
18
20
|
|
@@ -86,36 +88,28 @@ function getStorybookVersion() {
|
|
86
88
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
87
89
|
const {
|
88
90
|
version
|
89
|
-
} = require(resolveFromStorybook('@storybook/core/package.json'));
|
91
|
+
} = require(resolveFromStorybook('@storybook/core-server/package.json'));
|
90
92
|
|
91
93
|
return version;
|
92
94
|
}
|
93
95
|
|
94
96
|
function isStorybookVersionLessThan(major, minor) {
|
95
|
-
|
96
|
-
|
97
|
-
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('.');
|
98
98
|
return Number(sbMajor) < major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) < minor;
|
99
99
|
}
|
100
100
|
|
101
101
|
function isStorybookVersionGreaterThan(major, minor) {
|
102
|
-
|
103
|
-
|
104
|
-
const [sbMajor, sbMinor] = ((_process$env$__CREEVE2 = process.env.__CREEVEY_STORYBOOK_VERSION__) !== null && _process$env$__CREEVE2 !== void 0 ? _process$env$__CREEVE2 : getStorybookVersion()).split('.');
|
102
|
+
const [sbMajor, sbMinor] = (process.env.__CREEVEY_STORYBOOK_VERSION__ ?? getStorybookVersion()).split('.');
|
105
103
|
return Number(sbMajor) > major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) > minor;
|
106
104
|
}
|
107
105
|
|
108
106
|
function isStorybookVersion(major, minor) {
|
109
|
-
|
110
|
-
|
111
|
-
const [sbMajor, sbMinor] = ((_process$env$__CREEVE3 = process.env.__CREEVEY_STORYBOOK_VERSION__) !== null && _process$env$__CREEVE3 !== void 0 ? _process$env$__CREEVE3 : getStorybookVersion()).split('.');
|
107
|
+
const [sbMajor, sbMinor] = (process.env.__CREEVEY_STORYBOOK_VERSION__ ?? getStorybookVersion()).split('.');
|
112
108
|
return Number(sbMajor) == major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) == minor;
|
113
109
|
}
|
114
110
|
|
115
111
|
function getStorybookFramework() {
|
116
|
-
|
117
|
-
|
118
|
-
const framework = (_process$env$__CREEVE4 = process.env.__CREEVEY_STORYBOOK_FRAMEWORK__) !== null && _process$env$__CREEVE4 !== void 0 ? _process$env$__CREEVE4 : supportedFrameworks.find(framework => {
|
112
|
+
const framework = process.env.__CREEVEY_STORYBOOK_FRAMEWORK__ ?? supportedFrameworks.find(framework => {
|
119
113
|
try {
|
120
114
|
return require.resolve(resolveFromStorybook(`@storybook/${framework}`));
|
121
115
|
} catch (_) {
|
@@ -159,7 +153,7 @@ async function importStorybookConfig() {
|
|
159
153
|
}
|
160
154
|
|
161
155
|
async function isCSFv3Enabled() {
|
162
|
-
var _await$importStoryboo, _await$importStoryboo2
|
156
|
+
var _await$importStoryboo, _await$importStoryboo2;
|
163
157
|
|
164
|
-
return (_await$importStoryboo =
|
158
|
+
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;
|
165
159
|
}
|