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.
Files changed (203) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +9 -1
  3. package/addon/README.md +3 -0
  4. package/addon/package.json +5 -0
  5. package/docs/config.md +29 -26
  6. package/jest.config.js +6 -0
  7. package/lib/cjs/client/addon/Manager.js +122 -270
  8. package/lib/cjs/client/addon/components/Addon.js +17 -38
  9. package/lib/cjs/client/addon/components/Icons.js +11 -7
  10. package/lib/cjs/client/addon/components/Panel.js +17 -13
  11. package/lib/cjs/client/addon/components/TestSelect.js +11 -9
  12. package/lib/cjs/client/addon/components/Tools.js +22 -41
  13. package/lib/cjs/client/addon/decorator.js +1 -1
  14. package/lib/cjs/client/addon/index.js +31 -0
  15. package/lib/cjs/client/addon/preset.ie11.js +74 -0
  16. package/lib/cjs/client/addon/preset.js +4 -68
  17. package/lib/cjs/client/addon/preset.sb7.js +19 -0
  18. package/lib/cjs/client/addon/preview.js +14 -0
  19. package/lib/cjs/client/addon/register.js +46 -70
  20. package/lib/cjs/client/addon/utils.js +6 -2
  21. package/lib/cjs/client/addon/withCreevey.js +161 -366
  22. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +23 -21
  23. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +22 -18
  24. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +42 -64
  25. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +35 -48
  26. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +24 -43
  27. package/lib/cjs/client/shared/components/ImagesView/index.js +9 -9
  28. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +12 -8
  29. package/lib/cjs/client/shared/components/PageFooter/Paging.js +14 -18
  30. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +22 -18
  31. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +42 -67
  32. package/lib/cjs/client/shared/components/ResultsPage.js +39 -69
  33. package/lib/cjs/client/shared/creeveyClientApi.js +55 -82
  34. package/lib/cjs/client/shared/helpers.js +139 -210
  35. package/lib/cjs/client/shared/viewMode.js +5 -5
  36. package/lib/cjs/client/web/142.js +2 -0
  37. package/lib/cjs/client/web/142.js.LICENSE.txt +12 -0
  38. package/lib/cjs/client/web/32.js +1 -0
  39. package/lib/cjs/client/web/551.js +1 -0
  40. package/lib/cjs/client/web/566.js +2 -0
  41. package/lib/cjs/client/web/566.js.LICENSE.txt +31 -0
  42. package/lib/cjs/client/web/691.js +2 -0
  43. package/lib/cjs/client/web/691.js.LICENSE.txt +8 -0
  44. package/lib/cjs/client/web/725.js +1 -0
  45. package/lib/cjs/client/web/main.js +2 -38
  46. package/lib/cjs/client/web/main.js.LICENSE.txt +49 -0
  47. package/lib/cjs/creevey.js +3 -5
  48. package/lib/cjs/index.js +5 -5
  49. package/lib/cjs/server/config.js +3 -5
  50. package/lib/cjs/server/docker.js +3 -7
  51. package/lib/cjs/server/extract.js +1 -5
  52. package/lib/cjs/server/index.js +1 -1
  53. package/lib/cjs/server/loaders/babel/creevey-plugin.js +1 -3
  54. package/lib/cjs/server/loaders/babel/helpers.js +13 -23
  55. package/lib/cjs/server/loaders/babel/register.js +2 -4
  56. package/lib/cjs/server/loaders/webpack/compile.js +34 -51
  57. package/lib/cjs/server/loaders/webpack/creevey-loader.js +20 -22
  58. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +2 -7
  59. package/lib/cjs/server/loaders/webpack/mdx-loader.js +2 -2
  60. package/lib/cjs/server/loaders/webpack/start.js +1 -1
  61. package/lib/cjs/server/logger.js +2 -1
  62. package/lib/cjs/server/master/index.js +2 -2
  63. package/lib/cjs/server/master/pool.js +9 -18
  64. package/lib/cjs/server/master/runner.js +53 -66
  65. package/lib/cjs/server/master/server.js +5 -3
  66. package/lib/cjs/server/messages.js +8 -10
  67. package/lib/cjs/server/selenium/browser.js +58 -70
  68. package/lib/cjs/server/selenium/selenoid.js +5 -7
  69. package/lib/cjs/server/stories.js +16 -33
  70. package/lib/cjs/server/storybook/entry.js +7 -22
  71. package/lib/cjs/server/storybook/helpers.js +21 -28
  72. package/lib/cjs/server/storybook/providers/browser.js +10 -14
  73. package/lib/cjs/server/storybook/providers/hybrid.js +17 -14
  74. package/lib/cjs/server/storybook/providers/nodejs.js +12 -12
  75. package/lib/cjs/server/{parser.js → testsFiles/parser.js} +1 -14
  76. package/lib/cjs/server/testsFiles/register.js +44 -0
  77. package/lib/cjs/server/update.js +1 -5
  78. package/lib/cjs/server/utils.js +27 -36
  79. package/lib/cjs/server/worker/reporter.js +8 -20
  80. package/lib/cjs/server/worker/worker.js +9 -19
  81. package/lib/cjs/shared/index.js +101 -0
  82. package/lib/cjs/shared/serializeRegExp.js +42 -0
  83. package/lib/cjs/types.js +7 -6
  84. package/lib/esm/client/addon/Manager.js +122 -270
  85. package/lib/esm/client/addon/components/Addon.js +15 -34
  86. package/lib/esm/client/addon/components/Icons.js +10 -6
  87. package/lib/esm/client/addon/components/Panel.js +17 -13
  88. package/lib/esm/client/addon/components/TestSelect.js +11 -9
  89. package/lib/esm/client/addon/components/Tools.js +20 -37
  90. package/lib/esm/client/addon/decorator.js +1 -1
  91. package/lib/esm/client/addon/index.js +2 -0
  92. package/lib/esm/client/addon/preset.ie11.js +59 -0
  93. package/lib/esm/client/addon/preset.js +4 -52
  94. package/lib/esm/client/addon/preset.sb7.js +8 -0
  95. package/lib/esm/client/addon/preview.js +5 -0
  96. package/lib/esm/client/addon/register.js +42 -66
  97. package/lib/esm/client/addon/utils.js +3 -2
  98. package/lib/esm/client/addon/withCreevey.js +156 -363
  99. package/lib/esm/client/shared/components/ImagesView/BlendView.js +21 -17
  100. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +21 -17
  101. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +40 -60
  102. package/lib/esm/client/shared/components/ImagesView/SlideView.js +33 -44
  103. package/lib/esm/client/shared/components/ImagesView/SwapView.js +22 -39
  104. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +12 -8
  105. package/lib/esm/client/shared/components/PageFooter/Paging.js +14 -18
  106. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +22 -18
  107. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +37 -60
  108. package/lib/esm/client/shared/components/ResultsPage.js +36 -64
  109. package/lib/esm/client/shared/creeveyClientApi.js +57 -84
  110. package/lib/esm/client/shared/helpers.js +123 -194
  111. package/lib/esm/client/shared/viewMode.js +4 -4
  112. package/lib/esm/creevey.js +3 -5
  113. package/lib/esm/index.js +2 -4
  114. package/lib/esm/server/config.js +3 -5
  115. package/lib/esm/server/docker.js +2 -2
  116. package/lib/esm/server/extract.js +1 -3
  117. package/lib/esm/server/index.js +1 -1
  118. package/lib/esm/server/loaders/babel/creevey-plugin.js +1 -3
  119. package/lib/esm/server/loaders/babel/helpers.js +12 -22
  120. package/lib/esm/server/loaders/babel/register.js +3 -5
  121. package/lib/esm/server/loaders/webpack/compile.js +35 -52
  122. package/lib/esm/server/loaders/webpack/creevey-loader.js +9 -10
  123. package/lib/esm/server/loaders/webpack/dummy-hmr.js +2 -6
  124. package/lib/esm/server/loaders/webpack/mdx-loader.js +2 -2
  125. package/lib/esm/server/loaders/webpack/start.js +1 -1
  126. package/lib/esm/server/master/index.js +2 -2
  127. package/lib/esm/server/master/pool.js +7 -18
  128. package/lib/esm/server/master/runner.js +53 -66
  129. package/lib/esm/server/master/server.js +5 -3
  130. package/lib/esm/server/messages.js +3 -5
  131. package/lib/esm/server/selenium/browser.js +54 -66
  132. package/lib/esm/server/selenium/selenoid.js +4 -6
  133. package/lib/esm/server/stories.js +16 -32
  134. package/lib/esm/server/storybook/entry.js +5 -22
  135. package/lib/esm/server/storybook/helpers.js +12 -21
  136. package/lib/esm/server/storybook/providers/browser.js +6 -9
  137. package/lib/esm/server/storybook/providers/hybrid.js +10 -13
  138. package/lib/esm/server/storybook/providers/nodejs.js +10 -11
  139. package/lib/esm/server/{parser.js → testsFiles/parser.js} +1 -14
  140. package/lib/esm/server/testsFiles/register.js +31 -0
  141. package/lib/esm/server/update.js +1 -5
  142. package/lib/esm/server/utils.js +18 -31
  143. package/lib/esm/server/worker/reporter.js +8 -20
  144. package/lib/esm/server/worker/worker.js +9 -19
  145. package/lib/esm/shared/index.js +78 -0
  146. package/lib/esm/shared/serializeRegExp.js +24 -0
  147. package/lib/esm/types.js +1 -0
  148. package/lib/types/client/addon/Manager.d.ts +2 -2
  149. package/lib/types/client/addon/components/TestSelect.d.ts +0 -1
  150. package/lib/types/client/addon/index.d.ts +2 -0
  151. package/lib/types/client/addon/preset.d.ts +0 -22
  152. package/lib/types/client/addon/preset.ie11.d.ts +10 -0
  153. package/lib/types/client/addon/preset.sb7.d.ts +2 -0
  154. package/lib/types/client/addon/preview.d.ts +4 -0
  155. package/lib/types/client/addon/utils.d.ts +1 -0
  156. package/lib/types/client/addon/withCreevey.d.ts +1 -1
  157. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +1 -1
  158. package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +0 -1
  159. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +1 -1
  160. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +1 -1
  161. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +1 -1
  162. package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +0 -1
  163. package/lib/types/client/shared/components/PageFooter/Paging.d.ts +0 -1
  164. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +1 -1
  165. package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +0 -1
  166. package/lib/types/client/shared/components/ResultsPage.d.ts +1 -1
  167. package/lib/types/client/web/CreeveyApp.d.ts +0 -1
  168. package/lib/types/client/web/CreeveyLoader.d.ts +1 -2
  169. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +1 -1
  170. package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +0 -1
  171. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +4 -4
  172. package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +0 -1
  173. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +1 -1
  174. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +1 -1
  175. package/lib/types/index.d.ts +4 -2
  176. package/lib/types/server/config.d.ts +1 -1
  177. package/lib/types/server/loaders/babel/register.d.ts +1 -1
  178. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +4 -2
  179. package/lib/types/server/logger.d.ts +6 -2
  180. package/lib/types/server/messages.d.ts +13 -12
  181. package/lib/types/server/selenium/browser.d.ts +5 -3
  182. package/lib/types/server/storybook/entry.d.ts +2 -3
  183. package/lib/types/server/storybook/helpers.d.ts +1 -1
  184. package/lib/types/server/storybook/providers/browser.d.ts +2 -4
  185. package/lib/types/server/storybook/providers/hybrid.d.ts +2 -4
  186. package/lib/types/server/storybook/providers/nodejs.d.ts +3 -3
  187. package/lib/types/server/{parser.d.ts → testsFiles/parser.d.ts} +1 -1
  188. package/lib/types/server/testsFiles/register.d.ts +2 -0
  189. package/lib/types/server/utils.d.ts +5 -1
  190. package/lib/types/{shared.d.ts → shared/index.d.ts} +1 -10
  191. package/lib/types/shared/serializeRegExp.d.ts +9 -0
  192. package/lib/types/types.d.ts +7 -9
  193. package/package.json +119 -102
  194. package/preset/ie11.js +5 -0
  195. package/{preset.js → preset/index.js} +2 -2
  196. package/preset/sb7.js +5 -0
  197. package/types/global.d.ts +5 -0
  198. package/types/mdx.d.ts +3 -2
  199. package/lib/cjs/client/web/1.js +0 -13
  200. package/lib/cjs/client/web/2.js +0 -1
  201. package/lib/cjs/shared.js +0 -107
  202. package/lib/esm/shared.js +0 -76
  203. package/storybook-static/stories.json +0 -21
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = _default;
6
+ exports.default = loader;
7
7
 
