Files
enterprise-addons/sign/static/tests/tours/sign_template_creation_tour.js
T

257 lines
9.0 KiB
JavaScript

import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_utils";
import { _t } from "@web/core/l10n/translation";
import tourUtils from "@sign/js/tours/tour_utils";
export function createSelectionRectangle(viewerContainer, page, startPos = 0.25, endPos = 0.75) {
const pageRect = page.getBoundingClientRect();
const startX = pageRect.width * startPos;
const startY = pageRect.height * startPos;
const endX = pageRect.width * endPos;
const endY = pageRect.height * endPos;
const mousemoveEvent = new MouseEvent("mousemove", {
bubbles: true,
clientX: startX,
clientY: startY,
});
viewerContainer.dispatchEvent(mousemoveEvent);
const mousedownEvent = new MouseEvent("mousedown", {
bubbles: true,
clientX: startX,
clientY: startY,
button: 0,
});
viewerContainer.dispatchEvent(mousedownEvent);
const mousemoveEvent2 = new MouseEvent("mousemove", {
bubbles: true,
clientX: endX,
clientY: endY,
});
viewerContainer.dispatchEvent(mousemoveEvent2);
const mouseupEvent = new MouseEvent("mouseup", {
bubbles: true,
clientX: endX,
clientY: endY,
});
viewerContainer.dispatchEvent(mouseupEvent);
}
registry.category("web_tour.tours").add("sign_template_creation_tour", {
url: "/odoo?debug=1",
steps: () => [
stepUtils.showAppsMenuItem(),
{
content: "Open Sign App",
trigger: '.o_app[data-menu-xmlid="sign.menu_document"]',
run: "click",
},
{
content: "Click on Template Menu",
trigger: 'a[data-menu-xmlid="sign.sign_template_menu"]',
tooltipPosition: "bottom",
run: "click",
},
{
trigger: ".o_last_breadcrumb_item > span:contains('Templates')",
},
{
content: "Remove My Favorites filter",
trigger: ".o_cp_searchview .o_facet_remove",
run: "click",
},
{
content: 'Search template "blank_template"',
trigger: ".o_cp_searchview input",
run: "fill blank_template",
},
{
content: "Search Document Name",
trigger: ".o_searchview_autocomplete .o-dropdown-item:first",
run: "click",
},
{
content: "Enter Template Edit Mode",
trigger: '.o_kanban_record span:contains("blank_template")',
run: "click",
},
{
content: "Wait for iframe to load PDF",
trigger: ":iframe #viewerContainer",
},
{
content: "Wait for page to be loaded",
trigger: ":iframe .page[data-page-number='1'] .textLayer",
timeout: 30000, //In view mode, pdf loading can take a long time
},
{
content: "Enter Template Edit Mode",
trigger: ".fa-pencil.me-2:not(:visible)",
run: "click",
},
{
content: "Edit Signer Role",
trigger: ".o_input.form-control.bg-transparent.rounded-0.pe-1",
run: "edit Signer 1-Test && click body",
},
{
content: "Drop Signature Item",
trigger: ".o_sign_field_type_button:contains(" + _t("Signature") + ")",
run({ queryFirst }) {
const to = queryFirst(`:iframe .page[data-page-number="1"]`);
tourUtils.dragAndDropSignItemAtHeight(this.anchor, to, 0.5, 0.25);
},
},
{
content: "Click on Add Signer",
trigger: ".btn.btn-link.fs-5.m-0",
run: "click",
},
{
content: "Open Sign Item Dropdown",
trigger: ".o_sign_sidebar_signer_selected .o_sign_sidebar_icon.o-dropdown",
run: "click",
},
{
content: "Click on Edit",
trigger: ".o-dropdown-item:contains('Edit')",
run: "click",
},
{
content: "Edit Name",
trigger: "#name_0",
run: "click && edit Test Signer && click body",
},
{
content: "Click on Save",
trigger: ".btn.btn-primary.o_form_button_save",
run: "click",
},
{
content: "Drop Signature Item",
trigger: ".o_sign_field_type_button:contains(" + _t("Signature") + ")",
run({ queryFirst }) {
const to = queryFirst(`:iframe .page[data-page-number="1"]`);
tourUtils.dragAndDropSignItemAtHeight(this.anchor, to, 0.25, 0.15);
},
},
{
content: "Drop Name Sign Item",
trigger: ".o_sign_field_type_button:contains(" + _t("Name") + ")",
run({ queryFirst }) {
const to = queryFirst(`:iframe .page[data-page-number="1"]`);
tourUtils.dragAndDropSignItemAtHeight(this.anchor, to, 0.25, 0.25);
},
},
{
content: "Drop Text Sign Item",
trigger: ".o_sign_field_type_button:contains(" + _t("Text") + ")",
run({ queryFirst }) {
const to = queryFirst(`:iframe .page[data-page-number="1"]`);
tourUtils.dragAndDropSignItemAtHeight(this.anchor, to, 0.15, 0.25);
},
},
{
content: "Test multi-select by creating a selection rectangle",
trigger: ":iframe .page[data-page-number='1']",
run({ queryFirst }) {
const viewerContainer = queryFirst(`:iframe #viewerContainer`);
const page = queryFirst(`:iframe .page[data-page-number="1"]`);
createSelectionRectangle(viewerContainer, page, 0.25, 0.75);
},
},
{
content: "Verify items are selected",
trigger: ":iframe .o_sign_sign_item.multi_selected",
},
{
content: "Test copy functionality with Ctrl+C",
trigger: ":iframe .o_sign_sign_item.multi_selected",
run() {
const keyEvent = new KeyboardEvent("keydown", {
key: "c",
code: "KeyC",
ctrlKey: true,
bubbles: true,
});
document.querySelector("iframe").contentDocument.dispatchEvent(keyEvent);
},
},
{
content: "Click elsewhere to prepare for paste",
trigger: ":iframe .page[data-page-number='1']",
run({ queryFirst, click }) {
const page = queryFirst(`:iframe .page[data-page-number="1"]`);
const pageRect = page.getBoundingClientRect();
click({
x: pageRect.left + pageRect.width * 0.8,
y: pageRect.top + pageRect.height * 0.8,
});
},
},
{
content: "Test paste functionality with Ctrl+V",
trigger: ":iframe .page[data-page-number='1']",
run() {
const keyEvent = new KeyboardEvent("keydown", {
key: "v",
code: "KeyV",
ctrlKey: true,
bubbles: true,
});
document.querySelector("iframe").contentDocument.dispatchEvent(keyEvent);
},
},
{
content: "Test multi-select by creating a selection rectangle",
trigger: ":iframe .page[data-page-number='1']",
run({ queryFirst }) {
const viewerContainer = queryFirst(`:iframe #viewerContainer`);
const page = queryFirst(`:iframe .page[data-page-number="1"]`);
createSelectionRectangle(viewerContainer, page, 0.25, 0.75);
},
},
{
content: "Verify items are selected",
trigger: ":iframe .o_sign_sign_item.multi_selected",
},
// Testing if search works by searching for letter 'a'.
{
content: "Click on the find button",
trigger: ":iframe #viewFindButton",
run: "click",
},
{
content: "Search for letter 'a'",
trigger: ":iframe #findInput",
run: "fill a",
},
{
content: "Verify the letter is highlighted",
trigger: ":iframe .highlight",
},
{
content: "Click on document name text to make it editable",
trigger: ".o_sign_sidebar_document_name_text",
run: "click",
},
{
content: "Click document name edit button",
trigger: ".o_sign_sidebar_document_name .fa-pencil:not(:visible)",
run: "click",
},
{
content: "Change document name",
trigger: ".o_sign_document_name_input",
run: "edit new-document-name && click body",
},
{
trigger: ".breadcrumb .o_back_button",
run: "click",
},
],
});