From ac629afd46c6319fc469335db0edc581e9e055a4 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Thu, 11 Nov 2021 17:46:17 +0100 Subject: [PATCH] chore: fix API name capitalisation with APIRequestContext (#10240) --- packages/playwright-core/src/utils/stackTrace.ts | 11 ++++++++++- tests/browsercontext-fetch.spec.ts | 8 ++++---- tests/page/workers.spec.ts | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/packages/playwright-core/src/utils/stackTrace.ts b/packages/playwright-core/src/utils/stackTrace.ts index 433a230de6..d038d6b6e2 100644 --- a/packages/playwright-core/src/utils/stackTrace.ts +++ b/packages/playwright-core/src/utils/stackTrace.ts @@ -114,13 +114,22 @@ export function captureStackTrace(): ParsedStackTrace { for (let i = 0; i < parsedFrames.length - 1; i++) { if (parsedFrames[i].inClient && !parsedFrames[i + 1].inClient) { const frame = parsedFrames[i].frame; - apiName = frame.function ? frame.function[0].toLowerCase() + frame.function.slice(1) : ''; + apiName = normalizeAPIName(frame.function); parsedFrames = parsedFrames.slice(i + 1); break; } } } + function normalizeAPIName(name?: string): string { + if (!name) + return ''; + const match = name.match(/(API|JS|CDP|[A-Z])(.*)/); + if (!match) + return name; + return match[1].toLowerCase() + match[2]; + } + // Hide all test runner and library frames in the user stack (event handlers produce them). parsedFrames = parsedFrames.filter((f, i) => { if (f.frame.file.startsWith(TEST_DIR_SRC) || f.frame.file.startsWith(TEST_DIR_LIB)) diff --git a/tests/browsercontext-fetch.spec.ts b/tests/browsercontext-fetch.spec.ts index c4f743821f..f905982126 100644 --- a/tests/browsercontext-fetch.spec.ts +++ b/tests/browsercontext-fetch.spec.ts @@ -69,7 +69,7 @@ it('should throw on network error', async ({ context, server }) => { req.socket.destroy(); }); const error = await context.request.get(server.PREFIX + '/test').catch(e => e); - expect(error.message).toContain('socket hang up'); + expect(error.message).toBe('apiRequestContext.get: socket hang up'); }); it('should throw on network error after redirect', async ({ context, server }) => { @@ -78,7 +78,7 @@ it('should throw on network error after redirect', async ({ context, server }) = req.socket.destroy(); }); const error = await context.request.get(server.PREFIX + '/redirect').catch(e => e); - expect(error.message).toContain('socket hang up'); + expect(error.message).toBe('apiRequestContext.get: socket hang up'); }); it('should throw on network error when sending body', async ({ context, server }) => { @@ -92,7 +92,7 @@ it('should throw on network error when sending body', async ({ context, server } req.socket.destroy(); }); const error = await context.request.get(server.PREFIX + '/test').catch(e => e); - expect(error.message).toContain(': aborted'); + expect(error.message).toBe('apiRequestContext.get: aborted'); }); it('should throw on network error when sending body after redirect', async ({ context, server }) => { @@ -107,7 +107,7 @@ it('should throw on network error when sending body after redirect', async ({ co req.socket.destroy(); }); const error = await context.request.get(server.PREFIX + '/redirect').catch(e => e); - expect(error.message).toContain(': aborted'); + expect(error.message).toBe('apiRequestContext.get: aborted'); }); it('should add session cookies to request', async ({ context, server }) => { diff --git a/tests/page/workers.spec.ts b/tests/page/workers.spec.ts index 627845e193..3e039f28fe 100644 --- a/tests/page/workers.spec.ts +++ b/tests/page/workers.spec.ts @@ -41,7 +41,7 @@ it('should emit created and destroyed events', async function({ page }) { await page.evaluate(workerObj => workerObj.terminate(), workerObj); expect(await workerDestroyedPromise).toBe(worker); const error = await workerThisObj.getProperty('self').catch(error => error); - expect(error.message).toMatch(/jSHandle.getProperty: (Worker was closed|Target closed)/); + expect(error.message).toMatch(/jsHandle.getProperty: (Worker was closed|Target closed)/); }); it('should report console logs', async function({ page }) {