feat(har): track address for api requests
This commit is contained in:
parent
8761dafc73
commit
fa2fff4bac
|
|
@ -73,6 +73,8 @@ export type APIRequestFinishedEvent = {
|
|||
statusMessage: string;
|
||||
body?: Buffer;
|
||||
timings: har.Timings;
|
||||
serverIPAddress?: string;
|
||||
serverPort?: number;
|
||||
};
|
||||
|
||||
type SendRequestOptions = https.RequestOptions & {
|
||||
|
|
@ -302,6 +304,8 @@ export abstract class APIRequestContext extends SdkObject {
|
|||
let tcpConnectionAt: number | undefined;
|
||||
let tlsHandshakeAt: number | undefined;
|
||||
let requestFinishAt: number | undefined;
|
||||
let serverIPAddress: string | undefined;
|
||||
let serverPort: number | undefined;
|
||||
|
||||
const request = requestConstructor(url, requestOptions as any, async response => {
|
||||
const responseAt = monotonicTime();
|
||||
|
|
@ -328,6 +332,8 @@ export abstract class APIRequestContext extends SdkObject {
|
|||
cookies,
|
||||
body,
|
||||
timings,
|
||||
serverIPAddress,
|
||||
serverPort,
|
||||
};
|
||||
this.emit(APIRequestContext.Events.RequestFinished, requestFinishedEvent);
|
||||
};
|
||||
|
|
@ -483,6 +489,9 @@ export abstract class APIRequestContext extends SdkObject {
|
|||
socket.on('lookup', () => { dnsLookupAt = monotonicTime(); });
|
||||
socket.on('connect', () => { tcpConnectionAt = monotonicTime(); });
|
||||
socket.on('secureConnect', () => { tlsHandshakeAt = monotonicTime(); });
|
||||
|
||||
serverIPAddress = socket.remoteAddress;
|
||||
serverPort = socket.remotePort;
|
||||
});
|
||||
request.on('finish', () => { requestFinishAt = monotonicTime(); });
|
||||
|
||||
|
|
|
|||
|
|
@ -208,6 +208,8 @@ export class HarTracer {
|
|||
if (!harEntry)
|
||||
return;
|
||||
|
||||
harEntry.serverIPAddress = event.serverIPAddress;
|
||||
harEntry._serverPort = event.serverPort;
|
||||
harEntry.response.status = event.statusCode;
|
||||
harEntry.response.statusText = event.statusMessage;
|
||||
harEntry.response.httpVersion = event.httpVersion;
|
||||
|
|
|
|||
|
|
@ -831,6 +831,9 @@ it('should include API request', async ({ contextFactory, server }, testInfo) =>
|
|||
ssl: expect.any(Number),
|
||||
wait: expect.any(Number),
|
||||
}));
|
||||
|
||||
expect(entry.serverIPAddress).toBeDefined();
|
||||
expect(entry._serverPort).toEqual(server.PORT);
|
||||
});
|
||||
|
||||
it('should respect minimal mode for API Requests', async ({ contextFactory, server }, testInfo) => {
|
||||
|
|
|
|||
Loading…
Reference in a new issue