creevey 0.10.0-beta.43 → 0.10.0-beta.45

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 (137) hide show
  1. package/CHANGELOG.md +282 -0
  2. package/dist/client/addon/controller.js +1 -1
  3. package/dist/client/addon/controller.js.map +1 -1
  4. package/dist/client/addon/withCreevey.js +1 -18
  5. package/dist/client/addon/withCreevey.js.map +1 -1
  6. package/dist/client/shared/components/PageHeader/PageHeader.js +13 -4
  7. package/dist/client/shared/components/PageHeader/PageHeader.js.map +1 -1
  8. package/dist/client/shared/creeveyClientApi.js +10 -0
  9. package/dist/client/shared/creeveyClientApi.js.map +1 -1
  10. package/dist/client/web/CreeveyApp.d.ts +1 -0
  11. package/dist/client/web/CreeveyApp.js +1 -0
  12. package/dist/client/web/CreeveyApp.js.map +1 -1
  13. package/dist/client/web/CreeveyContext.d.ts +1 -0
  14. package/dist/client/web/CreeveyContext.js +1 -0
  15. package/dist/client/web/CreeveyContext.js.map +1 -1
  16. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js +9 -8
  17. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js.map +1 -1
  18. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js +13 -3
  19. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js.map +1 -1
  20. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js +2 -3
  21. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js.map +1 -1
  22. package/dist/client/web/CreeveyView/SideBar/TestLink.js +2 -3
  23. package/dist/client/web/CreeveyView/SideBar/TestLink.js.map +1 -1
  24. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js +1 -0
  25. package/dist/client/web/CreeveyView/SideBar/TestsStatus.js.map +1 -1
  26. package/dist/client/web/assets/{index-C47njyZV.js → index-BU4jjKVC.js} +68 -68
  27. package/dist/client/web/index.html +1 -1
  28. package/dist/client/web/index.js +8 -3
  29. package/dist/client/web/index.js.map +1 -1
  30. package/dist/creevey.d.ts +1 -1
  31. package/dist/creevey.js +1 -22
  32. package/dist/creevey.js.map +1 -1
  33. package/dist/playwright-reporter.d.ts +2 -0
  34. package/dist/playwright-reporter.js +5 -0
  35. package/dist/playwright-reporter.js.map +1 -0
  36. package/dist/playwright.d.ts +1 -1
  37. package/dist/server/config.js +8 -1
  38. package/dist/server/config.js.map +1 -1
  39. package/dist/server/index.js +12 -5
  40. package/dist/server/index.js.map +1 -1
  41. package/dist/server/master/api.d.ts +11 -6
  42. package/dist/server/master/api.js +88 -25
  43. package/dist/server/master/api.js.map +1 -1
  44. package/dist/server/master/handlers/capture-handler.d.ts +5 -0
  45. package/dist/server/master/handlers/capture-handler.js +25 -0
  46. package/dist/server/master/handlers/capture-handler.js.map +1 -0
  47. package/dist/server/master/handlers/index.d.ts +4 -0
  48. package/dist/server/master/handlers/index.js +21 -0
  49. package/dist/server/master/handlers/index.js.map +1 -0
  50. package/dist/server/master/handlers/ping-handler.d.ts +2 -0
  51. package/dist/server/master/handlers/ping-handler.js +8 -0
  52. package/dist/server/master/handlers/ping-handler.js.map +1 -0
  53. package/dist/server/master/handlers/static-handler.d.ts +1 -0
  54. package/dist/server/master/handlers/static-handler.js +22 -0
  55. package/dist/server/master/handlers/static-handler.js.map +1 -0
  56. package/dist/server/master/handlers/stories-handler.d.ts +4 -0
  57. package/dist/server/master/handlers/stories-handler.js +24 -0
  58. package/dist/server/master/handlers/stories-handler.js.map +1 -0
  59. package/dist/server/master/master.js +7 -24
  60. package/dist/server/master/master.js.map +1 -1
  61. package/dist/server/master/runner.d.ts +4 -6
  62. package/dist/server/master/runner.js +30 -127
  63. package/dist/server/master/runner.js.map +1 -1
  64. package/dist/server/master/server.js +191 -89
  65. package/dist/server/master/server.js.map +1 -1
  66. package/dist/server/master/start.d.ts +1 -2
  67. package/dist/server/master/start.js +11 -29
  68. package/dist/server/master/start.js.map +1 -1
  69. package/dist/server/master/testsManager.d.ts +81 -0
  70. package/dist/server/master/testsManager.js +281 -0
  71. package/dist/server/master/testsManager.js.map +1 -0
  72. package/dist/server/playwright/docker-file.js +2 -2
  73. package/dist/server/playwright/docker-file.js.map +1 -1
  74. package/dist/server/playwright/reporter.d.ts +87 -0
  75. package/dist/server/playwright/reporter.js +351 -0
  76. package/dist/server/playwright/reporter.js.map +1 -0
  77. package/dist/server/selenium/internal.js +20 -2
  78. package/dist/server/selenium/internal.js.map +1 -1
  79. package/dist/server/selenium/selenoid.js +4 -0
  80. package/dist/server/selenium/selenoid.js.map +1 -1
  81. package/dist/server/shutdown.d.ts +1 -0
  82. package/dist/server/shutdown.js +23 -0
  83. package/dist/server/shutdown.js.map +1 -0
  84. package/dist/server/stories.d.ts +0 -1
  85. package/dist/server/stories.js +0 -12
  86. package/dist/server/stories.js.map +1 -1
  87. package/dist/server/ui-update.d.ts +10 -0
  88. package/dist/server/ui-update.js +39 -0
  89. package/dist/server/ui-update.js.map +1 -0
  90. package/dist/server/utils.d.ts +6 -0
  91. package/dist/server/utils.js +39 -8
  92. package/dist/server/utils.js.map +1 -1
  93. package/dist/server/worker/start.js +1 -1
  94. package/dist/server/worker/start.js.map +1 -1
  95. package/dist/types.d.ts +14 -8
  96. package/dist/types.js.map +1 -1
  97. package/docs/examples/playwright-reporter-example.ts +202 -0
  98. package/docs/migration-0.9-to-0.10.md +144 -0
  99. package/docs/playwright-reporter.md +357 -0
  100. package/package.json +10 -14
  101. package/src/client/addon/controller.ts +1 -1
  102. package/src/client/addon/withCreevey.ts +2 -16
  103. package/src/client/shared/components/PageHeader/PageHeader.tsx +18 -4
  104. package/src/client/shared/creeveyClientApi.ts +10 -0
  105. package/src/client/web/CreeveyApp.tsx +2 -0
  106. package/src/client/web/CreeveyContext.tsx +2 -0
  107. package/src/client/web/CreeveyView/SideBar/SideBarFooter.tsx +19 -17
  108. package/src/client/web/CreeveyView/SideBar/SideBarHeader.tsx +18 -3
  109. package/src/client/web/CreeveyView/SideBar/SuiteLink.tsx +9 -7
  110. package/src/client/web/CreeveyView/SideBar/TestLink.tsx +8 -6
  111. package/src/client/web/CreeveyView/SideBar/TestsStatus.tsx +1 -0
  112. package/src/client/web/index.tsx +8 -3
  113. package/src/creevey.ts +1 -24
  114. package/src/playwright-reporter.ts +3 -0
  115. package/src/server/config.ts +9 -1
  116. package/src/server/index.ts +13 -6
  117. package/src/server/master/api.ts +94 -28
  118. package/src/server/master/handlers/capture-handler.ts +20 -0
  119. package/src/server/master/handlers/index.ts +4 -0
  120. package/src/server/master/handlers/ping-handler.ts +6 -0
  121. package/src/server/master/handlers/static-handler.ts +18 -0
  122. package/src/server/master/handlers/stories-handler.ts +20 -0
  123. package/src/server/master/master.ts +10 -27
  124. package/src/server/master/runner.ts +38 -132
  125. package/src/server/master/server.ts +210 -98
  126. package/src/server/master/start.ts +17 -41
  127. package/src/server/master/testsManager.ts +315 -0
  128. package/src/server/playwright/docker-file.ts +2 -2
  129. package/src/server/playwright/reporter.ts +386 -0
  130. package/src/server/selenium/internal.ts +23 -3
  131. package/src/server/selenium/selenoid.ts +5 -0
  132. package/src/server/shutdown.ts +19 -0
  133. package/src/server/stories.ts +1 -12
  134. package/src/server/ui-update.ts +46 -0
  135. package/src/server/utils.ts +40 -9
  136. package/src/server/worker/start.ts +1 -1
  137. package/src/types.ts +14 -8
