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

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,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function () {
9
- return _worker.default;
10
- }
11
- });
12
-
13
- var _worker = _interopRequireDefault(require("./worker"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,108 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.TeamcityReporter = exports.CreeveyReporter = void 0;
7
-
8
- var _chalk = _interopRequireDefault(require("chalk"));
9
-
10
- var _mocha = require("mocha");
11
-
12
- var _loglevelPluginPrefix = _interopRequireDefault(require("loglevel-plugin-prefix"));
13
-
14
- var _types = require("../../types");
15
-
16
- var _logger = require("../logger");
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
- const testLevels = {
21
- INFO: _chalk.default.green('PASS'),
22
- WARN: _chalk.default.yellow('START'),
23
- ERROR: _chalk.default.red('FAIL')
24
- };
25
-
26
- class CreeveyReporter extends _mocha.reporters.Base {
27
- constructor(runner, options) {
28
- super(runner);
29
- const {
30
- sessionId,
31
- topLevelSuite
32
- } = options.reporterOptions;
33
- const testLogger = (0, _logger.getLogger)(topLevelSuite);
34
-
35
- _loglevelPluginPrefix.default.apply(testLogger, {
36
- format(level) {
37
- return `${testLevels[level]} => (${topLevelSuite}:${_chalk.default.gray(sessionId)})`;
38
- }
39
-
40
- });
41
-
42
- runner.on('test', test => testLogger.warn(_chalk.default.cyan(test.titlePath().join('/'))));
43
- runner.on('pass', test => testLogger.info(_chalk.default.cyan(test.titlePath().join('/'))));
44
- runner.on('fail', (test, error) => testLogger.error(_chalk.default.cyan(test.titlePath().join('/')), '\n ', getErrors(error, (error, imageName) => `${_chalk.default.bold(imageName ?? topLevelSuite)}:${error}`, error => `${error.stack ?? error.message}`).join('\n ')));
45
- }
46
-
47
- }
48
-
49
- exports.CreeveyReporter = CreeveyReporter;
50
-
51
- class TeamcityReporter extends _mocha.reporters.Base {
52
- constructor(runner, options) {
53
- super(runner);
54
- const topLevelSuite = this.escape(options.reporterOptions.topLevelSuite);
55
- const reporterOptions = options.reporterOptions;
56
- runner.on('suite', suite => suite.root ? console.log(`##teamcity[testSuiteStarted name='${topLevelSuite}' flowId='${process.pid}']`) : console.log(`##teamcity[testSuiteStarted name='${this.escape(suite.title)}' flowId='${process.pid}']`));
57
- runner.on('test', test => console.log(`##teamcity[testStarted name='${this.escape(test.title)}' flowId='${process.pid}']`));
58
- runner.on('fail', (test, error) => {
59
- Object.entries(reporterOptions.images).forEach(([name, image]) => {
60
- if (!image) return;
61
- const filePath = test.titlePath().concat(name == topLevelSuite ? [] : [topLevelSuite]).map(this.escape).join('/'); // eslint-disable-next-line @typescript-eslint/no-unused-vars
62
-
63
- const {
64
- error,
65
- ...rest
66
- } = image;
67
- Object.values(rest).filter(_types.isDefined).forEach(fileName => {
68
- console.log(`##teamcity[publishArtifacts '${reporterOptions.reportDir}/${filePath}/${fileName} => report/${filePath}']`);
69
- console.log(`##teamcity[testMetadata testName='${this.escape(test.title)}' type='image' value='report/${filePath}/${fileName}' flowId='${process.pid}']`);
70
- });
71
- }); // Output failed test as passed due TC don't support retry mechanic
72
- // https://teamcity-support.jetbrains.com/hc/en-us/community/posts/207216829-Count-test-as-successful-if-at-least-one-try-is-successful?page=1#community_comment_207394125
73
-
74
- reporterOptions.willRetry ? console.log(`##teamcity[testFinished name='${this.escape(test.title)}' flowId='${process.pid}']`) : console.log(`##teamcity[testFailed name='${this.escape(test.title)}' message='${this.escape(error.message)}' details='${this.escape(error.stack ?? '')}' flowId='${process.pid}']`);
75
- });
76
- runner.on('pending', test => console.log(`##teamcity[testIgnored name='${this.escape(test.title)}' message='${this.escape(typeof test.skipReason == 'boolean' ? test.title : test.skipReason)}' flowId='${process.pid}']`));
77
- runner.on('test end', test => console.log(`##teamcity[testFinished name='${this.escape(test.title)}' flowId='${process.pid}']`));
78
- runner.on('suite end', suite => suite.root || console.log(`##teamcity[testSuiteFinished name='${this.escape(suite.title)}' flowId='${process.pid}']`));
79
- runner.on('end', () => console.log(`##teamcity[testSuiteFinished name='${topLevelSuite}' flowId='${process.pid}']`));
80
- }
81
-
82
- escape = str => {
83
- if (!str) return '';
84
- return str.toString() // eslint-disable-next-line no-control-regex
85
- .replace(/\x1B.*?m/g, '').replace(/\|/g, '||').replace(/\n/g, '|n').replace(/\r/g, '|r').replace(/\[/g, '|[').replace(/\]/g, '|]').replace(/\u0085/g, '|x').replace(/\u2028/g, '|l').replace(/\u2029/g, '|p').replace(/'/g, "|'");
86
- };
87
- }
88
-
89
- exports.TeamcityReporter = TeamcityReporter;
90
-
91
- function getErrors(error, imageErrorToString, errorToString) {
92
- const errors = [];
93
-
94
- if (!(error instanceof Error)) {
95
- errors.push(error);
96
- } else if (!(0, _types.isImageError)(error)) {
97
- errors.push(errorToString(error));
98
- } else if (typeof error.images == 'string') {
99
- errors.push(imageErrorToString(error.images));
100
- } else {
101
- const imageErrors = error.images;
102
- Object.keys(imageErrors).forEach(imageName => {
103
- errors.push(imageErrorToString(imageErrors[imageName] ?? '', imageName));
104
- });
105
- }
106
-
107
- return errors;
108
- }
@@ -1,268 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = worker;
7
-
8
- var _util = require("util");
9
-
10
- var _fs = _interopRequireDefault(require("fs"));
11
-
12
- var _path = _interopRequireDefault(require("path"));
13
-
14
- var _chai = _interopRequireDefault(require("chai"));
15
-
16
- var _chalk = _interopRequireDefault(require("chalk"));
17
-
18
- var _mocha = _interopRequireDefault(require("mocha"));
19
-
20
- var _seleniumWebdriver = require("selenium-webdriver");
21
-
22
- var _types = require("../../types");
23
-
24
- var _messages = require("../messages");
25
-
26
- var _chaiImage = _interopRequireDefault(require("./chai-image"));
27
-
28
- var _selenium = require("../selenium");
29
-
30
- var _reporter = require("./reporter");
31
-
32
- var _helpers = require("./helpers");
33
-
34
- var _logger = require("../logger");
35
-
36
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
-
38
- const statAsync = (0, _util.promisify)(_fs.default.stat);
39
- const readdirAsync = (0, _util.promisify)(_fs.default.readdir);
40
- const readFileAsync = (0, _util.promisify)(_fs.default.readFile);
41
- const writeFileAsync = (0, _util.promisify)(_fs.default.writeFile);
42
- const mkdirAsync = (0, _util.promisify)(_fs.default.mkdir);
43
-
44
- async function getStat(filePath) {
45
- try {
46
- return await statAsync(filePath);
47
- } catch (error) {
48
- if (typeof error == 'object' && error && error.code === 'ENOENT') {
49
- return null;
50
- }
51
-
52
- throw error;
53
- }
54
- }
55
-
56
- async function getLastImageNumber(imageDir, imageName) {
57
- const actualImagesRegexp = new RegExp(`${imageName}-actual-(\\d+)\\.png`);
58
-
59
- try {
60
- return (await readdirAsync(imageDir)).map(filename => filename.replace(actualImagesRegexp, '$1')).map(Number).filter(x => !isNaN(x)).sort((a, b) => b - a)[0] ?? 0;
61
- } catch (_error) {
62
- return 0;
63
- }
64
- } // FIXME browser options hotfix
65
-
66
-
67
- async function worker(config, options) {
68
- var _await$browser$getSes;
69
-
70
- let retries = 0;
71
- let images = {};
72
- let error = undefined;
73
- const screenshots = [];
74
- const testScope = [];
75
-
76
- function runHandler(failures) {
77
- if (failures > 0 && (error || Object.values(images).some(image => (image === null || image === void 0 ? void 0 : image.error) != null))) {
78
- const isTimeout = hasTimeout(error) || Object.values(images).some(image => hasTimeout(image === null || image === void 0 ? void 0 : image.error));
79
- const payload = {
80
- status: 'failed',
81
- images,
82
- error
83
- };
84
- isTimeout ? (0, _messages.emitWorkerMessage)({
85
- type: 'error',
86
- payload: {
87
- error: error ?? 'Unknown error'
88
- }
89
- }) : (0, _messages.emitTestMessage)({
90
- type: 'end',
91
- payload
92
- });
93
- } else {
94
- (0, _messages.emitTestMessage)({
95
- type: 'end',
96
- payload: {
97
- status: 'success',
98
- images
99
- }
100
- });
101
- }
102
- }
103
-
104
- async function saveImages(imageDir, images) {
105
- await mkdirAsync(imageDir, {
106
- recursive: true
107
- });
108
-
109
- for (const {
110
- name,
111
- data
112
- } of images) {
113
- await writeFileAsync(_path.default.join(imageDir, name), data);
114
- }
115
- }
116
-
117
- async function getExpected(assertImageName) {
118
- // context => [kind, story, test, browser]
119
- // rootSuite -> kindSuite -> storyTest -> [browsers.png]
120
- // rootSuite -> kindSuite -> storySuite -> test -> [browsers.png]
121
- const testPath = [...testScope];
122
- const imageName = assertImageName ?? testPath.pop();
123
- const imagesMeta = [];
124
-
125
- const reportImageDir = _path.default.join(config.reportDir, ...testPath);
126
-
127
- const imageNumber = (await getLastImageNumber(reportImageDir, imageName)) + 1;
128
- const actualImageName = `${imageName}-actual-${imageNumber}.png`;
129
- const image = images[imageName] = images[imageName] ?? {
130
- actual: actualImageName
131
- };
132
-
133
- const onCompare = async (actual, expect, diff) => {
134
- imagesMeta.push({
135
- name: image.actual,
136
- data: actual
137
- });
138
-
139
- if (diff && expect) {
140
- image.expect = `${imageName}-expect-${imageNumber}.png`;
141
- image.diff = `${imageName}-diff-${imageNumber}.png`;
142
- imagesMeta.push({
143
- name: image.expect,
144
- data: expect
145
- });
146
- imagesMeta.push({
147
- name: image.diff,
148
- data: diff
149
- });
150
- }
151
-
152
- if (options.saveReport) {
153
- await saveImages(reportImageDir, imagesMeta);
154
- }
155
- };
156
-
157
- const expectImageDir = _path.default.join(config.screenDir, ...testPath);
158
-
159
- const expectImageStat = await getStat(_path.default.join(expectImageDir, `${imageName}.png`));
160
- if (!expectImageStat) return {
161
- expected: null,
162
- onCompare
163
- };
164
- const expected = await readFileAsync(_path.default.join(expectImageDir, `${imageName}.png`));
165
- return {
166
- expected,
167
- onCompare
168
- };
169
- }
170
-
171
- const mochaOptions = {
172
- timeout: 30000,
173
- reporter: process.env.TEAMCITY_VERSION ? _reporter.TeamcityReporter : options.reporter || _reporter.CreeveyReporter,
174
- reporterOptions: {
175
- reportDir: config.reportDir,
176
- topLevelSuite: options.browser,
177
-
178
- get willRetry() {
179
- return retries < config.maxRetries;
180
- },
181
-
182
- get images() {
183
- return images;
184
- },
185
-
186
- get sessionId() {
187
- return sessionId;
188
- }
189
-
190
- }
191
- };
192
- const mocha = new _mocha.default(mochaOptions);
193
- mocha.cleanReferencesAfterRun(false);
194
-
195
- _chai.default.use((0, _chaiImage.default)(getExpected, config.diffOptions));
196
-
197
- if ((await (0, _selenium.getBrowser)(config, options)) == null) return;
198
- await (0, _helpers.addTestsFromStories)(mocha.suite, config, {
199
- browser: options.browser,
200
- watch: options.ui,
201
- debug: options.debug,
202
- port: options.port
203
- });
204
-
205
- try {
206
- var _await$getBrowser;
207
-
208
- await ((_await$getBrowser = await (0, _selenium.getBrowser)(config, options)) === null || _await$getBrowser === void 0 ? void 0 : _await$getBrowser.getCurrentUrl());
209
- } catch (_) {
210
- await (0, _selenium.closeBrowser)();
211
- }
212
-
213
- const browser = await (0, _selenium.getBrowser)(config, options);
214
- const sessionId = (_await$browser$getSes = await (browser === null || browser === void 0 ? void 0 : browser.getSession())) === null || _await$browser$getSes === void 0 ? void 0 : _await$browser$getSes.getId();
215
- if (browser == null) return;
216
- const interval = setInterval(() => void browser.getCurrentUrl().then(url => {
217
- if (options.debug) _logger.logger.debug(`${options.browser}:${_chalk.default.gray(sessionId)}`, 'current url', _chalk.default.magenta(url));
218
- }), 10 * 1000);
219
- (0, _messages.subscribeOn)('shutdown', () => clearInterval(interval));
220
- mocha.suite.beforeAll(function () {
221
- this.config = config;
222
- this.browser = browser;
223
- this.until = _seleniumWebdriver.until;
224
- this.keys = _seleniumWebdriver.Key;
225
- this.expect = _chai.default.expect;
226
- this.browserName = options.browser;
227
- this.testScope = testScope;
228
- this.screenshots = screenshots;
229
- });
230
- mocha.suite.beforeEach(_selenium.switchStory);
231
- (0, _messages.subscribeOn)('test', message => {
232
- if (message.type != 'start') return;
233
- const test = message.payload;
234
- const testPath = test.path.join(' ').replace(/[|\\{}()[\]^$+*?.-]/g, '\\$&');
235
- images = {};
236
- error = undefined;
237
- retries = test.retries;
238
- mocha.grep(new RegExp(`^${testPath}$`));
239
- const runner = mocha.run(runHandler); // TODO How handle browser corruption?
240
-
241
- runner.on('fail', (_test, reason) => {
242
- if (!(reason instanceof Error)) {
243
- error = reason;
244
- } else if (!(0, _types.isImageError)(reason)) {
245
- error = reason.stack ?? reason.message;
246
- } else if (typeof reason.images == 'string') {
247
- const image = images[testScope.slice(-1)[0]];
248
- if (image) image.error = reason.images;
249
- } else {
250
- const imageErrors = reason.images;
251
- Object.keys(imageErrors).forEach(imageName => {
252
- const image = images[imageName];
253
- if (image) image.error = imageErrors[imageName];
254
- });
255
- }
256
- });
257
- });
258
-
259
- _logger.logger.info(`${options.browser}:${_chalk.default.gray(sessionId)} is ready`);
260
-
261
- (0, _messages.emitWorkerMessage)({
262
- type: 'ready'
263
- });
264
- }
265
-
266
- function hasTimeout(str) {
267
- return str != null && str.toLowerCase().includes('timeout');
268
- }
@@ -1,101 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.serializeRawStories = exports.deserializeStory = exports.deserializeRawStories = exports.denormalizeStoryParameters = exports.combineParameters = void 0;
7
-
8
- var _lodash = require("lodash");
9
-
10
- var _serializeRegExp = require("./serializeRegExp");
11
-
12
- // NOTE: Copy-paste from storybook/api
13
- const combineParameters = function () {
14
- for (var _len = arguments.length, parameterSets = new Array(_len), _key = 0; _key < _len; _key++) {
15
- parameterSets[_key] = arguments[_key];
16
- }
17
-
18
- return (// eslint-disable-next-line @typescript-eslint/no-unsafe-return
19
- (0, _lodash.mergeWith)({}, ...parameterSets, (_, srcValue) => {
20
- // Treat arrays as scalars:
21
- if (Array.isArray(srcValue)) return srcValue;
22
- return undefined;
23
- })
24
- );
25
- }; // NOTE: Copy-paste from storybook/api
26
-
27
-
28
- exports.combineParameters = combineParameters;
29
-
30
- const denormalizeStoryParameters = _ref => {
31
- let {
32
- globalParameters,
33
- kindParameters,
34
- stories
35
- } = _ref;
36
- return (0, _lodash.mapValues)(stories, storyData => {
37
- var _kindParameters$story;
38
-
39
- return { ...storyData,
40
- parameters: combineParameters(globalParameters, (_kindParameters$story = kindParameters[storyData.kind]) !== null && _kindParameters$story !== void 0 ? _kindParameters$story : {}, storyData.parameters)
41
- };
42
- });
43
- };
44
-
45
- exports.denormalizeStoryParameters = denormalizeStoryParameters;
46
-
47
- const serializeRawStories = stories => {
48
- return (0, _lodash.mapValues)(stories, storyData => {
49
- const creevey = storyData.parameters.creevey;
50
-
51
- if (creevey !== null && creevey !== void 0 && creevey.skip) {
52
- return { ...storyData,
53
- parameters: { ...storyData.parameters,
54
- creevey: { ...creevey,
55
- skip: (0, _lodash.cloneDeepWith)(creevey.skip, value => {
56
- if ((0, _serializeRegExp.isRegExp)(value)) {
57
- return (0, _serializeRegExp.serializeRegExp)(value);
58
- }
59
-
60
- return undefined;
61
- })
62
- }
63
- }
64
- };
65
- }
66
-
67
- return storyData;
68
- });
69
- };
70
-
71
- exports.serializeRawStories = serializeRawStories;
72
-
73
- const deserializeRawStories = stories => {
74
- return (0, _lodash.mapValues)(stories, deserializeStory);
75
- };
76
-
77
- exports.deserializeRawStories = deserializeRawStories;
78
-
79
- const deserializeStory = story => {
80
- const creevey = story.parameters.creevey;
81
-
82
- if (creevey !== null && creevey !== void 0 && creevey.skip) {
83
- return { ...story,
84
- parameters: { ...story.parameters,
85
- creevey: { ...creevey,
86
- skip: (0, _lodash.cloneDeepWith)(creevey.skip, value => {
87
- if ((0, _serializeRegExp.isSerializedRegExp)(value)) {
88
- return (0, _serializeRegExp.deserializeRegExp)(value);
89
- }
90
-
91
- return undefined;
92
- })
93
- }
94
- }
95
- };
96
- }
97
-
98
- return story;
99
- };
100
-
101
- exports.deserializeStory = deserializeStory;
@@ -1,42 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.serializeRegExp = exports.isSerializedRegExp = exports.isRegExp = exports.deserializeRegExp = void 0;
7
-
8
- const isRegExp = exp => {
9
- return exp instanceof RegExp;
10
- };
11
-
12
- exports.isRegExp = isRegExp;
13
-
14
- const isSerializedRegExp = exp => {
15
- return typeof exp === 'object' && exp !== null && Reflect.get(exp, '__regexp') === true;
16
- };
17
-
18
- exports.isSerializedRegExp = isSerializedRegExp;
19
-
20
- const serializeRegExp = exp => {
21
- const {
22
- source,
23
- flags
24
- } = exp;
25
- return {
26
- __regexp: true,
27
- source,
28
- flags
29
- };
30
- };
31
-
32
- exports.serializeRegExp = serializeRegExp;
33
-
34
- const deserializeRegExp = _ref => {
35
- let {
36
- source,
37
- flags
38
- } = _ref;
39
- return new RegExp(source, flags);
40
- };
41
-
42
- exports.deserializeRegExp = deserializeRegExp;
package/lib/cjs/types.js DELETED
@@ -1,74 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.isDefined = isDefined;
7
- exports.isDockerMessage = isDockerMessage;
8
- exports.isFunction = isFunction;
9
- exports.isImageError = isImageError;
10
- exports.isObject = isObject;
11
- exports.isProcessMessage = isProcessMessage;
12
- exports.isStoriesMessage = isStoriesMessage;
13
- exports.isString = isString;
14
- exports.isTest = isTest;
15
- exports.isTestMessage = isTestMessage;
16
- exports.isWebpackMessage = isWebpackMessage;
17
- exports.isWorkerMessage = isWorkerMessage;
18
- exports.noop = noop;
19
-
20
- /* eslint-disable @typescript-eslint/no-explicit-any */
21
-
22
- /* eslint-enable @typescript-eslint/no-explicit-any */
23
- function noop() {
24
- /* noop */
25
- }
26
-
27
- function isDefined(value) {
28
- return value !== null && value !== undefined;
29
- }
30
-
31
- function isTest(x) {
32
- return isDefined(x) && 'id' in x && 'storyId' in x && typeof x.id == 'string' && typeof x.storyId == 'string';
33
- }
34
-
35
- function isObject(x) {
36
- return typeof x == 'object' && x != null;
37
- }
38
-
39
- function isString(x) {
40
- return typeof x == 'string';
41
- } // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
-
43
-
44
- function isFunction(x) {
45
- return typeof x == 'function';
46
- }
47
-
48
- function isImageError(error) {
49
- return error instanceof Error && 'images' in error;
50
- }
51
-
52
- function isProcessMessage(message) {
53
- return isObject(message) && 'scope' in message;
54
- }
55
-
56
- function isWorkerMessage(message) {
57
- return isProcessMessage(message) && message.scope == 'worker';
58
- }
59
-
60
- function isStoriesMessage(message) {
61
- return isProcessMessage(message) && message.scope == 'stories';
62
- }
63
-
64
- function isTestMessage(message) {
65
- return isProcessMessage(message) && message.scope == 'test';
66
- }
67
-
68
- function isWebpackMessage(message) {
69
- return isProcessMessage(message) && message.scope == 'webpack';
70
- }
71
-
72
- function isDockerMessage(message) {
73
- return isProcessMessage(message) && message.scope == 'docker';
74
- }
package/lib/esm/cli.js DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
- // eslint-disable-next-line node/shebang
3
-
4
- require('./creevey');