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,411 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.calcStatus = calcStatus;
7
+ exports.checkSuite = checkSuite;
8
+ exports.countTestsStatus = countTestsStatus;
9
+ exports.filterTests = filterTests;
10
+ exports.flattenSuite = flattenSuite;
11
+ exports.getBorderSize = getBorderSize;
12
+ exports.getCheckedTests = getCheckedTests;
13
+ exports.getConnectionUrl = getConnectionUrl;
14
+ exports.getImageUrl = getImageUrl;
15
+ exports.getSuiteByPath = getSuiteByPath;
16
+ exports.getTestByPath = getTestByPath;
17
+ exports.getTestPath = getTestPath;
18
+ exports.getTestPathFromSearch = getTestPathFromSearch;
19
+ exports.getTestsByStoryId = getTestsByStoryId;
20
+ exports.openSuite = openSuite;
21
+ exports.removeTests = removeTests;
22
+ exports.setSearchParams = setSearchParams;
23
+ exports.treeifyTests = treeifyTests;
24
+ exports.updateTestStatus = updateTestStatus;
25
+ exports.useApplyScale = useApplyScale;
26
+ exports.useCalcScale = useCalcScale;
27
+ exports.useForceUpdate = useForceUpdate;
28
+ exports.useLoadImages = useLoadImages;
29
+ exports.useResizeObserver = useResizeObserver;
30
+ exports.useTheme = useTheme;
31
+
32
+ var _theming = require("@storybook/theming");
33
+
34
+ var _qs = require("qs");
35
+
36
+ var _react = require("react");
37
+
38
+ var _types = require("../../types");
39
+
40
+ const statusUpdatesMap = new Map([[undefined, /(unknown|success|failed|pending|running)/], ['unknown', /(success|failed|pending|running)/], ['success', /(failed|pending|running)/], ['failed', /(pending|running)/], ['pending', /running/]]);
41
+
42
+ function makeEmptySuiteNode() {
43
+ let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
44
+ return {
45
+ path,
46
+ skip: true,
47
+ opened: false,
48
+ checked: true,
49
+ indeterminate: false,
50
+ children: {}
51
+ };
52
+ }
53
+
54
+ function calcStatus(oldStatus, newStatus) {
55
+ var _statusUpdatesMap$get;
56
+
57
+ return newStatus && (_statusUpdatesMap$get = statusUpdatesMap.get(oldStatus)) !== null && _statusUpdatesMap$get !== void 0 && _statusUpdatesMap$get.test(newStatus) ? newStatus : oldStatus;
58
+ }
59
+
60
+ function getTestPath(test) {
61
+ const {
62
+ browser,
63
+ testName,
64
+ storyPath
65
+ } = test;
66
+ return [...storyPath, testName, browser].filter(_types.isDefined);
67
+ }
68
+
69
+ function getSuiteByPath(suite, path) {
70
+ return path.reduce((suiteOrTest, pathToken) => (0, _types.isTest)(suiteOrTest) ? suiteOrTest : suiteOrTest === null || suiteOrTest === void 0 ? void 0 : suiteOrTest.children[pathToken], suite);
71
+ }
72
+
73
+ function getTestByPath(suite, path) {
74
+ var _getSuiteByPath;
75
+
76
+ const test = (_getSuiteByPath = getSuiteByPath(suite, path)) !== null && _getSuiteByPath !== void 0 ? _getSuiteByPath : suite;
77
+ return (0, _types.isTest)(test) ? test : null;
78
+ }
79
+
80
+ function getTestsByStoryId(suite, storyId) {
81
+ return Object.values(suite.children).filter(_types.isDefined).flatMap(suiteOrTest => {
82
+ if ((0, _types.isTest)(suiteOrTest)) return suiteOrTest.storyId === storyId ? suiteOrTest : [];
83
+ return getTestsByStoryId(suiteOrTest, storyId);
84
+ }).filter(_types.isDefined);
85
+ }
86
+
87
+ function checkTests(suiteOrTest, checked) {
88
+ suiteOrTest.checked = checked;
89
+
90
+ if (!(0, _types.isTest)(suiteOrTest)) {
91
+ suiteOrTest.indeterminate = false;
92
+ Object.values(suiteOrTest.children).filter(_types.isDefined).forEach(child => checkTests(child, checked));
93
+ }
94
+ }
95
+
96
+ function updateChecked(suite) {
97
+ const children = Object.values(suite.children).filter(_types.isDefined).filter(child => !child.skip);
98
+ const checkedEvery = children.every(test => test.checked);
99
+ const checkedSome = children.some(test => test.checked);
100
+ const indeterminate = children.some(test => (0, _types.isTest)(test) ? false : test.indeterminate) || !checkedEvery && checkedSome;
101
+ const checked = indeterminate || suite.checked == checkedEvery ? suite.checked : checkedEvery;
102
+ suite.checked = checked;
103
+ suite.indeterminate = indeterminate;
104
+ }
105
+
106
+ function checkSuite(suite, path, checked) {
107
+ const subSuite = getSuiteByPath(suite, path);
108
+ if (subSuite) checkTests(subSuite, checked);
109
+ path.slice(0, -1).map((_, index, tokens) => tokens.slice(0, tokens.length - index)).forEach(parentPath => {
110
+ const parentSuite = getSuiteByPath(suite, parentPath);
111
+ if ((0, _types.isTest)(parentSuite)) return;
112
+ if (parentSuite) updateChecked(parentSuite);
113
+ });
114
+ updateChecked(suite);
115
+ }
116
+
117
+ function treeifyTests(testsById) {
118
+ const rootSuite = makeEmptySuiteNode();
119
+ rootSuite.opened = true;
120
+ Object.values(testsById).forEach(test => {
121
+ if (!test) return;
122
+ const [browser, ...testPath] = getTestPath(test).reverse();
123
+ const lastSuite = testPath.reverse().reduce((suite, token) => {
124
+ const subSuite = suite.children[token] || makeEmptySuiteNode([...suite.path, token]);
125
+ subSuite.status = calcStatus(subSuite.status, test.status);
126
+ if (!test.skip) subSuite.skip = false;
127
+ if (!subSuite.skip) suite.skip = false;
128
+ suite.children[token] = subSuite;
129
+ suite.status = calcStatus(suite.status, subSuite.status);
130
+
131
+ if ((0, _types.isTest)(subSuite)) {
132
+ throw new Error("Suite and Test should not have same path '".concat(JSON.stringify(getTestPath(subSuite)), "'"));
133
+ }
134
+
135
+ return subSuite;
136
+ }, rootSuite);
137
+ lastSuite.children[browser] = { ...test,
138
+ checked: true
139
+ };
140
+ });
141
+ return rootSuite;
142
+ }
143
+
144
+ function getCheckedTests(suite) {
145
+ return Object.values(suite.children).filter(_types.isDefined).flatMap(suiteOrTest => {
146
+ if ((0, _types.isTest)(suiteOrTest)) return suiteOrTest.checked ? suiteOrTest : [];
147
+ if (!suiteOrTest.checked && !suiteOrTest.indeterminate) return [];
148
+ return getCheckedTests(suiteOrTest);
149
+ });
150
+ }
151
+
152
+ function updateTestStatus(suite, path, update) {
153
+ var _suite$children$title;
154
+
155
+ const title = path.shift();
156
+ if (!title) return;
157
+ const suiteOrTest = (_suite$children$title = suite.children[title]) !== null && _suite$children$title !== void 0 ? _suite$children$title : suite.children[title] = { ...(path.length == 0 ? update : makeEmptySuiteNode([...suite.path, title])),
158
+ checked: suite.checked
159
+ };
160
+
161
+ if ((0, _types.isTest)(suiteOrTest)) {
162
+ const test = suiteOrTest;
163
+ const {
164
+ skip,
165
+ status,
166
+ results,
167
+ approved
168
+ } = update;
169
+ if ((0, _types.isDefined)(skip)) test.skip = skip;
170
+ if ((0, _types.isDefined)(status)) test.status = status;
171
+ if ((0, _types.isDefined)(results)) test.results ? test.results.push(...results) : test.results = results;
172
+ if ((0, _types.isDefined)(approved)) Object.entries(approved).forEach(_ref => {
173
+ let [image, retry] = _ref;
174
+ return retry !== undefined && ((test.approved = test.approved || {})[image] = retry);
175
+ });
176
+ } else {
177
+ const subSuite = suiteOrTest;
178
+ updateTestStatus(subSuite, path, update);
179
+ }
180
+
181
+ suite.skip = Object.values(suite.children).filter(_types.isDefined).map(_ref2 => {
182
+ let {
183
+ skip
184
+ } = _ref2;
185
+ return skip;
186
+ }).every(Boolean);
187
+ suite.status = Object.values(suite.children).filter(_types.isDefined).map(_ref3 => {
188
+ let {
189
+ status
190
+ } = _ref3;
191
+ return status;
192
+ }).reduce(calcStatus);
193
+ }
194
+
195
+ function removeTests(suite, path) {
196
+ var _suiteOrTest$children;
197
+
198
+ const title = path.shift();
199
+ if (!title) return;
200
+ const suiteOrTest = suite.children[title];
201
+ if (suiteOrTest && !(0, _types.isTest)(suiteOrTest)) removeTests(suiteOrTest, path);
202
+ if ((0, _types.isTest)(suiteOrTest) || Object.keys((_suiteOrTest$children = suiteOrTest === null || suiteOrTest === void 0 ? void 0 : suiteOrTest.children) !== null && _suiteOrTest$children !== void 0 ? _suiteOrTest$children : {}).length == 0) delete suite.children[title];
203
+ if (Object.keys(suite.children).length == 0) return;
204
+ updateChecked(suite);
205
+ suite.skip = Object.values(suite.children).filter(_types.isDefined).map(_ref4 => {
206
+ let {
207
+ skip
208
+ } = _ref4;
209
+ return skip;
210
+ }).every(Boolean);
211
+ suite.status = Object.values(suite.children).filter(_types.isDefined).map(_ref5 => {
212
+ let {
213
+ status
214
+ } = _ref5;
215
+ return status;
216
+ }).reduce(calcStatus);
217
+ }
218
+
219
+ function filterTests(suite, filter) {
220
+ const {
221
+ status,
222
+ subStrings
223
+ } = filter;
224
+ if (!status && !subStrings.length) return suite;
225
+ const filteredSuite = { ...suite,
226
+ children: {}
227
+ };
228
+ Object.entries(suite.children).forEach(_ref6 => {
229
+ let [title, suiteOrTest] = _ref6;
230
+ if (!suiteOrTest || suiteOrTest.skip) return;
231
+
232
+ if (!status && subStrings.some(subString => title.toLowerCase().includes(subString))) {
233
+ filteredSuite.children[title] = suiteOrTest;
234
+ } else if ((0, _types.isTest)(suiteOrTest)) {
235
+ if (status && suiteOrTest.status && ['pending', 'running', status].includes(suiteOrTest.status)) filteredSuite.children[title] = suiteOrTest;
236
+ } else {
237
+ const filteredSubSuite = filterTests(suiteOrTest, filter);
238
+ if (Object.keys(filteredSubSuite.children).length == 0) return;
239
+ filteredSuite.children[title] = filteredSubSuite;
240
+ }
241
+ });
242
+ return filteredSuite;
243
+ }
244
+
245
+ function openSuite(suite, path, opened) {
246
+ const subSuite = path.reduce((suiteOrTest, pathToken) => {
247
+ if (suiteOrTest && !(0, _types.isTest)(suiteOrTest)) {
248
+ if (opened) suiteOrTest.opened = opened;
249
+ return suiteOrTest.children[pathToken];
250
+ }
251
+ }, suite);
252
+ if (subSuite && !(0, _types.isTest)(subSuite)) subSuite.opened = opened;
253
+ }
254
+
255
+ function flattenSuite(suite) {
256
+ if (!suite.opened) return [];
257
+ return Object.entries(suite.children).flatMap(_ref7 => {
258
+ let [title, subSuite] = _ref7;
259
+ return subSuite ? [{
260
+ title,
261
+ suite: subSuite
262
+ }, ...((0, _types.isTest)(subSuite) ? [] : flattenSuite(subSuite))] : [];
263
+ });
264
+ }
265
+
266
+ function countTestsStatus(suite) {
267
+ let successCount = 0;
268
+ let failedCount = 0;
269
+ let skippedCount = 0;
270
+ let pendingCount = 0;
271
+ const cases = Object.values(suite.children).filter(_types.isDefined);
272
+ let suiteOrTest;
273
+
274
+ while (suiteOrTest = cases.pop()) {
275
+ if ((0, _types.isTest)(suiteOrTest)) {
276
+ if (suiteOrTest.skip) skippedCount++;
277
+ if (suiteOrTest.status === 'success') successCount++;
278
+ if (suiteOrTest.status === 'failed') failedCount++;
279
+ if (suiteOrTest.status === 'pending') pendingCount++;
280
+ } else {
281
+ cases.push(...Object.values(suiteOrTest.children).filter(_types.isDefined));
282
+ }
283
+ }
284
+
285
+ return {
286
+ successCount,
287
+ failedCount,
288
+ skippedCount,
289
+ pendingCount
290
+ };
291
+ }
292
+
293
+ function getConnectionUrl() {
294
+ return [typeof __CREEVEY_SERVER_HOST__ == 'undefined' ? window.location.hostname : __CREEVEY_SERVER_HOST__, typeof __CREEVEY_SERVER_PORT__ == 'undefined' ? window.location.port : __CREEVEY_SERVER_PORT__].filter(Boolean).join(':');
295
+ }
296
+
297
+ function getImageUrl(path, imageName) {
298
+ // path => [kind, story, test, browser]
299
+ const browser = path.slice(-1)[0];
300
+ const imagesUrl = window.location.host ? "".concat(window.location.protocol, "//").concat(getConnectionUrl()).concat(window.location.pathname == '/' ? '/report' : window.location.pathname.split('/').slice(0, -1).join('/'), "/").concat(encodeURI(path.slice(0, -1).join('/'))) : encodeURI(path.slice(0, -1).join('/'));
301
+ return imageName == browser ? imagesUrl : "".concat(imagesUrl, "/").concat(encodeURI(browser));
302
+ }
303
+
304
+ function getBorderSize(element) {
305
+ // NOTE Firefox returns empty string for `borderWidth` prop
306
+ const borderSize = parseFloat(getComputedStyle(element).borderTopWidth);
307
+ return Number.isNaN(borderSize) ? 0 : borderSize;
308
+ }
309
+
310
+ function useLoadImages(s1, s2, s3) {
311
+ const [loaded, setLoaded] = (0, _react.useState)(false);
312
+ (0, _react.useEffect)(() => {
313
+ setLoaded(false);
314
+ void Promise.all([s1, s2, s3].map(url => new Promise(resolve => {
315
+ const image = document.createElement('img');
316
+ image.src = url;
317
+ image.onload = resolve;
318
+ image.onerror = resolve;
319
+ }))).then(() => setLoaded(true));
320
+ }, [s1, s2, s3]);
321
+ return loaded;
322
+ }
323
+ /**
324
+ * Uses the ResizeObserver API to observe changes within the given HTML Element DOM Rect.
325
+ *
326
+ * @returns dimensions of element's content box (which means without paddings and border width)
327
+ */
328
+
329
+
330
+ function useResizeObserver(elementRef, onResize) {
331
+ let debounceTimeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 16;
332
+ const observerRef = (0, _react.useRef)(null);
333
+ (0, _react.useEffect)(() => {
334
+ if (!elementRef.current) return;
335
+ observerRef.current = new ResizeObserver(onResize);
336
+ observerRef.current.observe(elementRef.current);
337
+ return () => {
338
+ var _observerRef$current;
339
+
340
+ return (_observerRef$current = observerRef.current) === null || _observerRef$current === void 0 ? void 0 : _observerRef$current.disconnect();
341
+ };
342
+ }, [debounceTimeout, elementRef, onResize]);
343
+ }
344
+
345
+ function useApplyScale(imageRef, scale, dependency) {
346
+ (0, _react.useLayoutEffect)(() => {
347
+ if (!imageRef.current) return;
348
+ const image = imageRef.current;
349
+ const borderSize = getBorderSize(image);
350
+ image.style.height = "".concat(image.naturalHeight * scale + borderSize * 2, "px");
351
+ }, [imageRef, scale, dependency]);
352
+ }
353
+
354
+ function useCalcScale(diffImageRef, loaded) {
355
+ const [scale, setScale] = (0, _react.useState)(1);
356
+ const calcScale = (0, _react.useCallback)(() => {
357
+ const diffImage = diffImageRef.current;
358
+ if (!diffImage || !loaded) return setScale(1);
359
+ const borderSize = getBorderSize(diffImage);
360
+ const ratio = (diffImage.getBoundingClientRect().width - borderSize * 2) / diffImage.naturalWidth;
361
+ setScale(Math.min(1, ratio));
362
+ }, [diffImageRef, loaded]);
363
+ useResizeObserver(diffImageRef, calcScale);
364
+ (0, _react.useLayoutEffect)(calcScale, [calcScale]);
365
+ return scale;
366
+ }
367
+
368
+ const CREEVEY_THEME = 'Creevey_theme';
369
+
370
+ function isTheme(theme) {
371
+ return (0, _types.isDefined)(theme) && Object.prototype.hasOwnProperty.call(_theming.themes, theme);
372
+ }
373
+
374
+ function initialTheme() {
375
+ const theme = localStorage.getItem(CREEVEY_THEME);
376
+ return isTheme(theme) ? theme : 'light';
377
+ }
378
+
379
+ function useTheme() {
380
+ const [theme, setTheme] = (0, _react.useState)(initialTheme());
381
+ (0, _react.useEffect)(() => {
382
+ localStorage.setItem(CREEVEY_THEME, theme);
383
+ }, [theme]);
384
+ return [theme, setTheme];
385
+ }
386
+
387
+ function setSearchParams(testPath) {
388
+ const pageUrl = "?".concat((0, _qs.stringify)({
389
+ testPath
390
+ }));
391
+ window.history.pushState({
392
+ testPath
393
+ }, '', pageUrl);
394
+ }
395
+
396
+ function getTestPathFromSearch() {
397
+ const {
398
+ testPath
399
+ } = (0, _qs.parse)(window.location.search.slice(1)); //@ts-expect-error: This expression is not callable.
400
+
401
+ if (Array.isArray(testPath) && testPath.every(token => typeof token == 'string')) {
402
+ return testPath;
403
+ }
404
+
405
+ return [];
406
+ }
407
+
408
+ function useForceUpdate() {
409
+ const [, update] = (0, _react.useState)({});
410
+ return (0, _react.useCallback)(() => update({}), []);
411
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.viewModes = exports.getViewMode = exports.VIEW_MODE_KEY = void 0;
7
+ const VIEW_MODE_KEY = 'Creevey_view_mode';
8
+ exports.VIEW_MODE_KEY = VIEW_MODE_KEY;
9
+ const viewModes = ['side-by-side', 'swap', 'slide', 'blend'];
10
+ exports.viewModes = viewModes;
11
+
12
+ const getViewMode = () => {
13
+ const item = localStorage.getItem(VIEW_MODE_KEY);
14
+ return item && viewModes.includes(item) ? item : 'side-by-side';
15
+ };
16
+
17
+ exports.getViewMode = getViewMode;
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkcreevey=self.webpackChunkcreevey||[]).push([[19],{32019:(e,r,a)=>{a.r(r),a.d(r,{SyntaxHighlighter:()=>c.d3,createCopyToClipboardFunction:()=>c.xV,default:()=>c.qG});var c=a(7603)}}]);