creevey 0.9.1 → 0.10.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/chromatic.config.json +5 -0
  2. package/dist/client/addon/components/Addon.d.ts +1 -0
  3. package/dist/client/addon/components/Addon.js.map +1 -1
  4. package/dist/client/addon/components/Icons.d.ts +1 -0
  5. package/dist/client/addon/components/Icons.js.map +1 -1
  6. package/dist/client/addon/components/Panel.d.ts +1 -0
  7. package/dist/client/addon/components/Panel.js.map +1 -1
  8. package/dist/client/addon/components/TestSelect.d.ts +1 -0
  9. package/dist/client/addon/components/TestSelect.js +4 -3
  10. package/dist/client/addon/components/TestSelect.js.map +1 -1
  11. package/dist/client/addon/components/Tools.d.ts +1 -0
  12. package/dist/client/addon/components/Tools.js +7 -8
  13. package/dist/client/addon/components/Tools.js.map +1 -1
  14. package/dist/client/addon/controller.d.ts +1 -1
  15. package/dist/client/addon/controller.js.map +1 -1
  16. package/dist/client/addon/decorator.d.ts +1 -1
  17. package/dist/client/addon/manager.js +3 -2
  18. package/dist/client/addon/manager.js.map +1 -1
  19. package/dist/client/addon/preview.d.ts +1 -1
  20. package/dist/client/addon/withCreevey.d.ts +6 -8
  21. package/dist/client/addon/withCreevey.js +21 -19
  22. package/dist/client/addon/withCreevey.js.map +1 -1
  23. package/dist/client/shared/components/ImagesView/BlendView.d.ts +1 -1
  24. package/dist/client/shared/components/ImagesView/BlendView.js.map +1 -1
  25. package/dist/client/shared/components/ImagesView/ImagesView.d.ts +1 -0
  26. package/dist/client/shared/components/ImagesView/ImagesView.js.map +1 -1
  27. package/dist/client/shared/components/ImagesView/SideBySideView.d.ts +1 -1
  28. package/dist/client/shared/components/ImagesView/SideBySideView.js.map +1 -1
  29. package/dist/client/shared/components/ImagesView/SlideView.d.ts +1 -1
  30. package/dist/client/shared/components/ImagesView/SlideView.js.map +1 -1
  31. package/dist/client/shared/components/ImagesView/SwapView.d.ts +1 -1
  32. package/dist/client/shared/components/ImagesView/SwapView.js.map +1 -1
  33. package/dist/client/shared/components/PageFooter/PageFooter.d.ts +1 -0
  34. package/dist/client/shared/components/PageFooter/PageFooter.js +1 -1
  35. package/dist/client/shared/components/PageFooter/PageFooter.js.map +1 -1
  36. package/dist/client/shared/components/PageFooter/Paging.d.ts +2 -2
  37. package/dist/client/shared/components/PageFooter/Paging.js +8 -6
  38. package/dist/client/shared/components/PageFooter/Paging.js.map +1 -1
  39. package/dist/client/shared/components/PageHeader/ImagePreview.js.map +1 -1
  40. package/dist/client/shared/components/PageHeader/PageHeader.d.ts +1 -0
  41. package/dist/client/shared/components/PageHeader/PageHeader.js +2 -1
  42. package/dist/client/shared/components/PageHeader/PageHeader.js.map +1 -1
  43. package/dist/client/shared/components/ResultsPage.d.ts +2 -2
  44. package/dist/client/shared/components/ResultsPage.js.map +1 -1
  45. package/dist/client/web/CreeveyApp.d.ts +1 -0
  46. package/dist/client/web/CreeveyApp.js.map +1 -1
  47. package/dist/client/web/CreeveyLoader.d.ts +1 -0
  48. package/dist/client/web/CreeveyLoader.js.map +1 -1
  49. package/dist/client/web/CreeveyView/SideBar/Checkbox.d.ts +1 -1
  50. package/dist/client/web/CreeveyView/SideBar/Checkbox.js +4 -4
  51. package/dist/client/web/CreeveyView/SideBar/Checkbox.js.map +1 -1
  52. package/dist/client/web/CreeveyView/SideBar/Search.d.ts +1 -0
  53. package/dist/client/web/CreeveyView/SideBar/Search.js +4 -4
  54. package/dist/client/web/CreeveyView/SideBar/Search.js.map +1 -1
  55. package/dist/client/web/CreeveyView/SideBar/SideBar.d.ts +1 -1
  56. package/dist/client/web/CreeveyView/SideBar/SideBar.js +1 -7
  57. package/dist/client/web/CreeveyView/SideBar/SideBar.js.map +1 -1
  58. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.d.ts +1 -0
  59. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js +5 -4
  60. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js.map +1 -1
  61. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +1 -0
  62. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js +4 -3
  63. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js.map +1 -1
  64. package/dist/client/web/CreeveyView/SideBar/SuiteLink.d.ts +3 -7
  65. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js +6 -5
  66. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js.map +1 -1
  67. package/dist/client/web/CreeveyView/SideBar/TestLink.d.ts +1 -0
  68. package/dist/client/web/CreeveyView/SideBar/TestLink.js +5 -1
  69. package/dist/client/web/CreeveyView/SideBar/TestLink.js.map +1 -1
  70. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js +15 -8
  71. package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js.map +1 -1
  72. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js +5 -4
  73. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js.map +1 -1
  74. package/dist/client/web/CreeveyView/SideBar/Toggle.d.ts +1 -0
  75. package/dist/client/web/CreeveyView/SideBar/Toggle.js.map +1 -1
  76. package/dist/client/web/KeyboardEventsContext.d.ts +3 -4
  77. package/dist/client/web/KeyboardEventsContext.js.map +1 -1
  78. package/dist/client/web/assets/index-DkmZfG9C.js +591 -0
  79. package/dist/client/web/index.html +1 -1
  80. package/dist/client/web/index.js +5 -6
  81. package/dist/client/web/index.js.map +1 -1
  82. package/dist/creevey.js +21 -9
  83. package/dist/creevey.js.map +1 -1
  84. package/dist/index.js +7 -3
  85. package/dist/index.js.map +1 -1
  86. package/dist/server/config.d.ts +1 -1
  87. package/dist/server/config.js +9 -5
  88. package/dist/server/config.js.map +1 -1
  89. package/dist/server/docker.d.ts +2 -2
  90. package/dist/server/docker.js +46 -40
  91. package/dist/server/docker.js.map +1 -1
  92. package/dist/server/index.js +54 -15
  93. package/dist/server/index.js.map +1 -1
  94. package/dist/server/master/master.d.ts +1 -5
  95. package/dist/server/master/master.js +3 -3
  96. package/dist/server/master/master.js.map +1 -1
  97. package/dist/server/master/pool.d.ts +2 -1
  98. package/dist/server/master/pool.js +13 -7
  99. package/dist/server/master/pool.js.map +1 -1
  100. package/dist/server/master/runner.d.ts +1 -1
  101. package/dist/server/master/runner.js +4 -2
  102. package/dist/server/master/runner.js.map +1 -1
  103. package/dist/server/master/server.js +1 -0
  104. package/dist/server/master/server.js.map +1 -1
  105. package/dist/server/master/start.d.ts +3 -0
  106. package/dist/server/master/{index.js → start.js} +6 -9
  107. package/dist/server/master/start.js.map +1 -0
  108. package/dist/server/messages.d.ts +4 -10
  109. package/dist/server/messages.js +4 -58
  110. package/dist/server/messages.js.map +1 -1
  111. package/dist/server/playwright/docker-file.d.ts +1 -0
  112. package/dist/server/playwright/docker-file.js +26 -0
  113. package/dist/server/playwright/docker-file.js.map +1 -0
  114. package/dist/server/playwright/docker.d.ts +1 -0
  115. package/dist/server/playwright/docker.js +31 -0
  116. package/dist/server/playwright/docker.js.map +1 -0
  117. package/dist/server/playwright/internal.d.ts +25 -0
  118. package/dist/server/playwright/internal.js +319 -0
  119. package/dist/server/playwright/internal.js.map +1 -0
  120. package/dist/server/playwright/webdriver.d.ts +16 -0
  121. package/dist/server/playwright/webdriver.js +105 -0
  122. package/dist/server/playwright/webdriver.js.map +1 -0
  123. package/dist/server/providers/browser.d.ts +2 -0
  124. package/dist/server/{storybook/providers → providers}/browser.js +6 -7
  125. package/dist/server/providers/browser.js.map +1 -0
  126. package/dist/server/providers/hybrid.d.ts +2 -0
  127. package/dist/server/{storybook/providers → providers}/hybrid.js +8 -8
  128. package/dist/server/providers/hybrid.js.map +1 -0
  129. package/dist/server/reporter.d.ts +26 -0
  130. package/dist/server/{worker/reporter.js → reporter.js} +34 -56
  131. package/dist/server/reporter.js.map +1 -0
  132. package/dist/server/selenium/internal.d.ts +31 -0
  133. package/dist/server/selenium/internal.js +606 -0
  134. package/dist/server/selenium/internal.js.map +1 -0
  135. package/dist/server/selenium/selenoid.js +6 -13
  136. package/dist/server/selenium/selenoid.js.map +1 -1
  137. package/dist/server/selenium/webdriver.d.ts +24 -0
  138. package/dist/server/selenium/webdriver.js +106 -0
  139. package/dist/server/selenium/webdriver.js.map +1 -0
  140. package/dist/server/stories.js +16 -9
  141. package/dist/server/stories.js.map +1 -1
  142. package/dist/server/telemetry.d.ts +1 -1
  143. package/dist/server/telemetry.js +4 -4
  144. package/dist/server/telemetry.js.map +1 -1
  145. package/dist/server/utils.d.ts +3 -4
  146. package/dist/server/utils.js +10 -9
  147. package/dist/server/utils.js.map +1 -1
  148. package/dist/server/webdriver.d.ts +19 -0
  149. package/dist/server/webdriver.js +79 -0
  150. package/dist/server/webdriver.js.map +1 -0
  151. package/dist/server/worker/chai-image.d.ts +2 -5
  152. package/dist/server/worker/chai-image.js +14 -102
  153. package/dist/server/worker/chai-image.js.map +1 -1
  154. package/dist/server/worker/match-image.d.ts +14 -0
  155. package/dist/server/worker/match-image.js +231 -0
  156. package/dist/server/worker/match-image.js.map +1 -0
  157. package/dist/server/worker/start.d.ts +2 -0
  158. package/dist/server/worker/start.js +258 -0
  159. package/dist/server/worker/start.js.map +1 -0
  160. package/dist/types.d.ts +127 -64
  161. package/dist/types.js +15 -9
  162. package/dist/types.js.map +1 -1
  163. package/package.json +108 -110
  164. package/src/client/addon/components/Addon.tsx +1 -1
  165. package/src/client/addon/components/Icons.tsx +1 -1
  166. package/src/client/addon/components/Panel.tsx +1 -1
  167. package/src/client/addon/components/TestSelect.tsx +5 -5
  168. package/src/client/addon/components/Tools.tsx +9 -9
  169. package/src/client/addon/controller.ts +1 -1
  170. package/src/client/addon/manager.ts +4 -4
  171. package/src/client/addon/withCreevey.ts +26 -28
  172. package/src/client/shared/components/ImagesView/BlendView.tsx +1 -1
  173. package/src/client/shared/components/ImagesView/ImagesView.tsx +2 -2
  174. package/src/client/shared/components/ImagesView/SideBySideView.tsx +1 -1
  175. package/src/client/shared/components/ImagesView/SlideView.tsx +1 -1
  176. package/src/client/shared/components/ImagesView/SwapView.tsx +1 -1
  177. package/src/client/shared/components/PageFooter/PageFooter.tsx +2 -2
  178. package/src/client/shared/components/PageFooter/Paging.tsx +13 -13
  179. package/src/client/shared/components/PageHeader/ImagePreview.tsx +1 -1
  180. package/src/client/shared/components/PageHeader/PageHeader.tsx +4 -3
  181. package/src/client/shared/components/ResultsPage.tsx +1 -1
  182. package/src/client/web/CreeveyApp.tsx +1 -1
  183. package/src/client/web/CreeveyLoader.tsx +1 -1
  184. package/src/client/web/CreeveyView/SideBar/Checkbox.tsx +6 -7
  185. package/src/client/web/CreeveyView/SideBar/Search.tsx +4 -4
  186. package/src/client/web/CreeveyView/SideBar/SideBar.tsx +3 -10
  187. package/src/client/web/CreeveyView/SideBar/SideBarFooter.tsx +7 -6
  188. package/src/client/web/CreeveyView/SideBar/SideBarHeader.tsx +7 -6
  189. package/src/client/web/CreeveyView/SideBar/SuiteLink.tsx +8 -6
  190. package/src/client/web/CreeveyView/SideBar/TestLink.tsx +8 -3
  191. package/src/client/web/CreeveyView/SideBar/TestStatusIcon.tsx +18 -10
  192. package/src/client/web/CreeveyView/SideBar/TestsStatus.tsx +7 -10
  193. package/src/client/web/CreeveyView/SideBar/Toggle.tsx +1 -2
  194. package/src/client/web/KeyboardEventsContext.tsx +3 -4
  195. package/src/client/web/index.html +1 -1
  196. package/src/client/web/index.tsx +4 -3
  197. package/src/creevey.ts +25 -8
  198. package/src/index.ts +4 -2
  199. package/src/server/config.ts +12 -8
  200. package/src/server/docker.ts +58 -44
  201. package/src/server/index.ts +57 -18
  202. package/src/server/master/master.ts +3 -6
  203. package/src/server/master/pool.ts +25 -9
  204. package/src/server/master/runner.ts +4 -2
  205. package/src/server/master/server.ts +1 -0
  206. package/src/server/master/{index.ts → start.ts} +13 -11
  207. package/src/server/messages.ts +11 -75
  208. package/src/server/playwright/docker-file.ts +21 -0
  209. package/src/server/playwright/docker.ts +41 -0
  210. package/src/server/playwright/internal.ts +387 -0
  211. package/src/server/playwright/webdriver.ts +126 -0
  212. package/src/server/{storybook/providers → providers}/browser.ts +7 -8
  213. package/src/server/{storybook/providers → providers}/hybrid.ts +19 -19
  214. package/src/server/{worker/reporter.ts → reporter.ts} +40 -72
  215. package/src/server/selenium/internal.ts +785 -0
  216. package/src/server/selenium/selenoid.ts +12 -17
  217. package/src/server/selenium/webdriver.ts +136 -0
  218. package/src/server/stories.ts +18 -11
  219. package/src/server/telemetry.ts +2 -2
  220. package/src/server/utils.ts +9 -9
  221. package/src/server/webdriver.ts +127 -0
  222. package/src/server/worker/chai-image.ts +21 -133
  223. package/src/server/worker/match-image.ts +303 -0
  224. package/src/server/worker/start.ts +303 -0
  225. package/src/types.ts +162 -60
  226. package/dist/client/web/202.js +0 -1
  227. package/dist/client/web/270.js +0 -43
  228. package/dist/client/web/752.js +0 -1
  229. package/dist/client/web/main.js +0 -79
  230. package/dist/client/web/main.js.LICENSE.txt +0 -34
  231. package/dist/server/master/index.d.ts +0 -3
  232. package/dist/server/master/index.js.map +0 -1
  233. package/dist/server/selenium/browser.d.ts +0 -19
  234. package/dist/server/selenium/browser.js +0 -640
  235. package/dist/server/selenium/browser.js.map +0 -1
  236. package/dist/server/selenium/index.d.ts +0 -2
  237. package/dist/server/selenium/index.js +0 -19
  238. package/dist/server/selenium/index.js.map +0 -1
  239. package/dist/server/storybook/providers/browser.d.ts +0 -2
  240. package/dist/server/storybook/providers/browser.js.map +0 -1
  241. package/dist/server/storybook/providers/hybrid.d.ts +0 -2
  242. package/dist/server/storybook/providers/hybrid.js.map +0 -1
  243. package/dist/server/worker/helpers.d.ts +0 -8
  244. package/dist/server/worker/helpers.js +0 -57
  245. package/dist/server/worker/helpers.js.map +0 -1
  246. package/dist/server/worker/index.d.ts +0 -1
  247. package/dist/server/worker/index.js +0 -6
  248. package/dist/server/worker/index.js.map +0 -1
  249. package/dist/server/worker/reporter.d.ts +0 -8
  250. package/dist/server/worker/reporter.js.map +0 -1
  251. package/dist/server/worker/worker.d.ts +0 -4
  252. package/dist/server/worker/worker.js +0 -212
  253. package/dist/server/worker/worker.js.map +0 -1
  254. package/src/server/selenium/browser.ts +0 -840
  255. package/src/server/selenium/index.ts +0 -2
  256. package/src/server/worker/helpers.ts +0 -61
  257. package/src/server/worker/index.ts +0 -1
  258. package/src/server/worker/worker.ts +0 -240
  259. package/types/mocha.d.ts +0 -20