8
8
  var _path = _interopRequireDefault(require("path"));
9
9
 
@@ -19,19 +19,17 @@ var _traverse = _interopRequireDefault(require("@babel/traverse"));
19
19
 
20
20
  var _generator = _interopRequireDefault(require("@babel/generator"));
21
21
 
22
- var _helpers = require("../../storybook/helpers");
23
-
24
- var _helpers2 = require("../babel/helpers");
22
+ var _helpers = require("../babel/helpers");
25
23
 
26
24
  var _logger = require("../../logger");
27
25
 
28
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
27
 
30
28
  function transform(ast) {
31
- (0, _traverse.default)(ast, { ..._helpers2.commonVisitor,
32
- ...(fileType == _helpers2.FileType.Preview ? _helpers2.previewVisitor : undefined),
33
- ...(fileType == _helpers2.FileType.Story ? _helpers2.storyVisitor : undefined),
34
- ...(isMDX ? _helpers2.mdxVisitor : undefined)
29
+ (0, _traverse.default)(ast, { ..._helpers.commonVisitor,
30
+ ...(fileType == _helpers.FileType.Preview ? _helpers.previewVisitor : undefined),
31
+ ...(fileType == _helpers.FileType.Story ? _helpers.storyVisitor : undefined),
32
+ ...(isMDX ? _helpers.mdxVisitor : undefined)
35
33
  }, undefined, {
36
34
  resourcePath,
37
35
  fileType,
@@ -76,11 +74,6 @@ function isPreview(context, options) {
76
74
 
77
75
  const storybookDir = typeof options.storybookDir == 'string' ? toPosix(options.storybookDir) : '';
78
76
  const isConfigFile = resourceDir == storybookDir && (resourceName == 'preview' || resourceName == 'config');
79
-
80
- if ((0, _helpers.isStorybookVersionLessThan)(6)) {
81
- return isEntry(context) && isConfigFile;
82
- }
83
-
84
77
  const issuerResource = getIssuerResource(context);
85
78
  return Boolean(issuerResource && entries.has(issuerResource) && isConfigFile);
86
79
  }
@@ -105,39 +98,44 @@ const schema = {
105
98
  }
106
99
  }
107
100
  };
108
- let fileType = _helpers2.FileType.Invalid;
101
+ let fileType = _helpers.FileType.Invalid;
109
102
  let isMDX = false;
110
103
  let previewPath = '';
111
104
  let resourcePath = '';
112
105
  const entries = new Set();
113
106
  const stories = new Set();
114
107
  const reexportedStories = new Map();
115
- const isTest = process.env.__CREEVEY_ENV__ == 'test';
108
+
109
+ const isTest = () => process.env.__CREEVEY_ENV__ == 'test';
110
+
116
111
  const defaultOptions = {
117
- debug: isTest,
112
+ get debug() {
113
+ return isTest();
114
+ },
115
+
118
116
  storybookDir: process.cwd()
119
117
  };
120
118
 
121
- function _default(source) {
119
+ function loader(source) {
122
120
  const options = this ? (0, _loaderUtils.getOptions)(this) || defaultOptions : defaultOptions;
123
121
  (0, _schemaUtils.validate)(schema, options, {
124
122
  name: 'Creevey Stories Loader'
125
123
  });
126
- fileType = _helpers2.FileType.Invalid;
124
+ fileType = _helpers.FileType.Invalid;
127
125
 
128
126
  if (this) {
129
127
  const issuerResource = getIssuerResource(this);
130
128
  resourcePath = this.resourcePath;
131
129
 
132
130
  if (isStoryFile(this)) {
133
- fileType = _helpers2.FileType.Story;
131
+ fileType = _helpers.FileType.Story;
134
132
  isMDX = _path.default.parse(resourcePath).ext == '.mdx';
135
133
  stories.add(this.resourcePath);
136
134
  } else if (isPreview(this, options)) {
137
- fileType = _helpers2.FileType.Preview;
135
+ fileType = _helpers.FileType.Preview;
138
136
  previewPath = this.resourcePath;
139
137
  } else if (isEntry(this)) {
140
- fileType = _helpers2.FileType.Entry;
138
+ fileType = _helpers.FileType.Entry;
141
139
  entries.add(this.resourcePath);
142
140
  return source;
143
141
  } else if (issuerResource && stories.has(issuerResource) && options.debug) {
@@ -146,7 +144,7 @@ function _default(source) {
146
144
  }
147
145
  }
148
146
 
149
- if (isTest && !Number.isNaN(Number(process.env.CREEVEY_LOADER_FILE_TYPE))) {
147
+ if (isTest() && !Number.isNaN(Number(process.env.CREEVEY_LOADER_FILE_TYPE))) {
150
148
  fileType = Number(process.env.CREEVEY_LOADER_FILE_TYPE);
151
149
  }
152
150
 
@@ -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] = (_global$__CREEVEY_HMR2 = global.__CREEVEY_HMR_DATA__[module.i]) !== null && _global$__CREEVEY_HMR2 !== void 0 ? _global$__CREEVEY_HMR2 : {
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.isStorybookVersionLessThan)(6, 2) ? (0, _helpers.resolveFromStorybookCore)('babel-loader') : (0, _helpers.resolveFromStorybookBuilderWebpack4)('babel-loader'),
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':
@@ -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 = exports.colors = void 0;
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 _runner$status$tests, _runner6;
129
+ var _runner6;
130
130
 
131
- const tests = Object.values((_runner$status$tests = (_runner6 = runner) === null || _runner6 === void 0 ? void 0 : _runner6.status.tests) !== null && _runner$status$tests !== void 0 ? _runner$status$tests : {});
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 = _interopRequireDefault(require("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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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 _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; }
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.default.Worker);
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.default.Worker)) throw new Error(`Can't instantiate worker for ${this.browser} due many errors`);
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
- _defineProperty(this, "failFast", void 0);
36
-
37
- _defineProperty(this, "screenDir", void 0);
38
-
39
- _defineProperty(this, "reportDir", void 0);
40
-
41
- _defineProperty(this, "browsers", void 0);
42
-
43
- _defineProperty(this, "pools", {});
44
-
45
- _defineProperty(this, "tests", {});
46
-
47
- _defineProperty(this, "handlePoolMessage", message => {
48
- const {
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
- if (!test.results) {
81
- test.results = [];
82
- }
57
+ test.status = status == 'retrying' ? 'failed' : status;
83
58
 
84
- test.results.push(result);
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
- if (this.failFast && status == 'failed') this.stop();
99
- });
72
+ return;
73
+ }
100
74
 
101
- _defineProperty(this, "handlePoolStop", () => {
102
- if (!this.isRunning) {
103
- this.sendUpdate({
104
- isRunning: false
105
- });
106
- this.emit('stop');
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
- this.failFast = config.failFast;
111
- this.screenDir = config.screenDir;
112
- this.reportDir = config.reportDir;
113
- this.browsers = Object.keys(config.browsers);
114
- this.browsers.map(browser => this.pools[browser] = new _pool.default(config, browser)).map(pool => pool.on('test', this.handlePoolMessage));
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 => api.handleMessage(ws, 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.emitWorkerMessage = emitWorkerMessage;
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.emitDockerMessage = emitDockerMessage;
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$send2, _process;
24
+ var _process$send, _process;
25
25
 
26
26
  if (_cluster.default.isWorker && !process.connected) return false;
27
- return (_process$send = (_process$send2 = (_process = process).send) === null || _process$send2 === void 0 ? void 0 : _process$send2.call(_process, message)) !== null && _process$send !== void 0 ? _process$send : // @ts-expect-error: wrong typings `process.emit` return boolean
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
- var _workers$get;
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);