blob: 81f244132373d7c3b800bd96622491e23951a37f [file] [log] [blame]
(async function(testRunner) {
const {dp, page} = await testRunner.startBlank(
`Tests that cookies are read and written.`);
async function logCookies(title, browserContextId) {
var data = (await dp.Storage.getCookies({ browserContextId })).result;
testRunner.log(`\n${title}: ${data.cookies.length} cookies`);
data.cookies.sort((a, b) => a.name.localeCompare(b.name));
for (var cookie of data.cookies) {
var suffix = ''
if (cookie.secure)
suffix += `, secure`;
if (cookie.httpOnly)
suffix += `, httpOnly`;
if (cookie.session)
suffix += `, session`;
if (cookie.sameSite)
suffix += `, ${cookie.sameSite}`;
if (cookie.expires !== -1)
suffix += `, expires`;
testRunner.log(`name: ${cookie.name}, value: ${cookie.value}, domain: ${cookie.domain}, path: ${cookie.path}${suffix}`);
}
const body = (await dp.Runtime.evaluate({
expression: `
fetch('/inspector-protocol/network/resources/echo-headers.php?headers=HTTP_COOKIE',
{ credentials: 'same-origin' })
.then(r => r.text())`,
awaitPromise: true,
returnByValue: true
})).result.result.value;
testRunner.log(`Cookies as seen on server: ${JSON.stringify(body)}`);
}
async function setCookieViaFetch() {
await dp.Runtime.evaluate({
expression: `fetch('/inspector-protocol/network/resources/cookie.pl', { credentials: 'same-origin' })`,
awaitPromise: true
});
}
testRunner.runTestSuite([
async function testPageContext() {
await logCookies('Initial');
await setCookieViaFetch();
await logCookies('Post-fetch');
const cookies = [
{url: 'http://127.0.0.1', name: 'foo', value: 'bar1'},
{url: 'http://127.0.0.1', name: 'foo', value: 'second bar2'},
{url: 'http://127.0.0.1', name: 'foo2', value: 'bar1'}
];
await dp.Storage.setCookies({cookies});
await logCookies('Post-set');
await dp.Storage.clearCookies();
await logCookies('Post-clear');
},
async function testInvalidContext() {
var data = (await dp.Storage.getCookies({ browserContextId: 'invalid' }));
testRunner.log(data);
}
]);
})