From 869ef072e70f11bd2a2776c1bfa885ad7b3bc636 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Mon, 12 Jul 2021 03:07:47 -0700 Subject: [PATCH] test: response interception after redirects (failing) (#7534) --- tests/page/page-request-intercept.spec.ts | 39 +++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/tests/page/page-request-intercept.spec.ts b/tests/page/page-request-intercept.spec.ts index b6dc17163d..3927924216 100644 --- a/tests/page/page-request-intercept.spec.ts +++ b/tests/page/page-request-intercept.spec.ts @@ -160,3 +160,42 @@ it('should be abortable after interception', async ({page, server, browserName}) expect(failed).toBe(true); }); +it('should fulfill after redirects', async ({page, server}) => { + it.fixme(); + server.setRedirect('/redirect/1.html', '/redirect/2.html'); + server.setRedirect('/redirect/2.html', '/empty.html'); + const expectedUrls = ['/redirect/1.html', '/redirect/2.html', '/empty.html'].map(s => server.PREFIX + s); + const requestUrls = []; + const responseUrls = []; + const requestFinishedUrls = []; + page.on('request', request => requestUrls.push(request.url())); + page.on('response', response => responseUrls.push(response.url())); + page.on('requestfinished', request => requestFinishedUrls.push(request.url())); + await page.route('**/*', async route => { + // @ts-expect-error + await route._intercept({}); + await route.fulfill({ + status: 201, + headers: { + foo: 'bar' + }, + contentType: 'text/plain', + body: 'Yo, page!' + }); + }); + const response = await page.goto(server.PREFIX + '/redirect/1.html'); + expect(requestUrls).toEqual(expectedUrls); + expect(responseUrls).toEqual(expectedUrls); + await response.finished(); + expect(requestFinishedUrls).toEqual(expectedUrls); + + const redirectChain = []; + for (let req = response.request(); req; req = req.redirectedFrom()) + redirectChain.unshift(req.url()); + expect(redirectChain).toEqual(expectedUrls); + + expect(response.status()).toBe(201); + expect(response.headers().foo).toBe('bar'); + expect(response.headers()['content-type']).toBe('text/plain'); + expect(await response.text()).toBe('Yo, page!'); +});