UNPKG

cumulocity-cypress

Version:
79 lines (78 loc) 2.65 kB
Cypress.Commands.add("hideCookieBanner", () => { Cypress.log({ name: "hideCookieBanner", }); cy.acceptCookieBanner(true, true, true); }); Cypress.Commands.add("acceptCookieBanner", (required = true, functional = true, marketing = true) => { const COOKIE_NAME = "acceptCookieNotice"; const consoleProps = { required, functional, marketing, }; Cypress.log({ name: "acceptCookieBanner", message: "", consoleProps: () => consoleProps, }); const setLocalCookie = (c) => { const cookie = JSON.stringify(c); window.localStorage.removeItem("__ccHideCookieBanner"); Cypress.on("window:before:load", (window) => { window.localStorage.setItem(COOKIE_NAME, cookie); }); window.localStorage.setItem(COOKIE_NAME, cookie); }; setLocalCookie({ required, functional, marketing }); cy.intercept({ pathname: /\/apps\/public\/public-options(@app-[^/]+)?\/options.json/, }, (request) => { request.on("before:response", (response) => { if (response.statusCode !== 200) { return; } if (window.localStorage.getItem("__ccHideCookieBanner") === "false") { return; } const policyVersion = response.body.cookieBanner?.policyVersion; const denyCookies = { required: !!required, functional: !!functional, marketing: !!marketing, }; if (policyVersion != null) { denyCookies.policyVersion = policyVersion; } setLocalCookie(denyCookies); }); }); }); Cypress.Commands.add("showCookieBanner", () => { Cypress.log({ name: "showCookieBanner", }); Cypress.on("window:before:load", (window) => { window.localStorage.removeItem("acceptCookieNotice"); }); window.localStorage.removeItem("acceptCookieNotice"); window.localStorage.setItem("__ccHideCookieBanner", "false"); }); Cypress.Commands.add("disableCookieBanner", () => { Cypress.log({ name: "disableCookieBanner", message: "", }); cy.intercept({ pathname: /\/apps\/public\/public-options(@app-[^/]+)?\/options.json/, }, (req) => { req.continue((res) => { // in case of e.g. a 404 on the public options, do not try to modify the body if (res.statusCode == 200 && typeof res.body === "object") { res.body.cookieBanner = undefined; } res.send(); }); }); }); export {};