creevey 0.9.0-beta.1 → 0.9.0-non-webpack.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 (267) hide show
  1. package/AUTHORS +15 -15
  2. package/CHANGELOG.md +1275 -1275
  3. package/LICENSE +21 -21
  4. package/README.md +7 -0
  5. package/addon/README.md +3 -0
  6. package/addon/package.json +4 -0
  7. package/docs/config.md +212 -212
  8. package/docs/grid.md +10 -10
  9. package/docs/tests.md +63 -63
  10. package/jest.config.js +6 -0
  11. package/lib/cjs/cli.js +5 -0
  12. package/lib/cjs/client/addon/Manager.js +418 -0
  13. package/lib/cjs/client/addon/components/Addon.js +76 -0
  14. package/lib/cjs/client/addon/components/Icons.js +42 -0
  15. package/lib/cjs/client/addon/components/Panel.js +68 -0
  16. package/lib/cjs/client/addon/components/TestSelect.js +63 -0
  17. package/lib/cjs/client/addon/components/Tools.js +114 -0
  18. package/lib/cjs/client/addon/decorator.js +11 -0
  19. package/lib/cjs/client/addon/index.js +31 -0
  20. package/lib/cjs/client/addon/preset.js +81 -0
  21. package/lib/cjs/client/addon/readyForCapture.js +12 -0
  22. package/lib/cjs/client/addon/register.js +100 -0
  23. package/lib/cjs/client/addon/utils.js +38 -0
  24. package/lib/cjs/client/addon/withCreevey.js +558 -0
  25. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +85 -0
  26. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +88 -0
  27. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +176 -0
  28. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +179 -0
  29. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +110 -0
  30. package/lib/cjs/client/shared/components/ImagesView/index.js +45 -0
  31. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +46 -0
  32. package/lib/cjs/client/shared/components/PageFooter/Paging.js +98 -0
  33. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +78 -0
  34. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +144 -0
  35. package/lib/cjs/client/shared/components/ResultsPage.js +173 -0
  36. package/lib/cjs/client/shared/creeveyClientApi.js +107 -0
  37. package/lib/cjs/client/shared/helpers.js +482 -0
  38. package/lib/cjs/client/shared/viewMode.js +17 -0
  39. package/lib/cjs/client/web/142.js +2 -0
  40. package/lib/cjs/client/web/142.js.LICENSE.txt +12 -0
  41. package/lib/cjs/client/web/32.js +1 -0
  42. package/lib/cjs/client/web/551.js +1 -0
  43. package/lib/cjs/client/web/566.js +2 -0
  44. package/lib/cjs/client/web/566.js.LICENSE.txt +31 -0
  45. package/lib/cjs/client/web/691.js +2 -0
  46. package/lib/cjs/client/web/691.js.LICENSE.txt +8 -0
  47. package/lib/cjs/client/web/725.js +1 -0
  48. package/lib/cjs/client/web/index.html +19 -0
  49. package/lib/cjs/client/web/main.js +2 -38
  50. package/lib/cjs/client/web/main.js.LICENSE.txt +49 -0
  51. package/lib/cjs/creevey.js +69 -0
  52. package/lib/cjs/index.js +62 -0
  53. package/lib/cjs/server/config.js +96 -0
  54. package/lib/cjs/server/docker.js +146 -0
  55. package/lib/cjs/server/extract.js +50 -0
  56. package/lib/cjs/server/index.js +83 -0
  57. package/lib/cjs/server/loaders/babel/creevey-plugin.js +86 -0
  58. package/lib/cjs/server/loaders/babel/helpers.js +469 -0
  59. package/lib/cjs/server/loaders/babel/register.js +124 -0
  60. package/lib/cjs/server/loaders/hooks/mdx.js +30 -0
  61. package/lib/cjs/server/loaders/hooks/svelte.js +65 -0
  62. package/lib/cjs/server/loaders/webpack/compile.js +293 -0
  63. package/lib/cjs/server/loaders/webpack/creevey-loader.js +179 -0
  64. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +39 -0
  65. package/lib/cjs/server/loaders/webpack/mdx-loader.js +72 -0
  66. package/lib/cjs/server/loaders/webpack/start.js +41 -0
  67. package/lib/cjs/server/logger.js +48 -0
  68. package/lib/cjs/server/master/api.js +71 -0
  69. package/lib/cjs/server/master/index.js +146 -0
  70. package/lib/cjs/server/master/master.js +57 -0
  71. package/lib/cjs/server/master/pool.js +197 -0
  72. package/lib/cjs/server/master/runner.js +281 -0
  73. package/lib/cjs/server/master/server.js +129 -0
  74. package/lib/cjs/server/messages.js +264 -0
  75. package/lib/cjs/server/selenium/browser.js +672 -0
  76. package/lib/cjs/server/selenium/index.js +31 -0
  77. package/lib/cjs/server/selenium/selenoid.js +172 -0
  78. package/lib/cjs/server/stories.js +159 -0
  79. package/lib/cjs/server/storybook/entry.js +70 -0
  80. package/lib/cjs/server/storybook/helpers.js +159 -0
  81. package/lib/cjs/server/storybook/providers/browser.js +74 -0
  82. package/lib/cjs/server/storybook/providers/hybrid.js +84 -0
  83. package/lib/cjs/server/storybook/providers/nodejs.js +239 -0
  84. package/lib/cjs/server/testsFiles/parser.js +72 -0
  85. package/lib/cjs/server/testsFiles/register.js +48 -0
  86. package/lib/cjs/server/update.js +79 -0
  87. package/lib/cjs/server/utils.js +183 -0
  88. package/lib/cjs/server/worker/chai-image.js +142 -0
  89. package/lib/cjs/server/worker/helpers.js +69 -0
  90. package/lib/cjs/server/worker/index.js +15 -0
  91. package/lib/cjs/server/worker/reporter.js +108 -0
  92. package/lib/cjs/server/worker/worker.js +268 -0
  93. package/lib/cjs/shared/index.js +89 -0
  94. package/lib/cjs/shared/serializeRegExp.js +41 -0
  95. package/lib/cjs/types.js +74 -0
  96. package/lib/esm/cli.js +4 -0
  97. package/lib/esm/client/addon/Manager.js +402 -0
  98. package/lib/esm/client/addon/components/Addon.js +58 -0
  99. package/lib/esm/client/addon/components/Icons.js +27 -0
  100. package/lib/esm/client/addon/components/Panel.js +49 -0
  101. package/lib/esm/client/addon/components/TestSelect.js +49 -0
  102. package/lib/esm/client/addon/components/Tools.js +91 -0
  103. package/lib/esm/client/addon/decorator.js +2 -0
  104. package/lib/esm/client/addon/index.js +2 -0
  105. package/lib/esm/client/addon/preset.js +56 -0
  106. package/lib/esm/client/addon/readyForCapture.js +5 -0
  107. package/lib/esm/client/addon/register.js +79 -0
  108. package/lib/esm/client/addon/utils.js +31 -0
  109. package/lib/esm/client/addon/withCreevey.js +534 -0
  110. package/lib/esm/client/shared/components/ImagesView/BlendView.js +63 -0
  111. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +65 -0
  112. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +151 -0
  113. package/lib/esm/client/shared/components/ImagesView/SlideView.js +154 -0
  114. package/lib/esm/client/shared/components/ImagesView/SwapView.js +88 -0
  115. package/lib/esm/client/shared/components/ImagesView/index.js +5 -0
  116. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +32 -0
  117. package/lib/esm/client/shared/components/PageFooter/Paging.js +84 -0
  118. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +64 -0
  119. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +120 -0
  120. package/lib/esm/client/shared/components/ResultsPage.js +143 -0
  121. package/lib/esm/client/shared/creeveyClientApi.js +98 -0
  122. package/lib/esm/client/shared/helpers.js +424 -0
  123. package/lib/esm/client/shared/viewMode.js +6 -0
  124. package/lib/esm/creevey.js +54 -0
  125. package/lib/esm/index.js +5 -0
  126. package/lib/esm/server/config.js +73 -0
  127. package/lib/esm/server/docker.js +123 -0
  128. package/lib/esm/server/extract.js +34 -0
  129. package/lib/esm/server/index.js +64 -0
  130. package/lib/esm/server/loaders/babel/creevey-plugin.js +72 -0
  131. package/lib/esm/server/loaders/babel/helpers.js +452 -0
  132. package/lib/esm/server/loaders/babel/register.js +103 -0
  133. package/lib/esm/server/loaders/hooks/mdx.js +15 -0
  134. package/lib/esm/server/loaders/hooks/svelte.js +49 -0
  135. package/lib/esm/server/loaders/webpack/compile.js +270 -0
  136. package/lib/esm/server/loaders/webpack/creevey-loader.js +158 -0
  137. package/lib/esm/server/loaders/webpack/dummy-hmr.js +32 -0
  138. package/lib/esm/server/loaders/webpack/mdx-loader.js +58 -0
  139. package/lib/esm/server/loaders/webpack/start.js +27 -0
  140. package/lib/esm/server/logger.js +20 -0
  141. package/lib/esm/server/master/api.js +60 -0
  142. package/lib/esm/server/master/index.js +125 -0
  143. package/lib/esm/server/master/master.js +38 -0
  144. package/lib/esm/server/master/pool.js +176 -0
  145. package/lib/esm/server/master/runner.js +259 -0
  146. package/lib/esm/server/master/server.js +105 -0
  147. package/lib/esm/server/messages.js +232 -0
  148. package/lib/esm/server/selenium/browser.js +639 -0
  149. package/lib/esm/server/selenium/index.js +2 -0
  150. package/lib/esm/server/selenium/selenoid.js +149 -0
  151. package/lib/esm/server/stories.js +140 -0
  152. package/lib/esm/server/storybook/entry.js +46 -0
  153. package/lib/esm/server/storybook/helpers.js +98 -0
  154. package/lib/esm/server/storybook/providers/browser.js +60 -0
  155. package/lib/esm/server/storybook/providers/hybrid.js +64 -0
  156. package/lib/esm/server/storybook/providers/nodejs.js +217 -0
  157. package/lib/esm/server/testsFiles/parser.js +50 -0
  158. package/lib/esm/server/testsFiles/register.js +35 -0
  159. package/lib/esm/server/update.js +61 -0
  160. package/lib/esm/server/utils.js +142 -0
  161. package/lib/esm/server/worker/chai-image.js +130 -0
  162. package/lib/esm/server/worker/helpers.js +60 -0
  163. package/lib/esm/server/worker/index.js +1 -0
  164. package/lib/esm/server/worker/reporter.js +86 -0
  165. package/lib/esm/server/worker/worker.js +238 -0
  166. package/lib/esm/shared/index.js +66 -0
  167. package/lib/esm/shared/serializeRegExp.js +23 -0
  168. package/lib/esm/types.js +43 -0
  169. package/lib/types/cli.d.ts +1 -1
  170. package/lib/types/client/addon/Manager.d.ts +37 -37
  171. package/lib/types/client/addon/components/Addon.d.ts +8 -8
  172. package/lib/types/client/addon/components/Icons.d.ts +7 -7
  173. package/lib/types/client/addon/components/Panel.d.ts +9 -9
  174. package/lib/types/client/addon/components/TestSelect.d.ts +8 -9
  175. package/lib/types/client/addon/components/Tools.d.ts +6 -6
  176. package/lib/types/client/addon/decorator.d.ts +1 -1
  177. package/lib/types/client/addon/index.d.ts +2 -0
  178. package/lib/types/client/addon/preset.d.ts +23 -24
  179. package/lib/types/client/addon/readyForCapture.d.ts +6 -6
  180. package/lib/types/client/addon/register.d.ts +3 -3
  181. package/lib/types/client/addon/utils.d.ts +2 -2
  182. package/lib/types/client/addon/withCreevey.d.ts +24 -24
  183. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +3 -3
  184. package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +24 -25
  185. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +3 -3
  186. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +3 -3
  187. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +3 -3
  188. package/lib/types/client/shared/components/ImagesView/index.d.ts +5 -5
  189. package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +8 -9
  190. package/lib/types/client/shared/components/PageFooter/Paging.d.ts +7 -8
  191. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +12 -12
  192. package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +16 -17
  193. package/lib/types/client/shared/components/ResultsPage.d.ts +18 -18
  194. package/lib/types/client/shared/creeveyClientApi.d.ts +9 -9
  195. package/lib/types/client/shared/helpers.d.ts +46 -46
  196. package/lib/types/client/shared/viewMode.d.ts +4 -4
  197. package/lib/types/client/web/CreeveyApp.d.ts +11 -12
  198. package/lib/types/client/web/CreeveyContext.d.ts +11 -11
  199. package/lib/types/client/web/CreeveyLoader.d.ts +2 -3
  200. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +19 -19
  201. package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +6 -6
  202. package/lib/types/client/web/CreeveyView/SideBar/SideBar.d.ts +14 -14
  203. package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +12 -13
  204. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +33 -33
  205. package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +7 -8
  206. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +10 -10
  207. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +9 -9
  208. package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +6 -6
  209. package/lib/types/client/web/CreeveyView/SideBar/index.d.ts +1 -1
  210. package/lib/types/client/web/KeyboardEventsContext.d.ts +13 -13
  211. package/lib/types/client/web/index.d.ts +4 -4
  212. package/lib/types/creevey.d.ts +1 -1
  213. package/lib/types/index.d.ts +1 -4
  214. package/lib/types/server/config.d.ts +4 -4
  215. package/lib/types/server/docker.d.ts +7 -7
  216. package/lib/types/server/extract.d.ts +2 -2
  217. package/lib/types/server/index.d.ts +2 -2
  218. package/lib/types/server/loaders/babel/creevey-plugin.d.ts +1 -1
  219. package/lib/types/server/loaders/babel/helpers.d.ts +19 -19
  220. package/lib/types/server/loaders/babel/register.d.ts +5 -5
  221. package/lib/types/server/loaders/hooks/mdx.d.ts +1 -1
  222. package/lib/types/server/loaders/hooks/svelte.d.ts +1 -1
  223. package/lib/types/server/loaders/webpack/compile.d.ts +2 -2
  224. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +4 -2
  225. package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +10 -10
  226. package/lib/types/server/loaders/webpack/mdx-loader.d.ts +6 -6
  227. package/lib/types/server/loaders/webpack/start.d.ts +1 -1
  228. package/lib/types/server/logger.d.ts +10 -6
  229. package/lib/types/server/master/api.d.ts +7 -7
  230. package/lib/types/server/master/index.d.ts +3 -3
  231. package/lib/types/server/master/master.d.ts +7 -7
  232. package/lib/types/server/master/pool.d.ts +31 -31
  233. package/lib/types/server/master/runner.d.ts +26 -26
  234. package/lib/types/server/master/server.d.ts +2 -2
  235. package/lib/types/server/messages.d.ts +27 -27
  236. package/lib/types/server/selenium/browser.d.ts +17 -17
  237. package/lib/types/server/selenium/index.d.ts +2 -2
  238. package/lib/types/server/selenium/selenoid.d.ts +3 -3
  239. package/lib/types/server/stories.d.ts +8 -8
  240. package/lib/types/server/storybook/entry.d.ts +18 -18
  241. package/lib/types/server/storybook/helpers.d.ts +24 -24
  242. package/lib/types/server/storybook/providers/browser.d.ts +4 -4
  243. package/lib/types/server/storybook/providers/hybrid.d.ts +4 -4
  244. package/lib/types/server/storybook/providers/nodejs.d.ts +9 -9
  245. package/lib/types/server/testsFiles/parser.d.ts +12 -12
  246. package/lib/types/server/testsFiles/register.d.ts +2 -2
  247. package/lib/types/server/update.d.ts +2 -2
  248. package/lib/types/server/utils.d.ts +20 -20
  249. package/lib/types/server/worker/chai-image.d.ts +6 -6
  250. package/lib/types/server/worker/helpers.d.ts +8 -8
  251. package/lib/types/server/worker/index.d.ts +1 -1
  252. package/lib/types/server/worker/reporter.d.ts +8 -8
  253. package/lib/types/server/worker/worker.d.ts +4 -4
  254. package/lib/types/{shared.d.ts → shared/index.d.ts} +7 -16
  255. package/lib/types/shared/serializeRegExp.d.ts +9 -0
  256. package/lib/types/types.d.ts +490 -489
  257. package/package.json +115 -102
  258. package/preset.js +9 -9
  259. package/types/babel__register.d.ts +1 -1
  260. package/types/chai.d.ts +12 -12
  261. package/types/event-source-polyfill.d.ts +6 -6
  262. package/types/mdx.d.ts +3 -2
  263. package/types/mocha.d.ts +20 -20
  264. package/types/png.d.ts +4 -4
  265. package/lib/cjs/client/web/1.js +0 -13
  266. package/lib/cjs/client/web/2.js +0 -1
  267. package/storybook-static/stories.json +0 -21
