fix(tracing): modernize old resources to new har format (#8453)

This commit is contained in:
Dmitry Gozman 2021-08-25 14:36:52 -07:00 committed by GitHub
parent a479cb6f52
commit 02bef1eded
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 2 deletions

View File

@ -38,7 +38,7 @@ export type TracerOptions = {
screenshots?: boolean; screenshots?: boolean;
}; };
export const VERSION = 2; export const VERSION = 3;
type RecordingState = { type RecordingState = {
options: TracerOptions, options: TracerOptions,

View File

@ -130,6 +130,32 @@ export class TraceModel {
} }
return event; return event;
} }
_modernize_2_to_3(event: any): any {
if (event.type === 'resource-snapshot' && !event.snapshot.request) {
// Migrate from old ResourceSnapshot to new har entry format.
const resource = event.snapshot;
event.snapshot = {
_frameref: resource.frameId,
request: {
url: resource.url,
method: resource.method,
headers: resource.requestHeaders,
postData: resource.requestSha1 ? { _sha1: resource.requestSha1 } : undefined,
},
response: {
status: resource.status,
headers: resource.responseHeaders,
content: {
mimeType: resource.contentType,
_sha1: resource.responseSha1,
},
},
_monotonicTime: resource.timestamp,
};
}
return event;
}
} }
export type ContextEntry = { export type ContextEntry = {

View File

@ -83,7 +83,8 @@ export class TraceViewer {
const networkFile = path.join(tracesDir, (match ? match[1] : debugName) + '.network'); const networkFile = path.join(tracesDir, (match ? match[1] : debugName) + '.network');
const model = new TraceModel(snapshotStorage); const model = new TraceModel(snapshotStorage);
await appendTraceEvents(model, traceFile); await appendTraceEvents(model, traceFile);
await appendTraceEvents(model, networkFile); if (fs.existsSync(networkFile))
await appendTraceEvents(model, networkFile);
model.build(); model.build();
response.end(JSON.stringify(model.contextEntry)); response.end(JSON.stringify(model.contextEntry));
})().catch(e => console.error(e)); })().catch(e => console.error(e));