creevey 0.8.1-beta.1 → 0.8.1-sb7.1

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 (242) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/package.json +22 -19
  3. package/lib/cjs/cli.js +0 -5
  4. package/lib/cjs/client/addon/Manager.js +0 -264
  5. package/lib/cjs/client/addon/components/Addon.js +0 -55
  6. package/lib/cjs/client/addon/components/Icons.js +0 -46
  7. package/lib/cjs/client/addon/components/Panel.js +0 -72
  8. package/lib/cjs/client/addon/components/TestSelect.js +0 -65
  9. package/lib/cjs/client/addon/components/Tools.js +0 -95
  10. package/lib/cjs/client/addon/decorator.js +0 -11
  11. package/lib/cjs/client/addon/index.js +0 -31
  12. package/lib/cjs/client/addon/preset.ie11.js +0 -74
  13. package/lib/cjs/client/addon/preset.js +0 -62
  14. package/lib/cjs/client/addon/readyForCapture.js +0 -12
  15. package/lib/cjs/client/addon/register.js +0 -72
  16. package/lib/cjs/client/addon/utils.js +0 -42
  17. package/lib/cjs/client/addon/withCreevey.js +0 -350
  18. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +0 -87
  19. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +0 -92
  20. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +0 -154
  21. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +0 -166
  22. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +0 -91
  23. package/lib/cjs/client/shared/components/ImagesView/index.js +0 -45
  24. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +0 -50
  25. package/lib/cjs/client/shared/components/PageFooter/Paging.js +0 -94
  26. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +0 -82
  27. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +0 -119
  28. package/lib/cjs/client/shared/components/ResultsPage.js +0 -143
  29. package/lib/cjs/client/shared/creeveyClientApi.js +0 -76
  30. package/lib/cjs/client/shared/helpers.js +0 -411
  31. package/lib/cjs/client/shared/viewMode.js +0 -17
  32. package/lib/cjs/client/web/142.js +0 -2
  33. package/lib/cjs/client/web/142.js.LICENSE.txt +0 -12
  34. package/lib/cjs/client/web/32.js +0 -1
  35. package/lib/cjs/client/web/551.js +0 -1
  36. package/lib/cjs/client/web/566.js +0 -2
  37. package/lib/cjs/client/web/566.js.LICENSE.txt +0 -31
  38. package/lib/cjs/client/web/691.js +0 -2
  39. package/lib/cjs/client/web/691.js.LICENSE.txt +0 -8
  40. package/lib/cjs/client/web/725.js +0 -1
  41. package/lib/cjs/client/web/index.html +0 -19
  42. package/lib/cjs/client/web/main.js +0 -2
  43. package/lib/cjs/client/web/main.js.LICENSE.txt +0 -49
  44. package/lib/cjs/creevey.js +0 -69
  45. package/lib/cjs/index.js +0 -39
  46. package/lib/cjs/server/config.js +0 -93
  47. package/lib/cjs/server/docker.js +0 -146
  48. package/lib/cjs/server/extract.js +0 -46
  49. package/lib/cjs/server/index.js +0 -83
  50. package/lib/cjs/server/loaders/babel/creevey-plugin.js +0 -86
  51. package/lib/cjs/server/loaders/babel/helpers.js +0 -469
  52. package/lib/cjs/server/loaders/babel/register.js +0 -124
  53. package/lib/cjs/server/loaders/hooks/mdx.js +0 -30
  54. package/lib/cjs/server/loaders/hooks/svelte.js +0 -65
  55. package/lib/cjs/server/loaders/webpack/compile.js +0 -269
  56. package/lib/cjs/server/loaders/webpack/creevey-loader.js +0 -172
  57. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +0 -39
  58. package/lib/cjs/server/loaders/webpack/mdx-loader.js +0 -72
  59. package/lib/cjs/server/loaders/webpack/start.js +0 -41
  60. package/lib/cjs/server/logger.js +0 -48
  61. package/lib/cjs/server/master/api.js +0 -71
  62. package/lib/cjs/server/master/index.js +0 -152
  63. package/lib/cjs/server/master/master.js +0 -57
  64. package/lib/cjs/server/master/pool.js +0 -197
  65. package/lib/cjs/server/master/runner.js +0 -281
  66. package/lib/cjs/server/master/server.js +0 -131
  67. package/lib/cjs/server/messages.js +0 -264
  68. package/lib/cjs/server/selenium/browser.js +0 -656
  69. package/lib/cjs/server/selenium/index.js +0 -31
  70. package/lib/cjs/server/selenium/selenoid.js +0 -172
  71. package/lib/cjs/server/stories.js +0 -153
  72. package/lib/cjs/server/storybook/entry.js +0 -53
  73. package/lib/cjs/server/storybook/helpers.js +0 -158
  74. package/lib/cjs/server/storybook/providers/browser.js +0 -74
  75. package/lib/cjs/server/storybook/providers/nodejs.js +0 -239
  76. package/lib/cjs/server/update.js +0 -79
  77. package/lib/cjs/server/utils.js +0 -169
  78. package/lib/cjs/server/worker/chai-image.js +0 -142
  79. package/lib/cjs/server/worker/helpers.js +0 -69
  80. package/lib/cjs/server/worker/index.js +0 -15
  81. package/lib/cjs/server/worker/reporter.js +0 -108
  82. package/lib/cjs/server/worker/worker.js +0 -268
  83. package/lib/cjs/shared/index.js +0 -101
  84. package/lib/cjs/shared/serializeRegExp.js +0 -42
  85. package/lib/cjs/types.js +0 -74
  86. package/lib/esm/cli.js +0 -4
  87. package/lib/esm/client/addon/Manager.js +0 -248
  88. package/lib/esm/client/addon/components/Addon.js +0 -39
  89. package/lib/esm/client/addon/components/Icons.js +0 -31
  90. package/lib/esm/client/addon/components/Panel.js +0 -53
  91. package/lib/esm/client/addon/components/TestSelect.js +0 -51
  92. package/lib/esm/client/addon/components/Tools.js +0 -74
  93. package/lib/esm/client/addon/decorator.js +0 -2
  94. package/lib/esm/client/addon/index.js +0 -2
  95. package/lib/esm/client/addon/preset.ie11.js +0 -59
  96. package/lib/esm/client/addon/preset.js +0 -41
  97. package/lib/esm/client/addon/readyForCapture.js +0 -5
  98. package/lib/esm/client/addon/register.js +0 -51
  99. package/lib/esm/client/addon/utils.js +0 -32
  100. package/lib/esm/client/addon/withCreevey.js +0 -323
  101. package/lib/esm/client/shared/components/ImagesView/BlendView.js +0 -67
  102. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +0 -69
  103. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +0 -131
  104. package/lib/esm/client/shared/components/ImagesView/SlideView.js +0 -143
  105. package/lib/esm/client/shared/components/ImagesView/SwapView.js +0 -71
  106. package/lib/esm/client/shared/components/ImagesView/index.js +0 -5
  107. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +0 -36
  108. package/lib/esm/client/shared/components/PageFooter/Paging.js +0 -80
  109. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +0 -68
  110. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +0 -97
  111. package/lib/esm/client/shared/components/ResultsPage.js +0 -115
  112. package/lib/esm/client/shared/creeveyClientApi.js +0 -67
  113. package/lib/esm/client/shared/helpers.js +0 -353
  114. package/lib/esm/client/shared/viewMode.js +0 -6
  115. package/lib/esm/creevey.js +0 -54
  116. package/lib/esm/index.js +0 -3
  117. package/lib/esm/server/config.js +0 -70
  118. package/lib/esm/server/docker.js +0 -123
  119. package/lib/esm/server/extract.js +0 -32
  120. package/lib/esm/server/index.js +0 -64
  121. package/lib/esm/server/loaders/babel/creevey-plugin.js +0 -72
  122. package/lib/esm/server/loaders/babel/helpers.js +0 -452
  123. package/lib/esm/server/loaders/babel/register.js +0 -103
  124. package/lib/esm/server/loaders/hooks/mdx.js +0 -15
  125. package/lib/esm/server/loaders/hooks/svelte.js +0 -49
  126. package/lib/esm/server/loaders/webpack/compile.js +0 -246
  127. package/lib/esm/server/loaders/webpack/creevey-loader.js +0 -152
  128. package/lib/esm/server/loaders/webpack/dummy-hmr.js +0 -32
  129. package/lib/esm/server/loaders/webpack/mdx-loader.js +0 -58
  130. package/lib/esm/server/loaders/webpack/start.js +0 -27
  131. package/lib/esm/server/logger.js +0 -20
  132. package/lib/esm/server/master/api.js +0 -60
  133. package/lib/esm/server/master/index.js +0 -131
  134. package/lib/esm/server/master/master.js +0 -38
  135. package/lib/esm/server/master/pool.js +0 -176
  136. package/lib/esm/server/master/runner.js +0 -259
  137. package/lib/esm/server/master/server.js +0 -107
  138. package/lib/esm/server/messages.js +0 -232
  139. package/lib/esm/server/selenium/browser.js +0 -623
  140. package/lib/esm/server/selenium/index.js +0 -2
  141. package/lib/esm/server/selenium/selenoid.js +0 -149
  142. package/lib/esm/server/stories.js +0 -135
  143. package/lib/esm/server/storybook/entry.js +0 -27
  144. package/lib/esm/server/storybook/helpers.js +0 -97
  145. package/lib/esm/server/storybook/providers/browser.js +0 -58
  146. package/lib/esm/server/storybook/providers/nodejs.js +0 -216
  147. package/lib/esm/server/update.js +0 -61
  148. package/lib/esm/server/utils.js +0 -128
  149. package/lib/esm/server/worker/chai-image.js +0 -130
  150. package/lib/esm/server/worker/helpers.js +0 -60
  151. package/lib/esm/server/worker/index.js +0 -1
  152. package/lib/esm/server/worker/reporter.js +0 -86
  153. package/lib/esm/server/worker/worker.js +0 -238
  154. package/lib/esm/shared/index.js +0 -78
  155. package/lib/esm/shared/serializeRegExp.js +0 -24
  156. package/lib/esm/types.js +0 -43
  157. package/lib/types/cli.d.ts +0 -1
  158. package/lib/types/client/addon/Manager.d.ts +0 -37
  159. package/lib/types/client/addon/components/Addon.d.ts +0 -8
  160. package/lib/types/client/addon/components/Icons.d.ts +0 -7
  161. package/lib/types/client/addon/components/Panel.d.ts +0 -9
  162. package/lib/types/client/addon/components/TestSelect.d.ts +0 -8
  163. package/lib/types/client/addon/components/Tools.d.ts +0 -6
  164. package/lib/types/client/addon/decorator.d.ts +0 -1
  165. package/lib/types/client/addon/index.d.ts +0 -2
  166. package/lib/types/client/addon/preset.d.ts +0 -23
  167. package/lib/types/client/addon/preset.ie11.d.ts +0 -10
  168. package/lib/types/client/addon/readyForCapture.d.ts +0 -6
  169. package/lib/types/client/addon/register.d.ts +0 -3
  170. package/lib/types/client/addon/utils.d.ts +0 -3
  171. package/lib/types/client/addon/withCreevey.d.ts +0 -24
  172. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +0 -3
  173. package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +0 -24
  174. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +0 -3
  175. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +0 -3
  176. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +0 -3
  177. package/lib/types/client/shared/components/ImagesView/index.d.ts +0 -5
  178. package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +0 -8
  179. package/lib/types/client/shared/components/PageFooter/Paging.d.ts +0 -7
  180. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +0 -12
  181. package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +0 -16
  182. package/lib/types/client/shared/components/ResultsPage.d.ts +0 -18
  183. package/lib/types/client/shared/creeveyClientApi.d.ts +0 -9
  184. package/lib/types/client/shared/helpers.d.ts +0 -46
  185. package/lib/types/client/shared/viewMode.d.ts +0 -4
  186. package/lib/types/client/web/CreeveyApp.d.ts +0 -11
  187. package/lib/types/client/web/CreeveyContext.d.ts +0 -11
  188. package/lib/types/client/web/CreeveyLoader.d.ts +0 -2
  189. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +0 -19
  190. package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +0 -6
  191. package/lib/types/client/web/CreeveyView/SideBar/SideBar.d.ts +0 -14
  192. package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +0 -12
  193. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +0 -33
  194. package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +0 -7
  195. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +0 -10
  196. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +0 -9
  197. package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +0 -6
  198. package/lib/types/client/web/CreeveyView/SideBar/index.d.ts +0 -1
  199. package/lib/types/client/web/KeyboardEventsContext.d.ts +0 -13
  200. package/lib/types/client/web/index.d.ts +0 -4
  201. package/lib/types/creevey.d.ts +0 -1
  202. package/lib/types/index.d.ts +0 -2
  203. package/lib/types/server/config.d.ts +0 -4
  204. package/lib/types/server/docker.d.ts +0 -7
  205. package/lib/types/server/extract.d.ts +0 -2
  206. package/lib/types/server/index.d.ts +0 -2
  207. package/lib/types/server/loaders/babel/creevey-plugin.d.ts +0 -1
  208. package/lib/types/server/loaders/babel/helpers.d.ts +0 -19
  209. package/lib/types/server/loaders/babel/register.d.ts +0 -5
  210. package/lib/types/server/loaders/hooks/mdx.d.ts +0 -1
  211. package/lib/types/server/loaders/hooks/svelte.d.ts +0 -1
  212. package/lib/types/server/loaders/webpack/compile.d.ts +0 -2
  213. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +0 -4
  214. package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +0 -10
  215. package/lib/types/server/loaders/webpack/mdx-loader.d.ts +0 -6
  216. package/lib/types/server/loaders/webpack/start.d.ts +0 -1
  217. package/lib/types/server/logger.d.ts +0 -10
  218. package/lib/types/server/master/api.d.ts +0 -7
  219. package/lib/types/server/master/index.d.ts +0 -3
  220. package/lib/types/server/master/master.d.ts +0 -7
  221. package/lib/types/server/master/pool.d.ts +0 -31
  222. package/lib/types/server/master/runner.d.ts +0 -26
  223. package/lib/types/server/master/server.d.ts +0 -2
  224. package/lib/types/server/messages.d.ts +0 -29
  225. package/lib/types/server/selenium/browser.d.ts +0 -19
  226. package/lib/types/server/selenium/index.d.ts +0 -2
  227. package/lib/types/server/selenium/selenoid.d.ts +0 -3
  228. package/lib/types/server/stories.d.ts +0 -8
  229. package/lib/types/server/storybook/entry.d.ts +0 -17
  230. package/lib/types/server/storybook/helpers.d.ts +0 -24
  231. package/lib/types/server/storybook/providers/browser.d.ts +0 -2
  232. package/lib/types/server/storybook/providers/nodejs.d.ts +0 -6
  233. package/lib/types/server/update.d.ts +0 -2
  234. package/lib/types/server/utils.d.ts +0 -23
  235. package/lib/types/server/worker/chai-image.d.ts +0 -6
  236. package/lib/types/server/worker/helpers.d.ts +0 -8
  237. package/lib/types/server/worker/index.d.ts +0 -1
  238. package/lib/types/server/worker/reporter.d.ts +0 -8
  239. package/lib/types/server/worker/worker.d.ts +0 -4
  240. package/lib/types/shared/index.d.ts +0 -7
  241. package/lib/types/shared/serializeRegExp.d.ts +0 -9
  242. package/lib/types/types.d.ts +0 -486
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.colors = void 0;
7
- Object.defineProperty(exports, "getLogger", {
8
- enumerable: true,
9
- get: function () {
10
- return _loglevel.getLogger;
11
- }
12
- });
13
- exports.logger = void 0;
14
-
15
- var _chalk = _interopRequireDefault(require("chalk"));
16
-
17
- var _loglevel = _interopRequireWildcard(require("loglevel"));
18
-
19
- var _loglevelPluginPrefix = _interopRequireDefault(require("loglevel-plugin-prefix"));
20
-
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); }
22
-
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; }
24
-
25
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
-
27
- const colors = {
28
- TRACE: _chalk.default.magenta,
29
- DEBUG: _chalk.default.cyan,
30
- INFO: _chalk.default.blue,
31
- WARN: _chalk.default.yellow,
32
- ERROR: _chalk.default.red
33
- };
34
- exports.colors = colors;
35
-
36
- _loglevelPluginPrefix.default.reg(_loglevel.default);
37
-
38
- _loglevelPluginPrefix.default.apply(_loglevel.default, {
39
- format(level, name = 'Creevey') {
40
- const levelColor = colors[level.toUpperCase()];
41
- return `[${name}:${_chalk.default.gray(process.pid)}] ${levelColor(level)} =>`;
42
- }
43
-
44
- });
45
-
46
- const logger = _loglevel.default.getLogger('Creevey');
47
-
48
- exports.logger = logger;
@@ -1,71 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = creeveyApi;
7
-
8
- var _ws = _interopRequireDefault(require("ws"));
9
-
10
- var _logger = require("../logger");
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- function broadcast(wss, message) {
15
- wss.clients.forEach(ws => {
16
- if (ws.readyState === _ws.default.OPEN) {
17
- ws.send(JSON.stringify(message));
18
- }
19
- });
20
- }
21
-
22
- function creeveyApi(runner) {
23
- return {
24
- subscribe(wss) {
25
- runner.on('update', payload => broadcast(wss, {
26
- type: 'update',
27
- payload
28
- }));
29
- },
30
-
31
- handleMessage(ws, message) {
32
- if (typeof message != 'string') {
33
- _logger.logger.info('unhandled message', message);
34
-
35
- return;
36
- }
37
-
38
- const command = JSON.parse(message);
39
-
40
- switch (command.type) {
41
- case 'status':
42
- {
43
- ws.send(JSON.stringify({
44
- type: 'status',
45
- payload: runner.status
46
- }));
47
- return;
48
- }
49
-
50
- case 'start':
51
- {
52
- runner.start(command.payload);
53
- return;
54
- }
55
-
56
- case 'stop':
57
- {
58
- runner.stop();
59
- return;
60
- }
61
-
62
- case 'approve':
63
- {
64
- void runner.approve(command.payload);
65
- return;
66
- }
67
- }
68
- }
69
-
70
- };
71
- }
@@ -1,152 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = _default;
7
-
8
- var _path = _interopRequireDefault(require("path"));
9
-
10
- var _fs = require("fs");
11
-
12
- var _util = require("util");
13
-
14
- var _master = _interopRequireDefault(require("./master"));
15
-
16
- var _api = _interopRequireDefault(require("./api"));
17
-
18
- var _types = require("../../types");
19
-
20
- var _utils = require("../utils");
21
-
22
- var _messages = require("../messages");
23
-
24
- var _logger = require("../logger");
25
-
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
-
28
- const copyFileAsync = (0, _util.promisify)(_fs.copyFile);
29
- const readdirAsync = (0, _util.promisify)(_fs.readdir);
30
- const mkdirAsync = (0, _util.promisify)(_fs.mkdir);
31
-
32
- async function copyStatics(reportDir) {
33
- const clientDir = _path.default.join(__dirname, '../../client/web');
34
-
35
- const files = (await readdirAsync(clientDir, {
36
- withFileTypes: true
37
- })).filter(dirent => dirent.isFile() && !dirent.name.endsWith('.d.ts') && !dirent.name.endsWith('.tsx')).map(dirent => dirent.name);
38
- await mkdirAsync(reportDir, {
39
- recursive: true
40
- });
41
-
42
- for (const file of files) {
43
- await copyFileAsync(_path.default.join(clientDir, file), _path.default.join(reportDir, file));
44
- }
45
- }
46
-
47
- function reportDataModule(data) {
48
- return `
49
- (function (root, factory) {
50
- if (typeof module === 'object' && module.exports) {
51
- module.exports = factory();
52
- } else {
53
- root.__CREEVEY_DATA__ = factory();
54
- }
55
- }(this, function () { return ${JSON.stringify(data)} }));
56
- `;
57
- }
58
-
59
- function readDirRecursive(dirPath) {
60
- return [].concat(...(0, _fs.readdirSync)(dirPath, {
61
- withFileTypes: true
62
- }).map(dirent => dirent.isDirectory() ? readDirRecursive(`${dirPath}/${dirent.name}`) : [`${dirPath}/${dirent.name}`]));
63
- }
64
-
65
- function outputUnnecessaryImages(imagesDir, images) {
66
- if (!(0, _fs.existsSync)(imagesDir)) return;
67
- const unnecessaryImages = readDirRecursive(imagesDir).map(imagePath => _path.default.posix.relative(imagesDir, imagePath)).filter(imagePath => !images.has(imagePath));
68
-
69
- if (unnecessaryImages.length > 0) {
70
- _logger.logger.warn('We found unnecessary screenshot images, those can be safely removed:\n', unnecessaryImages.join('\n'));
71
- }
72
- }
73
-
74
- async function _default(config, options, resolveApi) {
75
- let runner = null;
76
-
77
- if (config.hooks.before) {
78
- await config.hooks.before();
79
- }
80
-
81
- (0, _messages.subscribeOn)('shutdown', () => {
82
- var _config$hooks$after, _config$hooks;
83
-
84
- return (_config$hooks$after = (_config$hooks = config.hooks).after) === null || _config$hooks$after === void 0 ? void 0 : _config$hooks$after.call(_config$hooks);
85
- });
86
- process.removeListener('SIGINT', _utils.shutdown);
87
- process.on('SIGINT', () => {
88
- var _runner, _runner2;
89
-
90
- (_runner = runner) === null || _runner === void 0 ? void 0 : _runner.removeAllListeners('stop');
91
-
92
- if ((_runner2 = runner) !== null && _runner2 !== void 0 && _runner2.isRunning) {
93
- var _runner4;
94
-
95
- // TODO Better handle stop
96
- void Promise.race([new Promise(resolve => setTimeout(resolve, 10000)), new Promise(resolve => {
97
- var _runner3;
98
-
99
- return (_runner3 = runner) === null || _runner3 === void 0 ? void 0 : _runner3.once('stop', resolve);
100
- })]).then(() => (0, _utils.shutdownWorkers)());
101
- (_runner4 = runner) === null || _runner4 === void 0 ? void 0 : _runner4.stop();
102
- } else {
103
- void (0, _utils.shutdownWorkers)();
104
- }
105
- });
106
- runner = await (0, _master.default)(config, {
107
- watch: options.ui,
108
- debug: options.debug,
109
- port: options.port
110
- });
111
-
112
- if (options.saveReport) {
113
- await copyStatics(config.reportDir);
114
- runner.on('stop', () => {
115
- var _runner5;
116
-
117
- return (0, _fs.writeFileSync)(_path.default.join(config.reportDir, 'data.js'), reportDataModule((_runner5 = runner) === null || _runner5 === void 0 ? void 0 : _runner5.status.tests));
118
- });
119
- }
120
-
121
- if (options.ui) {
122
- resolveApi((0, _api.default)(runner));
123
-
124
- _logger.logger.info(`Started on http://localhost:${options.port}`);
125
- } else {
126
- if (Object.values(runner.status.tests).filter(test => test && !test.skip).length == 0) {
127
- _logger.logger.warn("Don't have any tests to run"); // eslint-disable-next-line no-process-exit
128
-
129
-
130
- void (0, _utils.shutdownWorkers)().then(() => process.exit());
131
- return;
132
- }
133
-
134
- runner.once('stop', () => {
135
- var _runner6;
136
-
137
- const tests = Object.values(((_runner6 = runner) === null || _runner6 === void 0 ? void 0 : _runner6.status.tests) ?? {});
138
- const isSuccess = tests.filter(_types.isDefined).filter(({
139
- skip
140
- }) => !skip).every(({
141
- status
142
- }) => status == 'success'); // TODO output summary
143
-
144
- process.exitCode = isSuccess ? 0 : -1;
145
- if (!config.failFast) outputUnnecessaryImages(config.screenDir, (0, _utils.testsToImages)(tests)); // eslint-disable-next-line no-process-exit
146
-
147
- void (0, _utils.shutdownWorkers)().then(() => process.exit());
148
- }); // TODO grep
149
-
150
- runner.start(Object.keys(runner.status.tests));
151
- }
152
- }
@@ -1,57 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = master;
7
-
8
- var _path = _interopRequireDefault(require("path"));
9
-
10
- var _types = require("../../types");
11
-
12
- var _stories = require("../stories");
13
-
14
- var _runner = _interopRequireDefault(require("./runner"));
15
-
16
- var _start = require("../loaders/webpack/start");
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
- 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); }
21
-
22
- 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; }
23
-
24
- function mergeTests(testsWithReports, testsFromStories) {
25
- Object.values(testsFromStories).filter(_types.isDefined).forEach(test => {
26
- const testWithReport = testsWithReports[test.id];
27
- if (!testWithReport) return;
28
- test.retries = testWithReport.retries;
29
- if (testWithReport.status == 'success' || testWithReport.status == 'failed') test.status = testWithReport.status;
30
- test.results = testWithReport.results;
31
- test.approved = testWithReport.approved;
32
- });
33
- return testsFromStories;
34
- }
35
-
36
- async function master(config, options) {
37
- if (config.useWebpackToExtractTests) await (0, _start.startWebpackCompiler)();
38
- const runner = new _runner.default(config);
39
-
40
- const reportDataPath = _path.default.join(config.reportDir, 'data.js');
41
-
42
- let testsFromReport = {};
43
-
44
- try {
45
- testsFromReport = await Promise.resolve(`${reportDataPath}`).then(s => _interopRequireWildcard(require(s)));
46
- } catch (error) {// Ignore error
47
- }
48
-
49
- await runner.init();
50
- const tests = await (0, _stories.loadTestsFromStories)(Object.keys(config.browsers), listener => config.storiesProvider(config, options, listener), testsDiff => {
51
- runner.updateTests(testsDiff);
52
- (0, _stories.saveTestsJson)(runner.tests, config.reportDir);
53
- });
54
- runner.tests = mergeTests(testsFromReport, tests);
55
- (0, _stories.saveTestsJson)(runner.tests, config.reportDir);
56
- return runner;
57
- }
@@ -1,197 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _cluster = _interopRequireWildcard(require("cluster"));
9
-
10
- var _events = require("events");
11
-
12
- var _types = require("../../types");
13
-
14
- var _messages = require("../messages");
15
-
16
- var _utils = require("../utils");
17
-
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
-
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
-
22
- const FORK_RETRIES = 5;
23
-
24
- class Pool extends _events.EventEmitter {
25
- workers = [];
26
- queue = [];
27
- forcedStop = false;
28
-
29
- get isRunning() {
30
- return this.workers.length !== this.freeWorkers.length;
31
- }
32
-
33
- constructor(config, browser) {
34
- super();
35
- this.browser = browser;
36
- this.failFast = config.failFast;
37
- this.maxRetries = config.maxRetries;
38
- this.config = config.browsers[browser];
39
- }
40
-
41
- async init() {
42
- const poolSize = this.config.limit || 1;
43
- this.workers = (await Promise.all(Array.from({
44
- length: poolSize
45
- }).map(() => this.forkWorker()))).filter(workerOrError => workerOrError instanceof _cluster.Worker);
46
- if (this.workers.length != poolSize) throw new Error(`Can't instantiate workers for ${this.browser} due many errors`);
47
- this.workers.forEach(worker => this.exitHandler(worker));
48
- }
49
-
50
- start(tests) {
51
- if (this.isRunning) return false;
52
- this.queue = tests.map(({
53
- id,
54
- path
55
- }) => ({
56
- id,
57
- path,
58
- retries: 0
59
- }));
60
- this.process();
61
- return true;
62
- }
63
-
64
- stop() {
65
- if (!this.isRunning) {
66
- this.emit('stop');
67
- return;
68
- }
69
-
70
- this.forcedStop = true;
71
- this.queue = [];
72
- }
73
-
74
- process() {
75
- const worker = this.getFreeWorker();
76
- const [test] = this.queue;
77
-
78
- if (this.queue.length == 0 && this.workers.length === this.freeWorkers.length) {
79
- this.forcedStop = false;
80
- this.emit('stop');
81
- return;
82
- }
83
-
84
- if (!worker || !test) return;
85
- worker.isRunning = true;
86
- const {
87
- id
88
- } = test;
89
- this.queue.shift();
90
- this.sendStatus({
91
- id,
92
- status: 'running'
93
- });
94
- this.subscribe(worker, test);
95
- (0, _messages.sendTestMessage)(worker, {
96
- type: 'start',
97
- payload: test
98
- });
99
- this.process();
100
- }
101
-
102
- sendStatus(message) {
103
- this.emit('test', message);
104
- }
105
-
106
- getFreeWorker() {
107
- return this.freeWorkers[Math.floor(Math.random() * this.freeWorkers.length)];
108
- }
109
-
110
- get aliveWorkers() {
111
- return this.workers.filter(worker => !worker.exitedAfterDisconnect);
112
- }
113
-
114
- get freeWorkers() {
115
- return this.aliveWorkers.filter(worker => !worker.isRunning);
116
- }
117
-
118
- async forkWorker(retry = 0) {
119
- _cluster.default.setupMaster({
120
- args: ['--browser', this.browser, ...process.argv.slice(2)]
121
- });
122
-
123
- const worker = _cluster.default.fork();
124
-
125
- const message = await new Promise(resolve => {
126
- const readyHandler = message => {
127
- if (!(0, _types.isWorkerMessage)(message)) return;
128
- worker.off('message', readyHandler);
129
- resolve(message);
130
- };
131
-
132
- worker.on('message', readyHandler);
133
- });
134
- if (message.type != 'error') return worker;
135
- this.gracefullyKill(worker);
136
- if (retry == FORK_RETRIES) return message.payload;
137
- return this.forkWorker(retry + 1);
138
- }
139
-
140
- exitHandler(worker) {
141
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
142
- worker.once('exit', async () => {
143
- if (_utils.isShuttingDown.current) return;
144
- const workerOrError = await this.forkWorker();
145
- if (!(workerOrError instanceof _cluster.Worker)) throw new Error(`Can't instantiate worker for ${this.browser} due many errors`);
146
- this.exitHandler(workerOrError);
147
- this.workers[this.workers.indexOf(worker)] = workerOrError;
148
- this.process();
149
- });
150
- }
151
-
152
- gracefullyKill(worker) {
153
- const timeout = setTimeout(() => worker.kill(), 10000);
154
- worker.on('exit', () => clearTimeout(timeout));
155
- (0, _messages.sendShutdownMessage)(worker);
156
- }
157
-
158
- shouldRetry(test) {
159
- return test.retries < this.maxRetries && !this.forcedStop;
160
- }
161
-
162
- handleTestResult(worker, test, result) {
163
- const shouldRetry = result.status == 'failed' && this.shouldRetry(test);
164
-
165
- if (shouldRetry) {
166
- test.retries += 1;
167
- this.queue[this.failFast ? 'unshift' : 'push'](test);
168
- }
169
-
170
- this.sendStatus({
171
- id: test.id,
172
- status: shouldRetry ? 'retrying' : result.status,
173
- result
174
- });
175
- worker.isRunning = false;
176
- setImmediate(() => this.process());
177
- }
178
-
179
- subscribe(worker, test) {
180
- const subscriptions = [(0, _messages.subscribeOnWorker)(worker, 'worker', message => {
181
- if (message.type != 'error') return;
182
- subscriptions.forEach(unsubscribe => unsubscribe());
183
- this.gracefullyKill(worker);
184
- this.handleTestResult(worker, test, {
185
- status: 'failed',
186
- ...message.payload
187
- });
188
- }), (0, _messages.subscribeOnWorker)(worker, 'test', message => {
189
- if (message.type != 'end') return;
190
- subscriptions.forEach(unsubscribe => unsubscribe());
191
- this.handleTestResult(worker, test, message.payload);
192
- })];
193
- }
194
-
195
- }
196
-
197
- exports.default = Pool;