test: adjust headers expectations for firefox-beta (#30520)
There is a new experimental feature enabled in firefox-beta that sends a "Priority" header.
This commit is contained in:
parent
1b7e097b68
commit
6fecf52016
|
|
@ -19,6 +19,14 @@ import { test as it, expect } from './pageTest';
|
||||||
import { attachFrame } from '../config/utils';
|
import { attachFrame } from '../config/utils';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
|
|
||||||
|
function adjustServerHeaders(headers: Object, browserName: string, channel: string) {
|
||||||
|
if (browserName === 'firefox' && channel === 'firefox-beta') {
|
||||||
|
// This is a new experimental feature, only enabled in Firefox Beta for now.
|
||||||
|
delete headers['priority'];
|
||||||
|
}
|
||||||
|
return headers;
|
||||||
|
}
|
||||||
|
|
||||||
it('should work for main frame navigation request', async ({ page, server }) => {
|
it('should work for main frame navigation request', async ({ page, server }) => {
|
||||||
const requests = [];
|
const requests = [];
|
||||||
page.on('request', request => requests.push(request));
|
page.on('request', request => requests.push(request));
|
||||||
|
|
@ -82,7 +90,7 @@ it('should return headers', async ({ page, server, browserName }) => {
|
||||||
expect(response.request().headers()['user-agent']).toContain('WebKit');
|
expect(response.request().headers()['user-agent']).toContain('WebKit');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should get the same headers as the server', async ({ page, server, browserName, platform, isElectron, browserMajorVersion }) => {
|
it('should get the same headers as the server', async ({ page, server, browserName, platform, isElectron, browserMajorVersion, channel }) => {
|
||||||
it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99');
|
it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99');
|
||||||
it.fail(browserName === 'webkit' && platform === 'win32', 'Curl does not show accept-encoding and accept-language');
|
it.fail(browserName === 'webkit' && platform === 'win32', 'Curl does not show accept-encoding and accept-language');
|
||||||
let serverRequest;
|
let serverRequest;
|
||||||
|
|
@ -92,10 +100,10 @@ it('should get the same headers as the server', async ({ page, server, browserNa
|
||||||
});
|
});
|
||||||
const response = await page.goto(server.PREFIX + '/empty.html');
|
const response = await page.goto(server.PREFIX + '/empty.html');
|
||||||
const headers = await response.request().allHeaders();
|
const headers = await response.request().allHeaders();
|
||||||
expect(headers).toEqual(serverRequest.headers);
|
expect(headers).toEqual(adjustServerHeaders(serverRequest.headers, browserName, channel));
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not return allHeaders() until they are available', async ({ page, server, browserName, platform, isElectron, browserMajorVersion }) => {
|
it('should not return allHeaders() until they are available', async ({ page, server, browserName, platform, isElectron, browserMajorVersion, channel }) => {
|
||||||
it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99');
|
it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99');
|
||||||
it.fail(browserName === 'webkit' && platform === 'win32', 'Curl does not show accept-encoding and accept-language');
|
it.fail(browserName === 'webkit' && platform === 'win32', 'Curl does not show accept-encoding and accept-language');
|
||||||
|
|
||||||
|
|
@ -114,13 +122,13 @@ it('should not return allHeaders() until they are available', async ({ page, ser
|
||||||
|
|
||||||
await page.goto(server.PREFIX + '/empty.html');
|
await page.goto(server.PREFIX + '/empty.html');
|
||||||
const requestHeaders = await requestHeadersPromise;
|
const requestHeaders = await requestHeadersPromise;
|
||||||
expect(requestHeaders).toEqual(serverRequest.headers);
|
expect(requestHeaders).toEqual(adjustServerHeaders(serverRequest.headers, browserName, channel));
|
||||||
|
|
||||||
const responseHeaders = await responseHeadersPromise;
|
const responseHeaders = await responseHeadersPromise;
|
||||||
expect(responseHeaders['foo']).toBe('bar');
|
expect(responseHeaders['foo']).toBe('bar');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should get the same headers as the server CORS', async ({ page, server, browserName, platform, isElectron, browserMajorVersion }) => {
|
it('should get the same headers as the server CORS', async ({ page, server, browserName, platform, isElectron, browserMajorVersion, channel }) => {
|
||||||
it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99');
|
it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99');
|
||||||
it.fail(browserName === 'webkit' && platform === 'win32', 'Curl does not show accept-encoding and accept-language');
|
it.fail(browserName === 'webkit' && platform === 'win32', 'Curl does not show accept-encoding and accept-language');
|
||||||
|
|
||||||
|
|
@ -139,7 +147,7 @@ it('should get the same headers as the server CORS', async ({ page, server, brow
|
||||||
expect(text).toBe('done');
|
expect(text).toBe('done');
|
||||||
const response = await responsePromise;
|
const response = await responsePromise;
|
||||||
const headers = await response.request().allHeaders();
|
const headers = await response.request().allHeaders();
|
||||||
expect(headers).toEqual(serverRequest.headers);
|
expect(headers).toEqual(adjustServerHeaders(serverRequest.headers, browserName, channel));
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not get preflight CORS requests when intercepting', async ({ page, server, browserName, isAndroid }) => {
|
it('should not get preflight CORS requests when intercepting', async ({ page, server, browserName, isAndroid }) => {
|
||||||
|
|
@ -353,7 +361,7 @@ it('should return navigation bit when navigating to image', async ({ page, serve
|
||||||
expect(requests[0].isNavigationRequest()).toBe(true);
|
expect(requests[0].isNavigationRequest()).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should report raw headers', async ({ page, server, browserName, platform, isElectron, browserMajorVersion }) => {
|
it('should report raw headers', async ({ page, server, browserName, platform, isElectron, browserMajorVersion, channel }) => {
|
||||||
it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99');
|
it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99');
|
||||||
|
|
||||||
let expectedHeaders: { name: string, value: string }[];
|
let expectedHeaders: { name: string, value: string }[];
|
||||||
|
|
@ -376,6 +384,10 @@ it('should report raw headers', async ({ page, server, browserName, platform, is
|
||||||
return { name, value: values[0] };
|
return { name, value: values[0] };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if (browserName === 'firefox' && channel === 'firefox-beta') {
|
||||||
|
// This is a new experimental feature, only enabled in Firefox Beta for now.
|
||||||
|
expectedHeaders = expectedHeaders.filter(({ name }) => name.toLowerCase() !== 'priority');
|
||||||
|
}
|
||||||
res.end();
|
res.end();
|
||||||
});
|
});
|
||||||
await page.goto(server.EMPTY_PAGE);
|
await page.goto(server.EMPTY_PAGE);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue