creevey 0.9.0-beta.2 → 0.9.0-beta.4
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 +35 -0
- package/README.md +9 -1
- package/addon/README.md +3 -0
- package/addon/package.json +4 -0
- package/docs/config.md +29 -26
- package/jest.config.js +6 -0
- package/lib/cjs/client/addon/Manager.js +122 -270
- 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 +14 -33
- package/lib/cjs/client/addon/register.js +46 -70
- package/lib/cjs/client/addon/utils.js +6 -2
- package/lib/cjs/client/addon/withCreevey.js +161 -342
- package/lib/cjs/client/shared/components/ImagesView/BlendView.js +23 -21
- package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +22 -18
- package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +42 -64
- package/lib/cjs/client/shared/components/ImagesView/SlideView.js +35 -48
- package/lib/cjs/client/shared/components/ImagesView/SwapView.js +24 -43
- 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 +139 -210
- 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 +4 -4
- package/lib/cjs/server/config.js +2 -4
- package/lib/cjs/server/docker.js +3 -7
- package/lib/cjs/server/extract.js +1 -5
- 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 +2 -4
- package/lib/cjs/server/loaders/webpack/compile.js +34 -51
- package/lib/cjs/server/loaders/webpack/creevey-loader.js +20 -22
- package/lib/cjs/server/loaders/webpack/dummy-hmr.js +2 -7
- package/lib/cjs/server/loaders/webpack/mdx-loader.js +2 -2
- package/lib/cjs/server/loaders/webpack/start.js +1 -1
- package/lib/cjs/server/logger.js +2 -1
- package/lib/cjs/server/master/index.js +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 +5 -3
- package/lib/cjs/server/messages.js +8 -10
- package/lib/cjs/server/selenium/browser.js +22 -46
- package/lib/cjs/server/selenium/selenoid.js +5 -7
- package/lib/cjs/server/stories.js +16 -33
- package/lib/cjs/server/storybook/entry.js +7 -22
- package/lib/cjs/server/storybook/helpers.js +20 -27
- package/lib/cjs/server/storybook/providers/browser.js +5 -9
- package/lib/cjs/server/storybook/providers/nodejs.js +7 -9
- package/lib/cjs/server/update.js +1 -5
- package/lib/cjs/server/utils.js +27 -36
- package/lib/cjs/server/worker/reporter.js +8 -20
- package/lib/cjs/server/worker/worker.js +6 -16
- package/lib/cjs/shared/index.js +101 -0
- package/lib/cjs/shared/serializeRegExp.js +42 -0
- package/lib/cjs/types.js +6 -6
- package/lib/esm/client/addon/Manager.js +122 -270
- 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 -27
- package/lib/esm/client/addon/register.js +42 -66
- package/lib/esm/client/addon/utils.js +3 -2
- package/lib/esm/client/addon/withCreevey.js +155 -341
- package/lib/esm/client/shared/components/ImagesView/BlendView.js +21 -17
- package/lib/esm/client/shared/components/ImagesView/ImagesView.js +21 -17
- package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +40 -60
- package/lib/esm/client/shared/components/ImagesView/SlideView.js +33 -44
- package/lib/esm/client/shared/components/ImagesView/SwapView.js +22 -39
- 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 +123 -194
- package/lib/esm/client/shared/viewMode.js +4 -4
- package/lib/esm/creevey.js +3 -5
- package/lib/esm/index.js +1 -3
- package/lib/esm/server/config.js +2 -4
- package/lib/esm/server/docker.js +2 -2
- package/lib/esm/server/extract.js +1 -3
- 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 +3 -5
- package/lib/esm/server/loaders/webpack/compile.js +35 -52
- package/lib/esm/server/loaders/webpack/creevey-loader.js +9 -10
- package/lib/esm/server/loaders/webpack/dummy-hmr.js +2 -6
- package/lib/esm/server/loaders/webpack/mdx-loader.js +2 -2
- package/lib/esm/server/loaders/webpack/start.js +1 -1
- package/lib/esm/server/master/index.js +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 +5 -3
- package/lib/esm/server/messages.js +3 -5
- package/lib/esm/server/selenium/browser.js +19 -43
- package/lib/esm/server/selenium/selenoid.js +4 -6
- package/lib/esm/server/stories.js +16 -32
- package/lib/esm/server/storybook/entry.js +5 -22
- package/lib/esm/server/storybook/helpers.js +11 -20
- package/lib/esm/server/storybook/providers/browser.js +4 -5
- package/lib/esm/server/storybook/providers/nodejs.js +7 -8
- package/lib/esm/server/update.js +1 -5
- package/lib/esm/server/utils.js +18 -31
- package/lib/esm/server/worker/reporter.js +8 -20
- package/lib/esm/server/worker/worker.js +6 -16
- package/lib/esm/shared/index.js +78 -0
- package/lib/esm/shared/serializeRegExp.js +24 -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/preset.ie11.d.ts +10 -0
- 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 +3 -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 +17 -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 +24 -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 +489 -489
- package/package.json +114 -102
- package/preset/ie11.js +5 -0
- package/{preset.js → preset/index.js} +2 -2
- package/types/mdx.d.ts +3 -2
- 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
@@ -4,19 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.default = void 0;
|
7
|
-
|
8
|
-
var _global$__CREEVEY_HMR;
|
9
|
-
|
10
|
-
global.__CREEVEY_HMR_DATA__ = (_global$__CREEVEY_HMR = global.__CREEVEY_HMR_DATA__) !== null && _global$__CREEVEY_HMR !== void 0 ? _global$__CREEVEY_HMR : {};
|
7
|
+
global.__CREEVEY_HMR_DATA__ = global.__CREEVEY_HMR_DATA__ ?? {};
|
11
8
|
Object.entries(__webpack_require__.m).forEach(([key, moduleFn]) => {
|
12
9
|
__webpack_require__.m[key] = new Proxy(moduleFn, {
|
13
10
|
apply(target, thisArg, args) {
|
14
|
-
var _global$__CREEVEY_HMR2;
|
15
|
-
|
16
11
|
const [module] = args;
|
17
12
|
const {
|
18
13
|
data
|
19
|
-
} = global.__CREEVEY_HMR_DATA__[module.i] =
|
14
|
+
} = global.__CREEVEY_HMR_DATA__[module.i] = global.__CREEVEY_HMR_DATA__[module.i] ?? {
|
20
15
|
data: {}
|
21
16
|
};
|
22
17
|
Object.assign(module, {
|
@@ -3,8 +3,8 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.webpack = webpack;
|
7
6
|
exports.mdxOptions = exports.mdxLoaders = void 0;
|
7
|
+
exports.webpack = webpack;
|
8
8
|
|
9
9
|
var _helpers = require("../../storybook/helpers");
|
10
10
|
|
@@ -58,7 +58,7 @@ function webpack(webpackConfig = {}, options = {}) {
|
|
58
58
|
configureJSX = true
|
59
59
|
} = options;
|
60
60
|
exports.mdxLoaders = mdxLoaders = [{
|
61
|
-
loader: (0, _helpers.
|
61
|
+
loader: (0, _helpers.resolveFromStorybookBuilderWebpack4)('babel-loader'),
|
62
62
|
options: createBabelOptions({
|
63
63
|
babelOptions,
|
64
64
|
mdxBabelOptions,
|
@@ -23,7 +23,7 @@ function startWebpackCompiler() {
|
|
23
23
|
|
24
24
|
webpackCompiler.on('message', message => {
|
25
25
|
if (!(0, _types.isWebpackMessage)(message)) return;
|
26
|
-
Object.values(_cluster.default.workers).filter(worker => worker != webpackCompiler).forEach(worker => worker === null || worker === void 0 ? void 0 : worker.send(message));
|
26
|
+
Object.values(_cluster.default.workers ?? {}).filter(worker => worker != webpackCompiler).forEach(worker => worker === null || worker === void 0 ? void 0 : worker.send(message));
|
27
27
|
|
28
28
|
switch (message.type) {
|
29
29
|
case 'success':
|
package/lib/cjs/server/logger.js
CHANGED
@@ -3,13 +3,14 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
+
exports.colors = void 0;
|
6
7
|
Object.defineProperty(exports, "getLogger", {
|
7
8
|
enumerable: true,
|
8
9
|
get: function () {
|
9
10
|
return _loglevel.getLogger;
|
10
11
|
}
|
11
12
|
});
|
12
|
-
exports.logger =
|
13
|
+
exports.logger = void 0;
|
13
14
|
|
14
15
|
var _chalk = _interopRequireDefault(require("chalk"));
|
15
16
|
|
@@ -126,9 +126,9 @@ async function _default(config, options, resolveApi) {
|
|
126
126
|
}
|
127
127
|
|
128
128
|
runner.once('stop', () => {
|
129
|
-
var
|
129
|
+
var _runner6;
|
130
130
|
|
131
|
-
const tests = Object.values((
|
131
|
+
const tests = Object.values(((_runner6 = runner) === null || _runner6 === void 0 ? void 0 : _runner6.status.tests) ?? {});
|
132
132
|
const isSuccess = tests.filter(_types.isDefined).filter(({
|
133
133
|
skip
|
134
134
|
}) => !skip).every(({
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.default = void 0;
|
7
7
|
|
8
|
-
var _cluster =
|
8
|
+
var _cluster = _interopRequireWildcard(require("cluster"));
|
9
9
|
|
10
10
|
var _events = require("events");
|
11
11
|
|
@@ -15,13 +15,17 @@ var _messages = require("../messages");
|
|
15
15
|
|
16
16
|
var _utils = require("../utils");
|
17
17
|
|
18
|
-
function
|
18
|
+
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); }
|
19
19
|
|
20
|
-
function
|
20
|
+
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; }
|
21
21
|
|
22
22
|
const FORK_RETRIES = 5;
|
23
23
|
|
24
24
|
class Pool extends _events.EventEmitter {
|
25
|
+
workers = [];
|
26
|
+
queue = [];
|
27
|
+
forcedStop = false;
|
28
|
+
|
25
29
|
get isRunning() {
|
26
30
|
return this.workers.length !== this.freeWorkers.length;
|
27
31
|
}
|
@@ -29,19 +33,6 @@ class Pool extends _events.EventEmitter {
|
|
29
33
|
constructor(config, browser) {
|
30
34
|
super();
|
31
35
|
this.browser = browser;
|
32
|
-
|
33
|
-
_defineProperty(this, "maxRetries", void 0);
|
34
|
-
|
35
|
-
_defineProperty(this, "config", void 0);
|
36
|
-
|
37
|
-
_defineProperty(this, "workers", []);
|
38
|
-
|
39
|
-
_defineProperty(this, "queue", []);
|
40
|
-
|
41
|
-
_defineProperty(this, "forcedStop", false);
|
42
|
-
|
43
|
-
_defineProperty(this, "failFast", void 0);
|
44
|
-
|
45
36
|
this.failFast = config.failFast;
|
46
37
|
this.maxRetries = config.maxRetries;
|
47
38
|
this.config = config.browsers[browser];
|
@@ -51,7 +42,7 @@ class Pool extends _events.EventEmitter {
|
|
51
42
|
const poolSize = this.config.limit || 1;
|
52
43
|
this.workers = (await Promise.all(Array.from({
|
53
44
|
length: poolSize
|
54
|
-
}).map(() => this.forkWorker()))).filter(workerOrError => workerOrError instanceof _cluster.
|
45
|
+
}).map(() => this.forkWorker()))).filter(workerOrError => workerOrError instanceof _cluster.Worker);
|
55
46
|
if (this.workers.length != poolSize) throw new Error(`Can't instantiate workers for ${this.browser} due many errors`);
|
56
47
|
this.workers.forEach(worker => this.exitHandler(worker));
|
57
48
|
}
|
@@ -151,7 +142,7 @@ class Pool extends _events.EventEmitter {
|
|
151
142
|
worker.once('exit', async () => {
|
152
143
|
if (_utils.isShuttingDown.current) return;
|
153
144
|
const workerOrError = await this.forkWorker();
|
154
|
-
if (!(workerOrError instanceof _cluster.
|
145
|
+
if (!(workerOrError instanceof _cluster.Worker)) throw new Error(`Can't instantiate worker for ${this.browser} due many errors`);
|
155
146
|
this.exitHandler(workerOrError);
|
156
147
|
this.workers[this.workers.indexOf(worker)] = workerOrError;
|
157
148
|
this.process();
|
@@ -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 => {
|
@@ -122,7 +122,9 @@ function server(reportDir, port, ui) {
|
|
122
122
|
void creeveyApi.then(api => {
|
123
123
|
api.subscribe(wss);
|
124
124
|
wss.on('connection', ws => {
|
125
|
-
ws.on('message', message =>
|
125
|
+
ws.on('message', (message, isBinary) => {
|
126
|
+
api.handleMessage(ws, isBinary ? message : message.toString());
|
127
|
+
});
|
126
128
|
});
|
127
129
|
});
|
128
130
|
return resolveApi;
|
@@ -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
|
}));
|
@@ -131,17 +127,6 @@ function getUrlChecker(browser) {
|
|
131
127
|
}
|
132
128
|
|
133
129
|
async function waitForStorybook(browser) {
|
134
|
-
// NOTE: Storybook 5.x doesn't have the `last` method
|
135
|
-
if ((0, _helpers.isStorybookVersionLessThan)(6)) {
|
136
|
-
browserLogger.debug('Waiting for `load` event to make sure that storybook is initiated');
|
137
|
-
return browser.executeAsyncScript(function (callback) {
|
138
|
-
if (document.readyState == 'complete') return callback();
|
139
|
-
window.addEventListener('load', function () {
|
140
|
-
callback();
|
141
|
-
});
|
142
|
-
});
|
143
|
-
}
|
144
|
-
|
145
130
|
browserLogger.debug('Waiting for `setStories` event to make sure that storybook is initiated');
|
146
131
|
let wait = true;
|
147
132
|
let isTimeout = false;
|
@@ -164,11 +149,11 @@ async function waitForStorybook(browser) {
|
|
164
149
|
}
|
165
150
|
|
166
151
|
async function resetMousePosition(browser) {
|
167
|
-
var
|
152
|
+
var _await$browser$getCap, _await$browser$getCap2;
|
168
153
|
|
169
154
|
browserLogger.debug('Resetting mouse position to the top-left corner');
|
170
155
|
const browserName = (await browser.getCapabilities()).getBrowserName();
|
171
|
-
const [browserVersion] = (
|
156
|
+
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
157
|
|
173
158
|
if (browserName == 'chrome' && browserVersion == '70') {
|
174
159
|
const {
|
@@ -252,10 +237,10 @@ const getScrollBarWidth = (() => {
|
|
252
237
|
|
253
238
|
|
254
239
|
async function hasScrollBar(browser) {
|
255
|
-
var _await$browser$
|
240
|
+
var _await$browser$getCap3;
|
256
241
|
|
257
242
|
const browserName = (await browser.getCapabilities()).getBrowserName();
|
258
|
-
const [browserVersion] = (
|
243
|
+
const [browserVersion] = ((_await$browser$getCap3 = (await browser.getCapabilities()).getBrowserVersion()) === null || _await$browser$getCap3 === void 0 ? void 0 : _await$browser$getCap3.split('.')) ?? [];
|
259
244
|
return browserName != 'Safari' && // NOTE This need to work with keweb selenium grid
|
260
245
|
!(browserName == 'firefox' && browserVersion == '61');
|
261
246
|
}
|
@@ -306,7 +291,8 @@ async function takeCompositeScreenshot(browser, windowRect, elementRect) {
|
|
306
291
|
const scrollOffset = isFitVertically || isScreenshotWithoutScrollBar ? 0 : scrollBarWidth;
|
307
292
|
const i = (y * compositeImage.width + x) * 4;
|
308
293
|
const j = // NOTE compositeImage(x, y) => image(x, y)
|
309
|
-
(y % viewportHeight * (viewportWidth + scrollOffset) + x % viewportWidth) * 4 + (
|
294
|
+
(y % viewportHeight * (viewportWidth + scrollOffset) + x % viewportWidth) * 4 + ( // NOTE Offset for last row/col image
|
295
|
+
isLastRow ? yOffset * (viewportWidth + scrollOffset) * 4 : 0) + (isLastCol ? xOffset * 4 : 0);
|
310
296
|
const image = images[row * cols + col];
|
311
297
|
compositeImage.data[i + 0] = image.data[j + 0];
|
312
298
|
compositeImage.data[i + 1] = image.data[j + 1];
|
@@ -355,7 +341,7 @@ async function takeScreenshot(browser, captureElement, ignoreElements) {
|
|
355
341
|
const {
|
356
342
|
elementRect,
|
357
343
|
windowRect
|
358
|
-
} = rects
|
344
|
+
} = rects ?? {};
|
359
345
|
if (!elementRect || !windowRect) throw new Error(`Couldn't find element with selector: '${captureElement}'`);
|
360
346
|
const isFitIntoViewport = elementRect.width + elementRect.left <= windowRect.width && elementRect.height + elementRect.top <= windowRect.height;
|
361
347
|
if (isFitIntoViewport) browserLogger.debug(`Capturing ${_chalk.default.cyan(captureElement)}`);else browserLogger.debug(`Capturing composite screenshot image of ${_chalk.default.cyan(captureElement)}`);
|
@@ -381,19 +367,14 @@ async function selectStory(browser, {
|
|
381
367
|
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
368
|
}
|
383
369
|
|
384
|
-
window.__CREEVEY_SELECT_STORY__(id, kind, name, shouldWaitForReady, callback);
|
370
|
+
void window.__CREEVEY_SELECT_STORY__(id, kind, name, shouldWaitForReady, callback);
|
385
371
|
}, id, kind, name, waitForReady);
|
386
|
-
const [errorMessage, isCaptureCalled = false] = result
|
372
|
+
const [errorMessage, isCaptureCalled = false] = result ?? [];
|
387
373
|
if (errorMessage) throw new Error(errorMessage);
|
388
374
|
return isCaptureCalled;
|
389
375
|
}
|
390
376
|
|
391
377
|
async function updateStorybookGlobals(browser, globals) {
|
392
|
-
if ((0, _helpers.isStorybookVersionLessThan)(6)) {
|
393
|
-
browserLogger.warn('Globals are not supported by Storybook versions less than 6');
|
394
|
-
return;
|
395
|
-
}
|
396
|
-
|
397
378
|
browserLogger.debug('Applying storybook globals');
|
398
379
|
await browser.executeScript(function (globals) {
|
399
380
|
window.__CREEVEY_UPDATE_GLOBALS__(globals);
|
@@ -430,11 +411,8 @@ async function resolveCreeveyHost(browser, port) {
|
|
430
411
|
const addresses = getAddresses();
|
431
412
|
creeveyServerHost = await browser.executeAsyncScript(function (hosts, port, callback) {
|
432
413
|
void Promise.all(hosts.map(function (host) {
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
fetch('//' + host + ':' + port + '/ping').then(resolve).catch(reject);
|
437
|
-
}).then(function (response) {
|
414
|
+
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
|
415
|
+
return fetch('http://' + host + ':' + port + '/ping').then(function (response) {
|
438
416
|
return response.text();
|
439
417
|
}).then(function (pong) {
|
440
418
|
return pong == 'pong' ? host : null;
|
@@ -530,7 +508,7 @@ async function getBrowser(config, name) {
|
|
530
508
|
});
|
531
509
|
}, () => viewport && browser && resizeViewport(browser, viewport), () => browser && openStorybookPage(browser, realAddress, config.resolveStorybookUrl), () => browser && waitForStorybook(browser)], () => !_utils.isShuttingDown.current);
|
532
510
|
} catch (originalError) {
|
533
|
-
var
|
511
|
+
var _browser4;
|
534
512
|
|
535
513
|
if (_utils.isShuttingDown.current) {
|
536
514
|
var _browser3;
|
@@ -541,7 +519,7 @@ async function getBrowser(config, name) {
|
|
541
519
|
}
|
542
520
|
|
543
521
|
if (originalError instanceof Error && originalError.name == 'ResolveUrlError') throw originalError;
|
544
|
-
const error = new Error(`Can't load storybook root page by URL ${(
|
522
|
+
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
523
|
if (originalError instanceof Error) error.stack = originalError.stack;
|
546
524
|
throw error;
|
547
525
|
}
|
@@ -579,7 +557,7 @@ async function closeBrowser() {
|
|
579
557
|
}
|
580
558
|
|
581
559
|
async function switchStory() {
|
582
|
-
var _this$currentTest, _this$currentTest$ctx
|
560
|
+
var _this$currentTest, _this$currentTest$ctx;
|
583
561
|
|
584
562
|
let testOrSuite = this.currentTest;
|
585
563
|
if (!testOrSuite) throw new Error("Can't switch story, because test context doesn't have 'currentTest' field");
|
@@ -606,7 +584,7 @@ async function switchStory() {
|
|
606
584
|
captureElement = '#root',
|
607
585
|
waitForReady,
|
608
586
|
ignoreElements
|
609
|
-
} =
|
587
|
+
} = parameters.creevey ?? {};
|
610
588
|
browserLogger.debug(`Switching to story ${_chalk.default.cyan(kind)}/${_chalk.default.cyan(name)} by id ${_chalk.default.magenta(id)}`);
|
611
589
|
if (captureElement) Object.defineProperty(this, 'captureElement', {
|
612
590
|
enumerable: true,
|
@@ -622,8 +600,6 @@ async function switchStory() {
|
|
622
600
|
let storyPlayResolver;
|
623
601
|
let waitForComplete = new Promise(resolve => storyPlayResolver = resolve);
|
624
602
|
const unsubscribe = (0, _messages.subscribeOn)('stories', message => {
|
625
|
-
var _payload$captureEleme, _payload$ignoreElemen;
|
626
|
-
|
627
603
|
if (message.type != 'capture') return;
|
628
604
|
const {
|
629
605
|
payload = {},
|
@@ -631,7 +607,7 @@ async function switchStory() {
|
|
631
607
|
imageName
|
632
608
|
} = {}
|
633
609
|
} = message;
|
634
|
-
void takeScreenshot(this.browser,
|
610
|
+
void takeScreenshot(this.browser, payload.captureElement ?? captureElement, payload.ignoreElements ?? ignoreElements).then(screenshot => {
|
635
611
|
this.screenshots.push({
|
636
612
|
imageName,
|
637
613
|
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
|