creevey 0.8.0-beta.0 → 0.9.0-beta.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 (225) hide show
  1. package/CHANGELOG.md +5 -9
  2. package/lib/cjs/client/web/main.js +6 -6
  3. package/lib/types/cli.d.ts +1 -1
  4. package/lib/types/client/addon/Manager.d.ts +37 -37
  5. package/lib/types/client/addon/components/Addon.d.ts +8 -8
  6. package/lib/types/client/addon/components/Icons.d.ts +7 -7
  7. package/lib/types/client/addon/components/Panel.d.ts +9 -9
  8. package/lib/types/client/addon/components/TestSelect.d.ts +9 -9
  9. package/lib/types/client/addon/components/Tools.d.ts +6 -6
  10. package/lib/types/client/addon/decorator.d.ts +1 -1
  11. package/lib/types/client/addon/preset.d.ts +24 -22
  12. package/lib/types/client/addon/readyForCapture.d.ts +6 -0
  13. package/lib/types/client/addon/register.d.ts +3 -3
  14. package/lib/types/client/addon/utils.d.ts +2 -2
  15. package/lib/types/client/addon/withCreevey.d.ts +24 -13
  16. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +3 -3
  17. package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +25 -25
  18. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +3 -3
  19. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +3 -3
  20. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +3 -3
  21. package/lib/types/client/shared/components/ImagesView/index.d.ts +5 -5
  22. package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +9 -9
  23. package/lib/types/client/shared/components/PageFooter/Paging.d.ts +8 -8
  24. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +12 -12
  25. package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +17 -17
  26. package/lib/types/client/shared/components/ResultsPage.d.ts +18 -18
  27. package/lib/types/client/shared/creeveyClientApi.d.ts +9 -9
  28. package/lib/types/client/shared/helpers.d.ts +46 -46
  29. package/lib/types/client/shared/viewMode.d.ts +4 -4
  30. package/lib/types/client/web/CreeveyApp.d.ts +12 -12
  31. package/lib/types/client/web/CreeveyContext.d.ts +11 -11
  32. package/lib/types/client/web/CreeveyLoader.d.ts +3 -3
  33. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +19 -19
  34. package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +6 -6
  35. package/lib/types/client/web/CreeveyView/SideBar/SideBar.d.ts +14 -14
  36. package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +13 -13
  37. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +33 -33
  38. package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +8 -8
  39. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +10 -10
  40. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +9 -9
  41. package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +6 -6
  42. package/lib/types/client/web/CreeveyView/SideBar/index.d.ts +1 -1
  43. package/lib/types/client/web/KeyboardEventsContext.d.ts +13 -13
  44. package/lib/types/client/web/index.d.ts +4 -4
  45. package/lib/types/creevey.d.ts +1 -1
  46. package/lib/types/index.d.ts +4 -2
  47. package/lib/types/server/config.d.ts +4 -4
  48. package/lib/types/server/docker.d.ts +7 -7
  49. package/lib/types/server/extract.d.ts +2 -2
  50. package/lib/types/server/index.d.ts +2 -2
  51. package/lib/types/server/loaders/babel/creevey-plugin.d.ts +1 -1
  52. package/lib/types/server/loaders/babel/helpers.d.ts +19 -19
  53. package/lib/types/server/loaders/babel/register.d.ts +5 -5
  54. package/lib/types/server/loaders/hooks/mdx.d.ts +1 -1
  55. package/lib/types/server/loaders/hooks/svelte.d.ts +1 -1
  56. package/lib/types/server/loaders/webpack/compile.d.ts +2 -2
  57. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +2 -2
  58. package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +10 -10
  59. package/lib/types/server/loaders/webpack/mdx-loader.d.ts +6 -6
  60. package/lib/types/server/loaders/webpack/start.d.ts +1 -1
  61. package/lib/types/server/logger.d.ts +6 -6
  62. package/lib/types/server/master/api.d.ts +7 -7
  63. package/lib/types/server/master/index.d.ts +3 -3
  64. package/lib/types/server/master/master.d.ts +7 -6
  65. package/lib/types/server/master/pool.d.ts +31 -30
  66. package/lib/types/server/master/runner.d.ts +26 -26
  67. package/lib/types/server/master/server.d.ts +2 -2
  68. package/lib/types/server/messages.d.ts +27 -18
  69. package/lib/types/server/selenium/browser.d.ts +17 -14
  70. package/lib/types/server/selenium/index.d.ts +2 -2
  71. package/lib/types/server/selenium/selenoid.d.ts +3 -3
  72. package/lib/types/server/stories.d.ts +8 -8
  73. package/lib/types/server/storybook/entry.d.ts +18 -18
  74. package/lib/types/server/storybook/helpers.d.ts +24 -24
  75. package/lib/types/server/storybook/providers/browser.d.ts +4 -0
  76. package/lib/types/server/storybook/providers/hybrid.d.ts +4 -0
  77. package/lib/types/server/storybook/providers/nodejs.d.ts +9 -0
  78. package/lib/types/server/testsFiles/parser.d.ts +12 -0
  79. package/lib/types/server/testsFiles/register.d.ts +2 -0
  80. package/lib/types/server/update.d.ts +2 -2
  81. package/lib/types/server/utils.d.ts +20 -19
  82. package/lib/types/server/worker/chai-image.d.ts +6 -6
  83. package/lib/types/server/worker/helpers.d.ts +8 -7
  84. package/lib/types/server/worker/index.d.ts +1 -1
  85. package/lib/types/server/worker/reporter.d.ts +8 -8
  86. package/lib/types/server/worker/worker.d.ts +4 -4
  87. package/lib/types/shared.d.ts +16 -4
  88. package/lib/types/types.d.ts +489 -459
  89. package/package.json +16 -7
  90. package/storybook-static/stories.json +21 -0
  91. package/types/mocha.d.ts +1 -0
  92. package/lib/cjs/cli.js +0 -5
  93. package/lib/cjs/client/addon/Manager.js +0 -413
  94. package/lib/cjs/client/addon/components/Addon.js +0 -76
  95. package/lib/cjs/client/addon/components/Icons.js +0 -42
  96. package/lib/cjs/client/addon/components/Panel.js +0 -68
  97. package/lib/cjs/client/addon/components/TestSelect.js +0 -63
  98. package/lib/cjs/client/addon/components/Tools.js +0 -114
  99. package/lib/cjs/client/addon/decorator.js +0 -11
  100. package/lib/cjs/client/addon/preset.js +0 -80
  101. package/lib/cjs/client/addon/register.js +0 -96
  102. package/lib/cjs/client/addon/utils.js +0 -38
  103. package/lib/cjs/client/addon/withCreevey.js +0 -284
  104. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +0 -85
  105. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +0 -88
  106. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +0 -176
  107. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +0 -178
  108. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +0 -110
  109. package/lib/cjs/client/shared/components/ImagesView/index.js +0 -45
  110. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +0 -46
  111. package/lib/cjs/client/shared/components/PageFooter/Paging.js +0 -98
  112. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +0 -78
  113. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +0 -144
  114. package/lib/cjs/client/shared/components/ResultsPage.js +0 -173
  115. package/lib/cjs/client/shared/creeveyClientApi.js +0 -103
  116. package/lib/cjs/client/shared/helpers.js +0 -482
  117. package/lib/cjs/client/shared/viewMode.js +0 -17
  118. package/lib/cjs/client/web/index.html +0 -19
  119. package/lib/cjs/creevey.js +0 -71
  120. package/lib/cjs/index.js +0 -44
  121. package/lib/cjs/server/config.js +0 -92
  122. package/lib/cjs/server/docker.js +0 -150
  123. package/lib/cjs/server/extract.js +0 -43
  124. package/lib/cjs/server/index.js +0 -85
  125. package/lib/cjs/server/loaders/babel/creevey-plugin.js +0 -88
  126. package/lib/cjs/server/loaders/babel/helpers.js +0 -479
  127. package/lib/cjs/server/loaders/babel/register.js +0 -126
  128. package/lib/cjs/server/loaders/hooks/mdx.js +0 -30
  129. package/lib/cjs/server/loaders/hooks/svelte.js +0 -65
  130. package/lib/cjs/server/loaders/webpack/compile.js +0 -286
  131. package/lib/cjs/server/loaders/webpack/creevey-loader.js +0 -174
  132. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +0 -44
  133. package/lib/cjs/server/loaders/webpack/mdx-loader.js +0 -72
  134. package/lib/cjs/server/loaders/webpack/start.js +0 -41
  135. package/lib/cjs/server/logger.js +0 -47
  136. package/lib/cjs/server/master/api.js +0 -71
  137. package/lib/cjs/server/master/index.js +0 -152
  138. package/lib/cjs/server/master/master.js +0 -56
  139. package/lib/cjs/server/master/pool.js +0 -206
  140. package/lib/cjs/server/master/runner.js +0 -294
  141. package/lib/cjs/server/master/server.js +0 -57
  142. package/lib/cjs/server/messages.js +0 -154
  143. package/lib/cjs/server/selenium/browser.js +0 -582
  144. package/lib/cjs/server/selenium/index.js +0 -31
  145. package/lib/cjs/server/selenium/selenoid.js +0 -174
  146. package/lib/cjs/server/stories.js +0 -167
  147. package/lib/cjs/server/storybook/entry.js +0 -68
  148. package/lib/cjs/server/storybook/helpers.js +0 -165
  149. package/lib/cjs/server/storybook/nodejs-provider.js +0 -220
  150. package/lib/cjs/server/update.js +0 -83
  151. package/lib/cjs/server/utils.js +0 -178
  152. package/lib/cjs/server/worker/chai-image.js +0 -142
  153. package/lib/cjs/server/worker/helpers.js +0 -73
  154. package/lib/cjs/server/worker/index.js +0 -15
  155. package/lib/cjs/server/worker/reporter.js +0 -120
  156. package/lib/cjs/server/worker/worker.js +0 -266
  157. package/lib/cjs/shared.js +0 -35
  158. package/lib/cjs/types.js +0 -69
  159. package/lib/esm/cli.js +0 -4
  160. package/lib/esm/client/addon/Manager.js +0 -397
  161. package/lib/esm/client/addon/components/Addon.js +0 -58
  162. package/lib/esm/client/addon/components/Icons.js +0 -27
  163. package/lib/esm/client/addon/components/Panel.js +0 -49
  164. package/lib/esm/client/addon/components/TestSelect.js +0 -49
  165. package/lib/esm/client/addon/components/Tools.js +0 -91
  166. package/lib/esm/client/addon/decorator.js +0 -2
  167. package/lib/esm/client/addon/preset.js +0 -55
  168. package/lib/esm/client/addon/register.js +0 -75
  169. package/lib/esm/client/addon/utils.js +0 -31
  170. package/lib/esm/client/addon/withCreevey.js +0 -270
  171. package/lib/esm/client/shared/components/ImagesView/BlendView.js +0 -64
  172. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +0 -65
  173. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +0 -152
  174. package/lib/esm/client/shared/components/ImagesView/SlideView.js +0 -154
  175. package/lib/esm/client/shared/components/ImagesView/SwapView.js +0 -89
  176. package/lib/esm/client/shared/components/ImagesView/index.js +0 -5
  177. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +0 -32
  178. package/lib/esm/client/shared/components/PageFooter/Paging.js +0 -84
  179. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +0 -64
  180. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +0 -120
  181. package/lib/esm/client/shared/components/ResultsPage.js +0 -143
  182. package/lib/esm/client/shared/creeveyClientApi.js +0 -94
  183. package/lib/esm/client/shared/helpers.js +0 -424
  184. package/lib/esm/client/shared/viewMode.js +0 -6
  185. package/lib/esm/creevey.js +0 -56
  186. package/lib/esm/index.js +0 -4
  187. package/lib/esm/server/config.js +0 -71
  188. package/lib/esm/server/docker.js +0 -123
  189. package/lib/esm/server/extract.js +0 -30
  190. package/lib/esm/server/index.js +0 -65
  191. package/lib/esm/server/loaders/babel/creevey-plugin.js +0 -74
  192. package/lib/esm/server/loaders/babel/helpers.js +0 -462
  193. package/lib/esm/server/loaders/babel/register.js +0 -105
  194. package/lib/esm/server/loaders/hooks/mdx.js +0 -15
  195. package/lib/esm/server/loaders/hooks/svelte.js +0 -49
  196. package/lib/esm/server/loaders/webpack/compile.js +0 -263
  197. package/lib/esm/server/loaders/webpack/creevey-loader.js +0 -153
  198. package/lib/esm/server/loaders/webpack/dummy-hmr.js +0 -36
  199. package/lib/esm/server/loaders/webpack/mdx-loader.js +0 -58
  200. package/lib/esm/server/loaders/webpack/start.js +0 -27
  201. package/lib/esm/server/logger.js +0 -20
  202. package/lib/esm/server/master/api.js +0 -60
  203. package/lib/esm/server/master/index.js +0 -131
  204. package/lib/esm/server/master/master.js +0 -37
  205. package/lib/esm/server/master/pool.js +0 -187
  206. package/lib/esm/server/master/runner.js +0 -272
  207. package/lib/esm/server/master/server.js +0 -37
  208. package/lib/esm/server/messages.js +0 -128
  209. package/lib/esm/server/selenium/browser.js +0 -554
  210. package/lib/esm/server/selenium/index.js +0 -2
  211. package/lib/esm/server/selenium/selenoid.js +0 -151
  212. package/lib/esm/server/stories.js +0 -147
  213. package/lib/esm/server/storybook/entry.js +0 -44
  214. package/lib/esm/server/storybook/helpers.js +0 -106
  215. package/lib/esm/server/storybook/nodejs-provider.js +0 -200
  216. package/lib/esm/server/update.js +0 -65
  217. package/lib/esm/server/utils.js +0 -141
  218. package/lib/esm/server/worker/chai-image.js +0 -130
  219. package/lib/esm/server/worker/helpers.js +0 -64
  220. package/lib/esm/server/worker/index.js +0 -1
  221. package/lib/esm/server/worker/reporter.js +0 -98
  222. package/lib/esm/server/worker/worker.js +0 -236
  223. package/lib/esm/shared.js +0 -22
  224. package/lib/esm/types.js +0 -40
  225. package/lib/types/server/storybook/nodejs-provider.d.ts +0 -5