@@ -0,0 +1,49 @@
1
+ /*
2
+ object-assign
3
+ (c) Sindre Sorhus
4
+ @license MIT
5
+ */
6
+
7
+ /*! *****************************************************************************
8
+ Copyright (c) Microsoft Corporation.
9
+
10
+ Permission to use, copy, modify, and/or distribute this software for any
11
+ purpose with or without fee is hereby granted.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
14
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
15
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
16
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
17
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
18
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19
+ PERFORMANCE OF THIS SOFTWARE.
20
+ ***************************************************************************** */
21
+
22
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
23
+
24
+ /** @license React v0.20.2
25
+ * scheduler.production.min.js
26
+ *
27
+ * Copyright (c) Facebook, Inc. and its affiliates.
28
+ *
29
+ * This source code is licensed under the MIT license found in the
30
+ * LICENSE file in the root directory of this source tree.
31
+ */
32
+
33
+ /** @license React v17.0.2
34
+ * react-dom.production.min.js
35
+ *
36
+ * Copyright (c) Facebook, Inc. and its affiliates.
37
+ *
38
+ * This source code is licensed under the MIT license found in the
39
+ * LICENSE file in the root directory of this source tree.
40
+ */
41
+
42
+ /** @license React v17.0.2
43
+ * react.production.min.js
44
+ *
45
+ * Copyright (c) Facebook, Inc. and its affiliates.
46
+ *
47
+ * This source code is licensed under the MIT license found in the
48
+ * LICENSE file in the root directory of this source tree.
49
+ */
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ var _cluster = _interopRequireDefault(require("cluster"));
4
+
5
+ var _minimist = _interopRequireDefault(require("minimist"));
6
+
7
+ var _server = _interopRequireDefault(require("./server"));
8
+
9
+ var _types = require("./types");
10
+
11
+ var _messages = require("./server/messages");
12
+
13
+ var _utils = require("./server/utils");
14
+
15
+ var _loglevel = require("loglevel");
16
+
17
+ var _logger = require("./server/logger");
18
+
19
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+
21
+ function shutdownOnException(reason) {
22
+ if (_utils.isShuttingDown.current) return;
23
+ const error = reason instanceof Error ? reason.stack ?? reason.message : reason;
24
+
25
+ _logger.logger.error(error);
26
+
27
+ process.exitCode = -1;
28
+ if (_cluster.default.isWorker) (0, _messages.emitWorkerMessage)({
29
+ type: 'error',
30
+ payload: {
31
+ error
32
+ }
33
+ });
34
+ if (_cluster.default.isPrimary && !_utils.isShuttingDown.current) void (0, _utils.shutdownWorkers)();
35
+ }
36
+
37
+ process.on('uncaughtException', shutdownOnException);
38
+ process.on('unhandledRejection', shutdownOnException);
39
+ if (_cluster.default.isWorker) process.on('SIGINT', _types.noop);
40
+ if (_cluster.default.isPrimary) process.on('SIGINT', _utils.shutdown);
41
+ const argv = (0, _minimist.default)(process.argv.slice(2), {
42
+ string: ['browser', 'config', 'reporter', 'reportDir', 'screenDir'],
43
+ boolean: ['debug', 'ui', 'saveReport', 'webpack', 'tests'],
44
+ default: {
45
+ port: 3000,
46
+ saveReport: true
47
+ },
48
+ alias: {
49
+ port: 'p',
50
+ config: 'c',
51
+ debug: 'd',
52
+ update: 'u',
53
+ extract: 'e'
54
+ }
55
+ }); // @ts-expect-error: define log level for storybook
56
+
57
+ global.LOGLEVEL = argv.debug ? 'debug' : 'warn';
58
+
59
+ if (argv.debug) {
60
+ _logger.logger.setDefaultLevel(_loglevel.levels.DEBUG);
61
+
62
+ (0, _loglevel.setDefaultLevel)(_loglevel.levels.DEBUG);
63
+ } else {
64
+ _logger.logger.setDefaultLevel(_loglevel.levels.INFO);
65
+
66
+ (0, _loglevel.setDefaultLevel)(_loglevel.levels.INFO);
67
+ }
68
+
69
+ void (0, _server.default)(argv);
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ browserStoriesProvider: true,
8
+ nodejsStoriesProvider: true,
9
+ hybridStoriesProvider: true
10
+ };
11
+ Object.defineProperty(exports, "browserStoriesProvider", {
12
+ enumerable: true,
13
+ get: function () {
14
+ return _browser.loadStories;
15
+ }
16
+ });
17
+ Object.defineProperty(exports, "hybridStoriesProvider", {
18
+ enumerable: true,
19
+ get: function () {
20
+ return _hybrid.loadStories;
21
+ }
22
+ });
23
+ Object.defineProperty(exports, "nodejsStoriesProvider", {
24
+ enumerable: true,
25
+ get: function () {
26
+ return _nodejs.loadStories;
27
+ }
28
+ });
29
+
30
+ var _types = require("./types");
31
+
32
+ Object.keys(_types).forEach(function (key) {
33
+ if (key === "default" || key === "__esModule") return;
34
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
35
+ if (key in exports && exports[key] === _types[key]) return;
36
+ Object.defineProperty(exports, key, {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _types[key];
40
+ }
41
+ });
42
+ });
43
+
44
+ var _browser = require("./server/storybook/providers/browser");
45
+
46
+ var _nodejs = require("./server/storybook/providers/nodejs");
47
+
48
+ var _hybrid = require("./server/storybook/providers/hybrid");
49
+
50
+ var _parser = require("./server/testsFiles/parser");
51
+
52
+ Object.keys(_parser).forEach(function (key) {
53
+ if (key === "default" || key === "__esModule") return;
54
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
55
+ if (key in exports && exports[key] === _parser[key]) return;
56
+ Object.defineProperty(exports, key, {
57
+ enumerable: true,
58
+ get: function () {
59
+ return _parser[key];
60
+ }
61
+ });
62
+ });
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaultConfig = exports.defaultBrowser = void 0;
7
+ exports.readConfig = readConfig;
8
+
9
+ var _fs = _interopRequireDefault(require("fs"));
10
+
11
+ var _path = _interopRequireDefault(require("path"));
12
+
13
+ var _helpers = require("./storybook/helpers");
14
+
15
+ var _nodejs = require("./storybook/providers/nodejs");
16
+
17
+ var _browser = require("./storybook/providers/browser");
18
+
19
+ var _types = require("../types");
20
+
21
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
+
23
+ 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); }
24
+
25
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
26
+
27
+ const defaultBrowser = 'chrome';
28
+ exports.defaultBrowser = defaultBrowser;
29
+ const defaultConfig = {
30
+ useDocker: true,
31
+ useWebpackToExtractTests: false,
32
+ dockerImage: 'aerokube/selenoid:latest-release',
33
+ dockerImagePlatform: '',
34
+ pullImages: true,
35
+ failFast: false,
36
+ storybookUrl: 'http://localhost:6006',
37
+ screenDir: _path.default.resolve('images'),
38
+ reportDir: _path.default.resolve('report'),
39
+ storybookDir: _path.default.resolve('.storybook'),
40
+ maxRetries: 0,
41
+ diffOptions: {
42
+ threshold: 0,
43
+ includeAA: true
44
+ },
45
+ browsers: {
46
+ [defaultBrowser]: true
47
+ },
48
+ hooks: {},
49
+ babelOptions: _ => _,
50
+ testsRegex: /\.creevey\.(t|j)s$/
51
+ };
52
+ exports.defaultConfig = defaultConfig;
53
+
54
+ function normalizeBrowserConfig(name, config) {
55
+ if (typeof config == 'boolean') return {
56
+ browserName: name
57
+ };
58
+ if (typeof config == 'string') return {
59
+ browserName: config
60
+ };
61
+ return config;
62
+ }
63
+
64
+ function resolveConfigPath(configPath) {
65
+ const rootDir = process.cwd();
66
+
67
+ const configDir = _path.default.resolve('.creevey');
68
+
69
+ if ((0, _types.isDefined)(configPath)) {
70
+ configPath = _path.default.resolve(configPath);
71
+ } else if (_fs.default.existsSync(configDir)) {
72
+ configPath = _path.default.join(configDir, 'config'); // TODO We already find file with extension, why not use it?
73
+ } else if (_fs.default.readdirSync(rootDir).find(filename => filename.startsWith('creevey.config'))) {
74
+ configPath = _path.default.join(rootDir, 'creevey.config');
75
+ }
76
+
77
+ return configPath;
78
+ }
79
+
80
+ async function readConfig(options) {
81
+ const configPath = resolveConfigPath(options.config);
82
+ const userConfig = { ...defaultConfig
83
+ };
84
+ if ((0, _types.isDefined)(configPath)) Object.assign(userConfig, (await Promise.resolve(`${configPath}`).then(s => _interopRequireWildcard(require(s)))).default);
85
+ _helpers.storybookDirRef.current = userConfig.storybookDir;
86
+ if ((0, _helpers.isStorybookVersionLessThan)(6, 2)) userConfig.useWebpackToExtractTests = true;
87
+ if (!userConfig.storiesProvider) userConfig.storiesProvider = (await (0, _helpers.isCSFv3Enabled)()) && (0, _helpers.isStorybookVersionGreaterThan)(5) ? _browser.loadStories : _nodejs.loadStories;
88
+ if (userConfig.storiesProvider == _browser.loadStories && (0, _helpers.isStorybookVersionLessThan)(6)) throw new Error("Creevey browser stories provider doesn't support Storybook 5.x or older versions");
89
+ if (options.failFast != undefined) userConfig.failFast = Boolean(options.failFast);
90
+ if (options.reportDir) userConfig.reportDir = _path.default.resolve(options.reportDir);
91
+ if (options.screenDir) userConfig.screenDir = _path.default.resolve(options.screenDir); // NOTE: Hack to pass typescript checking
92
+
93
+ const config = userConfig;
94
+ Object.entries(config.browsers).forEach(([browser, browserConfig]) => config.browsers[browser] = normalizeBrowserConfig(browser, browserConfig));
95
+ return config;
96
+ }
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = _default;
7
+ exports.pullImages = pullImages;
8
+ exports.runImage = runImage;
9
+
10
+ var _cluster = _interopRequireDefault(require("cluster"));
11
+
12
+ var _types = require("../types");
13
+
14
+ var _messages = require("./messages");
15
+
16
+ var _utils = require("./utils");
17
+
18
+ var _dockerode = _interopRequireDefault(require("dockerode"));
19
+
20
+ var _stream = require("stream");
21
+
22
+ var _ora = _interopRequireDefault(require("ora"));
23
+
24
+ var _logger = require("./logger");
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+
28
+ const docker = new _dockerode.default();
29
+
30
+ class DevNull extends _stream.Writable {
31
+ _write(_chunk, _encoding, callback) {
32
+ setImmediate(callback);
33
+ }
34
+
35
+ }
36
+
37
+ async function pullImages(images, {
38
+ auth,
39
+ platform
40
+ } = {}) {
41
+ const args = {};
42
+ if (auth) args.authconfig = auth;
43
+ if (platform) args.platform = platform;
44
+
45
+ _logger.logger.info('Pull docker images');
46
+
47
+ for (const image of images) {
48
+ await new Promise((resolve, reject) => {
49
+ const spinner = (0, _ora.default)(`${image}: Pull start`).start(); // eslint-disable-next-line @typescript-eslint/no-floating-promises
50
+
51
+ docker.pull(image, args, function (pullError, stream) {
52
+ if (pullError) {
53
+ spinner.fail();
54
+ return reject(pullError);
55
+ } // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
56
+
57
+
58
+ docker.modem.followProgress(stream, onFinished, onProgress);
59
+
60
+ function onFinished(error) {
61
+ if (error) {
62
+ spinner.fail();
63
+ return reject(error);
64
+ }
65
+
66
+ spinner.succeed(`${image}: Pull complete`);
67
+ resolve();
68
+ }
69
+
70
+ function onProgress(event) {
71
+ if (!/^[a-z0-9]{12}$/i.test(event.id)) return;
72
+ spinner.text = `${image}: [${event.id}] ${event.status} ${event.progress ? `${event.progress}` : ''}`;
73
+ }
74
+ });
75
+ });
76
+ }
77
+ }
78
+
79
+ async function runImage(image, args, options, debug) {
80
+ await Promise.all((await docker.listContainers({
81
+ all: true,
82
+ filters: {
83
+ ancestor: [image]
84
+ }
85
+ })).map(async info => {
86
+ const container = docker.getContainer(info.Id);
87
+
88
+ try {
89
+ await container.stop();
90
+ } catch (_) {
91
+ /* noop */
92
+ }
93
+
94
+ await container.remove();
95
+ }));
96
+ const hub = docker.run(image, args, debug ? process.stdout : new DevNull(), options, error => {
97
+ if (error) throw error;
98
+ });
99
+ return new Promise(resolve => {
100
+ hub.once('container', container => {
101
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
102
+ (0, _messages.subscribeOn)('shutdown', async () => {
103
+ try {
104
+ await container.stop();
105
+ await container.remove();
106
+ } catch (error) {
107
+ /* noop */
108
+ }
109
+ });
110
+ });
111
+ hub.once('start', container => void container.inspect().then(info => resolve(info.NetworkSettings.Networks.bridge.IPAddress)));
112
+ });
113
+ }
114
+
115
+ async function _default(config, browser, startContainer) {
116
+ if (_cluster.default.isPrimary) {
117
+ const host = await startContainer();
118
+ let gridUrl = 'http://localhost:4444/wd/hub';
119
+ gridUrl = _utils.isInsideDocker ? gridUrl.replace(_utils.LOCALHOST_REGEXP, host) : gridUrl;
120
+
121
+ _cluster.default.on('message', (worker, message) => {
122
+ if (!(0, _types.isDockerMessage)(message)) return;
123
+ const dockerMessage = message;
124
+ if (dockerMessage.type != 'start') return;
125
+ (0, _messages.sendDockerMessage)(worker, {
126
+ type: 'success',
127
+ payload: {
128
+ gridUrl
129
+ }
130
+ });
131
+ });
132
+ } else {
133
+ if (browser && config.browsers[browser].gridUrl) return Promise.resolve();
134
+ return new Promise(resolve => {
135
+ (0, _messages.subscribeOn)('docker', message => {
136
+ if (message.type == 'success') {
137
+ config.gridUrl = message.payload.gridUrl;
138
+ resolve();
139
+ }
140
+ });
141
+ (0, _messages.emitDockerMessage)({
142
+ type: 'start'
143
+ });
144
+ });
145
+ }
146
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = extract;
7
+
8
+ var _shared = require("../shared");
9
+
10
+ var _messages = require("./messages");
11
+
12
+ var _stories = require("./stories");
13
+
14
+ var _helpers = require("./storybook/helpers");
15
+
16
+ var _nodejs = require("./storybook/providers/nodejs");
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
+ async function extract(config, options) {
23
+ if (config.useWebpackToExtractTests && process.env.__CREEVEY_ENV__ != 'test') {
24
+ await new Promise((resolve, reject) => {
25
+ (0, _messages.subscribeOn)('webpack', message => {
26
+ switch (message.type) {
27
+ case 'success':
28
+ return resolve();
29
+
30
+ case 'fail':
31
+ return reject();
32
+ }
33
+ });
34
+ void (async () => (await Promise.resolve().then(() => _interopRequireWildcard(require('./loaders/webpack/compile')))).default(config, options))();
35
+ });
36
+ }
37
+
38
+ const tests = await (0, _stories.loadTestsFromStories)(Object.keys(config.browsers), async () => {
39
+ const data = await (0, _nodejs.extractStoriesData)(config, {
40
+ watch: false,
41
+ debug: options.debug
42
+ });
43
+ const stories = (0, _helpers.isStorybookVersionLessThan)(6) || (0, _helpers.isStorybookVersionGreaterThan)(6, 3) ? data.stories : (0, _shared.denormalizeStoryParameters)(data);
44
+ if (options.extract) (0, _stories.saveStoriesJson)(data, options.extract);
45
+ return stories;
46
+ });
47
+ if (options.tests) (0, _stories.saveTestsJson)(tests); // eslint-disable-next-line no-process-exit
48
+
49
+ process.exit(0);
50
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = _default;
7
+
8
+ var _cluster = _interopRequireDefault(require("cluster"));
9
+
10
+ var _config = require("./config");
11
+
12
+ var _logger = require("./logger");
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ 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); }
17
+
18
+ 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; }
19
+
20
+ // NOTE: Impure function, mutate config by adding gridUrl prop
21
+ async function startWebdriverServer(config, options) {
22
+ if (config.useDocker) {
23
+ return (await Promise.resolve().then(() => _interopRequireWildcard(require('./docker')))).default(config, options.browser, async () => (await Promise.resolve().then(() => _interopRequireWildcard(require('./selenium/selenoid')))).startSelenoidContainer(config, options.debug));
24
+ } else {
25
+ return (await Promise.resolve().then(() => _interopRequireWildcard(require('./selenium/selenoid')))).startSelenoidStandalone(config, options.debug);
26
+ }
27
+ }
28
+
29
+ async function _default(options) {
30
+ const config = await (0, _config.readConfig)(options);
31
+ const {
32
+ browser = _config.defaultBrowser,
33
+ extract,
34
+ tests,
35
+ update,
36
+ webpack,
37
+ ui,
38
+ port
39
+ } = options;
40
+ if (!config) return; // NOTE: We don't need docker nor selenoid for webpack or update options
41
+
42
+ if (!(config.gridUrl || Object.values(config.browsers).every(({
43
+ gridUrl
44
+ }) => gridUrl)) && !extract && !webpack && !tests && !update) {
45
+ await startWebdriverServer(config, options);
46
+ }
47
+
48
+ switch (true) {
49
+ case Boolean(extract) || tests:
50
+ {
51
+ return (await Promise.resolve().then(() => _interopRequireWildcard(require('./extract')))).default(config, options);
52
+ }
53
+
54
+ case Boolean(update):
55
+ {
56
+ return (await Promise.resolve().then(() => _interopRequireWildcard(require('./update')))).default(config, typeof update == 'string' ? update : undefined);
57
+ }
58
+
59
+ case webpack:
60
+ {
61
+ _logger.logger.info('Starting Webpack Compiler');
62
+
63
+ return (await Promise.resolve().then(() => _interopRequireWildcard(require('./loaders/webpack/compile')))).default(config, options);
64
+ }
65
+
66
+ case _cluster.default.isPrimary:
67
+ {
68
+ _logger.logger.info('Starting Master Process');
69
+
70
+ const resolveApi = (await Promise.resolve().then(() => _interopRequireWildcard(require('./master/server')))).default(config.reportDir, port, ui);
71
+ return (await Promise.resolve().then(() => _interopRequireWildcard(require('./master')))).default(config, options, resolveApi);
72
+ }
73
+
74
+ default:
75
+ {
76
+ _logger.logger.info(`Starting Worker for ${browser}`);
77
+
78
+ return (await Promise.resolve().then(() => _interopRequireWildcard(require('./worker')))).default(config, { ...options,
79
+ browser
80
+ });
81
+ }
82
+ }
83
+ }
@@ -0,0 +1,86 @@
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 _helpers = require("./helpers");
11
+
12
+ var _logger = require("../../logger");
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ let lastStoryFile = null;
17
+ const stories = new Set();
18
+ const reexportedStories = new Map();
19
+
20
+ function _default() {
21
+ return {
22
+ pre() {
23
+ const parents = this.opts.parents() ?? [];
24
+ const story = this.opts.story();
25
+ this.resourcePath = this.filename;
26
+ this.fileType = _helpers.FileType.Invalid; // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+
28
+ this.visitedTopPaths = new Set();
29
+ this.visitedBindings = new Set();
30
+ this.reexportedStories = reexportedStories;
31
+
32
+ if (story && this.filename.startsWith(story) || parents.find(parent => this.reexportedStories.has(parent))) {
33
+ this.fileType = _helpers.FileType.Story;
34
+ this.isMDX = _path.default.parse(this.filename).ext == '.mdx';
35
+ lastStoryFile = this.filename;
36
+ stories.add(this.filename);
37
+ } else if (this.filename.startsWith(this.opts.preview)) this.fileType = _helpers.FileType.Preview;else if (lastStoryFile && this.opts.debug) {
38
+ _logger.logger.warn('Trying to transform possible non-story file', this.resourcePath, 'Please check the', lastStoryFile);
39
+
40
+ lastStoryFile = null; // TODO Add link to docs, how creevey works and what user should do in this situation
41
+ }
42
+ },
43
+
44
+ visitor: { ..._helpers.commonVisitor,
45
+
46
+ ExportAllDeclaration(path) {
47
+ if (this.fileType == _helpers.FileType.Story && typeof _helpers.storyVisitor.ExportAllDeclaration == 'function') {
48
+ _helpers.storyVisitor.ExportAllDeclaration.call(this, path, this);
49
+ }
50
+ },
51
+
52
+ ExportDefaultDeclaration(path) {
53
+ if (this.fileType == _helpers.FileType.Story && typeof _helpers.storyVisitor.ExportDefaultDeclaration == 'function') {
54
+ _helpers.storyVisitor.ExportDefaultDeclaration.call(this, path, this);
55
+ }
56
+ },
57
+
58
+ ExportNamedDeclaration(path) {
59
+ if (this.fileType == _helpers.FileType.Preview && typeof _helpers.previewVisitor.ExportNamedDeclaration == 'function') {
60
+ _helpers.previewVisitor.ExportNamedDeclaration.call(this, path, this);
61
+ }
62
+
63
+ if (this.fileType == _helpers.FileType.Story && typeof _helpers.storyVisitor.ExportNamedDeclaration == 'function') {
64
+ _helpers.storyVisitor.ExportNamedDeclaration.call(this, path, this);
65
+ }
66
+ },
67
+
68
+ CallExpression(path) {
69
+ if (this.fileType == _helpers.FileType.Preview && typeof _helpers.previewVisitor.CallExpression == 'function') {
70
+ _helpers.previewVisitor.CallExpression.call(this, path, this);
71
+ }
72
+
73
+ if (this.fileType == _helpers.FileType.Story && typeof _helpers.storyVisitor.CallExpression == 'function') {
74
+ _helpers.storyVisitor.CallExpression.call(this, path, this);
75
+ }
76
+ },
77
+
78
+ FunctionDeclaration(path) {
79
+ if (this.isMDX && typeof _helpers.mdxVisitor.FunctionDeclaration == 'function') {
80
+ _helpers.mdxVisitor.FunctionDeclaration.call(this, path, this);
81
+ }
82
+ }
83
+
84
+ }
85
+ };
86
+ }