diff --git a/src/cli/traceViewer/snapshotRouter.ts b/src/cli/traceViewer/snapshotRouter.ts index 6b4127ea7b..f8e4ee1eb4 100644 --- a/src/cli/traceViewer/snapshotRouter.ts +++ b/src/cli/traceViewer/snapshotRouter.ts @@ -169,7 +169,7 @@ export class SnapshotRouter { } private async _readResource(event: trace.NetworkResourceTraceEvent, overrideSha1: string | undefined) { - const body = await this._readSha1(overrideSha1 || event.sha1); + const body = await this._readSha1(overrideSha1 || event.responseSha1); if (!body) return; return { diff --git a/src/cli/traceViewer/traceViewer.ts b/src/cli/traceViewer/traceViewer.ts index 96a5419ec4..bcac695553 100644 --- a/src/cli/traceViewer/traceViewer.ts +++ b/src/cli/traceViewer/traceViewer.ts @@ -92,6 +92,12 @@ class TraceViewer { await uiPage.exposeBinding('readFile', async (_, path: string) => { return fs.readFileSync(path).toString(); }); + await uiPage.exposeBinding('readResource', async (_, sha1: string) => { + if (!this._document) + return; + + return fs.readFileSync(path.join(this._document.resourcesDir, sha1)).toString('base64'); + }); await uiPage.exposeBinding('renderSnapshot', async (_, arg: { action: ActionTraceEvent, snapshot: { name: string, snapshotId?: string } }) => { const { action, snapshot } = arg; if (!this._document) diff --git a/src/cli/traceViewer/web/index.tsx b/src/cli/traceViewer/web/index.tsx index 264b5cf55f..fae79c76f2 100644 --- a/src/cli/traceViewer/web/index.tsx +++ b/src/cli/traceViewer/web/index.tsx @@ -25,6 +25,7 @@ declare global { interface Window { getTraceModel(): Promise; readFile(filePath: string): Promise; + readResource(sha1: string): Promise; renderSnapshot(arg: { action: trace.ActionTraceEvent, snapshot: { name: string, snapshotId?: string } }): void; } } diff --git a/src/cli/traceViewer/web/styles.tsx b/src/cli/traceViewer/web/styles.tsx index 5c55b48cd8..dcc0aa488c 100644 --- a/src/cli/traceViewer/web/styles.tsx +++ b/src/cli/traceViewer/web/styles.tsx @@ -26,6 +26,7 @@ export const GlobalStyles = () =>