@@ -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,120 +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
- 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; }
21
-
22
- const testLevels = {
23
- INFO: _chalk.default.green('PASS'),
24
- WARN: _chalk.default.yellow('START'),
25
- ERROR: _chalk.default.red('FAIL')
26
- };
27
-
28
- class CreeveyReporter extends _mocha.reporters.Base {
29
- constructor(runner, options) {
30
- super(runner);
31
- const {
32
- sessionId,
33
- topLevelSuite
34
- } = options.reporterOptions;
35
- const testLogger = (0, _logger.getLogger)(topLevelSuite);
36
-
37
- _loglevelPluginPrefix.default.apply(testLogger, {
38
- format(level) {
39
- return `${testLevels[level]} => (${topLevelSuite}:${_chalk.default.gray(sessionId)})`;
40
- }
41
-
42
- });
43
-
44
- runner.on('test', test => testLogger.warn(_chalk.default.cyan(test.titlePath().join('/'))));
45
- runner.on('pass', test => testLogger.info(_chalk.default.cyan(test.titlePath().join('/'))));
46
- runner.on('fail', (test, error) => testLogger.error(_chalk.default.cyan(test.titlePath().join('/')), '\n ', getErrors(error, (error, imageName) => `${_chalk.default.bold(imageName !== null && imageName !== void 0 ? imageName : topLevelSuite)}:${error}`, error => {
47
- var _error$stack;
48
-
49
- return `${(_error$stack = error.stack) !== null && _error$stack !== void 0 ? _error$stack : error.message}`;
50
- }).join('\n ')));
51
- }
52
-
53
- }
54
-
55
- exports.CreeveyReporter = CreeveyReporter;
56
-
57
- class TeamcityReporter extends _mocha.reporters.Base {
58
- constructor(runner, options) {
59
- super(runner);
60
-
61
- _defineProperty(this, "escape", str => {
62
- if (!str) return '';
63
- return str.toString() // eslint-disable-next-line no-control-regex
64
- .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, "|'");
65
- });
66
-
67
- const topLevelSuite = this.escape(options.reporterOptions.topLevelSuite);
68
- const reporterOptions = options.reporterOptions;
69
- 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}']`));
70
- runner.on('test', test => console.log(`##teamcity[testStarted name='${this.escape(test.title)}' flowId='${process.pid}']`));
71
- runner.on('fail', (test, error) => {
72
- var _error$stack2;
73
-
74
- Object.entries(reporterOptions.images).forEach(([name, image]) => {
75
- if (!image) return;
76
- const filePath = test.titlePath().concat(name == topLevelSuite ? [] : [topLevelSuite]).map(this.escape).join('/'); // eslint-disable-next-line @typescript-eslint/no-unused-vars
77
-
78
- const {
79
- error,
80
- ...rest
81
- } = image;
82
- Object.values(rest).filter(_types.isDefined).forEach(fileName => {
83
- console.log(`##teamcity[publishArtifacts '${reporterOptions.reportDir}/${filePath}/${fileName} => report/${filePath}']`);
84
- console.log(`##teamcity[testMetadata testName='${this.escape(test.title)}' type='image' value='report/${filePath}/${fileName}' flowId='${process.pid}']`);
85
- });
86
- }); // Output failed test as passed due TC don't support retry mechanic
87
- // 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
88
-
89
- 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$stack2 = error.stack) !== null && _error$stack2 !== void 0 ? _error$stack2 : '')}' flowId='${process.pid}']`);
90
- });
91
- 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}']`));
92
- runner.on('test end', test => console.log(`##teamcity[testFinished name='${this.escape(test.title)}' flowId='${process.pid}']`));
93
- runner.on('suite end', suite => suite.root || console.log(`##teamcity[testSuiteFinished name='${this.escape(suite.title)}' flowId='${process.pid}']`));
94
- runner.on('end', () => console.log(`##teamcity[testSuiteFinished name='${topLevelSuite}' flowId='${process.pid}']`));
95
- }
96
-
97
- }
98
-
99
- exports.TeamcityReporter = TeamcityReporter;
100
-
101
- function getErrors(error, imageErrorToString, errorToString) {
102
- const errors = [];
103
-
104
- if (!(error instanceof Error)) {
105
- errors.push(error);
106
- } else if (!(0, _types.isImageError)(error)) {
107
- errors.push(errorToString(error));
108
- } else if (typeof error.images == 'string') {
109
- errors.push(imageErrorToString(error.images));
110
- } else {
111
- const imageErrors = error.images;
112
- Object.keys(imageErrors).forEach(imageName => {
113
- var _imageErrors$imageNam;
114
-
115
- errors.push(imageErrorToString((_imageErrors$imageNam = imageErrors[imageName]) !== null && _imageErrors$imageNam !== void 0 ? _imageErrors$imageNam : '', imageName));
116
- });
117
- }
118
-
119
- return errors;
120
- }
@@ -1,266 +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
- var _await$readdirAsync$m;
61
-
62
- return (_await$readdirAsync$m = (await readdirAsync(imageDir)).map(filename => filename.replace(actualImagesRegexp, '$1')).map(Number).filter(x => !isNaN(x)).sort((a, b) => b - a)[0]) !== null && _await$readdirAsync$m !== void 0 ? _await$readdirAsync$m : 0;
63
- } catch (_error) {
64
- return 0;
65
- }
66
- } // FIXME browser options hotfix
67
-
68
-
69
- async function worker(config, options) {
70
- var _await$browser$getSes;
71
-
72
- let retries = 0;
73
- let images = {};
74
- let error = undefined;
75
- const testScope = [];
76
-
77
- function runHandler(failures) {
78
- if (failures > 0 && (error || Object.values(images).some(image => (image === null || image === void 0 ? void 0 : image.error) != null))) {
79
- var _error2;
80
-
81
- const isTimeout = hasTimeout(error) || Object.values(images).some(image => hasTimeout(image === null || image === void 0 ? void 0 : image.error));
82
- const payload = {
83
- status: 'failed',
84
- images,
85
- error
86
- };
87
- isTimeout ? (0, _messages.emitWorkerMessage)({
88
- type: 'error',
89
- payload: {
90
- error: (_error2 = error) !== null && _error2 !== void 0 ? _error2 : 'Unknown error'
91
- }
92
- }) : (0, _messages.emitTestMessage)({
93
- type: 'end',
94
- payload
95
- });
96
- } else {
97
- (0, _messages.emitTestMessage)({
98
- type: 'end',
99
- payload: {
100
- status: 'success',
101
- images
102
- }
103
- });
104
- }
105
- }
106
-
107
- async function saveImages(imageDir, images) {
108
- await mkdirAsync(imageDir, {
109
- recursive: true
110
- });
111
-
112
- for (const {
113
- name,
114
- data
115
- } of images) {
116
- await writeFileAsync(_path.default.join(imageDir, name), data);
117
- }
118
- }
119
-
120
- async function getExpected(assertImageName) {
121
- var _images$imageName;
122
-
123
- // context => [kind, story, test, browser]
124
- // rootSuite -> kindSuite -> storyTest -> [browsers.png]
125
- // rootSuite -> kindSuite -> storySuite -> test -> [browsers.png]
126
- const testPath = [...testScope];
127
- const imageName = assertImageName !== null && assertImageName !== void 0 ? assertImageName : testPath.pop();
128
- const imagesMeta = [];
129
-
130
- const reportImageDir = _path.default.join(config.reportDir, ...testPath);
131
-
132
- const imageNumber = (await getLastImageNumber(reportImageDir, imageName)) + 1;
133
- const actualImageName = `${imageName}-actual-${imageNumber}.png`;
134
- const image = images[imageName] = (_images$imageName = images[imageName]) !== null && _images$imageName !== void 0 ? _images$imageName : {
135
- actual: actualImageName
136
- };
137
-
138
- const onCompare = async (actual, expect, diff) => {
139
- imagesMeta.push({
140
- name: image.actual,
141
- data: actual
142
- });
143
-
144
- if (diff && expect) {
145
- image.expect = `${imageName}-expect-${imageNumber}.png`;
146
- image.diff = `${imageName}-diff-${imageNumber}.png`;
147
- imagesMeta.push({
148
- name: image.expect,
149
- data: expect
150
- });
151
- imagesMeta.push({
152
- name: image.diff,
153
- data: diff
154
- });
155
- }
156
-
157
- if (options.saveReport) {
158
- await saveImages(reportImageDir, imagesMeta);
159
- }
160
- };
161
-
162
- const expectImageDir = _path.default.join(config.screenDir, ...testPath);
163
-
164
- const expectImageStat = await getStat(_path.default.join(expectImageDir, `${imageName}.png`));
165
- if (!expectImageStat) return {
166
- expected: null,
167
- onCompare
168
- };
169
- const expected = await readFileAsync(_path.default.join(expectImageDir, `${imageName}.png`));
170
- return {
171
- expected,
172
- onCompare
173
- };
174
- }
175
-
176
- const mochaOptions = {
177
- timeout: 30000,
178
- reporter: process.env.TEAMCITY_VERSION ? _reporter.TeamcityReporter : options.reporter || _reporter.CreeveyReporter,
179
- reporterOptions: {
180
- reportDir: config.reportDir,
181
- topLevelSuite: options.browser,
182
-
183
- get willRetry() {
184
- return retries < config.maxRetries;
185
- },
186
-
187
- get images() {
188
- return images;
189
- },
190
-
191
- get sessionId() {
192
- return sessionId;
193
- }
194
-
195
- }
196
- };
197
- const mocha = new _mocha.default(mochaOptions); // @ts-expect-error: @types/mocha has out-dated types
198
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
199
-
200
- mocha.cleanReferencesAfterRun(false);
201
-
202
- _chai.default.use((0, _chaiImage.default)(getExpected, config.diffOptions));
203
-
204
- await (0, _helpers.addTestsFromStories)(mocha.suite, config, {
205
- browser: options.browser,
206
- watch: options.ui,
207
- debug: options.debug
208
- });
209
- const browserConfig = config.browsers[options.browser];
210
- const browser = await (0, _selenium.getBrowser)(config, browserConfig);
211
- 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();
212
- if (browser == null) return;
213
- const interval = setInterval(() => void browser.getCurrentUrl().then(url => {
214
- if (options.debug) _logger.logger.debug(`${options.browser}:${_chalk.default.gray(sessionId)}`, 'current url', _chalk.default.magenta(url));
215
- }), 10 * 1000);
216
- (0, _messages.subscribeOn)('shutdown', () => clearInterval(interval));
217
- mocha.suite.beforeAll(function () {
218
- this.config = config;
219
- this.browser = browser;
220
- this.until = _seleniumWebdriver.until;
221
- this.keys = _seleniumWebdriver.Key;
222
- this.expect = _chai.default.expect;
223
- this.browserName = options.browser;
224
- this.testScope = testScope;
225
- });
226
- mocha.suite.beforeEach(_selenium.switchStory);
227
- (0, _messages.subscribeOn)('test', message => {
228
- if (message.type != 'start') return;
229
- const test = message.payload;
230
- const testPath = test.path.join(' ').replace(/[|\\{}()[\]^$+*?.-]/g, '\\$&');
231
- images = {};
232
- error = undefined;
233
- retries = test.retries;
234
- mocha.grep(new RegExp(`^${testPath}$`));
235
- const runner = mocha.run(runHandler); // TODO How handle browser corruption?
236
-
237
- runner.on('fail', (_test, reason) => {
238
- if (!(reason instanceof Error)) {
239
- error = reason;
240
- } else if (!(0, _types.isImageError)(reason)) {
241
- var _reason$stack;
242
-
243
- error = (_reason$stack = reason.stack) !== null && _reason$stack !== void 0 ? _reason$stack : reason.message;
244
- } else if (typeof reason.images == 'string') {
245
- const image = images[testScope.slice(-1)[0]];
246
- if (image) image.error = reason.images;
247
- } else {
248
- const imageErrors = reason.images;
249
- Object.keys(imageErrors).forEach(imageName => {
250
- const image = images[imageName];
251
- if (image) image.error = imageErrors[imageName];
252
- });
253
- }
254
- });
255
- });
256
-
257
- _logger.logger.info(`${options.browser}:${_chalk.default.gray(sessionId)} is ready`);
258
-
259
- (0, _messages.emitWorkerMessage)({
260
- type: 'ready'
261
- });
262
- }
263
-
264
- function hasTimeout(str) {
265
- return str != null && str.toLowerCase().includes('timeout');
266
- }
package/lib/cjs/shared.js DELETED
@@ -1,35 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.denormalizeStoryParameters = exports.combineParameters = void 0;
7
-
8
- var _lodash = require("lodash");
9
-
10
- // NOTE: Copy-paste from storybook/api
11
- const combineParameters = (...parameterSets) => // eslint-disable-next-line @typescript-eslint/no-unsafe-return
12
- (0, _lodash.mergeWith)({}, ...parameterSets, (_, srcValue) => {
13
- // Treat arrays as scalars:
14
- if (Array.isArray(srcValue)) return srcValue;
15
- return undefined;
16
- }); // NOTE: Copy-paste from storybook/api
17
-
18
-
19
- exports.combineParameters = combineParameters;
20
-
21
- const denormalizeStoryParameters = ({
22
- globalParameters,
23
- kindParameters,
24
- stories
25
- }) => {
26
- return (0, _lodash.mapValues)(stories, storyData => {
27
- var _kindParameters$story;
28
-
29
- return { ...storyData,
30
- parameters: combineParameters(globalParameters, (_kindParameters$story = kindParameters[storyData.kind]) !== null && _kindParameters$story !== void 0 ? _kindParameters$story : {}, storyData.parameters)
31
- };
32
- });
33
- };
34
-
35
- exports.denormalizeStoryParameters = denormalizeStoryParameters;
package/lib/cjs/types.js DELETED
@@ -1,69 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.noop = noop;
7
- exports.isDefined = isDefined;
8
- exports.isTest = isTest;
9
- exports.isObject = isObject;
10
- exports.isString = isString;
11
- exports.isFunction = isFunction;
12
- exports.isImageError = isImageError;
13
- exports.isProcessMessage = isProcessMessage;
14
- exports.isWorkerMessage = isWorkerMessage;
15
- exports.isTestMessage = isTestMessage;
16
- exports.isWebpackMessage = isWebpackMessage;
17
- exports.isDockerMessage = isDockerMessage;
18
-
19
- /* eslint-disable @typescript-eslint/no-explicit-any */
20
-
21
- /* eslint-enable @typescript-eslint/no-explicit-any */
22
- function noop() {
23
- /* noop */
24
- }
25
-
26
- function isDefined(value) {
27
- return value !== null && value !== undefined;
28
- }
29
-
30
- function isTest(x) {
31
- return isDefined(x) && 'id' in x && 'storyId' in x && typeof x.id == 'string' && typeof x.storyId == 'string';
32
- }
33
-
34
- function isObject(x) {
35
- return typeof x == 'object' && x != null;
36
- }
37
-
38
- function isString(x) {
39
- return typeof x == 'string';
40
- } // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
-
42
-
43
- function isFunction(x) {
44
- return typeof x == 'function';
45
- }
46
-
47
- function isImageError(error) {
48
- return error instanceof Error && 'images' in error;
49
- }
50
-
51
- function isProcessMessage(message) {
52
- return isObject(message) && 'scope' in message;
53
- }
54
-
55
- function isWorkerMessage(message) {
56
- return isProcessMessage(message) && message.scope == 'worker';
57
- }
58
-
59
- function isTestMessage(message) {
60
- return isProcessMessage(message) && message.scope == 'test';
61
- }
62
-
63
- function isWebpackMessage(message) {
64
- return isProcessMessage(message) && message.scope == 'webpack';
65
- }
66
-
67
- function isDockerMessage(message) {
68
- return isProcessMessage(message) && message.scope == 'docker';
69
- }
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');