fix: allow unnamed cookies (#12991)

Fixes #12808.
This commit is contained in:
Ross Wollman 2022-03-23 15:50:43 -07:00 committed by GitHub
parent 28b8c8d63a
commit 39376cccd8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 1 deletions

View File

@ -51,7 +51,6 @@ const kMaxCookieExpiresDateInSeconds = 253402300799;
export function rewriteCookies(cookies: types.SetNetworkCookieParam[]): types.SetNetworkCookieParam[] {
return cookies.map(c => {
assert(c.name, 'Cookie should have a name');
assert(c.url || (c.domain && c.path), 'Cookie should have a url or a domain/path pair');
assert(!(c.url && c.domain), 'Cookie should have either url or domain');
assert(!(c.url && c.path), 'Cookie should have either url or path');

View File

@ -421,3 +421,32 @@ it('should not block third party SameSite=None cookies', async ({ contextFactory
await page.goto(httpsServer.EMPTY_PAGE);
expect(await cookie).toBe('a=b');
});
it('should allow unnamed cookies', async ({ page, context, server, browserName, platform }) => {
server.setRoute('/cookies', (req, res) => {
res.write(req.headers.cookie ?? 'undefined-on-server');
res.end();
});
await context.addCookies([{
url: server.EMPTY_PAGE,
name: '',
value: 'unnamed-via-add-cookies',
}]);
// Round-trip behavior
const resp = await page.goto(server.PREFIX + '/cookies');
if (browserName === 'webkit' && platform === 'darwin') {
expect.soft(await resp.text()).toBe('undefined-on-server');
expect.soft(await page.evaluate('document.cookie')).toBe('');
} else {
expect.soft(await resp.text()).toBe('unnamed-via-add-cookies');
expect.soft(await page.evaluate('document.cookie')).toBe('unnamed-via-add-cookies');
}
// Within PW behavior
await page.goto(server.EMPTY_PAGE);
await page.evaluate(() => document.cookie = '=unnamed-via-js;');
await context.addCookies(await context.cookies());
if (browserName === 'webkit' && platform === 'darwin')
expect.soft(await page.evaluate('document.cookie')).toBe('');
else
expect.soft(await page.evaluate('document.cookie')).toBe('unnamed-via-js');
});