fix(trace-viewer): don't crash when argument is null (#12186)

This commit is contained in:
Max Schmitt 2022-02-17 22:12:42 +01:00 committed by GitHub
parent 562da15af2
commit 21ae298015
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 1 deletions

View File

@ -82,7 +82,7 @@ function toString(metadata: CallMetadata, name: string, value: any): { title: st
value = parseSerializedValue(value, new Array(10).fill({ handle: '<handle>' }));
}
const type = typeof value;
if (type !== 'object')
if (type !== 'object' || value === null)
return { title: String(value), type };
if (value.guid)
return { title: '<handle>', type: 'handle' };

View File

@ -145,6 +145,8 @@ test.beforeAll(async function recordTrace({ browser, browserName, browserType, s
});
}, { a: 'paramA', b: 4 });
await page.evaluate(() => 1 + 1, null);
async function doClick() {
await page.click('"Click"');
}
@ -192,6 +194,7 @@ test('should open simple trace viewer', async ({ showTraceViewer }) => {
/page.setContent/,
/expect.toHaveTextbutton/,
/page.evaluate/,
/page.evaluate/,
/page.click"Click"/,
/page.waitForEvent/,
/page.waitForEvent/,
@ -254,6 +257,20 @@ test('should show params and return value', async ({ showTraceViewer, browserNam
]);
});
test('should show null as a param', async ({ showTraceViewer, browserName }) => {
const traceViewer = await showTraceViewer([traceFile]);
await traceViewer.selectAction('page.evaluate', 1);
await expect(traceViewer.callLines).toHaveText([
/page.evaluate/,
/wall time: [0-9/:,APM ]+/,
/duration: [\d]+ms/,
'expression: "() => 1 + 1"',
'isFunction: true',
'arg: null',
'value: 2'
]);
});
test('should have correct snapshot size', async ({ showTraceViewer }, testInfo) => {
const traceViewer = await showTraceViewer([traceFile]);
await traceViewer.selectAction('page.setViewport');