@lvce-editor/test-with-playwright-worker 22.40.2 → 22.40.4
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/workerMain.js +42 -21
- package/package.json +1 -1
package/dist/workerMain.js
CHANGED
|
@@ -1768,12 +1768,13 @@ const getUrlFromTestFile = (absolutePath, port, traceFocus, traceRendererWorker)
|
|
|
1768
1768
|
}
|
|
1769
1769
|
return url.href;
|
|
1770
1770
|
};
|
|
1771
|
-
const navigateToTest = async (page, url) => {
|
|
1771
|
+
const navigateToTest = async (page, url, browser) => {
|
|
1772
1772
|
await page.goto(url, {
|
|
1773
|
-
waitUntil: 'domcontentloaded'
|
|
1773
|
+
waitUntil: browser === 'webkit' ? 'commit' : 'domcontentloaded'
|
|
1774
1774
|
});
|
|
1775
1775
|
};
|
|
1776
1776
|
const runTest = async ({
|
|
1777
|
+
browser,
|
|
1777
1778
|
page,
|
|
1778
1779
|
port,
|
|
1779
1780
|
svgScreenshotOptions,
|
|
@@ -1789,7 +1790,7 @@ const runTest = async ({
|
|
|
1789
1790
|
expect
|
|
1790
1791
|
} = await import('@playwright/test');
|
|
1791
1792
|
const url = getUrlFromTestFile(test, port, traceFocus ?? false, traceRendererWorker ?? false);
|
|
1792
|
-
await navigateToTest(page, url);
|
|
1793
|
+
await navigateToTest(page, url, browser);
|
|
1793
1794
|
const testOverlay = page.locator('#TestOverlay');
|
|
1794
1795
|
await expect(testOverlay).toBeVisible({
|
|
1795
1796
|
timeout
|
|
@@ -1861,6 +1862,7 @@ const getResultCounts$1 = status => {
|
|
|
1861
1862
|
* @param {{testSrc:string, tests:string[], filter?: string, headless:boolean, page: import('@playwright/test').Page, port:number, timeout:number, onResult:any, onFinalResult:any}} param0
|
|
1862
1863
|
*/
|
|
1863
1864
|
const runTests = async ({
|
|
1865
|
+
browser = 'chromium',
|
|
1864
1866
|
filter,
|
|
1865
1867
|
headless,
|
|
1866
1868
|
onFinalResult,
|
|
@@ -1882,6 +1884,7 @@ const runTests = async ({
|
|
|
1882
1884
|
const filteredTests = filter ? tests.filter(test => test.includes(filter)) : tests;
|
|
1883
1885
|
for (const test of filteredTests) {
|
|
1884
1886
|
const result = await runTest({
|
|
1887
|
+
browser,
|
|
1885
1888
|
page,
|
|
1886
1889
|
port,
|
|
1887
1890
|
test,
|
|
@@ -2041,6 +2044,7 @@ const readTestResultsText = async (page, timeout) => {
|
|
|
2041
2044
|
return text;
|
|
2042
2045
|
};
|
|
2043
2046
|
const runTestsWithReusedPage = async ({
|
|
2047
|
+
browser,
|
|
2044
2048
|
filter,
|
|
2045
2049
|
onFinalResult,
|
|
2046
2050
|
onResult,
|
|
@@ -2056,7 +2060,7 @@ const runTestsWithReusedPage = async ({
|
|
|
2056
2060
|
const url = getAllTestsUrl(port, filter, traceFocus ?? false, rendererWorkerTraceDirectory !== undefined);
|
|
2057
2061
|
await page.goto(url, {
|
|
2058
2062
|
timeout,
|
|
2059
|
-
waitUntil: 'domcontentloaded'
|
|
2063
|
+
waitUntil: browser === 'webkit' ? 'commit' : 'domcontentloaded'
|
|
2060
2064
|
});
|
|
2061
2065
|
const text = await readTestResultsText(page, timeout);
|
|
2062
2066
|
results = parseTestResults(text);
|
|
@@ -2166,7 +2170,8 @@ const startWorkerJavascriptCoverage = async (page, targetScript) => {
|
|
|
2166
2170
|
const command = new Promise((resolve, reject) => {
|
|
2167
2171
|
pendingCommands.set(id, {
|
|
2168
2172
|
reject,
|
|
2169
|
-
resolve
|
|
2173
|
+
resolve,
|
|
2174
|
+
sessionId
|
|
2170
2175
|
});
|
|
2171
2176
|
});
|
|
2172
2177
|
void session.send('Target.sendMessageToTarget', {
|
|
@@ -2197,12 +2202,14 @@ const startWorkerJavascriptCoverage = async (page, targetScript) => {
|
|
|
2197
2202
|
callCount: true,
|
|
2198
2203
|
detailed: true
|
|
2199
2204
|
});
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2205
|
+
if (!stopped && sessions.has(sessionId)) {
|
|
2206
|
+
const timer = setInterval(() => {
|
|
2207
|
+
trackPromise(pendingEntries, readTargetCoverage(sendToTarget, sessionId, entries), error => {
|
|
2208
|
+
recordCollectionError(error);
|
|
2209
|
+
});
|
|
2210
|
+
}, 50);
|
|
2211
|
+
timers.set(sessionId, timer);
|
|
2212
|
+
}
|
|
2206
2213
|
}
|
|
2207
2214
|
await sendToTarget(sessionId, 'Runtime.runIfWaitingForDebugger');
|
|
2208
2215
|
if (matches) {
|
|
@@ -2212,6 +2219,10 @@ const startWorkerJavascriptCoverage = async (page, targetScript) => {
|
|
|
2212
2219
|
const onAttached = target => {
|
|
2213
2220
|
trackPromise(tasks, handleAttachedTarget(target), async error => {
|
|
2214
2221
|
recordCollectionError(error);
|
|
2222
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
2223
|
+
if (message.includes('No session with given id') || message.includes('Target closed')) {
|
|
2224
|
+
return;
|
|
2225
|
+
}
|
|
2215
2226
|
try {
|
|
2216
2227
|
await sendToTarget(target.sessionId, 'Runtime.runIfWaitingForDebugger');
|
|
2217
2228
|
} catch {
|
|
@@ -2222,8 +2233,12 @@ const startWorkerJavascriptCoverage = async (page, targetScript) => {
|
|
|
2222
2233
|
const onDetached = ({
|
|
2223
2234
|
sessionId
|
|
2224
2235
|
}) => {
|
|
2225
|
-
|
|
2226
|
-
|
|
2236
|
+
for (const [id, pending] of pendingCommands) {
|
|
2237
|
+
if (pending.sessionId !== sessionId) {
|
|
2238
|
+
continue;
|
|
2239
|
+
}
|
|
2240
|
+
pendingCommands.delete(id);
|
|
2241
|
+
pending.reject(new Error('Target closed'));
|
|
2227
2242
|
}
|
|
2228
2243
|
sessions.delete(sessionId);
|
|
2229
2244
|
const timer = timers.get(sessionId);
|
|
@@ -2247,17 +2262,11 @@ const startWorkerJavascriptCoverage = async (page, targetScript) => {
|
|
|
2247
2262
|
}
|
|
2248
2263
|
stopped = true;
|
|
2249
2264
|
session.off('Target.attachedToTarget', onAttached);
|
|
2250
|
-
session.off('Target.detachedFromTarget', onDetached);
|
|
2251
2265
|
try {
|
|
2252
2266
|
for (const timer of timers.values()) {
|
|
2253
2267
|
clearInterval(timer);
|
|
2254
2268
|
}
|
|
2255
2269
|
timers.clear();
|
|
2256
|
-
await session.send('Target.setAutoAttach', {
|
|
2257
|
-
autoAttach: false,
|
|
2258
|
-
flatten: false,
|
|
2259
|
-
waitForDebuggerOnStart: false
|
|
2260
|
-
});
|
|
2261
2270
|
while (tasks.size > 0) {
|
|
2262
2271
|
await Promise.all(tasks);
|
|
2263
2272
|
}
|
|
@@ -2293,8 +2302,18 @@ const startWorkerJavascriptCoverage = async (page, targetScript) => {
|
|
|
2293
2302
|
}
|
|
2294
2303
|
return result;
|
|
2295
2304
|
} finally {
|
|
2296
|
-
|
|
2297
|
-
|
|
2305
|
+
try {
|
|
2306
|
+
// Disabling auto-attach detaches worker sessions, so finish all coverage commands first.
|
|
2307
|
+
await session.send('Target.setAutoAttach', {
|
|
2308
|
+
autoAttach: false,
|
|
2309
|
+
flatten: false,
|
|
2310
|
+
waitForDebuggerOnStart: false
|
|
2311
|
+
});
|
|
2312
|
+
} finally {
|
|
2313
|
+
session.off('Target.detachedFromTarget', onDetached);
|
|
2314
|
+
session.off('Target.receivedMessageFromTarget', onReceivedMessage);
|
|
2315
|
+
await session.detach();
|
|
2316
|
+
}
|
|
2298
2317
|
}
|
|
2299
2318
|
}
|
|
2300
2319
|
};
|
|
@@ -3016,6 +3035,7 @@ const runAllTests = async (extensionPath, testPath, cwd, browser, headless, time
|
|
|
3016
3035
|
page,
|
|
3017
3036
|
run: async () => {
|
|
3018
3037
|
await runTestsWithReusedPage({
|
|
3038
|
+
browser,
|
|
3019
3039
|
...filterOption,
|
|
3020
3040
|
onFinalResult,
|
|
3021
3041
|
onResult,
|
|
@@ -3038,6 +3058,7 @@ const runAllTests = async (extensionPath, testPath, cwd, browser, headless, time
|
|
|
3038
3058
|
page,
|
|
3039
3059
|
run: async () => {
|
|
3040
3060
|
await runTests({
|
|
3061
|
+
browser,
|
|
3041
3062
|
...filterOption,
|
|
3042
3063
|
headless,
|
|
3043
3064
|
onFinalResult,
|