fix(har): requestFinished/page-close race (#8518)

This commit is contained in:
Max Schmitt 2021-08-28 01:09:18 +02:00 committed by GitHub
parent 951b9ac21a
commit 3ea2f209ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 15 deletions

View file

@ -356,9 +356,9 @@ it('should report the correct request body size when the bodySize is 0', async (
}); });
it('should report the correct response body size when the bodySize is 0', async ({ contextFactory, server }, testInfo) => { it('should report the correct response body size when the bodySize is 0', async ({ contextFactory, server }, testInfo) => {
server.setRoute('/empty.html', (req, res) => res.end(''));
const { page, getLog } = await pageWithHar(contextFactory, testInfo); const { page, getLog } = await pageWithHar(contextFactory, testInfo);
await page.goto(server.EMPTY_PAGE); const response = await page.goto(server.EMPTY_PAGE);
await response.finished();
const log = await getLog(); const log = await getLog();
expect(log.entries[0].response.bodySize).toBe(0); expect(log.entries[0].response.bodySize).toBe(0);
}); });

View file

@ -285,7 +285,7 @@ it('should should set bodySize to 0 if there was no body', async ({page, server,
]); ]);
await (await request.response()).finished(); await (await request.response()).finished();
expect(request.sizes().requestBodySize).toBe(0); expect(request.sizes().requestBodySize).toBe(0);
expect(request.sizes().requestHeadersSize).toBeGreaterThanOrEqual(250); expect(request.sizes().requestHeadersSize).toBeGreaterThanOrEqual(228);
}); });
it('should should set bodySize, headersSize, and transferSize', async ({page, server, browserName, platform}) => { it('should should set bodySize, headersSize, and transferSize', async ({page, server, browserName, platform}) => {
@ -308,18 +308,7 @@ it('should should set bodySize, headersSize, and transferSize', async ({page, se
}); });
it('should should set bodySize to 0 when there was no response body', async ({page, server, browserName, platform}) => { it('should should set bodySize to 0 when there was no response body', async ({page, server, browserName, platform}) => {
server.setRoute('/get', (req, res) => { const response = await page.goto(server.EMPTY_PAGE);
// In Firefox, |fetch| will be hanging until it receives |Content-Type| header
// from server.
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
res.end('');
});
await page.goto(server.EMPTY_PAGE);
const [response] = await Promise.all([
page.waitForEvent('response'),
page.evaluate(async () => fetch('./get').then(r => r.text())),
server.waitForRequest('/get'),
]);
await response.finished(); await response.finished();
expect(response.request().sizes().responseBodySize).toBe(0); expect(response.request().sizes().responseBodySize).toBe(0);
expect(response.request().sizes().responseHeadersSize).toBeGreaterThanOrEqual(150); expect(response.request().sizes().responseHeadersSize).toBeGreaterThanOrEqual(150);