Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: skip non-standard cookie asserts on Firefox #6994

Merged
merged 2 commits into from
Mar 17, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
105 changes: 57 additions & 48 deletions test/cookies.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
import expect from 'expect';
import {
expectCookieEquals,
getTestState,
setupTestBrowserHooks,
setupTestPageAndContextHooks,
Expand All @@ -29,15 +30,16 @@ describe('Cookie specs', () => {
it('should return no cookies in pristine browser context', async () => {
const { page, server } = getTestState();
await page.goto(server.EMPTY_PAGE);
expect(await page.cookies()).toEqual([]);
expectCookieEquals(await page.cookies(), []);
});
itFailsFirefox('should get a cookie', async () => {
it('should get a cookie', async () => {
const { page, server } = getTestState();
await page.goto(server.EMPTY_PAGE);
await page.evaluate(() => {
document.cookie = 'username=John Doe';
});
expect(await page.cookies()).toEqual([

expectCookieEquals(await page.cookies(), [
{
name: 'username',
value: 'John Doe',
Expand Down Expand Up @@ -87,7 +89,7 @@ describe('Cookie specs', () => {
expect(cookies.length).toBe(1);
expect(cookies[0].sameSite).toBe('Lax');
});
itFailsFirefox('should get multiple cookies', async () => {
it('should get multiple cookies', async () => {
const { page, server } = getTestState();
await page.goto(server.EMPTY_PAGE);
await page.evaluate(() => {
Expand All @@ -96,7 +98,7 @@ describe('Cookie specs', () => {
});
const cookies = await page.cookies();
cookies.sort((a, b) => a.name.localeCompare(b.name));
expect(cookies).toEqual([
expectCookieEquals(cookies, [
{
name: 'password',
value: '1234',
Expand Down Expand Up @@ -148,7 +150,7 @@ describe('Cookie specs', () => {
);
const cookies = await page.cookies('https://foo.com', 'https://baz.com');
cookies.sort((a, b) => a.name.localeCompare(b.name));
expect(cookies).toEqual([
expectCookieEquals(cookies, [
{
name: 'birdo',
value: 'tweets',
Expand Down Expand Up @@ -229,12 +231,13 @@ describe('Cookie specs', () => {
value: 'bar',
}
);
expect(
expectCookieEquals(
await page.evaluate(() => {
const cookies = document.cookie.split(';');
return cookies.map((cookie) => cookie.trim()).sort();
})
).toEqual(['foo=bar', 'password=123456']);
}),
['foo=bar', 'password=123456']
);
});
it('should have |expires| set to |-1| for session cookies', async () => {
const { page, server } = getTestState();
Expand All @@ -257,22 +260,25 @@ describe('Cookie specs', () => {
value: '123456',
});
const cookies = await page.cookies();
expect(cookies.sort((a, b) => a.name.localeCompare(b.name))).toEqual([
{
name: 'password',
value: '123456',
domain: 'localhost',
path: '/',
sameParty: false,
expires: -1,
size: 14,
httpOnly: false,
secure: false,
session: true,
sourcePort: 80,
sourceScheme: 'NonSecure',
},
]);
expectCookieEquals(
cookies.sort((a, b) => a.name.localeCompare(b.name)),
[
{
name: 'password',
value: '123456',
domain: 'localhost',
path: '/',
sameParty: false,
expires: -1,
size: 14,
httpOnly: false,
secure: false,
session: true,
sourcePort: 80,
sourceScheme: 'NonSecure',
},
]
);
});
itFailsFirefox('should set a cookie with a path', async () => {
const { page, server } = getTestState();
Expand All @@ -283,7 +289,7 @@ describe('Cookie specs', () => {
value: 'GRID',
path: '/grid.html',
});
expect(await page.cookies()).toEqual([
expectCookieEquals(await page.cookies(), [
{
name: 'gridcookie',
value: 'GRID',
Expand All @@ -301,7 +307,7 @@ describe('Cookie specs', () => {
]);
expect(await page.evaluate('document.cookie')).toBe('gridcookie=GRID');
await page.goto(server.EMPTY_PAGE);
expect(await page.cookies()).toEqual([]);
expectCookieEquals(await page.cookies(), []);
expect(await page.evaluate('document.cookie')).toBe('');
await page.goto(server.PREFIX + '/grid.html');
expect(await page.evaluate('document.cookie')).toBe('gridcookie=GRID');
Expand Down Expand Up @@ -390,8 +396,8 @@ describe('Cookie specs', () => {
value: 'best',
});
expect(await page.evaluate('document.cookie')).toBe('');
expect(await page.cookies()).toEqual([]);
expect(await page.cookies('https://www.example.com')).toEqual([
expectCookieEquals(await page.cookies(), []);
expectCookieEquals(await page.cookies('https://www.example.com'), [
{
name: 'example-cookie',
value: 'best',
Expand Down Expand Up @@ -432,7 +438,7 @@ describe('Cookie specs', () => {
);
expect(await page.frames()[1].evaluate('document.cookie')).toBe('');

expect(await page.cookies()).toEqual([
expectCookieEquals(await page.cookies(), [
{
name: 'localhost-cookie',
value: 'best',
Expand All @@ -449,7 +455,7 @@ describe('Cookie specs', () => {
},
]);

expect(await page.cookies(server.CROSS_PROCESS_PREFIX)).toEqual([
expectCookieEquals(await page.cookies(server.CROSS_PROCESS_PREFIX), [
{
name: '127-cookie',
value: 'worst',
Expand Down Expand Up @@ -503,23 +509,26 @@ describe('Cookie specs', () => {
expect(await page.frames()[1].evaluate('document.cookie')).toBe(
'127-same-site-cookie=best'
);
expect(await page.cookies(httpsServer.CROSS_PROCESS_PREFIX)).toEqual([
{
name: '127-same-site-cookie',
value: 'best',
domain: '127.0.0.1',
path: '/',
sameParty: false,
expires: -1,
size: 24,
httpOnly: false,
sameSite: 'None',
secure: true,
session: true,
sourcePort: 443,
sourceScheme: 'Secure',
},
]);
expectCookieEquals(
await page.cookies(httpsServer.CROSS_PROCESS_PREFIX),
[
{
name: '127-same-site-cookie',
value: 'best',
domain: '127.0.0.1',
path: '/',
sameParty: false,
expires: -1,
size: 24,
httpOnly: false,
sameSite: 'None',
secure: true,
session: true,
sourcePort: 443,
sourceScheme: 'Secure',
},
]
);
} finally {
await page.close();
await browser.close();
Expand Down
9 changes: 5 additions & 4 deletions test/defaultbrowsercontext.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
import expect from 'expect';
import {
expectCookieEquals,
getTestState,
setupTestBrowserHooks,
setupTestPageAndContextHooks,
Expand All @@ -24,14 +25,14 @@ import {
describe('DefaultBrowserContext', function () {
setupTestBrowserHooks();
setupTestPageAndContextHooks();
itFailsFirefox('page.cookies() should work', async () => {
it('page.cookies() should work', async () => {
const { page, server } = getTestState();

await page.goto(server.EMPTY_PAGE);
await page.evaluate(() => {
document.cookie = 'username=John Doe';
});
expect(await page.cookies()).toEqual([
expectCookieEquals(await page.cookies(), [
{
name: 'username',
value: 'John Doe',
Expand Down Expand Up @@ -59,7 +60,7 @@ describe('DefaultBrowserContext', function () {
expect(await page.evaluate(() => document.cookie)).toBe(
'username=John Doe'
);
expect(await page.cookies()).toEqual([
expectCookieEquals(await page.cookies(), [
{
name: 'username',
value: 'John Doe',
Expand Down Expand Up @@ -93,7 +94,7 @@ describe('DefaultBrowserContext', function () {
expect(await page.evaluate('document.cookie')).toBe('cookie1=1; cookie2=2');
await page.deleteCookie({ name: 'cookie2' });
expect(await page.evaluate('document.cookie')).toBe('cookie1=1');
expect(await page.cookies()).toEqual([
expectCookieEquals(await page.cookies(), [
{
name: 'cookie1',
value: '1',
Expand Down
23 changes: 23 additions & 0 deletions test/mocha-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import { Page } from '../lib/cjs/puppeteer/common/Page.js';
import { PuppeteerNode } from '../lib/cjs/puppeteer/node/Puppeteer.js';
import utils from './utils.js';
import rimraf from 'rimraf';
import expect from 'expect';

import { trackCoverage } from './coverage-utils.js';

Expand Down Expand Up @@ -277,3 +278,25 @@ export const mochaHooks = {
sinon.restore();
},
};

export const expectCookieEquals = (cookies, expectedCookies) => {
const { isChrome } = getTestState();
if (!isChrome) {
jschfflr marked this conversation as resolved.
Show resolved Hide resolved
// Only keep standard properties when testing on a browser other than Chrome.
expectedCookies = expectedCookies.map((cookie) => {
return {
domain: cookie.domain,
expires: cookie.expires,
httpOnly: cookie.httpOnly,
name: cookie.name,
path: cookie.path,
secure: cookie.secure,
session: cookie.session,
size: cookie.size,
value: cookie.value,
};
});
}

expect(cookies).toEqual(expectedCookies);
};