UNPKG

cumulocity-cypress

Version:
141 lines (140 loc) 4.74 kB
const { _ } = Cypress; 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) => { res.body.cookieBanner = undefined; res.send(); }); }); }); Cypress.Commands.add("visitAndWaitForSelector", (url, language = "en", selector = "c8y-navigator-outlet c8y-app-icon", timeout = Cypress.config().pageLoadTimeout || 60000) => { const consoleProps = { url, language, selector, timeout, }; Cypress.log({ name: "visitAndWaitForSelector", message: url, consoleProps: () => consoleProps, }); cy.setLanguage(language); cy.visit(url); cy.get(selector, { timeout }).should("be.visible"); }); Cypress.Commands.add("setLanguage", (lang) => { globalThis.setLocale(lang); Cypress.log({ name: "setLanguage", message: lang, }); cy.intercept({ method: "GET", url: "/inventory/managedObjects?fragmentType=language*", }, (req) => { req.continue((res) => { const languageFragment = req.query.fragmentType.toString(); if (res.body[languageFragment]) { res.body[languageFragment] = lang; } else if (res.body.managedObjects && _.isArrayLike(res.body.managedObjects)) { res.body.managedObjects.forEach((mo) => { if (mo[languageFragment]) { mo[languageFragment] = lang; } }); } res.send(); }); }); window.localStorage.setItem("c8y_language", lang); Cypress.on("window:before:load", (window) => { window.localStorage.setItem("c8y_language", lang); }); }); Cypress.Commands.add("disableGainsight", () => { Cypress.log({ name: "disableGainsight", }); cy.intercept("/tenant/system/options/gainsight/api.key*", (req) => { req.reply({ statusCode: 404, body: {} }); throw new Error("Intercepted Gainsight API key call, but Gainsight should have been disabled. Failing..."); }).as("GainsightAPIKey"); cy.intercept("/tenant/currentTenant*", (req) => { req.continue((res) => { const customProperties = res.body.customProperties || {}; customProperties.gainsightEnabled = false; res.body.customProperties = customProperties; res.send(); }); }); }); export {};