diff --git a/packages/trace-viewer/src/snapshotRenderer.ts b/packages/trace-viewer/src/snapshotRenderer.ts index f07035c041..625f011138 100644 --- a/packages/trace-viewer/src/snapshotRenderer.ts +++ b/packages/trace-viewer/src/snapshotRenderer.ts @@ -223,7 +223,9 @@ function snapshotScript(...targetIds: (string | undefined)[]) { scrollLefts.push(e); for (const element of root.querySelectorAll(`[__playwright_value_]`)) { - (element as HTMLInputElement | HTMLTextAreaElement).value = element.getAttribute('__playwright_value_')!; + const inputElement = element as HTMLInputElement | HTMLTextAreaElement; + if (inputElement.type !== 'file') + inputElement.value = inputElement.getAttribute('__playwright_value_')!; element.removeAttribute('__playwright_value_'); } for (const element of root.querySelectorAll(`[__playwright_checked_]`)) { diff --git a/tests/library/trace-viewer.spec.ts b/tests/library/trace-viewer.spec.ts index 426ebbf81b..b9e49da647 100644 --- a/tests/library/trace-viewer.spec.ts +++ b/tests/library/trace-viewer.spec.ts @@ -438,12 +438,13 @@ test('should restore scroll positions', async ({ page, runAndTrace, browserName expect(await frame.locator('div').evaluate(div => div.scrollTop)).toBe(136); }); -test('should restore control values', async ({ page, runAndTrace }) => { +test('should restore control values', async ({ page, runAndTrace, asset }) => { const traceViewer = await runAndTrace(async () => { await page.setContent(` +