creevey 0.8.1-sb7.1 → 0.8.1-sb7.3

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 (235) hide show
  1. package/lib/cjs/cli.js +5 -0
  2. package/lib/cjs/client/addon/Manager.js +264 -0
  3. package/lib/cjs/client/addon/components/Addon.js +55 -0
  4. package/lib/cjs/client/addon/components/Icons.js +46 -0
  5. package/lib/cjs/client/addon/components/Panel.js +72 -0
  6. package/lib/cjs/client/addon/components/TestSelect.js +65 -0
  7. package/lib/cjs/client/addon/components/Tools.js +97 -0
  8. package/lib/cjs/client/addon/decorator.js +11 -0
  9. package/lib/cjs/client/addon/index.js +31 -0
  10. package/lib/cjs/client/addon/preset.ie11.js +74 -0
  11. package/lib/cjs/client/addon/preset.js +62 -0
  12. package/lib/cjs/client/addon/readyForCapture.js +12 -0
  13. package/lib/cjs/client/addon/register.js +74 -0
  14. package/lib/cjs/client/addon/utils.js +42 -0
  15. package/lib/cjs/client/addon/withCreevey.js +351 -0
  16. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +87 -0
  17. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +92 -0
  18. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +154 -0
  19. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +166 -0
  20. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +91 -0
  21. package/lib/cjs/client/shared/components/ImagesView/index.js +45 -0
  22. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +50 -0
  23. package/lib/cjs/client/shared/components/PageFooter/Paging.js +94 -0
  24. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +82 -0
  25. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +119 -0
  26. package/lib/cjs/client/shared/components/ResultsPage.js +143 -0
  27. package/lib/cjs/client/shared/creeveyClientApi.js +76 -0
  28. package/lib/cjs/client/shared/helpers.js +411 -0
  29. package/lib/cjs/client/shared/viewMode.js +17 -0
  30. package/lib/cjs/client/web/19.js +1 -0
  31. package/lib/cjs/client/web/632.js +43 -0
  32. package/lib/cjs/client/web/794.js +1 -0
  33. package/lib/cjs/client/web/index.html +19 -0
  34. package/lib/cjs/client/web/main.js +79 -0
  35. package/lib/cjs/client/web/main.js.LICENSE.txt +34 -0
  36. package/lib/cjs/creevey.js +69 -0
  37. package/lib/cjs/index.js +39 -0
  38. package/lib/cjs/server/config.js +93 -0
  39. package/lib/cjs/server/docker.js +146 -0
  40. package/lib/cjs/server/extract.js +46 -0
  41. package/lib/cjs/server/index.js +83 -0
  42. package/lib/cjs/server/loaders/babel/creevey-plugin.js +86 -0
  43. package/lib/cjs/server/loaders/babel/helpers.js +469 -0
  44. package/lib/cjs/server/loaders/babel/register.js +124 -0
  45. package/lib/cjs/server/loaders/hooks/mdx.js +30 -0
  46. package/lib/cjs/server/loaders/hooks/svelte.js +65 -0
  47. package/lib/cjs/server/loaders/webpack/compile.js +269 -0
  48. package/lib/cjs/server/loaders/webpack/creevey-loader.js +172 -0
  49. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +39 -0
  50. package/lib/cjs/server/loaders/webpack/mdx-loader.js +72 -0
  51. package/lib/cjs/server/loaders/webpack/start.js +41 -0
  52. package/lib/cjs/server/logger.js +48 -0
  53. package/lib/cjs/server/master/api.js +71 -0
  54. package/lib/cjs/server/master/index.js +152 -0
  55. package/lib/cjs/server/master/master.js +57 -0
  56. package/lib/cjs/server/master/pool.js +197 -0
  57. package/lib/cjs/server/master/runner.js +281 -0
  58. package/lib/cjs/server/master/server.js +131 -0
  59. package/lib/cjs/server/messages.js +264 -0
  60. package/lib/cjs/server/selenium/browser.js +667 -0
  61. package/lib/cjs/server/selenium/index.js +31 -0
  62. package/lib/cjs/server/selenium/selenoid.js +172 -0
  63. package/lib/cjs/server/stories.js +155 -0
  64. package/lib/cjs/server/storybook/entry.js +55 -0
  65. package/lib/cjs/server/storybook/helpers.js +158 -0
  66. package/lib/cjs/server/storybook/providers/browser.js +76 -0
  67. package/lib/cjs/server/storybook/providers/nodejs.js +239 -0
  68. package/lib/cjs/server/update.js +79 -0
  69. package/lib/cjs/server/utils.js +169 -0
  70. package/lib/cjs/server/worker/chai-image.js +142 -0
  71. package/lib/cjs/server/worker/helpers.js +69 -0
  72. package/lib/cjs/server/worker/index.js +15 -0
  73. package/lib/cjs/server/worker/reporter.js +108 -0
  74. package/lib/cjs/server/worker/worker.js +268 -0
  75. package/lib/cjs/shared/index.js +103 -0
  76. package/lib/cjs/shared/serializeRegExp.js +42 -0
  77. package/lib/cjs/types.js +77 -0
  78. package/lib/esm/cli.js +4 -0
  79. package/lib/esm/client/addon/Manager.js +252 -0
  80. package/lib/esm/client/addon/components/Addon.js +39 -0
  81. package/lib/esm/client/addon/components/Icons.js +31 -0
  82. package/lib/esm/client/addon/components/Panel.js +53 -0
  83. package/lib/esm/client/addon/components/TestSelect.js +51 -0
  84. package/lib/esm/client/addon/components/Tools.js +76 -0
  85. package/lib/esm/client/addon/decorator.js +2 -0
  86. package/lib/esm/client/addon/index.js +2 -0
  87. package/lib/esm/client/addon/preset.ie11.js +59 -0
  88. package/lib/esm/client/addon/preset.js +41 -0
  89. package/lib/esm/client/addon/readyForCapture.js +5 -0
  90. package/lib/esm/client/addon/register.js +53 -0
  91. package/lib/esm/client/addon/utils.js +32 -0
  92. package/lib/esm/client/addon/withCreevey.js +326 -0
  93. package/lib/esm/client/shared/components/ImagesView/BlendView.js +67 -0
  94. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +69 -0
  95. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +131 -0
  96. package/lib/esm/client/shared/components/ImagesView/SlideView.js +143 -0
  97. package/lib/esm/client/shared/components/ImagesView/SwapView.js +71 -0
  98. package/lib/esm/client/shared/components/ImagesView/index.js +5 -0
  99. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +36 -0
  100. package/lib/esm/client/shared/components/PageFooter/Paging.js +80 -0
  101. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +68 -0
  102. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +97 -0
  103. package/lib/esm/client/shared/components/ResultsPage.js +115 -0
  104. package/lib/esm/client/shared/creeveyClientApi.js +67 -0
  105. package/lib/esm/client/shared/helpers.js +353 -0
  106. package/lib/esm/client/shared/viewMode.js +6 -0
  107. package/lib/esm/creevey.js +54 -0
  108. package/lib/esm/index.js +3 -0
  109. package/lib/esm/server/config.js +70 -0
  110. package/lib/esm/server/docker.js +123 -0
  111. package/lib/esm/server/extract.js +32 -0
  112. package/lib/esm/server/index.js +64 -0
  113. package/lib/esm/server/loaders/babel/creevey-plugin.js +72 -0
  114. package/lib/esm/server/loaders/babel/helpers.js +452 -0
  115. package/lib/esm/server/loaders/babel/register.js +103 -0
  116. package/lib/esm/server/loaders/hooks/mdx.js +15 -0
  117. package/lib/esm/server/loaders/hooks/svelte.js +49 -0
  118. package/lib/esm/server/loaders/webpack/compile.js +246 -0
  119. package/lib/esm/server/loaders/webpack/creevey-loader.js +152 -0
  120. package/lib/esm/server/loaders/webpack/dummy-hmr.js +32 -0
  121. package/lib/esm/server/loaders/webpack/mdx-loader.js +58 -0
  122. package/lib/esm/server/loaders/webpack/start.js +27 -0
  123. package/lib/esm/server/logger.js +20 -0
  124. package/lib/esm/server/master/api.js +60 -0
  125. package/lib/esm/server/master/index.js +131 -0
  126. package/lib/esm/server/master/master.js +38 -0
  127. package/lib/esm/server/master/pool.js +176 -0
  128. package/lib/esm/server/master/runner.js +259 -0
  129. package/lib/esm/server/master/server.js +107 -0
  130. package/lib/esm/server/messages.js +232 -0
  131. package/lib/esm/server/selenium/browser.js +634 -0
  132. package/lib/esm/server/selenium/index.js +2 -0
  133. package/lib/esm/server/selenium/selenoid.js +149 -0
  134. package/lib/esm/server/stories.js +137 -0
  135. package/lib/esm/server/storybook/entry.js +29 -0
  136. package/lib/esm/server/storybook/helpers.js +99 -0
  137. package/lib/esm/server/storybook/providers/browser.js +60 -0
  138. package/lib/esm/server/storybook/providers/nodejs.js +219 -0
  139. package/lib/esm/server/update.js +61 -0
  140. package/lib/esm/server/utils.js +128 -0
  141. package/lib/esm/server/worker/chai-image.js +130 -0
  142. package/lib/esm/server/worker/helpers.js +60 -0
  143. package/lib/esm/server/worker/index.js +1 -0
  144. package/lib/esm/server/worker/reporter.js +86 -0
  145. package/lib/esm/server/worker/worker.js +238 -0
  146. package/lib/esm/shared/index.js +80 -0
  147. package/lib/esm/shared/serializeRegExp.js +24 -0
  148. package/lib/esm/types.js +46 -0
  149. package/lib/types/cli.d.ts +1 -0
  150. package/lib/types/client/addon/Manager.d.ts +37 -0
  151. package/lib/types/client/addon/components/Addon.d.ts +9 -0
  152. package/lib/types/client/addon/components/Icons.d.ts +8 -0
  153. package/lib/types/client/addon/components/Panel.d.ts +10 -0
  154. package/lib/types/client/addon/components/TestSelect.d.ts +9 -0
  155. package/lib/types/client/addon/components/Tools.d.ts +7 -0
  156. package/lib/types/client/addon/decorator.d.ts +1 -0
  157. package/lib/types/client/addon/index.d.ts +2 -0
  158. package/lib/types/client/addon/preset.d.ts +23 -0
  159. package/lib/types/client/addon/preset.ie11.d.ts +10 -0
  160. package/lib/types/client/addon/readyForCapture.d.ts +6 -0
  161. package/lib/types/client/addon/register.d.ts +3 -0
  162. package/lib/types/client/addon/utils.d.ts +3 -0
  163. package/lib/types/client/addon/withCreevey.d.ts +24 -0
  164. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +5 -0
  165. package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +25 -0
  166. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +5 -0
  167. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +5 -0
  168. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +5 -0
  169. package/lib/types/client/shared/components/ImagesView/index.d.ts +5 -0
  170. package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +9 -0
  171. package/lib/types/client/shared/components/PageFooter/Paging.d.ts +8 -0
  172. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +14 -0
  173. package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +17 -0
  174. package/lib/types/client/shared/components/ResultsPage.d.ts +20 -0
  175. package/lib/types/client/shared/creeveyClientApi.d.ts +9 -0
  176. package/lib/types/client/shared/helpers.d.ts +46 -0
  177. package/lib/types/client/shared/viewMode.d.ts +4 -0
  178. package/lib/types/client/web/CreeveyApp.d.ts +12 -0
  179. package/lib/types/client/web/CreeveyContext.d.ts +11 -0
  180. package/lib/types/client/web/CreeveyLoader.d.ts +3 -0
  181. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +22 -0
  182. package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +7 -0
  183. package/lib/types/client/web/CreeveyView/SideBar/SideBar.d.ts +14 -0
  184. package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +13 -0
  185. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +38 -0
  186. package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +8 -0
  187. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +12 -0
  188. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +11 -0
  189. package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +7 -0
  190. package/lib/types/client/web/CreeveyView/SideBar/index.d.ts +1 -0
  191. package/lib/types/client/web/KeyboardEventsContext.d.ts +13 -0
  192. package/lib/types/client/web/index.d.ts +4 -0
  193. package/lib/types/creevey.d.ts +1 -0
  194. package/lib/types/index.d.ts +2 -0
  195. package/lib/types/server/config.d.ts +4 -0
  196. package/lib/types/server/docker.d.ts +7 -0
  197. package/lib/types/server/extract.d.ts +2 -0
  198. package/lib/types/server/index.d.ts +2 -0
  199. package/lib/types/server/loaders/babel/creevey-plugin.d.ts +1 -0
  200. package/lib/types/server/loaders/babel/helpers.d.ts +19 -0
  201. package/lib/types/server/loaders/babel/register.d.ts +5 -0
  202. package/lib/types/server/loaders/hooks/mdx.d.ts +1 -0
  203. package/lib/types/server/loaders/hooks/svelte.d.ts +1 -0
  204. package/lib/types/server/loaders/webpack/compile.d.ts +2 -0
  205. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +4 -0
  206. package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +10 -0
  207. package/lib/types/server/loaders/webpack/mdx-loader.d.ts +6 -0
  208. package/lib/types/server/loaders/webpack/start.d.ts +1 -0
  209. package/lib/types/server/logger.d.ts +10 -0
  210. package/lib/types/server/master/api.d.ts +7 -0
  211. package/lib/types/server/master/index.d.ts +3 -0
  212. package/lib/types/server/master/master.d.ts +7 -0
  213. package/lib/types/server/master/pool.d.ts +31 -0
  214. package/lib/types/server/master/runner.d.ts +26 -0
  215. package/lib/types/server/master/server.d.ts +2 -0
  216. package/lib/types/server/messages.d.ts +29 -0
  217. package/lib/types/server/selenium/browser.d.ts +19 -0
  218. package/lib/types/server/selenium/index.d.ts +2 -0
  219. package/lib/types/server/selenium/selenoid.d.ts +3 -0
  220. package/lib/types/server/stories.d.ts +8 -0
  221. package/lib/types/server/storybook/entry.d.ts +16 -0
  222. package/lib/types/server/storybook/helpers.d.ts +24 -0
  223. package/lib/types/server/storybook/providers/browser.d.ts +2 -0
  224. package/lib/types/server/storybook/providers/nodejs.d.ts +6 -0
  225. package/lib/types/server/update.d.ts +2 -0
  226. package/lib/types/server/utils.d.ts +23 -0
  227. package/lib/types/server/worker/chai-image.d.ts +6 -0
  228. package/lib/types/server/worker/helpers.d.ts +8 -0
  229. package/lib/types/server/worker/index.d.ts +1 -0
  230. package/lib/types/server/worker/reporter.d.ts +8 -0
  231. package/lib/types/server/worker/worker.d.ts +4 -0
  232. package/lib/types/shared/index.d.ts +7 -0
  233. package/lib/types/shared/serializeRegExp.d.ts +9 -0
  234. package/lib/types/types.d.ts +486 -0
  235. package/package.json +1 -1
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.webpack = exports.managerWebpack = exports.babel = void 0;
7
+ const ie11Preset = ['@babel/preset-env', {
8
+ targets: {
9
+ ie: '11'
10
+ }
11
+ }];
12
+
13
+ const babel = config => {
14
+ const {
15
+ presets = []
16
+ } = config;
17
+ return { ...config,
18
+ presets: [...(presets || []), ie11Preset]
19
+ };
20
+ };
21
+
22
+ exports.babel = babel;
23
+ const nodeModulesThatNeedToBeParsedBecauseTheyExposeES6 = ['creevey', '@testing-library'];
24
+ const include = new RegExp("[\\\\/](".concat(nodeModulesThatNeedToBeParsedBecauseTheyExposeES6.join('|'), ")"));
25
+ const es6Loader = {
26
+ test: /\.js$/,
27
+ use: [{
28
+ loader: require.resolve('babel-loader'),
29
+ options: {
30
+ presets: [ie11Preset]
31
+ }
32
+ }],
33
+ include
34
+ };
35
+
36
+ const managerWebpack = function () {
37
+ var _webpackConfig$module, _webpackConfig$module2;
38
+
39
+ let webpackConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
40
+ return { ...webpackConfig,
41
+ module: { ...webpackConfig.module,
42
+ rules: [...((_webpackConfig$module = (_webpackConfig$module2 = webpackConfig.module) === null || _webpackConfig$module2 === void 0 ? void 0 : _webpackConfig$module2.rules) !== null && _webpackConfig$module !== void 0 ? _webpackConfig$module : []), es6Loader]
43
+ }
44
+ };
45
+ };
46
+
47
+ exports.managerWebpack = managerWebpack;
48
+
49
+ const webpack = function () {
50
+ var _webpackConfig$module3, _webpackConfig$module4;
51
+
52
+ let webpackConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
53
+ const {
54
+ entry
55
+ } = webpackConfig;
56
+ const polyfills = [require.resolve('whatwg-fetch')];
57
+
58
+ if (Array.isArray(entry)) {
59
+ polyfills.forEach(polyfill => {
60
+ if (!entry.includes(polyfill)) {
61
+ entry.unshift(polyfill);
62
+ }
63
+ });
64
+ }
65
+
66
+ return { ...webpackConfig,
67
+ entry,
68
+ module: { ...webpackConfig.module,
69
+ rules: [...((_webpackConfig$module3 = (_webpackConfig$module4 = webpackConfig.module) === null || _webpackConfig$module4 === void 0 ? void 0 : _webpackConfig$module4.rules) !== null && _webpackConfig$module3 !== void 0 ? _webpackConfig$module3 : []), es6Loader]
70
+ }
71
+ };
72
+ };
73
+
74
+ exports.webpack = webpack;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.config = config;
7
+ exports.managerEntries = managerEntries;
8
+ exports.managerWebpack = managerWebpack;
9
+
10
+ var _path = _interopRequireDefault(require("path"));
11
+
12
+ var _shelljs = require("shelljs");
13
+
14
+ var _webpack = require("webpack");
15
+
16
+ var _helpers = require("../../server/storybook/helpers");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ function config() {
25
+ let entry = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
26
+ return [...entry, require.resolve('./decorator')];
27
+ }
28
+
29
+ function managerEntries() {
30
+ let entry = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
31
+ return [...entry, require.resolve('./register')];
32
+ }
33
+
34
+ function managerWebpack(config, options) {
35
+ var _options$presets$appl, _options$presets;
36
+
37
+ // TODO How to execute with non-webpack bundlers
38
+ if (options.configType == 'PRODUCTION' && options.skipExtract != true) {
39
+ const args = [];
40
+ if (options.creeveyPreExtract) args.push("--require \"".concat(options.creeveyPreExtract, "\""));
41
+ args.push(_path.default.join(__dirname, '../../cli'));
42
+ args.push("--extract \"".concat(options.outputDir, "\""));
43
+ if (options.creeveyConfigPath) args.push("--config \"".concat(options.creeveyConfigPath, "\""));
44
+ (0, _shelljs.exec)("node ".concat(args.join(' ')), {
45
+ async: true
46
+ });
47
+ }
48
+
49
+ return ((_options$presets$appl = (_options$presets = options.presets) === null || _options$presets === void 0 ? void 0 : _options$presets.apply('webpackInstance')) !== null && _options$presets$appl !== void 0 ? _options$presets$appl : Promise.resolve(undefined)).then(webpack => webpack !== null && webpack !== void 0 ? webpack : Promise.resolve("".concat((0, _helpers.resolveFromStorybookCoreServer)('webpack'))).then(s => _interopRequireWildcard(require(s)))).then(webpack => {
50
+ var _config$plugins, _options$creeveyPort;
51
+
52
+ const {
53
+ DefinePlugin = _webpack.DefinePlugin
54
+ } = webpack !== null && webpack !== void 0 ? webpack : {};
55
+ (_config$plugins = config.plugins) === null || _config$plugins === void 0 ? void 0 : _config$plugins.push(new DefinePlugin({
56
+ __CREEVEY_SERVER_HOST__: options.creeveyHost,
57
+ __CREEVEY_SERVER_PORT__: (_options$creeveyPort = options.creeveyPort) !== null && _options$creeveyPort !== void 0 ? _options$creeveyPort : 3000,
58
+ __CREEVEY_CLIENT_PORT__: options.clientPort
59
+ }));
60
+ return config;
61
+ });
62
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.readyForCapture = readyForCapture;
7
+
8
+ function readyForCapture() {
9
+ var _window$__CREEVEY_SET, _window;
10
+
11
+ (_window$__CREEVEY_SET = (_window = window).__CREEVEY_SET_READY_FOR_CAPTURE__) === null || _window$__CREEVEY_SET === void 0 ? void 0 : _window$__CREEVEY_SET.call(_window);
12
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ADDON_ID = void 0;
7
+ exports.registerCreeveyPanels = registerCreeveyPanels;
8
+
9
+ var _addons = require("@storybook/addons");
10
+
11
+ var _react = _interopRequireDefault(require("react"));
12
+
13
+ var _Addon = require("./components/Addon");
14
+
15
+ var _Tools = require("./components/Tools");
16
+
17
+ var _Manager = require("./Manager");
18
+
19
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+
21
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
22
+ //@ts-nocheck
23
+ const ADDON_ID = 'creevey';
24
+ exports.ADDON_ID = ADDON_ID;
25
+
26
+ _addons.addons.register(ADDON_ID, api => {
27
+ void registerCreeveyPanels(api);
28
+ });
29
+
30
+ async function registerCreeveyPanels(storybookApi) {
31
+ const manager = new _Manager.CreeveyManager(storybookApi);
32
+
33
+ _addons.addons.addPanel("".concat(ADDON_ID, "/panel/run"), {
34
+ title: "Creevey/Run",
35
+ match: _ref => {
36
+ let {
37
+ viewMode
38
+ } = _ref;
39
+ return !!(viewMode && /^story$/.exec(viewMode));
40
+ },
41
+ type: _addons.types.TOOL,
42
+ // eslint-disable-next-line react/display-name
43
+ render: () => /*#__PURE__*/_react.default.createElement(_Tools.Tools, {
44
+ manager
45
+ })
46
+ });
47
+
48
+ await manager.initAll();
49
+ const browsers = manager.getBrowsers();
50
+ browsers.forEach(browser => {
51
+ const panelId = "".concat(ADDON_ID, "/panel/").concat(browser);
52
+ const title = manager.getTabTitle(browser);
53
+
54
+ _addons.addons.addPanel(panelId, {
55
+ title,
56
+ type: _addons.types.PANEL,
57
+ paramKey: browser,
58
+ // NOTE key = PANEL_ID needs to correct render button in addons panel
59
+ // eslint-disable-next-line react/display-name
60
+ render: _ref2 => {
61
+ let {
62
+ active,
63
+ key
64
+ } = _ref2;
65
+ return /*#__PURE__*/_react.default.createElement(_Addon.Addon, {
66
+ active,
67
+ key,
68
+ manager,
69
+ browser
70
+ });
71
+ }
72
+ });
73
+ });
74
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getEmojiByTestStatus = getEmojiByTestStatus;
7
+ exports.isInternetExplorer = void 0;
8
+
9
+ function getEmojiByTestStatus(status) {
10
+ let skip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
11
+
12
+ switch (status) {
13
+ case 'failed':
14
+ {
15
+ return '❌';
16
+ }
17
+
18
+ case 'success':
19
+ {
20
+ return '✔';
21
+ }
22
+
23
+ case 'running':
24
+ {
25
+ return '🟡';
26
+ }
27
+
28
+ case 'pending':
29
+ {
30
+ return '🕗';
31
+ }
32
+
33
+ default:
34
+ {
35
+ if (skip) return '⏸';
36
+ return '';
37
+ }
38
+ }
39
+ }
40
+
41
+ const isInternetExplorer = navigator.userAgent.includes('Trident/');
42
+ exports.isInternetExplorer = isInternetExplorer;
@@ -0,0 +1,351 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.capture = capture;
7
+ exports.withCreevey = withCreevey;
8
+
9
+ var Events = _interopRequireWildcard(require("@storybook/core-events"));
10
+
11
+ var polyfill = _interopRequireWildcard(require("event-source-polyfill"));
12
+
13
+ var _addons = require("@storybook/addons");
14
+
15
+ var _types = require("../../types");
16
+
17
+ var _shared = require("../../shared");
18
+
19
+ var _helpers = require("../shared/helpers");
20
+
21
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
+
23
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
+
25
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
26
+ // @ts-nocheck
27
+
28
+ /* eslint-disable */
29
+ // import { buildQueries, within } from '@storybook/testing-library';
30
+ if (typeof process != 'object' || typeof process.version != 'string') {
31
+ // NOTE If you don't use babel-polyfill or any other polyfills that add EventSource for IE11
32
+ // You don't get hot reload in IE11. So put polyfill for that to better UX
33
+ // Don't load in nodejs environment
34
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
35
+ const {
36
+ NativeEventSource,
37
+ EventSourcePolyfill
38
+ } = polyfill; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
39
+
40
+ window.EventSource = NativeEventSource || EventSourcePolyfill;
41
+ }
42
+
43
+ const disableAnimationsStyles = "\n*,\n*:hover,\n*::before,\n*::after {\n animation-delay: -0.0001ms !important;\n animation-duration: 0s !important;\n animation-play-state: paused !important;\n cursor: none !important;\n caret-color: transparent !important;\n transition: 0s !important;\n}\n";
44
+
45
+ async function resetCurrentStory(channel) {
46
+ setTimeout(() => channel.emit(Events.SET_CURRENT_STORY, {
47
+ storyId: true,
48
+ name: '',
49
+ kind: ''
50
+ }), 0);
51
+ return new Promise(resolve => channel.once(Events.STORY_MISSING, resolve));
52
+ }
53
+
54
+ function catchRenderError(channel) {
55
+ let rejectCallback;
56
+ const promise = new Promise((_resolve, reject) => rejectCallback = reject);
57
+
58
+ function errorHandler(_ref) {
59
+ let {
60
+ title,
61
+ description
62
+ } = _ref;
63
+ rejectCallback({
64
+ message: title,
65
+ stack: description
66
+ });
67
+ }
68
+
69
+ function exceptionHandler(exception) {
70
+ rejectCallback(exception);
71
+ }
72
+
73
+ function removeHandlers() {
74
+ channel.off(Events.STORY_ERRORED, errorHandler);
75
+ channel.off(Events.STORY_THREW_EXCEPTION, errorHandler);
76
+ }
77
+
78
+ channel.once(Events.STORY_ERRORED, errorHandler);
79
+ channel.once(Events.STORY_THREW_EXCEPTION, exceptionHandler);
80
+ return Object.assign(promise, {
81
+ cancel: removeHandlers
82
+ });
83
+ }
84
+
85
+ function waitForStoryRendered(channel) {
86
+ let resolveCallback;
87
+ const promise = new Promise(resolve => resolveCallback = resolve);
88
+
89
+ function renderHandler() {
90
+ resolveCallback();
91
+ }
92
+
93
+ function removeHandlers() {
94
+ channel.off(Events.STORY_RENDERED, renderHandler);
95
+ }
96
+
97
+ channel.once(Events.STORY_RENDERED, renderHandler);
98
+ return Object.assign(promise, {
99
+ cancel: removeHandlers
100
+ });
101
+ }
102
+
103
+ function waitForFontsLoaded() {
104
+ if (!document.fonts) return;
105
+ const areFontsLoading = Array.from(document.fonts).some(font => font.status == 'loading');
106
+
107
+ if (areFontsLoading) {
108
+ return new Promise(resolve => {
109
+ const fontsLoadedHandler = () => {
110
+ document.fonts.removeEventListener('loadingdone', fontsLoadedHandler);
111
+ resolve();
112
+ };
113
+
114
+ document.fonts.addEventListener('loadingdone', fontsLoadedHandler);
115
+ });
116
+ }
117
+ }
118
+
119
+ function waitForCaptureCall() {
120
+ return new Promise(resolve => captureResolver = resolve);
121
+ }
122
+
123
+ function initCreeveyState() {
124
+ var _window$localStorage$;
125
+
126
+ const prevState = JSON.parse((_window$localStorage$ = window.localStorage.getItem('Creevey_Tests')) !== null && _window$localStorage$ !== void 0 ? _window$localStorage$ : '{}');
127
+ if (prevState.creeveyHost) window.__CREEVEY_SERVER_HOST__ = prevState.creeveyHost;
128
+ if (prevState.creeveyPort) window.__CREEVEY_SERVER_PORT__ = prevState.creeveyPort;
129
+ if (prevState.setStoriesCounter) setStoriesCounter = prevState.setStoriesCounter;
130
+ if (prevState.isTestBrowser) isTestBrowser = prevState.isTestBrowser;
131
+ window.addEventListener('beforeunload', () => {
132
+ window.localStorage.setItem('Creevey_Tests', JSON.stringify({
133
+ creeveyHost: window.__CREEVEY_SERVER_HOST__,
134
+ creeveyPort: window.__CREEVEY_SERVER_PORT__,
135
+ setStoriesCounter,
136
+ isTestBrowser
137
+ }));
138
+ });
139
+ }
140
+
141
+ let isTestBrowser = false;
142
+ let captureResolver;
143
+ let waitForCreevey;
144
+ let creeveyReady;
145
+ let setStoriesCounter = 0;
146
+
147
+ function withCreevey() {
148
+ let currentStory = '';
149
+ let isAnimationDisabled = false;
150
+ initCreeveyState();
151
+
152
+ function disableAnimation() {
153
+ isAnimationDisabled = true;
154
+ const style = document.createElement('style');
155
+ const textNode = document.createTextNode(disableAnimationsStyles);
156
+ style.setAttribute('type', 'text/css');
157
+ style.appendChild(textNode);
158
+ document.head.appendChild(style);
159
+ }
160
+
161
+ async function getStories() {
162
+ var _window$__STORYBOOK_S;
163
+
164
+ const storiesPromise = new Promise(resolve => _addons.addons.getChannel().once(Events.SET_STORIES, data => resolve((0, _shared.serializeRawStories)((0, _shared.denormalizeStoryParameters)(data)))));
165
+ const store = (_window$__STORYBOOK_S = window.__STORYBOOK_STORY_STORE__) !== null && _window$__STORYBOOK_S !== void 0 ? _window$__STORYBOOK_S : {};
166
+
167
+ if (store.cacheAllCSFFiles) {
168
+ await store.cacheAllCSFFiles();
169
+
170
+ _addons.addons.getChannel().emit(Events.SET_STORIES, store.getSetStoriesPayload());
171
+ } else return;
172
+
173
+ _addons.addons.getChannel().on(Events.SET_STORIES, data => {
174
+ // TODO Figure out how to get only updated stories
175
+ // TODO Subscribe on hmr? like use dummy-hmr
176
+ setStoriesCounter += 1;
177
+ const stories = (0, _shared.serializeRawStories)((0, _shared.denormalizeStoryParameters)(data));
178
+ const storiesByFiles = new Map();
179
+ Object.values(stories).forEach(story => {
180
+ const storiesFromFile = storiesByFiles.get(story.parameters.fileName);
181
+ if (storiesFromFile) storiesFromFile.push(story);else storiesByFiles.set(story.parameters.fileName, [story]);
182
+ });
183
+ void fetch("http://".concat((0, _helpers.getConnectionUrl)(), "/stories"), {
184
+ method: 'POST',
185
+ headers: {
186
+ 'Content-Type': 'application/json'
187
+ },
188
+ body: JSON.stringify({
189
+ setStoriesCounter,
190
+ stories: [...storiesByFiles.entries()]
191
+ })
192
+ });
193
+ });
194
+
195
+ return storiesPromise;
196
+ }
197
+
198
+ async function selectStory(storyId, kind, name, shouldWaitForReady, callback) {
199
+ if (!isAnimationDisabled) disableAnimation();
200
+ isTestBrowser = true;
201
+
202
+ const channel = _addons.addons.getChannel();
203
+
204
+ const waitForReady = shouldWaitForReady ? new Promise(resolve => window.__CREEVEY_SET_READY_FOR_CAPTURE__ = resolve) : Promise.resolve();
205
+ if (storyId == currentStory) await resetCurrentStory(channel);else currentStory = storyId;
206
+ let isCaptureCalled = false;
207
+ const renderPromise = waitForStoryRendered(channel);
208
+ const errorPromise = catchRenderError(channel);
209
+ const capturePromise = waitForCaptureCall().then(() => isCaptureCalled = true);
210
+ setTimeout(() => channel.emit(Events.SET_CURRENT_STORY, {
211
+ storyId,
212
+ name,
213
+ kind
214
+ }), 0);
215
+
216
+ try {
217
+ await Promise.race([(async () => {
218
+ await Promise.race([renderPromise, capturePromise]);
219
+ await waitForFontsLoaded();
220
+ await waitForReady;
221
+ })(), errorPromise]);
222
+ callback([null, isCaptureCalled]);
223
+ } catch (reason) {
224
+ var _reason$stack;
225
+
226
+ // NOTE Event `STORY_THREW_EXCEPTION` triggered only in react and vue frameworks and return Error instance
227
+ // NOTE Event `STORY_ERRORED` return error-like object without `name` field
228
+ const errorMessage = reason instanceof Error ? (_reason$stack = reason.stack) !== null && _reason$stack !== void 0 ? _reason$stack : reason.message : (0, _types.isObject)(reason) ? "".concat(reason.message, "\n ").concat(reason.stack) : reason;
229
+ callback([errorMessage]);
230
+ } finally {
231
+ renderPromise.cancel();
232
+ errorPromise.cancel();
233
+ }
234
+ }
235
+
236
+ function updateGlobals(globals) {
237
+ _addons.addons.getChannel().emit(Events.UPDATE_GLOBALS, {
238
+ globals
239
+ });
240
+ }
241
+
242
+ function insertIgnoreStyles(ignoreSelectors) {
243
+ const stylesElement = document.createElement('style');
244
+ stylesElement.setAttribute('type', 'text/css');
245
+ document.head.appendChild(stylesElement);
246
+ ignoreSelectors.forEach(selector => {
247
+ stylesElement.innerHTML += "\n ".concat(selector, " {\n background: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n outline: 0 !important;\n color: rgba(0,0,0,0) !important;\n }\n ").concat(selector, " *, ").concat(selector, "::before, ").concat(selector, "::after {\n visibility: hidden !important;\n }\n ");
248
+ });
249
+ return stylesElement;
250
+ }
251
+
252
+ function removeIgnoreStyles(ignoreStyles) {
253
+ var _ignoreStyles$parentN;
254
+
255
+ (_ignoreStyles$parentN = ignoreStyles.parentNode) === null || _ignoreStyles$parentN === void 0 ? void 0 : _ignoreStyles$parentN.removeChild(ignoreStyles);
256
+ }
257
+
258
+ function hasPlayCompletedYet(callback) {
259
+ creeveyReady();
260
+ let isCaptureCalled = false;
261
+ let isPlayCompleted = false;
262
+
263
+ const channel = _addons.addons.getChannel();
264
+
265
+ void waitForStoryRendered(channel).then(() => {
266
+ if (isCaptureCalled) return;
267
+ isPlayCompleted = true;
268
+ callback(true);
269
+ });
270
+ void waitForCaptureCall().then(() => {
271
+ if (isPlayCompleted) return;
272
+ isCaptureCalled = true;
273
+ callback(false);
274
+ });
275
+ }
276
+
277
+ window.__CREEVEY_GET_STORIES__ = getStories;
278
+ window.__CREEVEY_SELECT_STORY__ = selectStory;
279
+ window.__CREEVEY_UPDATE_GLOBALS__ = updateGlobals;
280
+ window.__CREEVEY_INSERT_IGNORE_STYLES__ = insertIgnoreStyles;
281
+ window.__CREEVEY_REMOVE_IGNORE_STYLES__ = removeIgnoreStyles;
282
+ window.__CREEVEY_HAS_PLAY_COMPLETED_YET__ = hasPlayCompletedYet;
283
+ window.__CREEVEY_SET_READY_FOR_CAPTURE__ = _types.noop;
284
+
285
+ const queryAllByQuery = (container, query) => [...container.querySelectorAll(query)].filter(e => e instanceof HTMLElement);
286
+
287
+ const getMultipleError = (_, query) => "Found multiple elements by query: ".concat(query);
288
+
289
+ const getMissingError = (_, query) => "Unable to find an element by query: ".concat(query); // const [queryByQuery, getAllByQuery, getByQuery, findAllByQuery, findByQuery] = buildQueries(
290
+ // queryAllByQuery,
291
+ // getMultipleError,
292
+ // getMissingError,
293
+ // );
294
+ // const queries = {
295
+ // queryByQuery,
296
+ // getAllByQuery,
297
+ // getByQuery,
298
+ // findAllByQuery,
299
+ // findByQuery,
300
+ // };
301
+
302
+
303
+ return (0, _addons.makeDecorator)({
304
+ name: 'withCreevey',
305
+ parameterName: 'creevey',
306
+ wrapper: (getStory, context) => {
307
+ // TODO Define proper types, like captureElement is a promise
308
+ // const { captureElement } = (context.parameters.creevey =
309
+ // (context.parameters.creevey as CreeveyStoryParams) ?? {});
310
+ // Object.defineProperty(context.parameters.creevey, 'captureElement', {
311
+ // get() {
312
+ // switch (true) {
313
+ // case captureElement === undefined:
314
+ // return Promise.resolve(context.canvasElement);
315
+ // case captureElement === null:
316
+ // return Promise.resolve(document.documentElement);
317
+ // case typeof captureElement == 'string':
318
+ // return isInternetExplorer // some code from testing-library makes IE hang
319
+ // ? Promise.resolve(context.canvasElement.querySelector(captureElement as string))
320
+ // : within<typeof queries>(context.canvasElement, queries).findByQuery(captureElement as string);
321
+ // case typeof captureElement == 'function':
322
+ // // TODO Define type for it
323
+ // return Promise.resolve(
324
+ // (captureElement as unknown as (ctx: typeof context) => Promise<HTMLElement> | HTMLElement)(context),
325
+ // );
326
+ // }
327
+ // },
328
+ // enumerable: true,
329
+ // configurable: true,
330
+ // });
331
+ return getStory(context);
332
+ }
333
+ });
334
+ }
335
+
336
+ async function capture(options) {
337
+ if (!isTestBrowser) return;
338
+ captureResolver();
339
+ waitForCreevey = new Promise(resolve => creeveyReady = resolve);
340
+ await fetch("http://".concat((0, _helpers.getConnectionUrl)(), "/capture"), {
341
+ method: 'POST',
342
+ headers: {
343
+ 'Content-Type': 'application/json'
344
+ },
345
+ body: JSON.stringify({
346
+ workerId: window.__CREEVEY_WORKER_ID__,
347
+ options
348
+ })
349
+ });
350
+ await waitForCreevey;
351
+ }