creevey 0.9.0-beta.0 → 0.9.0-beta.10
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 +51 -0
- package/README.md +9 -1
- package/addon/README.md +3 -0
- package/addon/package.json +5 -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 +22 -41
- 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 +4 -68
- package/lib/cjs/client/addon/preset.sb7.js +19 -0
- package/lib/cjs/client/addon/preview.js +14 -0
- package/lib/cjs/client/addon/register.js +46 -70
- package/lib/cjs/client/addon/utils.js +6 -2
- package/lib/cjs/client/addon/withCreevey.js +161 -366
- 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 +5 -5
- package/lib/cjs/server/config.js +3 -5
- 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 +58 -70
- 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 +21 -28
- package/lib/cjs/server/storybook/providers/browser.js +10 -14
- package/lib/cjs/server/storybook/providers/hybrid.js +17 -14
- package/lib/cjs/server/storybook/providers/nodejs.js +12 -12
- package/lib/cjs/server/{parser.js → testsFiles/parser.js} +1 -14
- package/lib/cjs/server/testsFiles/register.js +44 -0
- 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 +9 -19
- package/lib/cjs/shared/index.js +101 -0
- package/lib/cjs/shared/serializeRegExp.js +42 -0
- package/lib/cjs/types.js +7 -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 +20 -37
- 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 +4 -52
- package/lib/esm/client/addon/preset.sb7.js +8 -0
- package/lib/esm/client/addon/preview.js +5 -0
- package/lib/esm/client/addon/register.js +42 -66
- package/lib/esm/client/addon/utils.js +3 -2
- package/lib/esm/client/addon/withCreevey.js +156 -363
- 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 +2 -4
- package/lib/esm/server/config.js +3 -5
- 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 +54 -66
- 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 +12 -21
- package/lib/esm/server/storybook/providers/browser.js +6 -9
- package/lib/esm/server/storybook/providers/hybrid.js +10 -13
- package/lib/esm/server/storybook/providers/nodejs.js +10 -11
- package/lib/esm/server/{parser.js → testsFiles/parser.js} +1 -14
- package/lib/esm/server/testsFiles/register.js +31 -0
- 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 +9 -19
- package/lib/esm/shared/index.js +78 -0
- package/lib/esm/shared/serializeRegExp.js +24 -0
- package/lib/esm/types.js +1 -0
- package/lib/types/client/addon/Manager.d.ts +2 -2
- package/lib/types/client/addon/components/TestSelect.d.ts +0 -1
- package/lib/types/client/addon/index.d.ts +2 -0
- package/lib/types/client/addon/preset.d.ts +0 -22
- package/lib/types/client/addon/preset.ie11.d.ts +10 -0
- package/lib/types/client/addon/preset.sb7.d.ts +2 -0
- package/lib/types/client/addon/preview.d.ts +4 -0
- package/lib/types/client/addon/utils.d.ts +1 -0
- package/lib/types/client/addon/withCreevey.d.ts +1 -1
- package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +1 -1
- package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +0 -1
- package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +1 -1
- package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +1 -1
- package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +1 -1
- package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +0 -1
- package/lib/types/client/shared/components/PageFooter/Paging.d.ts +0 -1
- package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +1 -1
- package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +0 -1
- package/lib/types/client/shared/components/ResultsPage.d.ts +1 -1
- package/lib/types/client/web/CreeveyApp.d.ts +0 -1
- package/lib/types/client/web/CreeveyLoader.d.ts +1 -2
- package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +1 -1
- package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +0 -1
- package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +4 -4
- package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +0 -1
- package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +1 -1
- package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +1 -1
- package/lib/types/index.d.ts +4 -2
- package/lib/types/server/config.d.ts +1 -1
- package/lib/types/server/loaders/babel/register.d.ts +1 -1
- package/lib/types/server/loaders/webpack/creevey-loader.d.ts +4 -2
- package/lib/types/server/logger.d.ts +6 -2
- package/lib/types/server/messages.d.ts +13 -12
- package/lib/types/server/selenium/browser.d.ts +5 -3
- package/lib/types/server/storybook/entry.d.ts +2 -3
- package/lib/types/server/storybook/helpers.d.ts +1 -1
- package/lib/types/server/storybook/providers/browser.d.ts +2 -4
- package/lib/types/server/storybook/providers/hybrid.d.ts +2 -4
- package/lib/types/server/storybook/providers/nodejs.d.ts +3 -3
- package/lib/types/server/{parser.d.ts → testsFiles/parser.d.ts} +1 -1
- package/lib/types/server/testsFiles/register.d.ts +2 -0
- package/lib/types/server/utils.d.ts +5 -1
- package/lib/types/{shared.d.ts → shared/index.d.ts} +1 -10
- package/lib/types/shared/serializeRegExp.d.ts +9 -0
- package/lib/types/types.d.ts +7 -9
- package/package.json +119 -102
- package/preset/ie11.js +5 -0
- package/{preset.js → preset/index.js} +2 -2
- package/preset/sb7.js +5 -0
- package/types/global.d.ts +5 -0
- 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 -107
- package/lib/esm/shared.js +0 -76
- package/storybook-static/stories.json +0 -21
@@ -3,15 +3,13 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.withCreevey = withCreevey;
|
7
6
|
exports.capture = capture;
|
7
|
+
exports.withCreevey = withCreevey;
|
8
8
|
|
9
9
|
var Events = _interopRequireWildcard(require("@storybook/core-events"));
|
10
10
|
|
11
11
|
var polyfill = _interopRequireWildcard(require("event-source-polyfill"));
|
12
12
|
|
13
|
-
var _testingLibrary = require("@storybook/testing-library");
|
14
|
-
|
15
13
|
var _addons = require("@storybook/addons");
|
16
14
|
|
17
15
|
var _types = require("../../types");
|
@@ -20,89 +18,45 @@ var _shared = require("../../shared");
|
|
20
18
|
|
21
19
|
var _helpers = require("../shared/helpers");
|
22
20
|
|
23
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function
|
24
|
-
|
25
|
-
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; }
|
26
|
-
|
27
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
28
|
-
|
29
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
30
|
-
|
31
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
32
|
-
|
33
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
34
|
-
|
35
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
36
|
-
|
37
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
38
|
-
|
39
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
21
|
+
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); }
|
40
22
|
|
41
|
-
function
|
23
|
+
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; }
|
42
24
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
48
|
-
|
49
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
50
|
-
|
51
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
52
|
-
|
53
|
-
if ((typeof process === "undefined" ? "undefined" : _typeof(process)) != 'object' || typeof process.version != 'string') {
|
25
|
+
// import { buildQueries, within } from '@storybook/testing-library';
|
26
|
+
// import { isInternetExplorer } from './utils';
|
27
|
+
if (typeof process != 'object' || typeof process.version != 'string') {
|
54
28
|
// NOTE If you don't use babel-polyfill or any other polyfills that add EventSource for IE11
|
55
29
|
// You don't get hot reload in IE11. So put polyfill for that to better UX
|
56
30
|
// Don't load in nodejs environment
|
57
31
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
58
|
-
|
59
|
-
|
32
|
+
const {
|
33
|
+
NativeEventSource,
|
34
|
+
EventSourcePolyfill
|
35
|
+
} = polyfill; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
60
36
|
|
61
37
|
window.EventSource = NativeEventSource || EventSourcePolyfill;
|
62
38
|
}
|
63
39
|
|
64
|
-
|
40
|
+
const disableAnimationsStyles = "\n*,\n*:hover,\n*::before,\n*::after {\n animation-delay: -0.0001ms !important;\n animation-duration: 0s !important;\n animation-play-state: paused !important;\n cursor: none !important;\n caret-color: transparent !important;\n transition: 0s !important;\n}\n";
|
65
41
|
|
66
|
-
function resetCurrentStory(
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
while (1) {
|
74
|
-
switch (_context4.prev = _context4.next) {
|
75
|
-
case 0:
|
76
|
-
setTimeout(function () {
|
77
|
-
return channel.emit(Events.SET_CURRENT_STORY, {
|
78
|
-
storyId: true,
|
79
|
-
name: '',
|
80
|
-
kind: ''
|
81
|
-
});
|
82
|
-
}, 0);
|
83
|
-
return _context4.abrupt("return", new Promise(function (resolve) {
|
84
|
-
return channel.once(Events.STORY_MISSING, resolve);
|
85
|
-
}));
|
86
|
-
|
87
|
-
case 2:
|
88
|
-
case "end":
|
89
|
-
return _context4.stop();
|
90
|
-
}
|
91
|
-
}
|
92
|
-
}, _callee4);
|
93
|
-
}));
|
94
|
-
return _resetCurrentStory.apply(this, arguments);
|
42
|
+
async function resetCurrentStory(channel) {
|
43
|
+
setTimeout(() => channel.emit(Events.SET_CURRENT_STORY, {
|
44
|
+
storyId: true,
|
45
|
+
name: '',
|
46
|
+
kind: ''
|
47
|
+
}), 0);
|
48
|
+
return new Promise(resolve => channel.once(Events.STORY_MISSING, resolve));
|
95
49
|
}
|
96
50
|
|
97
51
|
function catchRenderError(channel) {
|
98
|
-
|
99
|
-
|
100
|
-
return rejectCallback = reject;
|
101
|
-
});
|
52
|
+
let rejectCallback;
|
53
|
+
const promise = new Promise((_resolve, reject) => rejectCallback = reject);
|
102
54
|
|
103
55
|
function errorHandler(_ref) {
|
104
|
-
|
105
|
-
|
56
|
+
let {
|
57
|
+
title,
|
58
|
+
description
|
59
|
+
} = _ref;
|
106
60
|
rejectCallback({
|
107
61
|
message: title,
|
108
62
|
stack: description
|
@@ -126,10 +80,8 @@ function catchRenderError(channel) {
|
|
126
80
|
}
|
127
81
|
|
128
82
|
function waitForStoryRendered(channel) {
|
129
|
-
|
130
|
-
|
131
|
-
return resolveCallback = resolve;
|
132
|
-
});
|
83
|
+
let resolveCallback;
|
84
|
+
const promise = new Promise(resolve => resolveCallback = resolve);
|
133
85
|
|
134
86
|
function renderHandler() {
|
135
87
|
resolveCallback();
|
@@ -147,13 +99,11 @@ function waitForStoryRendered(channel) {
|
|
147
99
|
|
148
100
|
function waitForFontsLoaded() {
|
149
101
|
if (!document.fonts) return;
|
150
|
-
|
151
|
-
return font.status == 'loading';
|
152
|
-
});
|
102
|
+
const areFontsLoading = Array.from(document.fonts).some(font => font.status == 'loading');
|
153
103
|
|
154
104
|
if (areFontsLoading) {
|
155
|
-
return new Promise(
|
156
|
-
|
105
|
+
return new Promise(resolve => {
|
106
|
+
const fontsLoadedHandler = () => {
|
157
107
|
document.fonts.removeEventListener('loadingdone', fontsLoadedHandler);
|
158
108
|
resolve();
|
159
109
|
};
|
@@ -164,247 +114,133 @@ function waitForFontsLoaded() {
|
|
164
114
|
}
|
165
115
|
|
166
116
|
function waitForCaptureCall() {
|
167
|
-
return new Promise(
|
168
|
-
return captureResolver = resolve;
|
169
|
-
});
|
117
|
+
return new Promise(resolve => captureResolver = resolve);
|
170
118
|
}
|
171
119
|
|
172
120
|
function initCreeveyState() {
|
173
121
|
var _window$localStorage$;
|
174
122
|
|
175
|
-
|
123
|
+
const prevState = JSON.parse((_window$localStorage$ = window.localStorage.getItem('Creevey_Tests')) !== null && _window$localStorage$ !== void 0 ? _window$localStorage$ : '{}');
|
176
124
|
if (prevState.creeveyHost) window.__CREEVEY_SERVER_HOST__ = prevState.creeveyHost;
|
177
125
|
if (prevState.creeveyPort) window.__CREEVEY_SERVER_PORT__ = prevState.creeveyPort;
|
178
126
|
if (prevState.setStoriesCounter) setStoriesCounter = prevState.setStoriesCounter;
|
179
127
|
if (prevState.isTestBrowser) isTestBrowser = prevState.isTestBrowser;
|
180
|
-
window.addEventListener('beforeunload',
|
128
|
+
window.addEventListener('beforeunload', () => {
|
181
129
|
window.localStorage.setItem('Creevey_Tests', JSON.stringify({
|
182
130
|
creeveyHost: window.__CREEVEY_SERVER_HOST__,
|
183
131
|
creeveyPort: window.__CREEVEY_SERVER_PORT__,
|
184
|
-
setStoriesCounter
|
185
|
-
isTestBrowser
|
132
|
+
setStoriesCounter,
|
133
|
+
isTestBrowser
|
186
134
|
}));
|
187
135
|
});
|
188
136
|
}
|
189
137
|
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
138
|
+
let isTestBrowser = false;
|
139
|
+
let captureResolver;
|
140
|
+
let waitForCreevey;
|
141
|
+
let creeveyReady;
|
142
|
+
let setStoriesCounter = 0;
|
195
143
|
|
196
144
|
function withCreevey() {
|
197
|
-
|
198
|
-
|
145
|
+
let currentStory = '';
|
146
|
+
let isAnimationDisabled = false;
|
199
147
|
initCreeveyState();
|
200
148
|
|
201
149
|
function disableAnimation() {
|
202
150
|
isAnimationDisabled = true;
|
203
|
-
|
204
|
-
|
151
|
+
const style = document.createElement('style');
|
152
|
+
const textNode = document.createTextNode(disableAnimationsStyles);
|
205
153
|
style.setAttribute('type', 'text/css');
|
206
154
|
style.appendChild(textNode);
|
207
155
|
document.head.appendChild(style);
|
208
156
|
}
|
209
157
|
|
210
|
-
function getStories() {
|
211
|
-
|
212
|
-
}
|
158
|
+
async function getStories() {
|
159
|
+
var _window$__STORYBOOK_S;
|
213
160
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
return regeneratorRuntime.wrap(function _callee$(_context) {
|
220
|
-
while (1) {
|
221
|
-
switch (_context.prev = _context.next) {
|
222
|
-
case 0:
|
223
|
-
storiesPromise = new Promise(function (resolve) {
|
224
|
-
return _addons.addons.getChannel().once(Events.SET_STORIES, function (data) {
|
225
|
-
return resolve((0, _shared.serializeRawStories)((0, _shared.denormalizeStoryParameters)(data)));
|
226
|
-
});
|
227
|
-
});
|
228
|
-
store = (_window$__STORYBOOK_S = window.__STORYBOOK_STORY_STORE__) !== null && _window$__STORYBOOK_S !== void 0 ? _window$__STORYBOOK_S : {}; // @ts-expect-error `pushToManager` exists only in Storybook 6.0 - 6.3
|
229
|
-
|
230
|
-
if (!store.pushToManager) {
|
231
|
-
_context.next = 6;
|
232
|
-
break;
|
233
|
-
}
|
234
|
-
|
235
|
-
// @ts-expect-error `pushToManager` exists only in Storybook 6.0 - 6.3
|
236
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
237
|
-
store.pushToManager();
|
238
|
-
_context.next = 13;
|
239
|
-
break;
|
240
|
-
|
241
|
-
case 6:
|
242
|
-
if (!store.cacheAllCSFFiles) {
|
243
|
-
_context.next = 12;
|
244
|
-
break;
|
245
|
-
}
|
246
|
-
|
247
|
-
_context.next = 9;
|
248
|
-
return store.cacheAllCSFFiles();
|
249
|
-
|
250
|
-
case 9:
|
251
|
-
_addons.addons.getChannel().emit(Events.SET_STORIES, store.getSetStoriesPayload());
|
252
|
-
|
253
|
-
_context.next = 13;
|
254
|
-
break;
|
255
|
-
|
256
|
-
case 12:
|
257
|
-
return _context.abrupt("return");
|
258
|
-
|
259
|
-
case 13:
|
260
|
-
_addons.addons.getChannel().on(Events.SET_STORIES, function (data) {
|
261
|
-
// TODO Figure out how to get only updated stories
|
262
|
-
// TODO Subscribe on hmr? like use dummy-hmr
|
263
|
-
setStoriesCounter += 1;
|
264
|
-
var stories = (0, _shared.serializeRawStories)((0, _shared.denormalizeStoryParameters)(data));
|
265
|
-
var storiesByFiles = new Map();
|
266
|
-
Object.values(stories).forEach(function (story) {
|
267
|
-
var storiesFromFile = storiesByFiles.get(story.parameters.fileName);
|
268
|
-
if (storiesFromFile) storiesFromFile.push(story);else storiesByFiles.set(story.parameters.fileName, [story]);
|
269
|
-
});
|
270
|
-
void fetch("http://".concat((0, _helpers.getConnectionUrl)(), "/stories"), {
|
271
|
-
method: 'POST',
|
272
|
-
headers: {
|
273
|
-
'Content-Type': 'application/json'
|
274
|
-
},
|
275
|
-
body: JSON.stringify({
|
276
|
-
setStoriesCounter: setStoriesCounter,
|
277
|
-
stories: _toConsumableArray(storiesByFiles.entries())
|
278
|
-
})
|
279
|
-
});
|
280
|
-
});
|
281
|
-
|
282
|
-
return _context.abrupt("return", storiesPromise);
|
283
|
-
|
284
|
-
case 15:
|
285
|
-
case "end":
|
286
|
-
return _context.stop();
|
287
|
-
}
|
288
|
-
}
|
289
|
-
}, _callee);
|
290
|
-
}));
|
291
|
-
return _getStories.apply(this, arguments);
|
292
|
-
}
|
161
|
+
const storiesPromise = new Promise(resolve => _addons.addons.getChannel().once(Events.SET_STORIES, data => resolve((0, _shared.serializeRawStories)((0, _shared.denormalizeStoryParameters)(data)))));
|
162
|
+
const store = (_window$__STORYBOOK_S = window.__STORYBOOK_STORY_STORE__) !== null && _window$__STORYBOOK_S !== void 0 ? _window$__STORYBOOK_S : {};
|
163
|
+
|
164
|
+
if (store.cacheAllCSFFiles) {
|
165
|
+
await store.cacheAllCSFFiles();
|
293
166
|
|
294
|
-
|
295
|
-
|
167
|
+
_addons.addons.getChannel().emit(Events.SET_STORIES, store.getSetStoriesPayload());
|
168
|
+
} else return;
|
169
|
+
|
170
|
+
_addons.addons.getChannel().on(Events.SET_STORIES, data => {
|
171
|
+
// TODO Figure out how to get only updated stories
|
172
|
+
// TODO Subscribe on hmr? like use dummy-hmr
|
173
|
+
setStoriesCounter += 1;
|
174
|
+
const stories = (0, _shared.serializeRawStories)((0, _shared.denormalizeStoryParameters)(data));
|
175
|
+
const storiesByFiles = new Map();
|
176
|
+
Object.values(stories).forEach(story => {
|
177
|
+
const storiesFromFile = storiesByFiles.get(story.parameters.fileName);
|
178
|
+
if (storiesFromFile) storiesFromFile.push(story);else storiesByFiles.set(story.parameters.fileName, [story]);
|
179
|
+
});
|
180
|
+
void fetch("http://".concat((0, _helpers.getConnectionUrl)(), "/stories"), {
|
181
|
+
method: 'POST',
|
182
|
+
headers: {
|
183
|
+
'Content-Type': 'application/json'
|
184
|
+
},
|
185
|
+
body: JSON.stringify({
|
186
|
+
setStoriesCounter,
|
187
|
+
stories: [...storiesByFiles.entries()]
|
188
|
+
})
|
189
|
+
});
|
190
|
+
});
|
191
|
+
|
192
|
+
return storiesPromise;
|
296
193
|
}
|
297
194
|
|
298
|
-
function
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
});
|
335
|
-
setTimeout(function () {
|
336
|
-
return channel.emit(Events.SET_CURRENT_STORY, {
|
337
|
-
storyId: storyId,
|
338
|
-
name: name,
|
339
|
-
kind: kind
|
340
|
-
});
|
341
|
-
}, 0);
|
342
|
-
_context3.prev = 15;
|
343
|
-
_context3.next = 18;
|
344
|
-
return Promise.race([_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
|
345
|
-
return regeneratorRuntime.wrap(function _callee2$(_context2) {
|
346
|
-
while (1) {
|
347
|
-
switch (_context2.prev = _context2.next) {
|
348
|
-
case 0:
|
349
|
-
_context2.next = 2;
|
350
|
-
return Promise.race([renderPromise, capturePromise]);
|
351
|
-
|
352
|
-
case 2:
|
353
|
-
_context2.next = 4;
|
354
|
-
return waitForFontsLoaded();
|
355
|
-
|
356
|
-
case 4:
|
357
|
-
_context2.next = 6;
|
358
|
-
return waitForReady;
|
359
|
-
|
360
|
-
case 6:
|
361
|
-
case "end":
|
362
|
-
return _context2.stop();
|
363
|
-
}
|
364
|
-
}
|
365
|
-
}, _callee2);
|
366
|
-
}))(), errorPromise]);
|
367
|
-
|
368
|
-
case 18:
|
369
|
-
callback([null, isCaptureCalled]);
|
370
|
-
_context3.next = 25;
|
371
|
-
break;
|
372
|
-
|
373
|
-
case 21:
|
374
|
-
_context3.prev = 21;
|
375
|
-
_context3.t0 = _context3["catch"](15);
|
376
|
-
// NOTE Event `STORY_THREW_EXCEPTION` triggered only in react and vue frameworks and return Error instance
|
377
|
-
// NOTE Event `STORY_ERRORED` return error-like object without `name` field
|
378
|
-
errorMessage = _context3.t0 instanceof Error ? (_reason$stack = _context3.t0.stack) !== null && _reason$stack !== void 0 ? _reason$stack : _context3.t0.message : (0, _types.isObject)(_context3.t0) ? "".concat(_context3.t0.message, "\n ").concat(_context3.t0.stack) : _context3.t0;
|
379
|
-
callback([errorMessage]);
|
380
|
-
|
381
|
-
case 25:
|
382
|
-
_context3.prev = 25;
|
383
|
-
renderPromise.cancel();
|
384
|
-
errorPromise.cancel();
|
385
|
-
return _context3.finish(25);
|
386
|
-
|
387
|
-
case 29:
|
388
|
-
case "end":
|
389
|
-
return _context3.stop();
|
390
|
-
}
|
391
|
-
}
|
392
|
-
}, _callee3, null, [[15, 21, 25, 29]]);
|
393
|
-
}));
|
394
|
-
return _selectStory.apply(this, arguments);
|
195
|
+
async function selectStory(storyId, kind, name, shouldWaitForReady, callback) {
|
196
|
+
if (!isAnimationDisabled) disableAnimation();
|
197
|
+
isTestBrowser = true;
|
198
|
+
|
199
|
+
const channel = _addons.addons.getChannel();
|
200
|
+
|
201
|
+
const waitForReady = shouldWaitForReady ? new Promise(resolve => window.__CREEVEY_SET_READY_FOR_CAPTURE__ = resolve) : Promise.resolve();
|
202
|
+
if (storyId == currentStory) await resetCurrentStory(channel);else currentStory = storyId;
|
203
|
+
let isCaptureCalled = false;
|
204
|
+
const renderPromise = waitForStoryRendered(channel);
|
205
|
+
const errorPromise = catchRenderError(channel);
|
206
|
+
const capturePromise = waitForCaptureCall().then(() => isCaptureCalled = true);
|
207
|
+
setTimeout(() => channel.emit(Events.SET_CURRENT_STORY, {
|
208
|
+
storyId,
|
209
|
+
name,
|
210
|
+
kind
|
211
|
+
}), 0);
|
212
|
+
|
213
|
+
try {
|
214
|
+
await Promise.race([(async () => {
|
215
|
+
await Promise.race([renderPromise, capturePromise]);
|
216
|
+
await waitForFontsLoaded();
|
217
|
+
await waitForReady;
|
218
|
+
})(), errorPromise]);
|
219
|
+
callback([null, isCaptureCalled]);
|
220
|
+
} catch (reason) {
|
221
|
+
var _reason$stack;
|
222
|
+
|
223
|
+
// NOTE Event `STORY_THREW_EXCEPTION` triggered only in react and vue frameworks and return Error instance
|
224
|
+
// NOTE Event `STORY_ERRORED` return error-like object without `name` field
|
225
|
+
const errorMessage = reason instanceof Error ? (_reason$stack = reason.stack) !== null && _reason$stack !== void 0 ? _reason$stack : reason.message : (0, _types.isObject)(reason) ? "".concat(reason.message, "\n ").concat(reason.stack) : reason;
|
226
|
+
callback([errorMessage]);
|
227
|
+
} finally {
|
228
|
+
renderPromise.cancel();
|
229
|
+
errorPromise.cancel();
|
230
|
+
}
|
395
231
|
}
|
396
232
|
|
397
233
|
function updateGlobals(globals) {
|
398
234
|
_addons.addons.getChannel().emit(Events.UPDATE_GLOBALS, {
|
399
|
-
globals
|
235
|
+
globals
|
400
236
|
});
|
401
237
|
}
|
402
238
|
|
403
239
|
function insertIgnoreStyles(ignoreSelectors) {
|
404
|
-
|
240
|
+
const stylesElement = document.createElement('style');
|
405
241
|
stylesElement.setAttribute('type', 'text/css');
|
406
242
|
document.head.appendChild(stylesElement);
|
407
|
-
ignoreSelectors.forEach(
|
243
|
+
ignoreSelectors.forEach(selector => {
|
408
244
|
stylesElement.innerHTML += "\n ".concat(selector, " {\n background: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n outline: 0 !important;\n color: rgba(0,0,0,0) !important;\n }\n ").concat(selector, " *, ").concat(selector, "::before, ").concat(selector, "::after {\n visibility: hidden !important;\n }\n ");
|
409
245
|
});
|
410
246
|
return stylesElement;
|
@@ -418,17 +254,17 @@ function withCreevey() {
|
|
418
254
|
|
419
255
|
function hasPlayCompletedYet(callback) {
|
420
256
|
creeveyReady();
|
421
|
-
|
422
|
-
|
257
|
+
let isCaptureCalled = false;
|
258
|
+
let isPlayCompleted = false;
|
423
259
|
|
424
|
-
|
260
|
+
const channel = _addons.addons.getChannel();
|
425
261
|
|
426
|
-
void waitForStoryRendered(channel).then(
|
262
|
+
void waitForStoryRendered(channel).then(() => {
|
427
263
|
if (isCaptureCalled) return;
|
428
264
|
isPlayCompleted = true;
|
429
265
|
callback(true);
|
430
266
|
});
|
431
|
-
void waitForCaptureCall().then(
|
267
|
+
void waitForCaptureCall().then(() => {
|
432
268
|
if (isPlayCompleted) return;
|
433
269
|
isCaptureCalled = true;
|
434
270
|
callback(false);
|
@@ -441,49 +277,35 @@ function withCreevey() {
|
|
441
277
|
window.__CREEVEY_INSERT_IGNORE_STYLES__ = insertIgnoreStyles;
|
442
278
|
window.__CREEVEY_REMOVE_IGNORE_STYLES__ = removeIgnoreStyles;
|
443
279
|
window.__CREEVEY_HAS_PLAY_COMPLETED_YET__ = hasPlayCompletedYet;
|
444
|
-
window.__CREEVEY_SET_READY_FOR_CAPTURE__ = _types.noop;
|
280
|
+
window.__CREEVEY_SET_READY_FOR_CAPTURE__ = _types.noop; // const queryAllByQuery = (container: HTMLElement, query: string): HTMLElement[] =>
|
281
|
+
// [...container.querySelectorAll(query)].filter((e) => e instanceof HTMLElement) as HTMLElement[];
|
282
|
+
// const getMultipleError = (_: Element | null, query: string): string => `Found multiple elements by query: ${query}`;
|
283
|
+
// const getMissingError = (_: Element | null, query: string): string => `Unable to find an element by query: ${query}`;
|
284
|
+
// const [queryByQuery, getAllByQuery, getByQuery, findAllByQuery, findByQuery] = buildQueries(
|
285
|
+
// queryAllByQuery,
|
286
|
+
// getMultipleError,
|
287
|
+
// getMissingError,
|
288
|
+
// );
|
289
|
+
// const queries = {
|
290
|
+
// queryByQuery,
|
291
|
+
// getAllByQuery,
|
292
|
+
// getByQuery,
|
293
|
+
// findAllByQuery,
|
294
|
+
// findByQuery,
|
295
|
+
// };
|
445
296
|
|
446
|
-
var queryAllByQuery = function queryAllByQuery(container, query) {
|
447
|
-
return _toConsumableArray(container.querySelectorAll(query)).filter(function (e) {
|
448
|
-
return e instanceof HTMLElement;
|
449
|
-
});
|
450
|
-
};
|
451
|
-
|
452
|
-
var getMultipleError = function getMultipleError(_, query) {
|
453
|
-
return "Found multiple elements by query: ".concat(query);
|
454
|
-
};
|
455
|
-
|
456
|
-
var getMissingError = function getMissingError(_, query) {
|
457
|
-
return "Unable to find an element by query: ".concat(query);
|
458
|
-
};
|
459
|
-
|
460
|
-
var _buildQueries = (0, _testingLibrary.buildQueries)(queryAllByQuery, getMultipleError, getMissingError),
|
461
|
-
_buildQueries2 = _slicedToArray(_buildQueries, 5),
|
462
|
-
queryByQuery = _buildQueries2[0],
|
463
|
-
getAllByQuery = _buildQueries2[1],
|
464
|
-
getByQuery = _buildQueries2[2],
|
465
|
-
findAllByQuery = _buildQueries2[3],
|
466
|
-
findByQuery = _buildQueries2[4];
|
467
|
-
|
468
|
-
var queries = {
|
469
|
-
queryByQuery: queryByQuery,
|
470
|
-
getAllByQuery: getAllByQuery,
|
471
|
-
getByQuery: getByQuery,
|
472
|
-
findAllByQuery: findAllByQuery,
|
473
|
-
findByQuery: findByQuery
|
474
|
-
};
|
475
297
|
return (0, _addons.makeDecorator)({
|
476
298
|
name: 'withCreevey',
|
477
299
|
parameterName: 'creevey',
|
478
|
-
wrapper:
|
300
|
+
wrapper: (getStory, context) => {
|
479
301
|
var _ref2;
|
480
302
|
|
481
303
|
// TODO Define proper types, like captureElement is a promise
|
482
|
-
|
483
|
-
|
484
|
-
|
304
|
+
const {
|
305
|
+
captureElement
|
306
|
+
} = context.parameters.creevey = (_ref2 = context.parameters.creevey) !== null && _ref2 !== void 0 ? _ref2 : {};
|
485
307
|
Object.defineProperty(context.parameters.creevey, 'captureElement', {
|
486
|
-
get
|
308
|
+
get() {
|
487
309
|
switch (true) {
|
488
310
|
case captureElement === undefined:
|
489
311
|
return Promise.resolve(context.canvasElement);
|
@@ -492,13 +314,17 @@ function withCreevey() {
|
|
492
314
|
return Promise.resolve(document.documentElement);
|
493
315
|
|
494
316
|
case typeof captureElement == 'string':
|
495
|
-
return
|
317
|
+
return Promise.resolve(context.canvasElement.querySelector(captureElement));
|
318
|
+
// return isInternetExplorer // some code from testing-library makes IE hang
|
319
|
+
// ? Promise.resolve(context.canvasElement.querySelector(captureElement as string))
|
320
|
+
// : within<typeof queries>(context.canvasElement, queries).findByQuery(captureElement as string);
|
496
321
|
|
497
322
|
case typeof captureElement == 'function':
|
498
323
|
// TODO Define type for it
|
499
324
|
return Promise.resolve(captureElement(context));
|
500
325
|
}
|
501
326
|
},
|
327
|
+
|
502
328
|
enumerable: true,
|
503
329
|
configurable: true
|
504
330
|
});
|
@@ -507,50 +333,19 @@ function withCreevey() {
|
|
507
333
|
});
|
508
334
|
}
|
509
335
|
|
510
|
-
function capture(
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
return _context5.abrupt("return");
|
526
|
-
|
527
|
-
case 2:
|
528
|
-
captureResolver();
|
529
|
-
waitForCreevey = new Promise(function (resolve) {
|
530
|
-
return creeveyReady = resolve;
|
531
|
-
});
|
532
|
-
_context5.next = 6;
|
533
|
-
return fetch("http://".concat((0, _helpers.getConnectionUrl)(), "/capture"), {
|
534
|
-
method: 'POST',
|
535
|
-
headers: {
|
536
|
-
'Content-Type': 'application/json'
|
537
|
-
},
|
538
|
-
body: JSON.stringify({
|
539
|
-
workerId: window.__CREEVEY_WORKER_ID__,
|
540
|
-
options: options
|
541
|
-
})
|
542
|
-
});
|
543
|
-
|
544
|
-
case 6:
|
545
|
-
_context5.next = 8;
|
546
|
-
return waitForCreevey;
|
547
|
-
|
548
|
-
case 8:
|
549
|
-
case "end":
|
550
|
-
return _context5.stop();
|
551
|
-
}
|
552
|
-
}
|
553
|
-
}, _callee5);
|
554
|
-
}));
|
555
|
-
return _capture.apply(this, arguments);
|
336
|
+
async function capture(options) {
|
337
|
+
if (!isTestBrowser) return;
|
338
|
+
captureResolver();
|
339
|
+
waitForCreevey = new Promise(resolve => creeveyReady = resolve);
|
340
|
+
await fetch("http://".concat((0, _helpers.getConnectionUrl)(), "/capture"), {
|
341
|
+
method: 'POST',
|
342
|
+
headers: {
|
343
|
+
'Content-Type': 'application/json'
|
344
|
+
},
|
345
|
+
body: JSON.stringify({
|
346
|
+
workerId: window.__CREEVEY_WORKER_ID__,
|
347
|
+
options
|
348
|
+
})
|
349
|
+
});
|
350
|
+
await waitForCreevey;
|
556
351
|
}
|