@@ -4,112 +4,214 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.start = start;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const url_1 = __importDefault(require("url"));
7
9
  const path_1 = __importDefault(require("path"));
8
- const http_1 = __importDefault(require("http"));
9
- const cluster_1 = __importDefault(require("cluster"));
10
- const koa_1 = __importDefault(require("koa"));
11
- const cors_1 = __importDefault(require("@koa/cors"));
12
- const koa_static_1 = __importDefault(require("koa-static"));
13
- const koa_mount_1 = __importDefault(require("koa-mount"));
14
- const koa_bodyparser_1 = __importDefault(require("koa-bodyparser"));
15
- const ws_1 = __importDefault(require("ws"));
16
- const url_1 = require("url");
10
+ const http_1 = require("http");
11
+ const ws_1 = require("ws");
12
+ const url_2 = require("url");
13
+ const utils_js_1 = require("../utils.js");
17
14
  const messages_js_1 = require("../messages.js");
18
15
  const types_js_1 = require("../../types.js");
19
16
  const logger_js_1 = require("../logger.js");
20
- const index_js_1 = require("../../shared/index.js");
21
- const importMetaUrl = (0, url_1.pathToFileURL)(__filename).href;
17
+ const index_js_1 = require("./handlers/index.js");
18
+ function json(handler, defaultValue) {
19
+ return (request, response) => {
20
+ const chunks = [];
21
+ request.on('data', (chunk) => {
22
+ chunks.push(chunk);
23
+ });
24
+ request.on('end', () => {
25
+ try {
26
+ const body = Buffer.concat(chunks);
27
+ const value = body.length === 0 ? defaultValue : JSON.parse(body.toString('utf-8'));
28
+ handler(value);
29
+ response.end();
30
+ }
31
+ catch (error) {
32
+ (0, logger_js_1.logger)().error('Failed to parse JSON', error);
33
+ const errorMessage = error instanceof Error ? error.message : String(error);
34
+ response.statusCode = 500;
35
+ response.setHeader('Content-Type', 'text/plain');
36
+ response.end(`Failed to parse JSON: ${errorMessage}`);
37
+ }
38
+ });
39
+ request.on('error', (error) => {
40
+ (0, logger_js_1.logger)().error('Failed to parse JSON', error);
41
+ const errorMessage = error instanceof Error ? error.message : String(error);
42
+ response.statusCode = 500;
43
+ response.setHeader('Content-Type', 'text/plain');
44
+ response.end(`Failed to parse JSON: ${errorMessage}`);
45
+ });
46
+ };
47
+ }
48
+ function file(handler) {
49
+ return (request, response) => {
50
+ const parsedUrl = url_1.default.parse(request.url ?? '/', true);
51
+ const requestedPath = parsedUrl.pathname ?? '/';
52
+ try {
53
+ const filePath = handler(requestedPath);
54
+ if (filePath) {
55
+ const stat = fs_1.default.statSync(filePath);
56
+ // Set appropriate MIME type
57
+ const ext = path_1.default.extname(filePath).toLowerCase();
58
+ const mimeTypes = {
59
+ '.html': 'text/html',
60
+ '.js': 'application/javascript',
61
+ '.css': 'text/css',
62
+ '.json': 'application/json',
63
+ '.png': 'image/png',
64
+ '.jpg': 'image/jpeg',
65
+ '.jpeg': 'image/jpeg',
66
+ '.gif': 'image/gif',
67
+ '.svg': 'image/svg+xml',
68
+ '.ico': 'image/x-icon',
69
+ };
70
+ const contentType = mimeTypes[ext] || 'application/octet-stream';
71
+ response.statusCode = 200;
72
+ response.setHeader('Content-Type', contentType);
73
+ response.setHeader('Content-Length', stat.size);
74
+ // Stream the file
75
+ const stream = fs_1.default.createReadStream(filePath);
76
+ stream.pipe(response);
77
+ stream.on('error', (error) => {
78
+ (0, logger_js_1.logger)().error('Error streaming file', error);
79
+ if (!response.headersSent) {
80
+ const errorMessage = error instanceof Error ? error.message : String(error);
81
+ response.statusCode = 500;
82
+ response.setHeader('Content-Type', 'text/plain');
83
+ response.end(`Internal server error: ${errorMessage}`);
84
+ }
85
+ });
86
+ }
87
+ else {
88
+ (0, logger_js_1.logger)().error('File not found', requestedPath);
89
+ response.statusCode = 404;
90
+ response.setHeader('Content-Type', 'text/plain');
91
+ response.end('File not found');
92
+ }
93
+ }
94
+ catch (error) {
95
+ (0, logger_js_1.logger)().error('Failed to serve file', error);
96
+ const errorMessage = error instanceof Error ? error.message : String(error);
97
+ response.statusCode = 500;
98
+ response.setHeader('Content-Type', 'text/plain');
99
+ response.end(`Failed to serve file: ${errorMessage}`);
100
+ }
101
+ };
102
+ }
103
+ const importMetaUrl = (0, url_2.pathToFileURL)(__filename).href;
22
104
  function start(reportDir, port, ui) {
105
+ let wss = null;
106
+ let creeveyApi = null;
23
107
  let resolveApi = types_js_1.noop;
24
- let setStoriesCounter = 0;
25
- const creeveyApi = new Promise((resolve) => (resolveApi = resolve));
26
- const app = new koa_1.default();
27
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
28
- const server = http_1.default.createServer(app.callback());
29
- const wss = new ws_1.default.Server({ server });
30
- app.use((0, cors_1.default)());
31
- app.use((0, koa_bodyparser_1.default)());
32
- app.use(async (ctx, next) => {
33
- if (ctx.method == 'GET' && ctx.path == '/ping') {
34
- ctx.body = 'pong';
108
+ const webDir = path_1.default.join(path_1.default.dirname((0, url_2.fileURLToPath)(importMetaUrl)), '../../client/web');
109
+ const server = (0, http_1.createServer)();
110
+ const routes = [
111
+ {
112
+ path: '/ping',
113
+ method: 'GET',
114
+ handler: index_js_1.pingHandler,
115
+ },
116
+ {
117
+ path: '/stories',
118
+ method: 'POST',
119
+ handler: json(index_js_1.storiesHandler, { stories: [] }),
120
+ },
121
+ {
122
+ path: '/capture',
123
+ method: 'POST',
124
+ handler: json(index_js_1.captureHandler, { workerId: 0, options: undefined }),
125
+ },
126
+ {
127
+ path: '/report/',
128
+ method: 'GET',
129
+ handler: file((0, index_js_1.staticHandler)(reportDir, '/report/')),
130
+ },
131
+ {
132
+ path: '/',
133
+ method: 'GET',
134
+ handler: file((0, index_js_1.staticHandler)(webDir)),
135
+ },
136
+ ];
137
+ const router = (request, response) => {
138
+ const parsedUrl = url_1.default.parse(request.url ?? '/', true);
139
+ const path = parsedUrl.pathname ?? '/';
140
+ const method = request.method ?? 'GET';
141
+ try {
142
+ const route = routes.find((route) => path.startsWith(route.path) && route.method === method);
143
+ if (route) {
144
+ route.handler(request, response);
145
+ }
146
+ else {
147
+ response.statusCode = 404;
148
+ response.setHeader('Content-Type', 'text/plain');
149
+ response.end('Not Found');
150
+ }
151
+ }
152
+ catch (error) {
153
+ (0, logger_js_1.logger)().error('Request handling error', error);
154
+ response.statusCode = 500;
155
+ response.setHeader('Content-Type', 'text/plain');
156
+ response.end('Internal Server Error');
157
+ }
158
+ };
159
+ server.on('request', (request, response) => {
160
+ response.setHeader('Access-Control-Allow-Origin', '*');
161
+ response.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
162
+ response.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
163
+ if (request.method === 'OPTIONS') {
164
+ response.statusCode = 200;
165
+ response.end();
35
166
  return;
36
167
  }
37
- await next();
168
+ router(request, response);
38
169
  });
39
170
  if (ui) {
40
- app.use(async (_, next) => {
41
- await creeveyApi;
42
- await next();
171
+ wss = new ws_1.WebSocketServer({ server });
172
+ wss.on('connection', (ws) => {
173
+ ws.on('message', (message, isBinary) => {
174
+ if (creeveyApi) {
175
+ // NOTE Text messages are passed as Buffer https://github.com/websockets/ws/releases/tag/8.0.0
176
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
177
+ creeveyApi.handleMessage(ws, isBinary ? message : message.toString('utf-8'));
178
+ return;
179
+ }
180
+ });
181
+ ws.on('error', (error) => {
182
+ (0, logger_js_1.logger)().error('WebSocket error', error);
183
+ });
184
+ });
185
+ wss.on('error', (error) => {
186
+ (0, logger_js_1.logger)().error('WebSocket error', error);
43
187
  });
44
188
  }
45
- app.use(async (ctx, next) => {
46
- if (ctx.method == 'POST' && ctx.path == '/stories') {
47
- const { setStoriesCounter: counter, stories } = ctx.request.body;
48
- if (setStoriesCounter >= counter)
49
- return;
50
- const deserializedStories = stories.map(([file, stories]) => [
51
- file,
52
- stories.map(index_js_1.deserializeStory),
53
- ]);
54
- setStoriesCounter = counter;
55
- (0, messages_js_1.emitStoriesMessage)({ type: 'update', payload: deserializedStories });
56
- Object.values(cluster_1.default.workers ?? {})
57
- .filter(types_js_1.isDefined)
58
- .filter((worker) => worker.isConnected())
59
- .forEach((worker) => {
60
- (0, messages_js_1.sendStoriesMessage)(worker, { type: 'update', payload: deserializedStories });
61
- });
62
- return;
63
- }
64
- await next();
65
- });
66
- app.use(async (ctx, next) => {
67
- if (ctx.method == 'POST' && ctx.path == '/capture') {
68
- const { workerId, options } = ctx.request.body;
69
- const worker = Object.values(cluster_1.default.workers ?? {})
70
- .filter(types_js_1.isDefined)
71
- .find((worker) => worker.process.pid == workerId);
72
- // NOTE: Hypothetical case when someone send to us capture req and we don't have a worker with browser session for it
73
- if (!worker)
74
- return;
75
- await new Promise((resolve) => {
76
- const unsubscribe = (0, messages_js_1.subscribeOnWorker)(worker, 'stories', (message) => {
77
- if (message.type != 'capture')
78
- return;
79
- unsubscribe();
80
- resolve();
81
- });
82
- (0, messages_js_1.sendStoriesMessage)(worker, { type: 'capture', payload: options });
189
+ (0, messages_js_1.subscribeOn)('shutdown', () => {
190
+ if (wss) {
191
+ wss.clients.forEach((ws) => {
192
+ ws.close();
83
193
  });
84
- // TODO Pass screenshot result to show it in inspector
85
- ctx.body = 'Ok';
86
- return;
194
+ wss.close();
87
195
  }
88
- await next();
89
- });
90
- app.use((0, koa_static_1.default)(path_1.default.join(path_1.default.dirname((0, url_1.fileURLToPath)(importMetaUrl)), '../../client/web')));
91
- app.use((0, koa_mount_1.default)('/report', (0, koa_static_1.default)(reportDir)));
92
- wss.on('error', (error) => {
93
- (0, logger_js_1.logger)().error(error);
94
- });
95
- server.listen(port);
96
- (0, messages_js_1.subscribeOn)('shutdown', () => {
97
196
  server.close();
98
- wss.close();
99
- wss.clients.forEach((ws) => {
100
- ws.close();
101
- });
102
197
  });
103
- void creeveyApi.then((api) => {
104
- api.subscribe(wss);
105
- wss.on('connection', (ws) => {
106
- ws.on('message', (message, isBinary) => {
107
- // NOTE Text messages are passed as Buffer https://github.com/websockets/ws/releases/tag/8.0.0
108
- // eslint-disable-next-line @typescript-eslint/no-base-to-string
109
- api.handleMessage(ws, isBinary ? message : message.toString('utf-8'));
110
- });
111
- });
198
+ server
199
+ .listen(port, () => {
200
+ (0, logger_js_1.logger)().info(`Server starting on port ${port}`);
201
+ })
202
+ .on('error', (error) => {
203
+ (0, logger_js_1.logger)().error('Failed to start server', error);
204
+ process.exit(1);
112
205
  });
206
+ void new Promise((resolve) => (resolveApi = resolve))
207
+ .then((api) => {
208
+ creeveyApi = api;
209
+ if (wss) {
210
+ creeveyApi.subscribe(wss);
211
+ }
212
+ })
213
+ .catch(utils_js_1.shutdownOnException);
214
+ // Return the function to resolve the API
113
215
  return resolveApi;
114
216
  }
115
217
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/server/master/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/server/master/server.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
- import { CreeveyApi } from './api.js';
2
1
  import { Config, Options } from '../../types.js';
3
- export declare function start(gridUrl: string | undefined, config: Config, options: Options, resolveApi: (api: CreeveyApi) => void): Promise<void>;
2
+ export declare function start(gridUrl: string | undefined, config: Config, options: Options): Promise<void>;
@@ -6,38 +6,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.start = start;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const fs_1 = require("fs");
9
- const url_1 = require("url");
10
- const promises_1 = require("fs/promises");
11
9
  const master_js_1 = __importDefault(require("./master.js"));
12
- const api_js_1 = __importDefault(require("./api.js"));
10
+ const api_js_1 = require("./api.js");
13
11
  const types_js_1 = require("../../types.js");
14
12
  const utils_js_1 = require("../utils.js");
15
13
  const messages_js_1 = require("../messages.js");
16
14
  const logger_js_1 = require("../logger.js");
17
15
  const telemetry_js_1 = require("../telemetry.js");
18
- const importMetaUrl = (0, url_1.pathToFileURL)(__filename).href;
19
- async function copyStatics(reportDir) {
20
- const clientDir = path_1.default.join(path_1.default.dirname((0, url_1.fileURLToPath)(importMetaUrl)), '../../../dist/client/web');
21
- const assets = (await (0, promises_1.readdir)(path_1.default.join(clientDir, 'assets'), { withFileTypes: true }))
22
- .filter((dirent) => dirent.isFile())
23
- .map((dirent) => dirent.name);
24
- await (0, promises_1.mkdir)(path_1.default.join(reportDir, 'assets'), { recursive: true });
25
- await (0, promises_1.copyFile)(path_1.default.join(clientDir, 'index.html'), path_1.default.join(reportDir, 'index.html'));
26
- for (const asset of assets) {
27
- await (0, promises_1.copyFile)(path_1.default.join(clientDir, 'assets', asset), path_1.default.join(reportDir, 'assets', asset));
28
- }
29
- }
30
- function reportDataModule(data) {
31
- return `
32
- (function (root, factory) {
33
- if (typeof module === 'object' && module.exports) {
34
- module.exports = factory();
35
- } else {
36
- root.__CREEVEY_DATA__ = factory();
37
- }
38
- }(this, function () { return ${JSON.stringify(data)} }));
39
- `;
40
- }
16
+ const server_js_1 = require("./server.js");
41
17
  function outputUnnecessaryImages(imagesDir, images) {
42
18
  if (!(0, fs_1.existsSync)(imagesDir))
43
19
  return;
@@ -48,7 +24,8 @@ function outputUnnecessaryImages(imagesDir, images) {
48
24
  (0, logger_js_1.logger)().warn('We found unnecessary screenshot images, those can be safely removed:\n', unnecessaryImages.join('\n'));
49
25
  }
50
26
  }
51
- async function start(gridUrl, config, options, resolveApi) {
27
+ async function start(gridUrl, config, options) {
28
+ const resolveApi = (0, server_js_1.start)(config.reportDir, options.port, options.ui);
52
29
  let runner = null;
53
30
  if (config.hooks.before) {
54
31
  await config.hooks.before();
@@ -70,10 +47,15 @@ async function start(gridUrl, config, options, resolveApi) {
70
47
  });
71
48
  runner = await (0, master_js_1.default)(config, gridUrl);
72
49
  runner.on('stop', () => {
73
- void copyStatics(config.reportDir).then(() => (0, promises_1.writeFile)(path_1.default.join(config.reportDir, 'data.js'), reportDataModule(runner.status.tests)));
50
+ void (0, utils_js_1.copyStatics)(config.reportDir).then(() => runner.testsManager.saveTestData());
74
51
  });
75
52
  if (options.ui) {
76
- resolveApi((0, api_js_1.default)(runner));
53
+ // Initialize TestsManager
54
+ const testsManager = runner.testsManager;
55
+ // Create the CreeveyApi instance using the existing runner
56
+ const api = new api_js_1.CreeveyApi(testsManager, runner);
57
+ // Resolve the API for the server
58
+ resolveApi(api);
77
59
  (0, logger_js_1.logger)().info(`Started on http://localhost:${options.port}`);
78
60
  }
79
61
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/server/master/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/server/master/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import EventEmitter from 'events';
2
+ import { ServerTest, TestResult, TestStatus, CreeveyUpdate, ApprovePayload, CreeveyStatus } from '../../types.js';
3
+ /**
4
+ * TestsManager is responsible for all operations related to test data management
5
+ * including loading, saving, merging, and updating test data.
6
+ * It extends EventEmitter to emit update events that can be subscribed to.
7
+ */
8
+ export declare class TestsManager extends EventEmitter {
9
+ private tests;
10
+ private screenDir;
11
+ private reportDir;
12
+ /**
13
+ * Creates a new TestsManager instance
14
+ * @param screenDir Directory for storing reference images
15
+ * @param reportDir Directory for storing reports and screenshots
16
+ */
17
+ constructor(screenDir: string, reportDir: string);
18
+ /**
19
+ * Get a copy of all tests
20
+ * @returns all tests
21
+ */
22
+ getTests(): Partial<Record<string, ServerTest>>;
23
+ /**
24
+ * Get a test by ID
25
+ * @param id Test ID
26
+ * @returns Test data
27
+ */
28
+ getTest(id: string): ServerTest | undefined;
29
+ /**
30
+ * Get test data in a format suitable for status reporting
31
+ * @returns Test data in the format needed for status
32
+ */
33
+ getTestsData(): CreeveyStatus['tests'];
34
+ /**
35
+ * Load tests from a report file
36
+ */
37
+ loadTestsFromReport(): Partial<Record<string, ServerTest>>;
38
+ /**
39
+ * Merge tests from report with tests from stories
40
+ */
41
+ private mergeTests;
42
+ loadAndMergeTests(testsFromStories: Partial<Record<string, ServerTest>>): Partial<Record<string, ServerTest>>;
43
+ /**
44
+ * Update tests with incremental changes
45
+ * @param testsDiff Tests to update or remove
46
+ */
47
+ updateTests(testsDiff: Partial<Record<string, ServerTest>>): CreeveyUpdate | null;
48
+ /**
49
+ * Update test result
50
+ * @param id Test ID
51
+ * @param status New test status
52
+ * @param result Optional test result
53
+ */
54
+ updateTestStatus(id: string, status: TestStatus, result?: TestResult): CreeveyUpdate | null;
55
+ /**
56
+ * Save tests to JSON file
57
+ * @param reportDir Directory to save the JSON file
58
+ */
59
+ saveTestsToJson(): void;
60
+ /**
61
+ * Save test data to a module
62
+ * @param data Test data to include in the module
63
+ */
64
+ saveTestData(data?: CreeveyStatus['tests']): Promise<void>;
65
+ /**
66
+ * Copy image for approval
67
+ * @param test Test data
68
+ * @param image Image name
69
+ * @param actual Actual image path
70
+ */
71
+ private copyImage;
72
+ /**
73
+ * Approve a specific test
74
+ * @param payload Approval payload with test ID, retry index, and image name
75
+ */
76
+ approve({ id, retry, image }: ApprovePayload): Promise<CreeveyUpdate | null>;
77
+ /**
78
+ * Approve all failed tests
79
+ */
80
+ approveAll(): Promise<CreeveyUpdate>;
81
+ }