mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:15:59 +00:00
fix(network): count omitted response content promptly (#6413)
* fix(network): count omitted response content promptly * test(network): pin response omission timing --------- Co-authored-by: eco-null <eco-null@users.noreply.github.com>
This commit is contained in:
1 parent
8b1e3143a2
commit
c8d58d2e7c
2 files changed
+34
-8
No files matched your search
@@ -171,6 +171,33 @@ const bodyText = (event: BrowserScenarioEvent) => {
|
||||
|
||||
afterEach(() => vi.useRealTimers());
|
||||
|
||||
it.each(["finished", "failed", "unfinished"])(
|
||||
"counts selected omitted response content when %s",
|
||||
async (terminal) => {
|
||||
const { collector, omittedEventCounts } = harness(
|
||||
{ request_body: false, response_body: true, header_values: false },
|
||||
undefined,
|
||||
"fixture",
|
||||
{ max_network_transactions: 1 },
|
||||
);
|
||||
collector.request(new RequestFixture("admitted"));
|
||||
const request = new RequestFixture("omitted");
|
||||
const response = new ResponseFixture(request, "response");
|
||||
collector.request(request);
|
||||
collector.response(response);
|
||||
expect(omittedEventCounts.get("network-content")).toBe(1);
|
||||
collector.response(response);
|
||||
expect(omittedEventCounts.get("network-content")).toBe(1);
|
||||
if (terminal === "finished") collector.finished(request);
|
||||
if (terminal === "failed") collector.failed(request);
|
||||
expect(omittedEventCounts.get("network-content")).toBe(1);
|
||||
await collector.finish();
|
||||
expect(omittedEventCounts.get("network-content")).toBe(1);
|
||||
expect(response.bodyReads).toBe(0);
|
||||
expect(request.bodyReads).toBe(0);
|
||||
},
|
||||
);
|
||||
|
||||
it("redacts declared secrets in browser-produced form and JSON encodings", async () => {
|
||||
for (const secret of ["私密", 'space " and \n']) {
|
||||
const { collector, events } = harness(selection, undefined, secret);
|
||||
|
||||
@@ -208,7 +208,13 @@ export class PlaywrightScenarioNetwork {
|
||||
const transaction = this.transaction(request);
|
||||
if (transaction === undefined) {
|
||||
this.omitOmittedTransactionPhase(request, "response");
|
||||
this.observeOmittedTransactionPhase(request, "response");
|
||||
// Selection follows the observed response, independently of its eventual
|
||||
// terminal state. No omitted response body is acquired.
|
||||
if (
|
||||
this.options.selection.response_body ||
|
||||
this.options.selection.header_values
|
||||
)
|
||||
this.omitOmittedTransactionContent(request, "response");
|
||||
return;
|
||||
}
|
||||
if (
|
||||
@@ -244,13 +250,6 @@ export class PlaywrightScenarioNetwork {
|
||||
const transaction = this.transaction(request);
|
||||
if (transaction === undefined) {
|
||||
this.omitOmittedTransactionPhase(request, "request-finished");
|
||||
const observed = this.omittedPhases.get(request);
|
||||
if (
|
||||
observed?.has("response") &&
|
||||
(this.options.selection.response_body ||
|
||||
this.options.selection.header_values)
|
||||
)
|
||||
this.omitOmittedTransactionContent(request, "response");
|
||||
return;
|
||||
}
|
||||
if (!this.admitMetadata(transaction, "request-finished", request)) return;
|
||||
|
||||
Reference in new issue
Block a user