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,174 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.startSelenoidStandalone = startSelenoidStandalone;
7
- exports.startSelenoidContainer = startSelenoidContainer;
8
-
9
- var _path = _interopRequireDefault(require("path"));
10
-
11
- var _util = require("util");
12
-
13
- var _fs = require("fs");
14
-
15
- var _utils = require("../utils");
16
-
17
- var _docker = require("../docker");
18
-
19
- var _core = require("@octokit/core");
20
-
21
- var _messages = require("../messages");
22
-
23
- var _cluster = require("cluster");
24
-
25
- var _shelljs = require("shelljs");
26
-
27
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
-
29
- const mkdirAsync = (0, _util.promisify)(_fs.mkdir);
30
- const writeFileAsync = (0, _util.promisify)(_fs.writeFile);
31
- const copyFileAsync = (0, _util.promisify)(_fs.copyFile);
32
-
33
- async function createSelenoidConfig(browsers, {
34
- useDocker
35
- }) {
36
- const selenoidConfig = {};
37
-
38
- const selenoidConfigDir = _path.default.join((0, _utils.getCreeveyCache)(), 'selenoid');
39
-
40
- browsers.forEach(({
41
- browserName,
42
- version = 'latest',
43
- dockerImage = `selenoid/${browserName}:${version}`,
44
- webdriverCommand = []
45
- }) => {
46
- if (!selenoidConfig[browserName]) selenoidConfig[browserName] = {
47
- default: version,
48
- versions: {}
49
- };
50
- if (!useDocker && webdriverCommand.length == 0) throw new Error('Please specify "webdriverCommand" browser option with path to browser webdriver');
51
- selenoidConfig[browserName].versions[version] = {
52
- image: useDocker ? dockerImage : webdriverCommand,
53
- port: '4444',
54
- path: !useDocker || ['chrome', 'opera', 'webkit', 'MicrosoftEdge'].includes(browserName) ? '/' : '/wd/hub'
55
- };
56
- });
57
- await mkdirAsync(selenoidConfigDir, {
58
- recursive: true
59
- });
60
- await writeFileAsync(_path.default.join(selenoidConfigDir, 'browsers.json'), JSON.stringify(selenoidConfig));
61
- return selenoidConfigDir;
62
- }
63
-
64
- async function downloadSelenoidBinary(destination) {
65
- var _assets$find;
66
-
67
- const platformNameMapping = {
68
- darwin: 'selenoid_darwin_amd64',
69
- linux: 'selenoid_linux_amd64',
70
- win32: 'selenoid_windows_amd64.exe'
71
- };
72
- const octokit = new _core.Octokit();
73
- const response = await octokit.request('GET /repos/{owner}/{repo}/releases/latest', {
74
- owner: 'aerokube',
75
- repo: 'selenoid'
76
- });
77
- const {
78
- assets
79
- } = response.data;
80
- const {
81
- browser_download_url: downloadUrl,
82
- size: binarySize
83
- } = (_assets$find = assets.find(({
84
- name
85
- }) => platformNameMapping[process.platform] == name)) !== null && _assets$find !== void 0 ? _assets$find : {};
86
- if ((0, _fs.existsSync)(destination) && (0, _fs.lstatSync)(destination).size == binarySize) return;
87
-
88
- if (!downloadUrl) {
89
- throw new Error(`Couldn't get download url for selenoid binary. Please download it manually from "https://github.com/aerokube/selenoid/releases/latest" and define "selenoidPath" option in the Creevey config`);
90
- }
91
-
92
- return (0, _utils.downloadBinary)(downloadUrl, destination);
93
- }
94
-
95
- async function startSelenoidStandalone(config, debug) {
96
- config.gridUrl = 'http://localhost:4444/wd/hub';
97
- if (_cluster.isWorker) return;
98
- const browsers = Object.values(config.browsers).filter(browser => !browser.gridUrl);
99
- const selenoidConfigDir = await createSelenoidConfig(browsers, {
100
- useDocker: false
101
- });
102
-
103
- const binaryPath = _path.default.join(selenoidConfigDir, process.platform == 'win32' ? 'selenoid.exe' : 'selenoid');
104
-
105
- if (config.selenoidPath) {
106
- await copyFileAsync(_path.default.resolve(config.selenoidPath), binaryPath);
107
- } else {
108
- await downloadSelenoidBinary(binaryPath);
109
- } // TODO Download browser webdrivers
110
-
111
-
112
- try {
113
- if (process.platform != 'win32') (0, _shelljs.chmod)('+x', binaryPath);
114
- } catch (_) {
115
- /* noop */
116
- }
117
-
118
- const selenoidProcess = (0, _shelljs.exec)(`${binaryPath} -conf ./browsers.json -disable-docker`, {
119
- async: true,
120
- cwd: selenoidConfigDir
121
- });
122
-
123
- if (debug) {
124
- var _selenoidProcess$stdo, _selenoidProcess$stde;
125
-
126
- (_selenoidProcess$stdo = selenoidProcess.stdout) === null || _selenoidProcess$stdo === void 0 ? void 0 : _selenoidProcess$stdo.pipe(process.stdout);
127
- (_selenoidProcess$stde = selenoidProcess.stderr) === null || _selenoidProcess$stde === void 0 ? void 0 : _selenoidProcess$stde.pipe(process.stderr);
128
- }
129
-
130
- (0, _messages.subscribeOn)('shutdown', () => selenoidProcess.kill());
131
- }
132
-
133
- async function startSelenoidContainer(config, debug) {
134
- const browsers = Object.values(config.browsers).filter(browser => !browser.gridUrl);
135
- const images = [];
136
- let limit = 0;
137
- browsers.forEach(({
138
- browserName,
139
- version = 'latest',
140
- limit: browserLimit = 1,
141
- dockerImage = `selenoid/${browserName}:${version}`
142
- }) => {
143
- limit += browserLimit;
144
- images.push(dockerImage);
145
- });
146
- const selenoidImage = config.dockerImage;
147
- const pullOptions = {
148
- auth: config.dockerAuth,
149
- platform: config.dockerImagePlatform
150
- };
151
-
152
- if (config.pullImages) {
153
- await (0, _docker.pullImages)([selenoidImage], pullOptions);
154
- await (0, _docker.pullImages)(images, pullOptions);
155
- } // TODO Allow pass custom options
156
-
157
-
158
- const selenoidOptions = {
159
- ExposedPorts: {
160
- '4444/tcp': {}
161
- },
162
- HostConfig: {
163
- PortBindings: {
164
- '4444/tcp': [{
165
- HostPort: '4444'
166
- }]
167
- },
168
- Binds: ['/var/run/docker.sock:/var/run/docker.sock', `${await createSelenoidConfig(browsers, {
169
- useDocker: true
170
- })}:/etc/selenoid/:ro`]
171
- }
172
- };
173
- return (0, _docker.runImage)(selenoidImage, ['-limit', String(limit)], selenoidOptions, debug);
174
- }
@@ -1,167 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.loadTestsFromStories = loadTestsFromStories;
7
- exports.saveStoriesJson = saveStoriesJson;
8
- exports.saveTestsJson = saveTestsJson;
9
-
10
- var _path = _interopRequireDefault(require("path"));
11
-
12
- var _fs = require("fs");
13
-
14
- var _crypto = require("crypto");
15
-
16
- var _lodash = require("lodash");
17
-
18
- var _types = require("../types");
19
-
20
- var _utils = require("./utils");
21
-
22
- var _helpers = require("./storybook/helpers");
23
-
24
- var _shared = require("../shared");
25
-
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
-
28
- function storyTestFabric(delay, testFn) {
29
- return async function storyTest() {
30
- var _testFn$call;
31
-
32
- delay ? await new Promise(resolve => setTimeout(resolve, delay)) : void 0;
33
- await ((_testFn$call = testFn === null || testFn === void 0 ? void 0 : testFn.call(this)) !== null && _testFn$call !== void 0 ? _testFn$call : this.expect(await this.takeScreenshot()).to.matchImage());
34
- };
35
- }
36
-
37
- function createCreeveyTest(browser, storyMeta, skipOptions, testName) {
38
- const {
39
- kind,
40
- name: story,
41
- id: storyId
42
- } = storyMeta;
43
- const path = [kind, story, testName, browser].filter(_types.isDefined);
44
- const skip = skipOptions ? (0, _utils.shouldSkip)(browser, {
45
- kind,
46
- story
47
- }, skipOptions, testName) : false;
48
- const id = (0, _crypto.createHash)('sha1').update(path.join('/')).digest('hex');
49
- return {
50
- id,
51
- skip,
52
- browser,
53
- testName,
54
- storyPath: [...kind.split('/').map(x => x.trim()), story],
55
- storyId
56
- };
57
- }
58
-
59
- function convertStories(browsers, stories) {
60
- const tests = {};
61
- (Array.isArray(stories) ? stories : Object.values(stories)).forEach(storyMeta => {
62
- // TODO Skip docsOnly stories for now
63
- if (storyMeta.parameters.docsOnly) return;
64
- browsers.forEach(browserName => {
65
- var _storyMeta$parameters;
66
-
67
- const {
68
- delay: delayParam,
69
- tests: storyTests,
70
- skip
71
- } = (_storyMeta$parameters = storyMeta.parameters.creevey) !== null && _storyMeta$parameters !== void 0 ? _storyMeta$parameters : {};
72
- const delay = typeof delayParam == 'number' ? delayParam : delayParam !== null && delayParam !== void 0 && delayParam.for.includes(browserName) ? delayParam.ms : 0; // typeof tests === "undefined" => rootSuite -> kindSuite -> storyTest -> [browsers.png]
73
- // typeof tests === "function" => rootSuite -> kindSuite -> storyTest -> browser -> [images.png]
74
- // typeof tests === "object" => rootSuite -> kindSuite -> storySuite -> test -> [browsers.png]
75
- // typeof tests === "object" => rootSuite -> kindSuite -> storySuite -> test -> browser -> [images.png]
76
-
77
- if (!storyTests) {
78
- const test = createCreeveyTest(browserName, storyMeta, skip);
79
- tests[test.id] = { ...test,
80
- storyId: storyMeta.id,
81
- story: storyMeta,
82
- fn: storyTestFabric(delay)
83
- };
84
- return;
85
- }
86
-
87
- Object.entries(storyTests).forEach(([testName, testFn]) => {
88
- const test = createCreeveyTest(browserName, storyMeta, skip, testName);
89
- tests[test.id] = { ...test,
90
- storyId: storyMeta.id,
91
- story: storyMeta,
92
- fn: storyTestFabric(delay, testFn)
93
- };
94
- });
95
- });
96
- });
97
- return tests;
98
- }
99
-
100
- async function loadTestsFromStories(browsers, provider, update) {
101
- const testIdsByFiles = new Map();
102
- const data = await provider(storiesByFiles => {
103
- const testsDiff = {};
104
- Array.from(storiesByFiles.entries()).forEach(([filename, stories]) => {
105
- var _testIdsByFiles$get$f, _testIdsByFiles$get;
106
-
107
- const tests = convertStories(browsers, stories);
108
- const changed = Object.keys(tests);
109
- const removed = (_testIdsByFiles$get$f = (_testIdsByFiles$get = testIdsByFiles.get(filename)) === null || _testIdsByFiles$get === void 0 ? void 0 : _testIdsByFiles$get.filter(testId => !tests[testId])) !== null && _testIdsByFiles$get$f !== void 0 ? _testIdsByFiles$get$f : [];
110
- if (changed.length == 0) testIdsByFiles.delete(filename);else testIdsByFiles.set(filename, changed);
111
- Object.assign(testsDiff, tests);
112
- removed.forEach(testId => testsDiff[testId] = undefined);
113
- });
114
- update === null || update === void 0 ? void 0 : update(testsDiff);
115
- });
116
- const stories = (0, _helpers.isStorybookVersionLessThan)(6) || (0, _helpers.isStorybookVersionGreaterThan)(6, 3) ? data.stories : (0, _shared.denormalizeStoryParameters)(data);
117
- const tests = convertStories(browsers, stories);
118
- Object.values(tests).filter(_types.isDefined).forEach(({
119
- id,
120
- story: {
121
- parameters: {
122
- fileName
123
- }
124
- }
125
- }) => {
126
- var _testIdsByFiles$get2;
127
-
128
- return (// TODO Don't use filename as a key, due possible collisions if two require.context with same structure of modules are defined
129
- testIdsByFiles.set(fileName, [...((_testIdsByFiles$get2 = testIdsByFiles.get(fileName)) !== null && _testIdsByFiles$get2 !== void 0 ? _testIdsByFiles$get2 : []), id])
130
- );
131
- });
132
- return tests;
133
- }
134
-
135
- function saveStoriesJson(storiesData, extract) {
136
- var _storiesData$stories;
137
-
138
- const outputDir = typeof extract == 'boolean' ? 'storybook-static' : extract;
139
-
140
- if (!(0, _helpers.isStorybookVersionLessThan)(6)) {
141
- // NOTE Copy-pasted from Storybook's `getStoriesJsonData` method
142
- const allowed = ['fileName', 'docsOnly', 'framework', '__id', '__isArgsStory'];
143
- storiesData.globalParameters = (0, _lodash.pick)(storiesData.globalParameters, allowed); // @ts-expect-error ignore error
144
-
145
- storiesData.kindParameters = (0, _lodash.mapValues)(storiesData.kindParameters, v => (0, _lodash.pick)(v, allowed)); // @ts-expect-error ignore error
146
-
147
- storiesData.stories = (0, _lodash.mapValues)(storiesData.stories, v => ({ ...(0, _lodash.pick)(v, ['id', 'name', 'kind', 'story']),
148
- parameters: (0, _lodash.pick)(v.parameters, allowed)
149
- }));
150
- } // TODO Fix args stories
151
-
152
-
153
- (0, _utils.removeProps)(storiesData !== null && storiesData !== void 0 ? storiesData : {}, ['stories', () => true, 'parameters', '__isArgsStory']);
154
- Object.values((_storiesData$stories = storiesData === null || storiesData === void 0 ? void 0 : storiesData.stories) !== null && _storiesData$stories !== void 0 ? _storiesData$stories : {}).forEach(story => (0, _types.isObject)(story) && 'parameters' in story && (0, _types.isObject)(story.parameters) && delete story.parameters.__isArgsStory);
155
- (0, _fs.mkdirSync)(outputDir, {
156
- recursive: true
157
- });
158
- (0, _fs.writeFileSync)(_path.default.join(outputDir, 'stories.json'), JSON.stringify(storiesData, null, 2));
159
- }
160
-
161
- function saveTestsJson(tests, dstPath = process.cwd()) {
162
- (0, _fs.mkdirSync)(dstPath, {
163
- recursive: true
164
- });
165
- (0, _fs.writeFileSync)(_path.default.join(dstPath, 'tests.json'), // eslint-disable-next-line @typescript-eslint/no-unsafe-return
166
- JSON.stringify(tests, (_, value) => (0, _types.isFunction)(value) ? value.toString() : value, 2));
167
- }
@@ -1,68 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.raw = exports.getStorybook = exports.setAddon = exports.clearDecorators = exports.addParameters = exports.addDecorator = exports.configure = exports.storiesOf = exports.forceReRender = exports.clientApi = exports.channel = void 0;
7
-
8
- var _addons = require("@storybook/addons");
9
-
10
- var _helpers = require("./helpers");
11
-
12
- var _api$channel, _api$context;
13
-
14
- const framework = (0, _helpers.getStorybookFramework)(); // eslint-disable-next-line @typescript-eslint/no-var-requires
15
-
16
- const core = require((0, _helpers.resolveFromStorybook)('@storybook/core')); //@ts-expect-error: 6.2 use named exports
17
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
18
-
19
-
20
- const start = (0, _helpers.isStorybookVersionLessThan)(6, 2) ? core.default.start : core.start;
21
- const api = start(() => void 0);
22
- const channel = (0, _helpers.isStorybookVersionLessThan)(6, 4) ? (_api$channel = api.channel) !== null && _api$channel !== void 0 ? _api$channel : (_api$context = api.context) === null || _api$context === void 0 ? void 0 : _api$context.channel : _addons.addons.getChannel();
23
- exports.channel = channel;
24
- const clientApi = api.clientApi;
25
- exports.clientApi = clientApi;
26
- const forceReRender = api.forceReRender;
27
- exports.forceReRender = forceReRender;
28
-
29
- const storiesOf = (kind, m) => {
30
- return clientApi.storiesOf(kind, m).addParameters({
31
- framework
32
- });
33
- };
34
-
35
- exports.storiesOf = storiesOf;
36
-
37
- const configure = (...args) => {
38
- if ((0, _helpers.isStorybookVersionLessThan)(5, 2)) {
39
- //NOTE: Storybook <= 5.1 pass args as is
40
- //@ts-expect-error: ignore it
41
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
42
- return api.configApi.configure(...args);
43
- }
44
-
45
- if ((0, _helpers.isStorybookVersionLessThan)(6)) {
46
- //NOTE: Storybook <= 5.3 pass `framework` as last argument
47
- //@ts-expect-error: ignore it
48
- return api.configure(...args, framework);
49
- } //NOTE Storybook 6.x pass `framework` as first argument
50
- //@ts-expect-error: ignore it
51
-
52
-
53
- return api.configure(framework, ...args);
54
- };
55
-
56
- exports.configure = configure;
57
- const addDecorator = clientApi.addDecorator;
58
- exports.addDecorator = addDecorator;
59
- const addParameters = clientApi.addParameters;
60
- exports.addParameters = addParameters;
61
- const clearDecorators = clientApi.clearDecorators;
62
- exports.clearDecorators = clearDecorators;
63
- const setAddon = clientApi.setAddon;
64
- exports.setAddon = setAddon;
65
- const getStorybook = clientApi.getStorybook;
66
- exports.getStorybook = getStorybook;
67
- const raw = clientApi.raw;
68
- exports.raw = raw;
@@ -1,165 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.hasDocsAddon = hasDocsAddon;
7
- exports.hasSvelteCSFAddon = hasSvelteCSFAddon;
8
- exports.getStorybookVersion = getStorybookVersion;
9
- exports.isStorybookVersionLessThan = isStorybookVersionLessThan;
10
- exports.isStorybookVersionGreaterThan = isStorybookVersionGreaterThan;
11
- exports.isStorybookVersion = isStorybookVersion;
12
- exports.getStorybookFramework = getStorybookFramework;
13
- exports.importStorybookConfig = importStorybookConfig;
14
- exports.isCSFv3Enabled = isCSFv3Enabled;
15
- exports.storybookConfigRef = exports.importStorybookCoreEvents = exports.importStorybookCoreCommon = exports.importStorybookClientLogger = exports.resolveFromStorybookCoreServer = exports.resolveFromStorybookCore = exports.resolveFromStorybookBuilderWebpack4 = exports.resolveFromStorybookAddonDocs = exports.resolveFromStorybook = exports.storybookDirRef = void 0;
16
-
17
- var _path = _interopRequireDefault(require("path"));
18
-
19
- var _resolveFrom = _interopRequireDefault(require("resolve-from"));
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 supportedFrameworks = ['react', 'vue', 'vue3', 'angular', 'marionette', 'mithril', 'marko', 'html', 'svelte', 'riot', 'ember', 'preact', 'rax', 'aurelia', 'server', 'web-components'];
28
- const storybookDirRef = {
29
- current: _path.default.resolve('.storybook')
30
- };
31
- exports.storybookDirRef = storybookDirRef;
32
-
33
- const resolveFromStorybook = modulePath => (0, _resolveFrom.default)(storybookDirRef.current, modulePath);
34
-
35
- exports.resolveFromStorybook = resolveFromStorybook;
36
-
37
- const resolveFromStorybookAddonDocs = modulePath => (0, _resolveFrom.default)(resolveFromStorybook('@storybook/addon-docs'), modulePath);
38
-
39
- exports.resolveFromStorybookAddonDocs = resolveFromStorybookAddonDocs;
40
-
41
- const resolveFromStorybookBuilderWebpack4 = modulePath => (0, _resolveFrom.default)(resolveFromStorybook('@storybook/builder-webpack4'), modulePath);
42
-
43
- exports.resolveFromStorybookBuilderWebpack4 = resolveFromStorybookBuilderWebpack4;
44
-
45
- const resolveFromStorybookCore = modulePath => (0, _resolveFrom.default)(resolveFromStorybook('@storybook/core'), modulePath);
46
-
47
- exports.resolveFromStorybookCore = resolveFromStorybookCore;
48
-
49
- const resolveFromStorybookCoreServer = modulePath => (0, _resolveFrom.default)(resolveFromStorybook('@storybook/core-server'), modulePath);
50
-
51
- exports.resolveFromStorybookCoreServer = resolveFromStorybookCoreServer;
52
-
53
- const importFromStorybook = modulePath => Promise.resolve(`${resolveFromStorybook(modulePath)}`).then(s => _interopRequireWildcard(require(s)));
54
-
55
- const importStorybookClientLogger = () => importFromStorybook('@storybook/client-logger');
56
-
57
- exports.importStorybookClientLogger = importStorybookClientLogger;
58
-
59
- const importStorybookCoreCommon = () => importFromStorybook('@storybook/core-common');
60
-
61
- exports.importStorybookCoreCommon = importStorybookCoreCommon;
62
-
63
- const importStorybookCoreEvents = () => importFromStorybook('@storybook/core-events');
64
-
65
- exports.importStorybookCoreEvents = importStorybookCoreEvents;
66
-
67
- function hasDocsAddon() {
68
- try {
69
- resolveFromStorybook('@storybook/addon-docs');
70
- return true;
71
- } catch (_) {
72
- return false;
73
- }
74
- }
75
-
76
- function hasSvelteCSFAddon() {
77
- try {
78
- resolveFromStorybook('@storybook/addon-svelte-csf');
79
- return true;
80
- } catch (_) {
81
- return false;
82
- }
83
- }
84
-
85
- function getStorybookVersion() {
86
- // eslint-disable-next-line @typescript-eslint/no-var-requires
87
- const {
88
- version
89
- } = require(resolveFromStorybook('@storybook/core/package.json'));
90
-
91
- return version;
92
- }
93
-
94
- function isStorybookVersionLessThan(major, minor) {
95
- var _process$env$__CREEVE;
96
-
97
- const [sbMajor, sbMinor] = ((_process$env$__CREEVE = process.env.__CREEVEY_STORYBOOK_VERSION__) !== null && _process$env$__CREEVE !== void 0 ? _process$env$__CREEVE : getStorybookVersion()).split('.');
98
- return Number(sbMajor) < major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) < minor;
99
- }
100
-
101
- function isStorybookVersionGreaterThan(major, minor) {
102
- var _process$env$__CREEVE2;
103
-
104
- const [sbMajor, sbMinor] = ((_process$env$__CREEVE2 = process.env.__CREEVEY_STORYBOOK_VERSION__) !== null && _process$env$__CREEVE2 !== void 0 ? _process$env$__CREEVE2 : getStorybookVersion()).split('.');
105
- return Number(sbMajor) > major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) > minor;
106
- }
107
-
108
- function isStorybookVersion(major, minor) {
109
- var _process$env$__CREEVE3;
110
-
111
- const [sbMajor, sbMinor] = ((_process$env$__CREEVE3 = process.env.__CREEVEY_STORYBOOK_VERSION__) !== null && _process$env$__CREEVE3 !== void 0 ? _process$env$__CREEVE3 : getStorybookVersion()).split('.');
112
- return Number(sbMajor) == major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) == minor;
113
- }
114
-
115
- function getStorybookFramework() {
116
- var _process$env$__CREEVE4;
117
-
118
- const framework = (_process$env$__CREEVE4 = process.env.__CREEVEY_STORYBOOK_FRAMEWORK__) !== null && _process$env$__CREEVE4 !== void 0 ? _process$env$__CREEVE4 : supportedFrameworks.find(framework => {
119
- try {
120
- return require.resolve(resolveFromStorybook(`@storybook/${framework}`));
121
- } catch (_) {
122
- return false;
123
- }
124
- });
125
- if (!framework) throw new Error("Couldn't detect used Storybook framework. Please ensure that you install `@storybook/<framework>` package");
126
- return framework;
127
- }
128
-
129
- const storybookConfigRef = {
130
- current: {
131
- stories: []
132
- }
133
- };
134
- exports.storybookConfigRef = storybookConfigRef;
135
-
136
- async function importStorybookConfig() {
137
- const configPath = `${storybookDirRef.current}/main`;
138
-
139
- try {
140
- return storybookConfigRef.current = (await Promise.resolve(`${require.resolve(configPath)}`).then(s => _interopRequireWildcard(require(s)))).default;
141
- } catch (_) {
142
- const storybookUtilsPath = isStorybookVersionLessThan(6, 2) ? '@storybook/core/dist/server/utils' : '@storybook/core-common/dist/cjs/utils';
143
- const serverRequireModule = isStorybookVersionLessThan(6, 2) ? 'server-require' : 'interpret-require'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
144
-
145
- const {
146
- getInterpretedFile
147
- } = await Promise.resolve(`${resolveFromStorybook(`${storybookUtilsPath}/interpret-files`)}`).then(s => _interopRequireWildcard(require(s))); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
148
-
149
- const {
150
- default: serverRequireFallback,
151
- serverRequire = serverRequireFallback
152
- } = await Promise.resolve(`${resolveFromStorybook(`${storybookUtilsPath}/${serverRequireModule}`)}`).then(s => _interopRequireWildcard(require(s))); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
153
-
154
- const mainConfigFile = isStorybookVersionLessThan(6, 1) ? configPath : // eslint-disable-next-line @typescript-eslint/no-unsafe-call
155
- getInterpretedFile(configPath); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
156
-
157
- return storybookConfigRef.current = serverRequire(mainConfigFile);
158
- }
159
- }
160
-
161
- async function isCSFv3Enabled() {
162
- var _await$importStoryboo, _await$importStoryboo2, _await$importStoryboo3;
163
-
164
- return (_await$importStoryboo = (_await$importStoryboo2 = await importStorybookConfig()) === null || _await$importStoryboo2 === void 0 ? void 0 : (_await$importStoryboo3 = _await$importStoryboo2.features) === null || _await$importStoryboo3 === void 0 ? void 0 : _await$importStoryboo3.previewCsfV3) !== null && _await$importStoryboo !== void 0 ? _await$importStoryboo : false;
165
- }