creevey 0.10.0-beta.31 → 0.10.0-beta.32
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.
- package/dist/client/shared/components/ResultsPage.d.ts +1 -1
- package/dist/client/web/CreeveyApp.js +1 -0
- package/dist/client/web/CreeveyApp.js.map +1 -1
- package/dist/server/docker.d.ts +1 -1
- package/dist/server/docker.js +21 -4
- package/dist/server/docker.js.map +1 -1
- package/dist/server/index.js +9 -10
- package/dist/server/index.js.map +1 -1
- package/dist/server/master/start.js +1 -1
- package/dist/server/master/start.js.map +1 -1
- package/dist/server/playwright/docker-file.d.ts +1 -2
- package/dist/server/playwright/docker-file.js +10 -4
- package/dist/server/playwright/docker-file.js.map +1 -1
- package/dist/server/playwright/docker.d.ts +2 -1
- package/dist/server/playwright/docker.js +10 -2
- package/dist/server/playwright/docker.js.map +1 -1
- package/dist/server/playwright/internal.d.ts +3 -4
- package/dist/server/playwright/internal.js +48 -37
- package/dist/server/playwright/internal.js.map +1 -1
- package/dist/server/playwright/webdriver.js +1 -7
- package/dist/server/playwright/webdriver.js.map +1 -1
- package/dist/server/selenium/internal.js +5 -12
- package/dist/server/selenium/internal.js.map +1 -1
- package/dist/server/selenium/webdriver.js +0 -7
- package/dist/server/selenium/webdriver.js.map +1 -1
- package/dist/server/telemetry.js +2 -2
- package/dist/server/utils.d.ts +1 -2
- package/dist/server/utils.js +11 -8
- package/dist/server/utils.js.map +1 -1
- package/dist/server/webdriver.d.ts +2 -0
- package/dist/server/webdriver.js +13 -1
- package/dist/server/webdriver.js.map +1 -1
- package/dist/types.d.ts +0 -2
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/src/client/web/CreeveyApp.tsx +1 -0
- package/src/server/docker.ts +24 -4
- package/src/server/index.ts +11 -14
- package/src/server/master/start.ts +1 -1
- package/src/server/playwright/docker-file.ts +12 -5
- package/src/server/playwright/docker.ts +16 -3
- package/src/server/playwright/index-source.mjs +16 -0
- package/src/server/playwright/internal.ts +78 -52
- package/src/server/playwright/webdriver.ts +1 -7
- package/src/server/selenium/internal.ts +5 -12
- package/src/server/selenium/webdriver.ts +0 -7
- package/src/server/telemetry.ts +2 -2
- package/src/server/utils.ts +33 -25
- package/src/server/webdriver.ts +13 -0
- package/src/types.ts +0 -2
package/src/server/telemetry.ts
CHANGED
@@ -181,8 +181,8 @@ export async function sendScreenshotsCount(
|
|
181
181
|
const testsMeta = { runId: uuid, tests };
|
182
182
|
|
183
183
|
const fullPathname = buildPathname('tests', testsMeta);
|
184
|
-
// NOTE: Keep request path shorter than
|
185
|
-
const chunksCount = Math.ceil(fullPathname.length /
|
184
|
+
// NOTE: Keep request path shorter than 24k symbols
|
185
|
+
const chunksCount = Math.ceil(fullPathname.length / 24_000);
|
186
186
|
let chunks: string[] = [];
|
187
187
|
if (chunksCount > 1) {
|
188
188
|
const testsString = JSON.stringify(tests);
|
package/src/server/utils.ts
CHANGED
@@ -8,6 +8,7 @@ import { register as esmRegister } from 'tsx/esm/api';
|
|
8
8
|
import { register as cjsRegister } from 'tsx/cjs/api';
|
9
9
|
import { SkipOptions, SkipOption, isDefined, TestData, noop, ServerTest, Worker } from '../types.js';
|
10
10
|
import { emitShutdownMessage, sendShutdownMessage } from './messages.js';
|
11
|
+
import { LOCALHOST_REGEXP } from './webdriver.js';
|
11
12
|
import assert from 'assert';
|
12
13
|
import pidtree from 'pidtree';
|
13
14
|
|
@@ -99,7 +100,7 @@ export async function shutdownWorkers(): Promise<void> {
|
|
99
100
|
new Promise<void>((resolve) => {
|
100
101
|
const timeout = setTimeout(() => {
|
101
102
|
if (worker.process.pid) void killTree(worker.process.pid);
|
102
|
-
},
|
103
|
+
}, 10_000);
|
103
104
|
worker.on('exit', () => {
|
104
105
|
clearTimeout(timeout);
|
105
106
|
resolve();
|
@@ -134,10 +135,6 @@ export async function killTree(rootPid: number): Promise<void> {
|
|
134
135
|
});
|
135
136
|
}
|
136
137
|
|
137
|
-
export function shutdown(): void {
|
138
|
-
process.exit();
|
139
|
-
}
|
140
|
-
|
141
138
|
export function shutdownWithError(): void {
|
142
139
|
process.exit(1);
|
143
140
|
}
|
@@ -261,25 +258,36 @@ export async function loadThroughTSX<T>(
|
|
261
258
|
return result;
|
262
259
|
}
|
263
260
|
|
264
|
-
export function waitOnUrl(
|
261
|
+
export function waitOnUrl(waitUrl: string, timeout: number, delay: number) {
|
262
|
+
const urls = [waitUrl];
|
263
|
+
if (!LOCALHOST_REGEXP.test(waitUrl)) {
|
264
|
+
const parsedUrl = new URL(waitUrl);
|
265
|
+
parsedUrl.host = 'localhost';
|
266
|
+
urls.push(parsedUrl.toString());
|
267
|
+
}
|
265
268
|
const startTime = Date.now();
|
266
|
-
return
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
269
|
+
return Promise.race(
|
270
|
+
urls.map(
|
271
|
+
(url) =>
|
272
|
+
new Promise<void>((resolve, reject) => {
|
273
|
+
const interval = setInterval(() => {
|
274
|
+
http
|
275
|
+
.get(url, (response) => {
|
276
|
+
if (response.statusCode === 200) {
|
277
|
+
clearInterval(interval);
|
278
|
+
resolve();
|
279
|
+
}
|
280
|
+
})
|
281
|
+
.on('error', () => {
|
282
|
+
// Ignore HTTP errors
|
283
|
+
});
|
284
|
+
|
285
|
+
if (Date.now() - startTime > timeout) {
|
286
|
+
clearInterval(interval);
|
287
|
+
reject(new Error(`${url} didn't respond within ${timeout / 1000} seconds`));
|
288
|
+
}
|
289
|
+
}, delay);
|
290
|
+
}),
|
291
|
+
),
|
292
|
+
);
|
285
293
|
}
|
package/src/server/webdriver.ts
CHANGED
@@ -18,6 +18,19 @@ export const storybookRootID = 'storybook-root';
|
|
18
18
|
export const LOCALHOST_REGEXP = /(localhost|127\.0\.0\.1)/i;
|
19
19
|
const DOCKER_INTERNAL = 'host.docker.internal';
|
20
20
|
|
21
|
+
let browserClosePromise: Promise<void> | null = null;
|
22
|
+
|
23
|
+
export const openBrowser = () => {
|
24
|
+
let resolve: () => void;
|
25
|
+
browserClosePromise = new Promise((r) => (resolve = r));
|
26
|
+
return () => {
|
27
|
+
resolve();
|
28
|
+
browserClosePromise = null;
|
29
|
+
};
|
30
|
+
};
|
31
|
+
|
32
|
+
export const waitForBrowserClose = () => browserClosePromise;
|
33
|
+
|
21
34
|
export async function resolveStorybookUrl(
|
22
35
|
storybookUrl: string,
|
23
36
|
checkUrl: (url: string) => Promise<boolean>,
|
package/src/types.ts
CHANGED
@@ -150,7 +150,6 @@ export interface BrowserConfigObject {
|
|
150
150
|
screenshots?: boolean;
|
151
151
|
snapshots?: boolean;
|
152
152
|
sources?: boolean;
|
153
|
-
path: string;
|
154
153
|
};
|
155
154
|
};
|
156
155
|
}
|
@@ -369,7 +368,6 @@ export interface Options {
|
|
369
368
|
storybookUrl?: string;
|
370
369
|
storybookPort?: string;
|
371
370
|
storybookAutorunCmd?: string;
|
372
|
-
saveReport: boolean;
|
373
371
|
failFast?: boolean;
|
374
372
|
odiff?: boolean;
|
375
373
|
noDocker?: boolean;
|