e2ed
Version:
E2E testing framework over Playwright
33 lines (25 loc) • 1.04 kB
text/typescript
import {setHeadersAndNavigateToUrl} from 'e2ed/actions';
import {LogEventType} from 'e2ed/constants';
import {getHeaderValue, log, replaceSetCookie} from 'e2ed/utils';
import type {Cookie, SetCookieHeaderString, StringHeaders, Url} from 'e2ed/types';
/**
* Navigate to the url and set custom page cookies.
*/
export const setPageCookiesAndNavigateToUrl = async (
url: Url,
pageCookies: readonly Cookie[],
): Promise<void> => {
const mapResponseHeaders = (headers: StringHeaders): StringHeaders => {
const setCookies = getHeaderValue(headers, 'set-cookie');
let cookiesArray = (setCookies ?? '')
.split('\n')
.map((line) => line.trim())
.filter(Boolean) as SetCookieHeaderString[];
for (const cookie of pageCookies) {
cookiesArray = replaceSetCookie(cookiesArray, cookie);
}
return {'set-cookie': cookiesArray.join('\n')};
};
log(`Navigate to ${url} and set page cookie`, {pageCookies, url}, LogEventType.Action);
await setHeadersAndNavigateToUrl(url, {mapResponseHeaders});
};