creevey 0.9.0-beta.13 → 0.9.0-beta.14
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/.yarn/install-state.gz +0 -0
- package/.yarnrc.yml +1 -0
- package/lib/cjs/cli.js +1 -0
- package/lib/cjs/client/addon/Manager.js +151 -223
- package/lib/cjs/client/addon/components/Addon.js +2 -9
- package/lib/cjs/client/addon/components/Icons.js +1 -7
- package/lib/cjs/client/addon/components/Panel.js +5 -18
- package/lib/cjs/client/addon/components/TestSelect.js +12 -25
- package/lib/cjs/client/addon/components/Tools.js +17 -28
- package/lib/cjs/client/addon/decorator.js +1 -4
- package/lib/cjs/client/addon/index.js +0 -4
- package/lib/cjs/client/addon/preset.js +3 -12
- package/lib/cjs/client/addon/preview.js +1 -4
- package/lib/cjs/client/addon/readyForCapture.js +1 -4
- package/lib/cjs/client/addon/register.js +11 -26
- package/lib/cjs/client/addon/utils.js +1 -9
- package/lib/cjs/client/addon/withCreevey.js +55 -134
- package/lib/cjs/client/shared/components/ImagesView/BlendView.js +5 -17
- package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +8 -24
- package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +7 -23
- package/lib/cjs/client/shared/components/ImagesView/SlideView.js +7 -22
- package/lib/cjs/client/shared/components/ImagesView/SwapView.js +5 -17
- package/lib/cjs/client/shared/components/ImagesView/index.js +0 -5
- package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +1 -8
- package/lib/cjs/client/shared/components/PageFooter/Paging.js +2 -19
- package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +21 -17
- package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +5 -24
- package/lib/cjs/client/shared/components/ResultsPage.js +9 -37
- package/lib/cjs/client/shared/creeveyClientApi.js +3 -13
- package/lib/cjs/client/shared/helpers.js +21 -75
- package/lib/cjs/client/shared/viewMode.js +2 -6
- package/lib/cjs/client/web/192.js +1 -0
- package/lib/cjs/client/web/632.js +43 -0
- package/lib/cjs/client/web/794.js +1 -0
- package/lib/cjs/client/web/main.js +78 -1
- package/lib/cjs/client/web/main.js.LICENSE.txt +0 -15
- package/lib/cjs/creevey.js +5 -21
- package/lib/cjs/index.js +0 -15
- package/lib/cjs/server/config.js +13 -33
- package/lib/cjs/server/docker.js +5 -27
- package/lib/cjs/server/index.js +8 -33
- package/lib/cjs/server/logger.js +5 -19
- package/lib/cjs/server/master/api.js +1 -14
- package/lib/cjs/server/master/index.js +15 -46
- package/lib/cjs/server/master/master.js +6 -21
- package/lib/cjs/server/master/pool.js +2 -37
- package/lib/cjs/server/master/runner.js +15 -42
- package/lib/cjs/server/master/server.js +5 -27
- package/lib/cjs/server/messages.js +7 -53
- package/lib/cjs/server/selenium/browser.js +51 -136
- package/lib/cjs/server/selenium/index.js +0 -4
- package/lib/cjs/server/selenium/selenoid.js +7 -33
- package/lib/cjs/server/stories.js +25 -30
- package/lib/cjs/server/storybook/providers/browser.js +5 -18
- package/lib/cjs/server/storybook/providers/hybrid.js +9 -29
- package/lib/cjs/server/testsFiles/parser.js +3 -19
- package/lib/cjs/server/testsFiles/register.js +7 -9
- package/lib/cjs/server/update.js +3 -20
- package/lib/cjs/server/utils.js +9 -41
- package/lib/cjs/server/worker/chai-image.js +1 -27
- package/lib/cjs/server/worker/helpers.js +2 -12
- package/lib/cjs/server/worker/index.js +1 -3
- package/lib/cjs/server/worker/reporter.js +8 -24
- package/lib/cjs/server/worker/worker.js +5 -49
- package/lib/cjs/shared/index.js +22 -36
- package/lib/cjs/shared/serializeRegExp.js +0 -8
- package/lib/cjs/types.js +4 -14
- package/lib/esm/cli.js +1 -1
- package/lib/esm/client/addon/Manager.js +151 -214
- package/lib/esm/client/addon/components/Panel.js +4 -6
- package/lib/esm/client/addon/components/TestSelect.js +11 -17
- package/lib/esm/client/addon/components/Tools.js +15 -14
- package/lib/esm/client/addon/preset.js +2 -8
- package/lib/esm/client/addon/readyForCapture.js +1 -3
- package/lib/esm/client/addon/register.js +6 -8
- package/lib/esm/client/addon/utils.js +0 -5
- package/lib/esm/client/addon/withCreevey.js +54 -116
- package/lib/esm/client/shared/components/ImagesView/BlendView.js +1 -1
- package/lib/esm/client/shared/components/ImagesView/ImagesView.js +6 -8
- package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +3 -4
- package/lib/esm/client/shared/components/ImagesView/SlideView.js +3 -3
- package/lib/esm/client/shared/components/ImagesView/SwapView.js +1 -1
- package/lib/esm/client/shared/components/PageFooter/Paging.js +1 -11
- package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +18 -7
- package/lib/esm/client/shared/components/PageHeader/PageHeader.js +3 -8
- package/lib/esm/client/shared/components/ResultsPage.js +6 -15
- package/lib/esm/client/shared/creeveyClientApi.js +3 -10
- package/lib/esm/client/shared/helpers.js +21 -47
- package/lib/esm/client/web/192.js +1 -0
- package/lib/esm/client/web/632.js +43 -0
- package/lib/esm/client/web/794.js +1 -0
- package/lib/esm/client/web/index.html +19 -0
- package/lib/esm/client/web/main.js +79 -0
- package/lib/esm/client/web/main.js.LICENSE.txt +34 -0
- package/lib/esm/creevey.js +4 -8
- package/lib/esm/index.js +0 -1
- package/lib/esm/server/config.js +7 -14
- package/lib/esm/server/docker.js +4 -12
- package/lib/esm/server/index.js +7 -21
- package/lib/esm/server/logger.js +0 -1
- package/lib/esm/server/master/api.js +0 -9
- package/lib/esm/server/master/index.js +15 -32
- package/lib/esm/server/master/master.js +2 -7
- package/lib/esm/server/master/pool.js +0 -23
- package/lib/esm/server/master/runner.js +14 -27
- package/lib/esm/server/master/server.js +4 -9
- package/lib/esm/server/messages.js +6 -38
- package/lib/esm/server/selenium/browser.js +50 -114
- package/lib/esm/server/selenium/selenoid.js +6 -17
- package/lib/esm/server/stories.js +24 -20
- package/lib/esm/server/storybook/providers/browser.js +4 -8
- package/lib/esm/server/storybook/providers/hybrid.js +6 -14
- package/lib/esm/server/testsFiles/parser.js +0 -6
- package/lib/esm/server/testsFiles/register.js +5 -2
- package/lib/esm/server/update.js +0 -8
- package/lib/esm/server/utils.js +3 -11
- package/lib/esm/server/worker/chai-image.js +0 -21
- package/lib/esm/server/worker/helpers.js +2 -9
- package/lib/esm/server/worker/reporter.js +7 -10
- package/lib/esm/server/worker/worker.js +4 -25
- package/lib/esm/shared/index.js +24 -25
- package/lib/esm/types.js +4 -1
- package/lib/types/client/addon/Manager.d.ts +1 -1
- package/lib/types/client/addon/components/Addon.d.ts +1 -0
- package/lib/types/client/addon/components/Icons.d.ts +1 -0
- package/lib/types/client/addon/components/Panel.d.ts +1 -0
- package/lib/types/client/addon/components/TestSelect.d.ts +1 -0
- package/lib/types/client/addon/components/Tools.d.ts +1 -0
- package/lib/types/client/addon/decorator.d.ts +1 -1
- package/lib/types/client/addon/preset.d.ts +2 -2
- package/lib/types/client/addon/preview.d.ts +1 -1
- package/lib/types/client/addon/withCreevey.d.ts +3 -2
- package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +3 -1
- package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +1 -0
- package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +3 -1
- package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +3 -1
- package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +3 -1
- package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +1 -0
- package/lib/types/client/shared/components/PageFooter/Paging.d.ts +1 -0
- package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +3 -1
- package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +1 -0
- package/lib/types/client/shared/components/ResultsPage.d.ts +3 -1
- package/lib/types/client/web/CreeveyApp.d.ts +1 -0
- package/lib/types/client/web/CreeveyLoader.d.ts +2 -1
- package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +4 -1
- package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +1 -0
- package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +1 -0
- package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +19 -14
- package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +1 -0
- package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +3 -1
- package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +3 -1
- package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +1 -0
- package/lib/types/shared/index.d.ts +1 -1
- package/lib/types/types.d.ts +7 -28
- package/package.json +60 -78
- package/lib/cjs/client/addon/preset.ie11.js +0 -74
- package/lib/cjs/client/addon/preset.sb7.js +0 -19
- package/lib/cjs/client/web/142.js +0 -2
- package/lib/cjs/client/web/142.js.LICENSE.txt +0 -12
- package/lib/cjs/client/web/32.js +0 -1
- package/lib/cjs/client/web/551.js +0 -1
- package/lib/cjs/client/web/566.js +0 -2
- package/lib/cjs/client/web/566.js.LICENSE.txt +0 -31
- package/lib/cjs/client/web/691.js +0 -2
- package/lib/cjs/client/web/691.js.LICENSE.txt +0 -8
- package/lib/cjs/client/web/725.js +0 -1
- package/lib/cjs/server/extract.js +0 -46
- package/lib/cjs/server/loaders/babel/creevey-plugin.js +0 -86
- package/lib/cjs/server/loaders/babel/helpers.js +0 -469
- package/lib/cjs/server/loaders/babel/register.js +0 -124
- package/lib/cjs/server/loaders/hooks/mdx.js +0 -30
- package/lib/cjs/server/loaders/hooks/svelte.js +0 -65
- package/lib/cjs/server/loaders/webpack/compile.js +0 -269
- package/lib/cjs/server/loaders/webpack/creevey-loader.js +0 -172
- package/lib/cjs/server/loaders/webpack/dummy-hmr.js +0 -39
- package/lib/cjs/server/loaders/webpack/mdx-loader.js +0 -72
- package/lib/cjs/server/loaders/webpack/start.js +0 -41
- package/lib/cjs/server/storybook/entry.js +0 -53
- package/lib/cjs/server/storybook/helpers.js +0 -158
- package/lib/cjs/server/storybook/providers/nodejs.js +0 -239
- package/lib/esm/client/addon/preset.ie11.js +0 -59
- package/lib/esm/client/addon/preset.sb7.js +0 -8
- package/lib/esm/server/extract.js +0 -32
- package/lib/esm/server/loaders/babel/creevey-plugin.js +0 -72
- package/lib/esm/server/loaders/babel/helpers.js +0 -452
- package/lib/esm/server/loaders/babel/register.js +0 -103
- package/lib/esm/server/loaders/hooks/mdx.js +0 -15
- package/lib/esm/server/loaders/hooks/svelte.js +0 -49
- package/lib/esm/server/loaders/webpack/compile.js +0 -246
- package/lib/esm/server/loaders/webpack/creevey-loader.js +0 -152
- package/lib/esm/server/loaders/webpack/dummy-hmr.js +0 -32
- package/lib/esm/server/loaders/webpack/mdx-loader.js +0 -58
- package/lib/esm/server/loaders/webpack/start.js +0 -27
- package/lib/esm/server/storybook/entry.js +0 -27
- package/lib/esm/server/storybook/helpers.js +0 -97
- package/lib/esm/server/storybook/providers/nodejs.js +0 -216
- package/lib/types/client/addon/preset.ie11.d.ts +0 -10
- package/lib/types/client/addon/preset.sb7.d.ts +0 -2
- package/lib/types/server/extract.d.ts +0 -2
- package/lib/types/server/loaders/babel/creevey-plugin.d.ts +0 -1
- package/lib/types/server/loaders/babel/helpers.d.ts +0 -19
- package/lib/types/server/loaders/babel/register.d.ts +0 -5
- package/lib/types/server/loaders/hooks/mdx.d.ts +0 -1
- package/lib/types/server/loaders/hooks/svelte.d.ts +0 -1
- package/lib/types/server/loaders/webpack/compile.d.ts +0 -2
- package/lib/types/server/loaders/webpack/creevey-loader.d.ts +0 -4
- package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +0 -10
- package/lib/types/server/loaders/webpack/mdx-loader.d.ts +0 -6
- package/lib/types/server/loaders/webpack/start.d.ts +0 -1
- package/lib/types/server/storybook/entry.d.ts +0 -17
- package/lib/types/server/storybook/helpers.d.ts +0 -24
- package/lib/types/server/storybook/providers/nodejs.d.ts +0 -9
- package/preset/ie11.js +0 -5
- package/preset/index.js +0 -9
- package/preset/sb7.js +0 -5
- package/types/mdx.d.ts +0 -7
@@ -5,38 +5,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.startSelenoidContainer = startSelenoidContainer;
|
7
7
|
exports.startSelenoidStandalone = startSelenoidStandalone;
|
8
|
-
|
9
8
|
var _path = _interopRequireDefault(require("path"));
|
10
|
-
|
11
9
|
var _util = require("util");
|
12
|
-
|
13
10
|
var _fs = require("fs");
|
14
|
-
|
15
11
|
var _utils = require("../utils");
|
16
|
-
|
17
12
|
var _docker = require("../docker");
|
18
|
-
|
19
13
|
var _core = require("@octokit/core");
|
20
|
-
|
21
14
|
var _messages = require("../messages");
|
22
|
-
|
23
15
|
var _cluster = _interopRequireDefault(require("cluster"));
|
24
|
-
|
25
16
|
var _shelljs = require("shelljs");
|
26
|
-
|
27
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
28
|
-
|
17
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
29
18
|
const mkdirAsync = (0, _util.promisify)(_fs.mkdir);
|
30
19
|
const writeFileAsync = (0, _util.promisify)(_fs.writeFile);
|
31
20
|
const copyFileAsync = (0, _util.promisify)(_fs.copyFile);
|
32
|
-
|
33
21
|
async function createSelenoidConfig(browsers, {
|
34
22
|
useDocker
|
35
23
|
}) {
|
36
24
|
const selenoidConfig = {};
|
37
|
-
|
38
25
|
const selenoidConfigDir = _path.default.join((0, _utils.getCreeveyCache)(), 'selenoid');
|
39
|
-
|
40
26
|
browsers.forEach(({
|
41
27
|
browserName,
|
42
28
|
version = 'latest',
|
@@ -60,7 +46,6 @@ async function createSelenoidConfig(browsers, {
|
|
60
46
|
await writeFileAsync(_path.default.join(selenoidConfigDir, 'browsers.json'), JSON.stringify(selenoidConfig));
|
61
47
|
return selenoidConfigDir;
|
62
48
|
}
|
63
|
-
|
64
49
|
async function downloadSelenoidBinary(destination) {
|
65
50
|
const platformNameMapping = {
|
66
51
|
darwin: 'selenoid_darwin_amd64',
|
@@ -82,14 +67,11 @@ async function downloadSelenoidBinary(destination) {
|
|
82
67
|
name
|
83
68
|
}) => platformNameMapping[process.platform] == name) ?? {};
|
84
69
|
if ((0, _fs.existsSync)(destination) && (0, _fs.lstatSync)(destination).size == binarySize) return;
|
85
|
-
|
86
70
|
if (!downloadUrl) {
|
87
71
|
throw new Error(`Couldn't get download url for selenoid binary. Please download it manually from "https://github.com/aerokube/selenoid/releases/latest" and define "selenoidPath" option in the Creevey config`);
|
88
72
|
}
|
89
|
-
|
90
73
|
return (0, _utils.downloadBinary)(downloadUrl, destination);
|
91
74
|
}
|
92
|
-
|
93
75
|
async function startSelenoidStandalone(config, debug) {
|
94
76
|
config.gridUrl = 'http://localhost:4444/wd/hub';
|
95
77
|
if (_cluster.default.isWorker) return;
|
@@ -97,37 +79,30 @@ async function startSelenoidStandalone(config, debug) {
|
|
97
79
|
const selenoidConfigDir = await createSelenoidConfig(browsers, {
|
98
80
|
useDocker: false
|
99
81
|
});
|
100
|
-
|
101
82
|
const binaryPath = _path.default.join(selenoidConfigDir, process.platform == 'win32' ? 'selenoid.exe' : 'selenoid');
|
102
|
-
|
103
83
|
if (config.selenoidPath) {
|
104
84
|
await copyFileAsync(_path.default.resolve(config.selenoidPath), binaryPath);
|
105
85
|
} else {
|
106
86
|
await downloadSelenoidBinary(binaryPath);
|
107
|
-
}
|
108
|
-
|
87
|
+
}
|
109
88
|
|
89
|
+
// TODO Download browser webdrivers
|
110
90
|
try {
|
111
91
|
if (process.platform != 'win32') (0, _shelljs.chmod)('+x', binaryPath);
|
112
92
|
} catch (_) {
|
113
93
|
/* noop */
|
114
94
|
}
|
115
|
-
|
116
95
|
const selenoidProcess = (0, _shelljs.exec)(`${binaryPath} -conf ./browsers.json -disable-docker`, {
|
117
96
|
async: true,
|
118
97
|
cwd: selenoidConfigDir
|
119
98
|
});
|
120
|
-
|
121
99
|
if (debug) {
|
122
100
|
var _selenoidProcess$stdo, _selenoidProcess$stde;
|
123
|
-
|
124
|
-
(_selenoidProcess$
|
125
|
-
(_selenoidProcess$stde = selenoidProcess.stderr) === null || _selenoidProcess$stde === void 0 ? void 0 : _selenoidProcess$stde.pipe(process.stderr);
|
101
|
+
(_selenoidProcess$stdo = selenoidProcess.stdout) === null || _selenoidProcess$stdo === void 0 || _selenoidProcess$stdo.pipe(process.stdout);
|
102
|
+
(_selenoidProcess$stde = selenoidProcess.stderr) === null || _selenoidProcess$stde === void 0 || _selenoidProcess$stde.pipe(process.stderr);
|
126
103
|
}
|
127
|
-
|
128
104
|
(0, _messages.subscribeOn)('shutdown', () => selenoidProcess.kill());
|
129
105
|
}
|
130
|
-
|
131
106
|
async function startSelenoidContainer(config, debug) {
|
132
107
|
const browsers = Object.values(config.browsers).filter(browser => !browser.gridUrl);
|
133
108
|
const images = [];
|
@@ -146,13 +121,12 @@ async function startSelenoidContainer(config, debug) {
|
|
146
121
|
auth: config.dockerAuth,
|
147
122
|
platform: config.dockerImagePlatform
|
148
123
|
};
|
149
|
-
|
150
124
|
if (config.pullImages) {
|
151
125
|
await (0, _docker.pullImages)([selenoidImage], pullOptions);
|
152
126
|
await (0, _docker.pullImages)(images, pullOptions);
|
153
|
-
}
|
154
|
-
|
127
|
+
}
|
155
128
|
|
129
|
+
// TODO Allow pass custom options
|
156
130
|
const selenoidOptions = {
|
157
131
|
ExposedPorts: {
|
158
132
|
'4444/tcp': {}
|
@@ -6,33 +6,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
exports.loadTestsFromStories = loadTestsFromStories;
|
7
7
|
exports.saveStoriesJson = saveStoriesJson;
|
8
8
|
exports.saveTestsJson = saveTestsJson;
|
9
|
-
|
10
9
|
var _path = _interopRequireDefault(require("path"));
|
11
|
-
|
12
10
|
var _fs = require("fs");
|
13
|
-
|
14
11
|
var _crypto = require("crypto");
|
15
|
-
|
16
12
|
var _lodash = require("lodash");
|
17
|
-
|
18
13
|
var _types = require("../types");
|
19
|
-
|
20
14
|
var _utils = require("./utils");
|
21
|
-
|
22
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
23
|
-
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
24
16
|
function storyTestFabric(delay, testFn) {
|
25
17
|
return async function storyTest() {
|
26
18
|
delay ? await new Promise(resolve => setTimeout(resolve, delay)) : void 0;
|
27
19
|
await (testFn ? testFn.call(this) : this.screenshots.length > 0 ? this.expect(this.screenshots.reduce((screenshots, {
|
28
20
|
imageName,
|
29
21
|
screenshot
|
30
|
-
}, index) => ({
|
22
|
+
}, index) => ({
|
23
|
+
...screenshots,
|
31
24
|
[imageName ?? `screenshot_${index}`]: screenshot
|
32
25
|
}), {})).to.matchImages() : this.expect(await this.takeScreenshot()).to.matchImage());
|
33
26
|
};
|
34
27
|
}
|
35
|
-
|
36
28
|
function createCreeveyTest(browser, storyMeta, skipOptions, testName) {
|
37
29
|
const {
|
38
30
|
kind,
|
@@ -54,7 +46,6 @@ function createCreeveyTest(browser, storyMeta, skipOptions, testName) {
|
|
54
46
|
storyId
|
55
47
|
};
|
56
48
|
}
|
57
|
-
|
58
49
|
function convertStories(browserName, stories) {
|
59
50
|
const tests = {};
|
60
51
|
(Array.isArray(stories) ? stories : Object.values(stories)).forEach(storyMeta => {
|
@@ -65,24 +56,27 @@ function convertStories(browserName, stories) {
|
|
65
56
|
tests: storyTests,
|
66
57
|
skip
|
67
58
|
} = storyMeta.parameters.creevey ?? {};
|
68
|
-
const delay = typeof delayParam == 'number' ? delayParam : delayParam !== null && delayParam !== void 0 && delayParam.for.includes(browserName) ? delayParam.ms : 0;
|
59
|
+
const delay = typeof delayParam == 'number' ? delayParam : delayParam !== null && delayParam !== void 0 && delayParam.for.includes(browserName) ? delayParam.ms : 0;
|
60
|
+
|
61
|
+
// typeof tests === "undefined" => rootSuite -> kindSuite -> storyTest -> [browsers.png]
|
69
62
|
// typeof tests === "function" => rootSuite -> kindSuite -> storyTest -> browser -> [images.png]
|
70
63
|
// typeof tests === "object" => rootSuite -> kindSuite -> storySuite -> test -> [browsers.png]
|
71
64
|
// typeof tests === "object" => rootSuite -> kindSuite -> storySuite -> test -> browser -> [images.png]
|
72
65
|
|
73
66
|
if (!storyTests) {
|
74
67
|
const test = createCreeveyTest(browserName, storyMeta, skip);
|
75
|
-
tests[test.id] = {
|
68
|
+
tests[test.id] = {
|
69
|
+
...test,
|
76
70
|
storyId: storyMeta.id,
|
77
71
|
story: storyMeta,
|
78
72
|
fn: storyTestFabric(delay)
|
79
73
|
};
|
80
74
|
return;
|
81
75
|
}
|
82
|
-
|
83
76
|
Object.entries(storyTests).forEach(([testName, testFn]) => {
|
84
77
|
const test = createCreeveyTest(browserName, storyMeta, skip, testName);
|
85
|
-
tests[test.id] = {
|
78
|
+
tests[test.id] = {
|
79
|
+
...test,
|
86
80
|
storyId: storyMeta.id,
|
87
81
|
story: storyMeta,
|
88
82
|
fn: storyTestFabric(delay, testFn)
|
@@ -91,7 +85,6 @@ function convertStories(browserName, stories) {
|
|
91
85
|
});
|
92
86
|
return tests;
|
93
87
|
}
|
94
|
-
|
95
88
|
async function loadTestsFromStories(browsers, provider, update) {
|
96
89
|
const testIdsByFiles = new Map();
|
97
90
|
const stories = await provider(storiesByFiles => {
|
@@ -100,7 +93,6 @@ async function loadTestsFromStories(browsers, provider, update) {
|
|
100
93
|
browsers.forEach(browser => {
|
101
94
|
Array.from(storiesByFiles.entries()).forEach(([filename, stories]) => {
|
102
95
|
var _testIdsByFiles$get;
|
103
|
-
|
104
96
|
Object.assign(tests, convertStories(browser, stories));
|
105
97
|
const changed = Object.keys(tests);
|
106
98
|
const removed = ((_testIdsByFiles$get = testIdsByFiles.get(filename)) === null || _testIdsByFiles$get === void 0 ? void 0 : _testIdsByFiles$get.filter(testId => !tests[testId])) ?? [];
|
@@ -109,7 +101,7 @@ async function loadTestsFromStories(browsers, provider, update) {
|
|
109
101
|
removed.forEach(testId => testsDiff[testId] = undefined);
|
110
102
|
});
|
111
103
|
});
|
112
|
-
update === null || update === void 0
|
104
|
+
update === null || update === void 0 || update(testsDiff);
|
113
105
|
});
|
114
106
|
const tests = browsers.reduce((tests, browser) => Object.assign(tests, convertStories(browser, stories)), {});
|
115
107
|
Object.values(tests).filter(_types.isDefined).forEach(({
|
@@ -119,23 +111,26 @@ async function loadTestsFromStories(browsers, provider, update) {
|
|
119
111
|
fileName
|
120
112
|
}
|
121
113
|
}
|
122
|
-
}) =>
|
114
|
+
}) =>
|
115
|
+
// TODO Don't use filename as a key, due possible collisions if two require.context with same structure of modules are defined
|
123
116
|
testIdsByFiles.set(fileName, [...(testIdsByFiles.get(fileName) ?? []), id]));
|
124
117
|
return tests;
|
125
118
|
}
|
126
|
-
|
127
119
|
function saveStoriesJson(storiesData, extract) {
|
128
|
-
const outputDir = typeof extract == 'boolean' ? 'storybook-static' : extract;
|
120
|
+
const outputDir = typeof extract == 'boolean' ? 'storybook-static' : extract;
|
129
121
|
|
122
|
+
// NOTE Copy-pasted from Storybook's `getStoriesJsonData` method
|
130
123
|
const allowed = ['fileName', 'docsOnly', 'framework', '__id', '__isArgsStory'];
|
131
|
-
storiesData.globalParameters = (0, _lodash.pick)(storiesData.globalParameters, allowed);
|
132
|
-
|
133
|
-
storiesData.kindParameters = (0, _lodash.mapValues)(storiesData.kindParameters, v => (0, _lodash.pick)(v, allowed));
|
134
|
-
|
135
|
-
storiesData.stories = (0, _lodash.mapValues)(storiesData.stories, v => ({
|
124
|
+
storiesData.globalParameters = (0, _lodash.pick)(storiesData.globalParameters, allowed);
|
125
|
+
// @ts-expect-error ignore error
|
126
|
+
storiesData.kindParameters = (0, _lodash.mapValues)(storiesData.kindParameters, v => (0, _lodash.pick)(v, allowed));
|
127
|
+
// @ts-expect-error ignore error
|
128
|
+
storiesData.stories = (0, _lodash.mapValues)(storiesData.stories, v => ({
|
129
|
+
...(0, _lodash.pick)(v, ['id', 'name', 'kind', 'story']),
|
136
130
|
parameters: (0, _lodash.pick)(v.parameters, allowed)
|
137
|
-
}));
|
131
|
+
}));
|
138
132
|
|
133
|
+
// TODO Fix args stories
|
139
134
|
(0, _utils.removeProps)(storiesData ?? {}, ['stories', () => true, 'parameters', '__isArgsStory']);
|
140
135
|
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);
|
141
136
|
(0, _fs.mkdirSync)(outputDir, {
|
@@ -143,11 +138,11 @@ function saveStoriesJson(storiesData, extract) {
|
|
143
138
|
});
|
144
139
|
(0, _fs.writeFileSync)(_path.default.join(outputDir, 'stories.json'), JSON.stringify(storiesData, null, 2));
|
145
140
|
}
|
146
|
-
|
147
141
|
function saveTestsJson(tests, dstPath = process.cwd()) {
|
148
142
|
(0, _fs.mkdirSync)(dstPath, {
|
149
143
|
recursive: true
|
150
144
|
});
|
151
|
-
(0, _fs.writeFileSync)(_path.default.join(dstPath, 'tests.json'),
|
145
|
+
(0, _fs.writeFileSync)(_path.default.join(dstPath, 'tests.json'),
|
146
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
152
147
|
JSON.stringify(tests, (_, value) => (0, _types.isFunction)(value) ? value.toString() : value, 2));
|
153
148
|
}
|
@@ -4,26 +4,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.loadStories = void 0;
|
7
|
-
|
8
7
|
var _cluster = _interopRequireDefault(require("cluster"));
|
9
|
-
|
10
8
|
var _selenium = require("../../selenium");
|
11
|
-
|
12
9
|
var _messages = require("../../messages");
|
13
|
-
|
14
10
|
var _types = require("../../../types");
|
15
|
-
|
16
11
|
var _logger = require("../../logger");
|
17
|
-
|
18
12
|
var _shared = require("../../../shared");
|
19
|
-
|
20
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
|
-
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
22
14
|
const loadStories = async (_config, _options, storiesListener) => {
|
23
15
|
if (_cluster.default.isPrimary) {
|
24
16
|
return new Promise(resolve => {
|
25
17
|
const worker = Object.values(_cluster.default.workers ?? {}).filter(_types.isDefined).find(worker => worker.isConnected());
|
26
|
-
|
27
18
|
if (worker) {
|
28
19
|
const unsubscribe = (0, _messages.subscribeOnWorker)(worker, 'stories', message => {
|
29
20
|
if (message.type == 'set') {
|
@@ -40,7 +31,6 @@ const loadStories = async (_config, _options, storiesListener) => {
|
|
40
31
|
type: 'get'
|
41
32
|
});
|
42
33
|
}
|
43
|
-
|
44
34
|
(0, _messages.subscribeOn)('stories', message => {
|
45
35
|
// TODO updates only one browser :(
|
46
36
|
if (message.type == 'update') storiesListener(new Map(message.payload));
|
@@ -60,17 +50,14 @@ const loadStories = async (_config, _options, storiesListener) => {
|
|
60
50
|
const stories = (0, _shared.deserializeRawStories)(await (0, _selenium.loadStoriesFromBrowser)());
|
61
51
|
const storiesWithOldTests = [];
|
62
52
|
Object.values(stories).forEach(story => {
|
63
|
-
var _parameters
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
(_parameters2 = story.parameters) === null || _parameters2 === void 0 ? true : (_parameters2$creevey = _parameters2.creevey) === null || _parameters2$creevey === void 0 ? true : delete _parameters2$creevey.tests;
|
53
|
+
var _parameters;
|
54
|
+
if ((_parameters = story.parameters) !== null && _parameters !== void 0 && (_parameters = _parameters.creevey) !== null && _parameters !== void 0 && _parameters.tests) {
|
55
|
+
var _parameters2;
|
56
|
+
(_parameters2 = story.parameters) === null || _parameters2 === void 0 || (_parameters2 = _parameters2.creevey) === null || _parameters2 === void 0 || delete _parameters2.tests;
|
69
57
|
storiesWithOldTests.push(`${story.kind}/${story.name}`);
|
70
58
|
}
|
71
59
|
});
|
72
60
|
return stories;
|
73
61
|
}
|
74
62
|
};
|
75
|
-
|
76
63
|
exports.loadStories = loadStories;
|
@@ -4,79 +4,59 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.loadStories = void 0;
|
7
|
-
|
8
7
|
var _chokidar = _interopRequireDefault(require("chokidar"));
|
9
|
-
|
10
8
|
var _browser = require("./browser");
|
11
|
-
|
12
9
|
var _logger = require("../../logger");
|
13
|
-
|
14
10
|
var _parser = _interopRequireDefault(require("../../testsFiles/parser"));
|
15
|
-
|
16
11
|
var _utils = require("../../../server/utils");
|
17
|
-
|
18
12
|
var _shared = require("../../../shared");
|
19
|
-
|
20
|
-
function
|
21
|
-
|
22
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
23
|
-
|
24
|
-
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; }
|
25
|
-
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
14
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
15
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
26
16
|
const loadStories = async (_config, _options, storiesListener) => {
|
27
17
|
let creeveyParamsByStoryId = {};
|
28
|
-
|
29
18
|
const mergeParamsFromTestsToStory = (story, creeveyParams) => {
|
30
19
|
if (story.parameters) {
|
31
20
|
story.parameters.creevey = (0, _shared.combineParameters)(story.parameters.creevey || {}, creeveyParams);
|
32
21
|
}
|
33
22
|
};
|
34
|
-
|
35
23
|
const stories = await (0, _browser.loadStories)(_config, {}, updatedStoriesByFiles => {
|
36
24
|
Array.from(updatedStoriesByFiles.entries()).forEach(([, storiesArray]) => {
|
37
25
|
storiesArray.forEach(story => {
|
38
26
|
const creeveyParams = creeveyParamsByStoryId[story.id];
|
39
|
-
|
40
27
|
if (creeveyParams) {
|
41
28
|
mergeParamsFromTestsToStory(story, creeveyParams);
|
42
29
|
}
|
43
30
|
});
|
44
31
|
});
|
45
32
|
storiesListener(updatedStoriesByFiles);
|
46
|
-
});
|
33
|
+
});
|
47
34
|
|
48
|
-
|
49
|
-
/*, (data) => console.log(data) */
|
50
|
-
);
|
35
|
+
// TODO fix test files hot reloading
|
36
|
+
creeveyParamsByStoryId = await parseParams(_config /*, (data) => console.log(data) */);
|
51
37
|
Object.entries(stories).forEach(([storyId, story]) => {
|
52
38
|
mergeParamsFromTestsToStory(story, creeveyParamsByStoryId[storyId]);
|
53
39
|
});
|
54
40
|
return stories;
|
55
41
|
};
|
56
|
-
|
57
42
|
exports.loadStories = loadStories;
|
58
|
-
|
59
43
|
async function parseParams(config, listener) {
|
60
44
|
if (!config.testsDir) {
|
61
45
|
return Promise.resolve({});
|
62
46
|
}
|
63
|
-
|
64
47
|
const testFiles = (0, _utils.readDirRecursive)(config.testsDir).filter(file => {
|
65
48
|
var _config$testsRegex;
|
66
|
-
|
67
49
|
return (_config$testsRegex = config.testsRegex) === null || _config$testsRegex === void 0 ? void 0 : _config$testsRegex.test(file);
|
68
50
|
});
|
69
51
|
await (await Promise.resolve().then(() => _interopRequireWildcard(require('../../testsFiles/register')))).default(config);
|
70
|
-
|
71
52
|
if (listener) {
|
72
53
|
_chokidar.default.watch(testFiles).on('change', filePath => {
|
73
|
-
_logger.logger.debug(`changed: ${filePath}`);
|
74
|
-
// see https://github.com/nodejs/modules/issues/307
|
75
|
-
|
54
|
+
_logger.logger.debug(`changed: ${filePath}`);
|
76
55
|
|
56
|
+
// doesn't work, always returns {} due modules caching
|
57
|
+
// see https://github.com/nodejs/modules/issues/307
|
77
58
|
void (0, _parser.default)(testFiles).then(data => listener(data));
|
78
59
|
});
|
79
60
|
}
|
80
|
-
|
81
61
|
return (0, _parser.default)(testFiles);
|
82
62
|
}
|
@@ -5,43 +5,32 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.default = parse;
|
7
7
|
exports.test = exports.story = exports.kind = void 0;
|
8
|
-
|
9
8
|
var _csf = require("@storybook/csf");
|
10
|
-
|
11
|
-
function
|
12
|
-
|
13
|
-
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; }
|
14
|
-
|
9
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
10
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
15
11
|
async function parse(files) {
|
16
12
|
result = {};
|
17
|
-
await Promise.all(files.map(async file => Promise
|
13
|
+
await Promise.all(files.map(async file => (specifier => new Promise(r => r(`${specifier}`)).then(s => _interopRequireWildcard(require(s))))(file)));
|
18
14
|
return result;
|
19
15
|
}
|
20
|
-
|
21
16
|
let result = {};
|
22
17
|
let kindTitle = '';
|
23
18
|
let storyTitle = '';
|
24
19
|
let storyParams = null;
|
25
|
-
|
26
20
|
const setStoryParameters = params => {
|
27
21
|
storyParams = params;
|
28
22
|
};
|
29
|
-
|
30
23
|
const getStoryId = (kindTitle, storyTitle) => {
|
31
24
|
return (0, _csf.toId)(kindTitle, (0, _csf.storyNameFromExport)(storyTitle));
|
32
25
|
};
|
33
|
-
|
34
26
|
const kind = (title, kindFn) => {
|
35
27
|
kindTitle = title;
|
36
28
|
kindFn();
|
37
29
|
kindTitle = '';
|
38
30
|
};
|
39
|
-
|
40
31
|
exports.kind = kind;
|
41
|
-
|
42
32
|
const story = (title, storyFn) => {
|
43
33
|
var _result$storyId;
|
44
|
-
|
45
34
|
storyTitle = title;
|
46
35
|
storyParams = null;
|
47
36
|
storyFn({
|
@@ -54,19 +43,14 @@ const story = (title, storyFn) => {
|
|
54
43
|
storyTitle = '';
|
55
44
|
storyParams = null;
|
56
45
|
};
|
57
|
-
|
58
46
|
exports.story = story;
|
59
|
-
|
60
47
|
const test = (title, testFn) => {
|
61
48
|
const storyId = getStoryId(kindTitle, storyTitle);
|
62
|
-
|
63
49
|
if (!result[storyId]) {
|
64
50
|
result[storyId] = {};
|
65
51
|
}
|
66
|
-
|
67
52
|
result[storyId].tests = Object.assign({}, result[storyId].tests, {
|
68
53
|
[title]: testFn
|
69
54
|
});
|
70
55
|
};
|
71
|
-
|
72
56
|
exports.test = test;
|
@@ -4,15 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.default = register;
|
7
|
-
|
8
7
|
var _pirates = require("pirates");
|
9
|
-
|
10
8
|
var _getTsconfig = require("get-tsconfig");
|
11
|
-
|
12
|
-
function
|
13
|
-
|
14
|
-
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; }
|
15
|
-
|
9
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
10
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
16
11
|
async function register(config) {
|
17
12
|
(0, _pirates.addHook)(() => '', {
|
18
13
|
exts: ['.jpg', '.jpeg', '.png', '.gif', '.eot', '.otf', '.svg', '.ttf', '.woff', '.woff2', '.css', '.less', '.scss', '.styl'],
|
@@ -20,8 +15,9 @@ async function register(config) {
|
|
20
15
|
});
|
21
16
|
const {
|
22
17
|
path: tsConfigPath
|
23
|
-
} = (0, _getTsconfig.getTsconfig)(config.tsConfig) || {};
|
18
|
+
} = (0, _getTsconfig.getTsconfig)(config.tsConfig) || {};
|
24
19
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
|
25
21
|
(await Promise.resolve().then(() => _interopRequireWildcard(require('@babel/register')))).default(config.babelOptions({
|
26
22
|
babelrc: false,
|
27
23
|
rootMode: 'upward-optional',
|
@@ -40,5 +36,7 @@ async function register(config) {
|
|
40
36
|
plugins: [['@babel/plugin-transform-runtime'], ...(tsConfigPath ? [['babel-plugin-tsconfig-paths', {
|
41
37
|
tsconfig: tsConfigPath
|
42
38
|
}]] : [])]
|
43
|
-
}));
|
39
|
+
}));
|
40
|
+
|
41
|
+
// (await import('ts-node')).register({ project: tsConfigPath, transpileOnly: true });
|
44
42
|
}
|
package/lib/cjs/server/update.js
CHANGED
@@ -4,21 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.default = update;
|
7
|
-
|
8
7
|
var _path = _interopRequireDefault(require("path"));
|
9
|
-
|
10
8
|
var _fs = _interopRequireWildcard(require("fs"));
|
11
|
-
|
12
9
|
var _micromatch = _interopRequireDefault(require("micromatch"));
|
13
|
-
|
14
10
|
var _types = require("../types");
|
15
|
-
|
16
|
-
function
|
17
|
-
|
18
|
-
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; }
|
19
|
-
|
20
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
|
-
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
22
14
|
function tryToLoadTestsData(filename) {
|
23
15
|
try {
|
24
16
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
@@ -27,28 +19,22 @@ function tryToLoadTestsData(filename) {
|
|
27
19
|
/* noop */
|
28
20
|
}
|
29
21
|
}
|
30
|
-
|
31
22
|
const actualRegex = /^(.*)-actual-(\d+)\.png$/i;
|
32
|
-
|
33
23
|
function approve(dirents, srcPath, dstPath, testPaths, isMatch) {
|
34
24
|
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) => {
|
35
25
|
(0, _fs.mkdirSync)(dstPath, {
|
36
26
|
recursive: true
|
37
27
|
});
|
38
|
-
|
39
28
|
_fs.default.copyFileSync(_path.default.join(srcPath, `${imageName}-actual-${retry}.png`), _path.default.join(dstPath, `${imageName}.png`));
|
40
29
|
});
|
41
30
|
}
|
42
|
-
|
43
31
|
function traverse(srcPath, dstPath, testPaths, isMatch) {
|
44
32
|
const dirents = _fs.default.readdirSync(srcPath, {
|
45
33
|
withFileTypes: true
|
46
34
|
});
|
47
|
-
|
48
35
|
approve(dirents, srcPath, dstPath, testPaths, isMatch);
|
49
36
|
dirents.filter(dirent => dirent.isDirectory()).map(dirent => [dirent.name, testPaths === null || testPaths === void 0 ? void 0 : testPaths.map(([token, ...restPath]) => token == dirent.name ? restPath : null).filter(_types.isDefined)]).filter(([, paths]) => !paths || paths.length > 0).forEach(([dirname, paths]) => traverse(_path.default.join(srcPath, dirname), _path.default.join(dstPath, dirname), paths, isMatch));
|
50
37
|
}
|
51
|
-
|
52
38
|
function update(config, grepPattern) {
|
53
39
|
const {
|
54
40
|
reportDir,
|
@@ -60,13 +46,11 @@ function update(config, grepPattern) {
|
|
60
46
|
const testsMeta = tryToLoadTestsData(`${reportDir}/tests.json`);
|
61
47
|
const testsReport = tryToLoadTestsData(`${reportDir}/data`);
|
62
48
|
let testPaths = null;
|
63
|
-
|
64
49
|
if (testsMeta && testsReport) {
|
65
50
|
testPaths = Object.values(testsMeta).filter(_types.isDefined).filter(({
|
66
51
|
id
|
67
52
|
}) => {
|
68
53
|
var _testsReport$id;
|
69
|
-
|
70
54
|
return ((_testsReport$id = testsReport[id]) === null || _testsReport$id === void 0 ? void 0 : _testsReport$id.status) == 'failed';
|
71
55
|
}).map(({
|
72
56
|
storyPath,
|
@@ -74,6 +58,5 @@ function update(config, grepPattern) {
|
|
74
58
|
browser
|
75
59
|
}) => [...storyPath, ...(testName ? [testName] : []), browser]);
|
76
60
|
}
|
77
|
-
|
78
61
|
traverse(reportDir, screenDir, testPaths, value => isMatch(_path.default.relative(reportDir, value)));
|
79
62
|
}
|