@@ -0,0 +1,319 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.InternalBrowser = void 0;
7
+ const playwright_core_1 = require("playwright-core");
8
+ const loglevel_1 = __importDefault(require("loglevel"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const uuid_1 = require("uuid");
11
+ const loglevel_plugin_prefix_1 = __importDefault(require("loglevel-plugin-prefix"));
12
+ const core_events_1 = require("@storybook/core-events");
13
+ const types_1 = require("../../types");
14
+ const messages_1 = require("../messages");
15
+ const webdriver_1 = require("../webdriver");
16
+ const utils_1 = require("../utils");
17
+ const logger_1 = require("../logger");
18
+ async function tryConnect(type, gridUrl) {
19
+ let timeout = null;
20
+ let isTimeout = false;
21
+ let error = null;
22
+ return Promise.race([
23
+ new Promise((resolve) => (timeout = setTimeout(() => {
24
+ isTimeout = true;
25
+ logger_1.logger.error(`Can't connect to ${type.name()} playwright browser`, error);
26
+ resolve(null);
27
+ }, 10000))),
28
+ (async () => {
29
+ let browser = null;
30
+ do {
31
+ try {
32
+ browser = await type.connect(gridUrl);
33
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
34
+ if (timeout)
35
+ clearTimeout(timeout);
36
+ break;
37
+ }
38
+ catch (e) {
39
+ error = e;
40
+ }
41
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
42
+ } while (!isTimeout);
43
+ return browser;
44
+ })(),
45
+ ]);
46
+ }
47
+ class InternalBrowser {
48
+ #isShuttingDown = false;
49
+ #browser;
50
+ #page;
51
+ #sessionId = (0, uuid_1.v4)();
52
+ #serverHost = null;
53
+ #serverPort;
54
+ #logger;
55
+ #unsubscribe = types_1.noop;
56
+ constructor(browser, page, port) {
57
+ this.#browser = browser;
58
+ this.#page = page;
59
+ this.#serverPort = port;
60
+ this.#logger = loglevel_1.default.getLogger(this.#sessionId);
61
+ this.#unsubscribe = (0, messages_1.subscribeOn)('shutdown', () => {
62
+ void this.closeBrowser();
63
+ });
64
+ }
65
+ get browser() {
66
+ return this.#page;
67
+ }
68
+ get sessionId() {
69
+ return this.#sessionId;
70
+ }
71
+ async closeBrowser() {
72
+ if (this.#isShuttingDown)
73
+ return;
74
+ this.#isShuttingDown = true;
75
+ this.#unsubscribe();
76
+ try {
77
+ await this.#page.close();
78
+ await this.#browser.close();
79
+ }
80
+ catch (_) {
81
+ /* noop */
82
+ }
83
+ }
84
+ async takeScreenshot(captureElement, ignoreElements) {
85
+ // TODO Implement features from selenium `takeScreenshot`
86
+ // TODO Do we need scroll bar hack from selenium?
87
+ const ignore = Array.isArray(ignoreElements) ? ignoreElements : ignoreElements ? [ignoreElements] : [];
88
+ const mask = ignore.map((el) => this.#page.locator(el));
89
+ if (captureElement) {
90
+ const element = await this.#page.$(captureElement);
91
+ if (!element)
92
+ throw new Error(`Element with selector ${captureElement} not found`);
93
+ return element.screenshot({ animations: 'disabled', mask });
94
+ }
95
+ return this.#page.screenshot({ animations: 'disabled', mask, fullPage: true });
96
+ }
97
+ waitForComplete(callback) {
98
+ void this.#page.evaluate(() => window.__CREEVEY_HAS_PLAY_COMPLETED_YET__()).then(callback);
99
+ }
100
+ async selectStory(id, waitForReady = false) {
101
+ // NOTE: Global variables might be reset after hot reload. I think it's workaround, maybe we need better solution
102
+ await this.updateBrowserGlobalVariables();
103
+ await this.resetMousePosition();
104
+ this.#logger.debug(`Triggering 'SetCurrentStory' event with storyId ${chalk_1.default.magenta(id)}`);
105
+ const result = await this.#page.evaluate(([id, shouldWaitForReady]) => {
106
+ if (typeof window.__CREEVEY_SELECT_STORY__ == 'undefined') {
107
+ return [
108
+ "Creevey can't switch story. This may happened if forget to add `creevey` addon to your storybook config, or storybook not loaded in browser due syntax error.",
109
+ ];
110
+ }
111
+ return window.__CREEVEY_SELECT_STORY__(id, shouldWaitForReady);
112
+ }, [id, waitForReady]);
113
+ const [errorMessage, isCaptureCalled = false] = result ?? [];
114
+ if (errorMessage)
115
+ throw new Error(errorMessage);
116
+ return isCaptureCalled;
117
+ }
118
+ async updateStoryArgs(story, updatedArgs) {
119
+ await this.#page.evaluate(([storyId, updatedArgs, UPDATE_STORY_ARGS, STORY_RENDERED]) => {
120
+ return new Promise((resolve) => {
121
+ window.__STORYBOOK_ADDONS_CHANNEL__.once(STORY_RENDERED, resolve);
122
+ window.__STORYBOOK_ADDONS_CHANNEL__.emit(UPDATE_STORY_ARGS, {
123
+ storyId,
124
+ updatedArgs,
125
+ });
126
+ });
127
+ }, [story.id, updatedArgs, core_events_1.UPDATE_STORY_ARGS, core_events_1.STORY_RENDERED]);
128
+ }
129
+ async loadStoriesFromBrowser(retry = false) {
130
+ try {
131
+ const stories = await this.#page.evaluate(() => window.__CREEVEY_GET_STORIES__());
132
+ if (!stories)
133
+ throw new Error("Can't get stories, it seems creevey or storybook API isn't available");
134
+ return stories;
135
+ }
136
+ catch (error) {
137
+ // TODO Check how other solutions with playwright get stories from storybook
138
+ if (retry)
139
+ throw error;
140
+ await new Promise((resolve) => setTimeout(resolve, 1000));
141
+ // NOTE: Try one more time because of dynamic nature of vite and storybook
142
+ return this.loadStoriesFromBrowser(true);
143
+ }
144
+ }
145
+ static async getBrowser(browserName, gridUrl, config, options) {
146
+ const browserConfig = config.browsers[browserName];
147
+ const { storybookUrl: address = config.storybookUrl, viewport, _storybookGlobals } = browserConfig;
148
+ let browser = null;
149
+ // TODO Support Selenium Grid 4
150
+ switch (browserConfig.browserName) {
151
+ case 'chromium':
152
+ browser = await tryConnect(playwright_core_1.chromium, gridUrl);
153
+ break;
154
+ case 'firefox':
155
+ browser = await tryConnect(playwright_core_1.firefox, gridUrl);
156
+ break;
157
+ case 'webkit':
158
+ browser = await tryConnect(playwright_core_1.webkit, gridUrl);
159
+ break;
160
+ default:
161
+ throw new Error(`Unknown browser ${browserConfig.browserName}. Playwright supports browsers: chromium, firefox, webkit`);
162
+ }
163
+ if (!browser) {
164
+ return null;
165
+ }
166
+ const page = await browser.newPage();
167
+ // TODO Add debug output
168
+ const internalBrowser = new InternalBrowser(browser, page, options.port);
169
+ try {
170
+ if (utils_1.isShuttingDown.current)
171
+ return null;
172
+ const done = await internalBrowser.init({
173
+ browserName,
174
+ viewport,
175
+ storybookUrl: address,
176
+ storybookGlobals: _storybookGlobals,
177
+ resolveStorybookUrl: config.resolveStorybookUrl,
178
+ });
179
+ return done ? internalBrowser : null;
180
+ }
181
+ catch (originalError) {
182
+ void internalBrowser.closeBrowser();
183
+ const message = originalError instanceof Error ? originalError.message : originalError;
184
+ const error = new Error(`Can't load storybook root page: ${message}`);
185
+ if (originalError instanceof Error)
186
+ error.stack = originalError.stack;
187
+ logger_1.logger.error(error);
188
+ return null;
189
+ }
190
+ }
191
+ async init({ browserName, viewport, storybookUrl, storybookGlobals, resolveStorybookUrl, }) {
192
+ const sessionId = this.#sessionId;
193
+ loglevel_plugin_prefix_1.default.apply(this.#logger, {
194
+ format(level) {
195
+ const levelColor = logger_1.colors[level.toUpperCase()];
196
+ return `[${browserName}:${chalk_1.default.gray(sessionId)}] ${levelColor(level)} =>`;
197
+ },
198
+ });
199
+ this.#page.setDefaultNavigationTimeout(10000);
200
+ this.#page.setDefaultTimeout(60000);
201
+ return await (0, utils_1.runSequence)([
202
+ () => this.openStorybookPage(storybookUrl, resolveStorybookUrl),
203
+ () => this.waitForStorybook(),
204
+ () => this.updateStorybookGlobals(storybookGlobals),
205
+ () => this.resolveCreeveyHost(),
206
+ () => this.updateBrowserGlobalVariables(),
207
+ () => this.resizeViewport(viewport),
208
+ ], () => !this.#isShuttingDown);
209
+ }
210
+ async openStorybookPage(storybookUrl, resolver) {
211
+ if (!webdriver_1.LOCALHOST_REGEXP.test(storybookUrl)) {
212
+ await this.#page.goto((0, webdriver_1.appendIframePath)(storybookUrl));
213
+ return;
214
+ }
215
+ try {
216
+ if (resolver) {
217
+ this.#logger.debug('Resolving storybook url with custom resolver');
218
+ const resolvedUrl = await resolver();
219
+ this.#logger.debug(`Resolver storybook url ${resolvedUrl}`);
220
+ await this.#page.goto((0, webdriver_1.appendIframePath)(resolvedUrl));
221
+ }
222
+ else {
223
+ await (0, webdriver_1.resolveStorybookUrl)((0, webdriver_1.appendIframePath)(storybookUrl), (url) => this.checkUrl(url), this.#logger);
224
+ }
225
+ }
226
+ catch (error) {
227
+ this.#logger.error('Failed to resolve storybook URL', error instanceof Error ? error.message : '');
228
+ throw error;
229
+ }
230
+ }
231
+ async checkUrl(url) {
232
+ try {
233
+ this.#logger.debug(`Opening ${chalk_1.default.magenta(url)} and checking the page source`);
234
+ const response = await this.#page.goto(url, { waitUntil: 'commit' });
235
+ const source = await response?.text();
236
+ this.#logger.debug(`Checking ${chalk_1.default.cyan(`#${webdriver_1.storybookRootID}`)} existence on ${chalk_1.default.magenta(url)}`);
237
+ return source?.includes(`id="${webdriver_1.storybookRootID}"`) ?? false;
238
+ }
239
+ catch {
240
+ return false;
241
+ }
242
+ }
243
+ async waitForStorybook() {
244
+ // TODO Duplicated code with selenium
245
+ this.#logger.debug('Waiting for `setStories` event to make sure that storybook is initiated');
246
+ const isTimeout = await Promise.race([
247
+ new Promise((resolve) => {
248
+ setTimeout(() => {
249
+ resolve(true);
250
+ }, 60000);
251
+ }),
252
+ (async () => {
253
+ let wait = true;
254
+ do {
255
+ try {
256
+ // TODO Research a different way to ensure storybook is initiated
257
+ wait = await this.#page.evaluate((SET_GLOBALS) => {
258
+ if (typeof window.__STORYBOOK_ADDONS_CHANNEL__ == 'undefined')
259
+ return true;
260
+ if (window.__STORYBOOK_ADDONS_CHANNEL__.last(SET_GLOBALS) == undefined)
261
+ return true;
262
+ return false;
263
+ }, core_events_1.SET_GLOBALS);
264
+ }
265
+ catch (e) {
266
+ this.#logger.debug('An error has been caught during the script:', e);
267
+ }
268
+ } while (wait);
269
+ return false;
270
+ })(),
271
+ ]);
272
+ // TODO Change the message to describe a reason why it might happen
273
+ if (isTimeout)
274
+ throw new Error('Failed to wait `setStories` event');
275
+ }
276
+ async updateStorybookGlobals(globals) {
277
+ if (!globals)
278
+ return;
279
+ this.#logger.debug('Applying storybook globals');
280
+ await this.#page.evaluate((globals) => {
281
+ window.__CREEVEY_UPDATE_GLOBALS__(globals);
282
+ }, globals);
283
+ }
284
+ async resolveCreeveyHost() {
285
+ const addresses = (0, webdriver_1.getAddresses)();
286
+ this.#serverHost = await this.#page.evaluate(([hosts, port]) => {
287
+ return Promise.all(hosts.map((host) => {
288
+ return Promise.race([
289
+ // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
290
+ fetch('http://' + host + ':' + port + '/ping').then((response) => response.text()),
291
+ new Promise((_resolve, reject) => {
292
+ setTimeout(reject, 5000);
293
+ }),
294
+ ])
295
+ .then((pong) => (pong == 'pong' ? host : null))
296
+ .catch(() => null);
297
+ })).then((hosts) => hosts.find((host) => host != null) ?? null);
298
+ }, [addresses, this.#serverPort]);
299
+ if (this.#serverHost == null)
300
+ throw new Error("Can't reach creevey server from a browser");
301
+ }
302
+ async updateBrowserGlobalVariables() {
303
+ await this.#page.evaluate(([workerId, creeveyHost, creeveyPort]) => {
304
+ window.__CREEVEY_WORKER_ID__ = workerId;
305
+ window.__CREEVEY_SERVER_HOST__ = creeveyHost ?? 'localhost';
306
+ window.__CREEVEY_SERVER_PORT__ = creeveyPort;
307
+ }, [process.pid, this.#serverHost, this.#serverPort]);
308
+ }
309
+ async resizeViewport(viewport) {
310
+ if (!viewport)
311
+ return;
312
+ await this.#page.setViewportSize(viewport);
313
+ }
314
+ async resetMousePosition() {
315
+ await this.#page.mouse.move(0, 0);
316
+ }
317
+ }
318
+ exports.InternalBrowser = InternalBrowser;
319
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/server/playwright/internal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Args } from '@storybook/csf';
2
+ import { Config, Options, StoriesRaw, StoryInput } from '../../types';
3
+ import { CreeveyWebdriverBase } from '../webdriver';
4
+ export declare class PlaywrightWebdriver extends CreeveyWebdriverBase {
5
+ #private;
6
+ constructor(browser: string, gridUrl: string, config: Config, options: Options);
7
+ get browser(): import("playwright-core").Page | undefined;
8
+ getSessionId(): Promise<string>;
9
+ openBrowser(fresh?: boolean): Promise<PlaywrightWebdriver | null>;
10
+ closeBrowser(): Promise<void>;
11
+ loadStoriesFromBrowser(): Promise<StoriesRaw>;
12
+ protected takeScreenshot(captureElement: string | null, ignoreElements?: string | string[] | null): Promise<Buffer>;
13
+ protected waitForComplete(callback: (isCompleted: boolean) => void): void;
14
+ protected selectStory(id: string, waitForReady?: boolean): Promise<boolean>;
15
+ protected updateStoryArgs(story: StoryInput, updatedArgs: Args): Promise<void>;
16
+ }
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlaywrightWebdriver = void 0;
4
+ const logger_1 = require("../logger");
5
+ const messages_1 = require("../messages");
6
+ const webdriver_1 = require("../webdriver");
7
+ class PlaywrightWebdriver extends webdriver_1.CreeveyWebdriverBase {
8
+ #browser = null;
9
+ #browserName;
10
+ #gridUrl;
11
+ #config;
12
+ #options;
13
+ constructor(browser, gridUrl, config, options) {
14
+ super();
15
+ this.#browserName = browser;
16
+ this.#gridUrl = gridUrl;
17
+ this.#config = config;
18
+ this.#options = options;
19
+ (0, messages_1.subscribeOn)('shutdown', () => {
20
+ void this.#browser?.closeBrowser().finally(() => process.exit());
21
+ this.#browser = null;
22
+ });
23
+ }
24
+ get browser() {
25
+ return this.#browser?.browser;
26
+ }
27
+ getSessionId() {
28
+ if (!this.#browser) {
29
+ // TODO Describe the error
30
+ throw new Error('Browser is not initialized');
31
+ }
32
+ return Promise.resolve(this.#browser.sessionId);
33
+ }
34
+ async openBrowser(fresh = false) {
35
+ if (this.#browser) {
36
+ if (fresh) {
37
+ await this.#browser.closeBrowser();
38
+ this.#browser = null;
39
+ }
40
+ else {
41
+ return this;
42
+ }
43
+ }
44
+ const internalModule = await (async () => {
45
+ try {
46
+ return await import('./internal.js');
47
+ }
48
+ catch (error) {
49
+ logger_1.logger.error(error);
50
+ return null;
51
+ }
52
+ })();
53
+ if (!internalModule)
54
+ return null;
55
+ const { InternalBrowser } = internalModule;
56
+ const browser = await InternalBrowser.getBrowser(this.#browserName, this.#gridUrl, this.#config, this.#options);
57
+ if (!browser)
58
+ return null;
59
+ this.#browser = browser;
60
+ return this;
61
+ }
62
+ async closeBrowser() {
63
+ if (this.#browser) {
64
+ await this.#browser.closeBrowser();
65
+ this.#browser = null;
66
+ }
67
+ }
68
+ async loadStoriesFromBrowser() {
69
+ if (!this.#browser) {
70
+ // TODO Describe the error
71
+ throw new Error('Browser is not initialized');
72
+ }
73
+ return this.#browser.loadStoriesFromBrowser();
74
+ }
75
+ async takeScreenshot(captureElement, ignoreElements) {
76
+ if (!this.#browser) {
77
+ // TODO Describe the error
78
+ throw new Error('Browser is not initialized');
79
+ }
80
+ return this.#browser.takeScreenshot(captureElement, ignoreElements);
81
+ }
82
+ waitForComplete(callback) {
83
+ if (!this.#browser) {
84
+ // TODO Describe the error
85
+ throw new Error('Browser is not initialized');
86
+ }
87
+ this.#browser.waitForComplete(callback);
88
+ }
89
+ async selectStory(id, waitForReady) {
90
+ if (!this.#browser) {
91
+ // TODO Describe the error
92
+ throw new Error('Browser is not initialized');
93
+ }
94
+ return this.#browser.selectStory(id, waitForReady);
95
+ }
96
+ async updateStoryArgs(story, updatedArgs) {
97
+ if (!this.#browser) {
98
+ // TODO Describe the error
99
+ throw new Error('Browser is not initialized');
100
+ }
101
+ return this.#browser.updateStoryArgs(story, updatedArgs);
102
+ }
103
+ }
104
+ exports.PlaywrightWebdriver = PlaywrightWebdriver;
105
+ //# sourceMappingURL=webdriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../../src/server/playwright/webdriver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { StoriesProvider } from '../../types.js';
2
+ export declare const loadStories: StoriesProvider;
@@ -5,12 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.loadStories = void 0;
7
7
  const cluster_1 = __importDefault(require("cluster"));
8
- const index_js_1 = require("../../selenium/index.js");
9
- const messages_js_1 = require("../../messages.js");
10
- const types_js_1 = require("../../../types.js");
11
- const logger_js_1 = require("../../logger.js");
12
- const index_js_2 = require("../../../shared/index.js");
13
- const loadStories = async (_config, _options, storiesListener) => {
8
+ const messages_js_1 = require("../messages.js");
9
+ const types_js_1 = require("../../types.js");
10
+ const logger_js_1 = require("../logger.js");
11
+ const index_js_1 = require("../../shared/index.js");
12
+ const loadStories = async (_config, storiesListener, webdriver) => {
14
13
  if (cluster_1.default.isPrimary) {
15
14
  return new Promise((resolve) => {
16
15
  const worker = Object.values(cluster_1.default.workers ?? {})
@@ -44,7 +43,7 @@ const loadStories = async (_config, _options, storiesListener) => {
44
43
  if (message.type == 'update')
45
44
  storiesListener(new Map(message.payload));
46
45
  });
47
- const stories = (0, index_js_2.deserializeRawStories)(await (0, index_js_1.loadStoriesFromBrowser)());
46
+ const stories = (0, index_js_1.deserializeRawStories)((await webdriver?.loadStoriesFromBrowser()) ?? {});
48
47
  const storiesWithOldTests = [];
49
48
  Object.values(stories).forEach((story) => {
50
49
  if (story.parameters?.creevey?.tests) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/server/providers/browser.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAE9B,gDAAwG;AACxG,6CAA2C;AAC3C,4CAAsC;AACtC,oDAA8D;AAEvD,MAAM,WAAW,GAAoB,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE;IACxF,IAAI,iBAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,EAAE;YACzC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAO,CAAC,OAAO,IAAI,EAAE,CAAC;iBAChD,MAAM,CAAC,oBAAS,CAAC;iBACjB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAE1C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,WAAW,GAAG,IAAA,+BAAiB,EAAC,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;oBACnE,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;wBAC1B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;wBAC9C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;4BACrB,kBAAM,CAAC,IAAI,CACT,kEAAkE;gCAChE,mFAAmF;gCACnF,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACtB,CAAC;wBACJ,WAAW,EAAE,CAAC;wBACd,OAAO,CAAC,OAAO,CAAC,CAAC;oBACnB,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,IAAA,gCAAkB,EAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,IAAA,yBAAW,EAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACjC,mCAAmC;gBACnC,IAAI,OAAO,CAAC,IAAI,IAAI,QAAQ;oBAAE,eAAe,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,IAAA,yBAAW,EAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACjC,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK;gBACvB,IAAA,gCAAkB,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAC3F,IAAI,OAAO,CAAC,IAAI,IAAI,QAAQ;gBAAE,eAAe,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,gCAAqB,EAAC,CAAC,MAAM,SAAS,EAAE,sBAAsB,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzF,MAAM,mBAAmB,GAAa,EAAE,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,IAAK,KAAsB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBACvD,OAAQ,KAAsB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC;gBAC1D,mBAAmB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC,CAAC;AA/CW,QAAA,WAAW,eA+CtB;AAEF,mBAAW,CAAC,YAAY,GAAG,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { StoriesProvider } from '../../types.js';
2
+ export declare const loadStories: StoriesProvider;
@@ -6,18 +6,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.loadStories = void 0;
7
7
  const chokidar_1 = __importDefault(require("chokidar"));
8
8
  const browser_js_1 = require("./browser.js");
9
- const logger_js_1 = require("../../logger.js");
10
- const parser_js_1 = __importDefault(require("../../testsFiles/parser.js"));
11
- const utils_js_1 = require("../../utils.js");
12
- const index_js_1 = require("../../../shared/index.js");
13
- const loadStories = async (_config, _options, storiesListener) => {
9
+ const logger_js_1 = require("../logger.js");
10
+ const parser_js_1 = __importDefault(require("../testsFiles/parser.js"));
11
+ const utils_js_1 = require("../utils.js");
12
+ const index_js_1 = require("../../shared/index.js");
13
+ const loadStories = async (config, storiesListener, webdriver) => {
14
14
  let creeveyParamsByStoryId = {};
15
15
  const mergeParamsFromTestsToStory = (story, creeveyParams) => {
16
16
  if (story.parameters) {
17
17
  story.parameters.creevey = (0, index_js_1.combineParameters)(story.parameters.creevey ?? {}, creeveyParams);
18
18
  }
19
19
  };
20
- const stories = await (0, browser_js_1.loadStories)(_config, {}, (updatedStoriesByFiles) => {
20
+ const stories = await (0, browser_js_1.loadStories)(config, (updatedStoriesByFiles) => {
21
21
  Array.from(updatedStoriesByFiles.entries()).forEach(([, storiesArray]) => {
22
22
  storiesArray.forEach((story) => {
23
23
  const creeveyParams = creeveyParamsByStoryId[story.id];
@@ -26,9 +26,9 @@ const loadStories = async (_config, _options, storiesListener) => {
26
26
  });
27
27
  });
28
28
  storiesListener(updatedStoriesByFiles);
29
- });
29
+ }, webdriver);
30
30
  // TODO fix test files hot reloading
31
- creeveyParamsByStoryId = await parseParams(_config /*, (data) => console.log(data) */);
31
+ creeveyParamsByStoryId = await parseParams(config /*, (data) => console.log(data) */);
32
32
  Object.entries(stories).forEach(([storyId, story]) => {
33
33
  const creeveyParams = creeveyParamsByStoryId[storyId];
34
34
  if (creeveyParams)
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hybrid.js","sourceRoot":"","sources":["../../../src/server/providers/hybrid.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAEhC,6CAA8D;AAE9D,4CAAsC;AACtC,wEAAwE;AACxE,0CAA+C;AAC/C,oDAA0D;AAEnD,MAAM,WAAW,GAAoB,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE;IACvF,IAAI,sBAAsB,GAAoC,EAAE,CAAC;IAEjE,MAAM,2BAA2B,GAAG,CAAC,KAAmB,EAAE,aAAiC,EAAQ,EAAE;QACnG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,IAAA,4BAAiB,EAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAe,EACnC,MAAM,EACN,CAAC,qBAAqB,EAAE,EAAE;QACxB,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,EAAE;YACvE,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC7B,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACvD,IAAI,aAAa;oBAAE,2BAA2B,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,eAAe,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC,EACD,SAAS,CACV,CAAC;IAEF,oCAAoC;IACpC,sBAAsB,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;IAEtF,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE;QACnD,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,aAAa;YAAE,2BAA2B,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAhCW,QAAA,WAAW,eAgCtB;AAEF,oCAAoC;AACpC,KAAK,UAAU,WAAW,CACxB,MAAc,EACd,QAAiD;IAEjD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,2BAAgB,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpG,IAAI,QAAQ,EAAE,CAAC;QACb,kBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;YAClD,kBAAM,CAAC,KAAK,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;YAErC,sDAAsD;YACtD,mDAAmD;YACnD,KAAK,IAAA,mBAAK,EAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAA,mBAAK,EAAC,SAAS,CAAC,CAAC;AAC1B,CAAC;AAED,mBAAW,CAAC,YAAY,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { Images } from '../types.js';
2
+ import EventEmitter from 'events';
3
+ interface ReporterOptions {
4
+ reportDir: string;
5
+ sessionId: string;
6
+ browserName: string;
7
+ willRetry: boolean;
8
+ images: Partial<Record<string, Partial<Images>>>;
9
+ }
10
+ export declare class CreeveyReporter {
11
+ constructor(runner: EventEmitter, options: {
12
+ reporterOptions: {
13
+ creevey: ReporterOptions;
14
+ };
15
+ });
16
+ private getErrors;
17
+ }
18
+ export declare class TeamcityReporter {
19
+ constructor(runner: EventEmitter, options: {
20
+ reporterOptions: {
21
+ creevey: ReporterOptions;
22
+ };
23
+ });
24
+ private escape;
25
+ }
26
+ export {};