website/static/tests/tours/conditional_visibility.js

251 lines
8.8 KiB
JavaScript

/** @odoo-module */
import wTourUtils from '@website/js/tours/tour_utils';
const snippets = [
{
id: 's_text_image',
name: 'Text - Image',
},
{
id: "s_banner",
name: "Banner",
},
{
id: "s_popup",
name: "Popup",
},
];
function checkEyeIcon(snippetName, visible) {
const eyeIcon = visible ? "fa-eye" : "fa-eye-slash";
const openOrClose = visible ? "open" : "close";
const endExplanation = `should be ${openOrClose} in the "Invisible Elements" panel`;
const invisibleElPanel = "o_we_invisible_el_panel";
return {
content: `The eye icon of ${snippetName} ${endExplanation}`,
trigger:
`.${invisibleElPanel} .o_we_invisible_entry:contains("${snippetName}") i.${eyeIcon}`,
run: () => {}, // it is a check
};
}
function checkEyesIconAfterSave(footerIsHidden = true) {
const eyeIconChecks = [
checkEyeIcon("Header", false),
checkEyeIcon("Text - Image", true),
checkEyeIcon("Popup", false),
checkEyeIcon("Banner", true),
];
if (footerIsHidden) {
eyeIconChecks.push(checkEyeIcon("Footer", false));
}
return eyeIconChecks;
}
wTourUtils.registerWebsitePreviewTour('conditional_visibility_1', {
edition: true,
url: '/',
test: true,
}, () => [
wTourUtils.dragNDrop(snippets[0]),
wTourUtils.clickOnSnippet(snippets[0]),
wTourUtils.changeOption('ConditionalVisibility', 'we-toggler'),
{
content: 'click on conditional visibility',
trigger: '[data-name="visibility_conditional"]',
run: 'click',
},
{
content: 'click on utm medium toggler',
trigger: '[data-save-attribute="visibilityValueUtmMedium"] we-toggler',
run: 'click',
},
{
trigger: '[data-save-attribute="visibilityValueUtmMedium"] we-selection-items .o_we_m2o_search input',
content: 'Search for Email',
run: 'text Email',
},
{
trigger: '[data-save-attribute="visibilityValueUtmMedium"] we-selection-items [data-add-record="Email"]',
content: 'click on Email',
run: 'click',
},
...wTourUtils.clickOnSave(),
{
content: 'Check if the rule was applied',
extra_trigger: '.o_website_preview:only-child',
trigger: 'iframe #wrap',
allowInvisible: true,
run: function (actions) {
const style = window.getComputedStyle(this.$anchor[0].getElementsByClassName('s_text_image')[0]);
if (style.display !== 'none') {
console.error('error This item should be invisible and only visible if utm_medium === email');
}
},
},
...wTourUtils.clickOnEditAndWaitEditMode(),
{
content: 'Check if the element is visible as it should always be visible in edit view',
trigger: 'iframe #wrap .s_text_image',
run: function (actions) {
const style = window.getComputedStyle((this.$anchor[0]));
if (style.display === 'none') {
console.error('error This item should now be visible because utm_medium === email');
}
},
},
]);
wTourUtils.registerWebsitePreviewTour("conditional_visibility_3", {
edition: true,
test: true,
url: "/",
},
() => [
checkEyeIcon("Text - Image", true),
// Drag a "Banner" snippet on the website.
wTourUtils.dragNDrop(snippets[1]),
// Click on the "Banner" snippet.
wTourUtils.clickOnSnippet(snippets[1]),
wTourUtils.changeOption("ConditionalVisibility", "we-toggler"),
wTourUtils.changeOption("ConditionalVisibility", '[data-name="visibility_conditional"]'),
checkEyeIcon("Banner", true),
wTourUtils.goBackToBlocks(),
// Drag a "Popup" snippet on the website.
wTourUtils.dragNDrop(snippets[2]),
{
content: "Toggle the visibility of the popup",
in_modal: false,
trigger: ".o_we_invisible_el_panel .o_we_invisible_entry:contains('Popup')",
},
checkEyeIcon("Popup", false),
{
content: "Click on footer",
trigger: "iframe #wrapwrap footer",
},
wTourUtils.changeOption("HideFooter", "we-checkbox"),
checkEyeIcon("Footer", false),
{
content: "Click on Header",
trigger: "iframe #wrapwrap header",
},
wTourUtils.changeOption("TopMenuVisibility", "we-toggler"),
wTourUtils.changeOption("TopMenuVisibility", '[data-visibility="hidden"]'),
checkEyeIcon("Header", false),
{
content: "Toggle the visibility of the Banner snippet",
trigger: ".o_we_invisible_el_panel .o_we_invisible_entry:contains('Banner')",
},
checkEyeIcon("Banner", false),
...wTourUtils.clickOnSave(),
...wTourUtils.clickOnEditAndWaitEditMode(),
...checkEyesIconAfterSave(),
]);
wTourUtils.registerWebsitePreviewTour("conditional_visibility_4", {
edition: true,
test: true,
url: "/",
},
() => [
// Click on the "Text-Image" snippet.
wTourUtils.clickOnSnippet(snippets[0]),
{
content: "Click on the 'move down' option",
trigger: "iframe we-button.o_we_user_value_widget.fa-angle-down",
},
...checkEyesIconAfterSave(),
{
content: "Check the order on the 'Invisible Elements' panel",
trigger: ".o_we_invisible_el_panel div:nth-child(3):contains('Banner')",
run: () => {}, // it is a check
},
{
content: "Toggle the visibility of the Footer",
trigger: ".o_we_invisible_el_panel .o_we_invisible_entry:contains('Footer')",
},
{
content: "Check that the footer is visible",
trigger: "iframe #wrapwrap footer",
run: () => {}, // it is a check
},
// Click on the "Banner" snippet.
wTourUtils.clickOnSnippet(snippets[1]),
{
content: "Drag the 'Banner' snippet to the end of the page",
trigger: "iframe .o_overlay_move_options .o_move_handle",
run: "drag_and_drop_native iframe #wrapwrap footer",
},
...checkEyesIconAfterSave(false),
{
content: "Check the order on the 'Invisible Elements' panel",
trigger: ".o_we_invisible_el_panel div:nth-child(3):contains('Text - Image')",
run: () => {}, // it is a check
},
]);
wTourUtils.registerWebsitePreviewTour("conditional_visibility_5", {
edition: true,
test: true,
url: "/",
}, () => [
wTourUtils.dragNDrop(snippets[0]),
{
content: "Click on the image of the dragged snippet",
trigger: "iframe .s_text_image img",
},
wTourUtils.changeOption("DeviceVisibility", 'we-button[data-toggle-device-visibility="no_desktop"]'),
{
content: "Check that the Column has been added in the 'Invisible Elements' panel",
trigger: ".o_we_invisible_el_panel .o_we_invisible_entry:contains('Column')",
run: () => {}, // it is a check
},
{
content: "Click on the 'Text - Image' snippet",
trigger: "iframe .s_text_image",
},
wTourUtils.changeOption("ConditionalVisibility", 'we-button[data-toggle-device-visibility="no_desktop"]'),
{
content: "Check that the 'Text - Image' is the parent of 'Column' in the 'Invisible Elements' panel",
trigger: ".o_we_invisible_el_panel .o_we_invisible_root_parent.o_we_invisible_entry:contains('Text - Image') + ul .o_we_invisible_entry.o_we_sublevel_1:contains('Column')",
run: () => {}, // it is a check
},
{
content: "Click on the 'Text - Image' entry on the 'Invisible Elements' panel",
trigger: ".o_we_invisible_el_panel .o_we_invisible_root_parent.o_we_invisible_entry:contains('Text - Image')",
},
{
content: "Check that the snippet is visible on the website",
trigger: "iframe .s_text_image.o_snippet_desktop_invisible.o_snippet_override_invisible",
run: () => {}, // it is a check
},
wTourUtils.changeOption("ConditionalVisibility", 'we-button[data-toggle-device-visibility="no_mobile"]'),
{
content: "Check that the 'Text - Image' has been removed from the 'Invisible Elements' panel",
trigger: ".o_we_invisible_el_panel:not(.o_we_invisible_entry:contains('Text - Image'))",
run: () => {}, // it is a check
},
{
content: "Click on the 'Column' entry on the 'Invisible Elements' panel",
trigger: ".o_we_invisible_el_panel .o_we_invisible_entry:contains('Column')",
},
{
content: "Check that the column is visible on the website",
trigger: "iframe .s_text_image .row > .o_snippet_desktop_invisible.o_snippet_override_invisible",
run: () => {}, // it is a check
},
wTourUtils.changeOption("DeviceVisibility", 'we-button[data-toggle-device-visibility="no_mobile"]'),
{
content: "Check that the column has been removed from the 'Invisible Elements' panel",
trigger: "#oe_snippets:not(:has(.o_we_invisible_entry:contains('Column')))",
run: () => {}, // it is a check
},
{
content: "Activate mobile preview",
trigger: ".o_we_website_top_actions button[data-action='mobile']",
},
{
content: "Check that the 'Text - Image' is the parent of 'Column' in the 'Invisible Elements' panel",
trigger: ".o_we_invisible_el_panel .o_we_invisible_root_parent.o_we_invisible_entry:contains('Text - Image') + ul .o_we_invisible_entry.o_we_sublevel_1:contains('Column')",
run: () => {}, // it is a check
},
]);