fix(fetch): throw on network error (#8565)
This commit is contained in:
parent
6d51ed6e4d
commit
dd6dacb125
|
|
@ -161,6 +161,7 @@ async function sendRequest(context: BrowserContext, url: URL, options: http.Requ
|
||||||
body
|
body
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
response.on('aborted', () => reject(new Error('aborted')));
|
||||||
response.on('error',reject);
|
response.on('error',reject);
|
||||||
});
|
});
|
||||||
request.on('error', reject);
|
request.on('error', reject);
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,60 @@ it('should work', async ({context, server}) => {
|
||||||
expect(await response.text()).toBe('{"foo": "bar"}\n');
|
expect(await response.text()).toBe('{"foo": "bar"}\n');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should throw on network error', async ({context, server}) => {
|
||||||
|
server.setRoute('/test', (req, res) => {
|
||||||
|
req.socket.destroy();
|
||||||
|
});
|
||||||
|
let error;
|
||||||
|
// @ts-expect-error
|
||||||
|
await context._fetch(server.PREFIX + '/test').catch(e => error = e);
|
||||||
|
expect(error.message).toContain('socket hang up');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw on network error after redirect', async ({context, server}) => {
|
||||||
|
server.setRedirect('/redirect', '/test');
|
||||||
|
server.setRoute('/test', (req, res) => {
|
||||||
|
req.socket.destroy();
|
||||||
|
});
|
||||||
|
let error;
|
||||||
|
// @ts-expect-error
|
||||||
|
await context._fetch(server.PREFIX + '/redirect').catch(e => error = e);
|
||||||
|
expect(error.message).toContain('socket hang up');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw on network error when sending body', async ({context, server}) => {
|
||||||
|
server.setRoute('/test', (req, res) => {
|
||||||
|
res.writeHead(200, {
|
||||||
|
'content-length': 4096,
|
||||||
|
'content-type': 'text/html',
|
||||||
|
});
|
||||||
|
res.write('<title>A');
|
||||||
|
res.uncork();
|
||||||
|
req.socket.destroy();
|
||||||
|
});
|
||||||
|
let error;
|
||||||
|
// @ts-expect-error
|
||||||
|
await context._fetch(server.PREFIX + '/test').catch(e => error = e);
|
||||||
|
expect(error.message).toContain('Error: aborted');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw on network error when sending body after redirect', async ({context, server}) => {
|
||||||
|
server.setRedirect('/redirect', '/test');
|
||||||
|
server.setRoute('/test', (req, res) => {
|
||||||
|
res.writeHead(200, {
|
||||||
|
'content-length': 4096,
|
||||||
|
'content-type': 'text/html',
|
||||||
|
});
|
||||||
|
res.write('<title>A');
|
||||||
|
res.uncork();
|
||||||
|
req.socket.destroy();
|
||||||
|
});
|
||||||
|
let error;
|
||||||
|
// @ts-expect-error
|
||||||
|
await context._fetch(server.PREFIX + '/redirect').catch(e => error = e);
|
||||||
|
expect(error.message).toContain('Error: aborted');
|
||||||
|
});
|
||||||
|
|
||||||
it('should add session cookies to request', async ({context, server}) => {
|
it('should add session cookies to request', async ({context, server}) => {
|
||||||
await context.addCookies([{
|
await context.addCookies([{
|
||||||
name: 'username',
|
name: 'username',
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue