import { test } from "@playwright/test"; import { DashboardPage } from "../pages/Dashboard"; import { ToolbarPage } from "../pages/Dashboard/common/Toolbar"; import setup from "../setup"; test.describe("View", () => { let dashboard: DashboardPage, toolbar: ToolbarPage; let context: any; test.beforeEach(async ({ page }) => { context = await setup({ page }); dashboard = new DashboardPage(page, context.project); toolbar = toolbar = dashboard.kanban.toolbar; }); test("Kanban", async () => { // close 'Team & Auth' tab await dashboard.closeTab({ title: "Team & Auth" }); await dashboard.treeView.openTable({ title: "Film" }); await dashboard.viewSidebar.createKanbanView({ title: "Film Kanban", }); await dashboard.viewSidebar.verifyView({ title: "Film Kanban", index: 1, }); // configure stack-by field await toolbar.clickStackByField(); await toolbar.stackBy.click({ title: "Rating" }); // click again to close menu await toolbar.clickStackByField(); const kanban = dashboard.kanban; await kanban.verifyStackCount({ count: 6 }); await kanban.verifyStackOrder({ order: ["Uncategorized", "G", "PG", "PG-13", "R", "NC-17"], }); await kanban.verifyStackFooter({ count: [0, 178, 194, 223, 195, 210], }); await kanban.verifyCardCount({ count: [0, 25, 25, 25, 25, 25], }); // hide fields await toolbar.fields.hideAll(); await toolbar.fields.toggle({ title: "Title" }); await kanban.verifyCardCount({ count: [0, 25, 25, 25, 25, 25], }); // verify card order const order = [ ["ACE GOLDFINGER", "AFFAIR PREJUDICE", "AFRICAN EGG"], ["ACADEMY DINOSAUR", "AGENT TRUMAN", "ALASKA PHANTOM"], ["AIRPLANE SIERRA", "ALABAMA DEVIL", "ALTER VICTORY"], ["AIRPORT POLLOCK", "ALONE TRIP", "AMELIE HELLFIGHTERS"], ["ADAPTATION HOLES", "ALADDIN CALENDAR", "ALICE FANTASIA"], ]; for (let i = 1; i <= order.length; i++) await kanban.verifyCardOrder({ stackIndex: i, order: order[i - 1], }); // // verify inter stack drag-drop // await kanban.dragDropCard({ // from: "ACE GOLDFINGER", // to: "ACADEMY DINOSAUR", // }); // verify drag drop stack await kanban.dragDropStack({ from: 1, // G to: 2, // PG }); await kanban.verifyStackOrder({ order: ["Uncategorized", "PG", "G", "PG-13", "R", "NC-17"], }); // verify drag drop stack await kanban.dragDropStack({ from: 2, // G to: 1, // PG }); await kanban.verifyStackOrder({ order: ["Uncategorized", "G", "PG", "PG-13", "R", "NC-17"], }); // verify sort await toolbar.sort.addSort({ columnTitle: "Title", isAscending: false, isLocallySaved: false, }); // verify card order const order2 = [ ["YOUNG LANGUAGE", "WEST LION"], ["WORST BANGER", "WORDS HUNTER"], ]; for (let i = 1; i <= order2.length; i++) await kanban.verifyCardOrder({ stackIndex: i, order: order2[i - 1], }); await toolbar.sort.resetSort(); // verify card order const order3 = [ ["ACE GOLDFINGER", "AFFAIR PREJUDICE", "AFRICAN EGG"], ["ACADEMY DINOSAUR", "AGENT TRUMAN", "ALASKA PHANTOM"], ]; for (let i = 1; i <= order3.length; i++) await kanban.verifyCardOrder({ stackIndex: i, order: order3[i - 1], }); // verify filter await toolbar.filter.addNew({ columnTitle: "Title", opType: "is like", value: "BA", isLocallySaved: false, }); // verify card order const order4 = [ ["BAKED CLEOPATRA", "BALLROOM MOCKINGBIRD"], ["ARIZONA BANG", "EGYPT TENENBAUMS"], ]; for (let i = 1; i <= order4.length; i++) await kanban.verifyCardOrder({ stackIndex: i, order: order4[i - 1], }); await toolbar.filter.resetFilter(); const order5 = [ ["ACE GOLDFINGER", "AFFAIR PREJUDICE", "AFRICAN EGG"], ["ACADEMY DINOSAUR", "AGENT TRUMAN", "ALASKA PHANTOM"], ]; for (let i = 1; i <= order5.length; i++) await kanban.verifyCardOrder({ stackIndex: i, order: order5[i - 1], }); await dashboard.rootPage.waitForTimeout(1000); }); test("Kanban view operations", async () => { // close 'Team & Auth' tab await dashboard.closeTab({ title: "Team & Auth" }); await dashboard.treeView.openTable({ title: "Film" }); await dashboard.viewSidebar.createKanbanView({ title: "Film Kanban", }); await dashboard.viewSidebar.verifyView({ title: "Film Kanban", index: 1, }); await toolbar.sort.addSort({ columnTitle: "Title", isAscending: false, isLocallySaved: false, }); await toolbar.filter.addNew({ columnTitle: "Title", opType: "is like", value: "BA", isLocallySaved: false, }); await toolbar.fields.hideAll(); await toolbar.fields.toggle({ title: "Title" }); await dashboard.viewSidebar.copyView({ title: "Film Kanban" }); await dashboard.viewSidebar.verifyView({ title: "Kanban-1", index: 2, }); const kanban = dashboard.kanban; await kanban.verifyStackCount({ count: 6 }); await kanban.verifyStackOrder({ order: ["Uncategorized", "G", "PG", "PG-13", "R", "NC-17"], }); await kanban.verifyStackFooter({ count: [0, 4, 5, 8, 6, 6], }); await kanban.verifyCardCount({ count: [0, 4, 5, 8, 6, 6], }); // verify card order const order2 = [ ["BAREFOOT MANCHURIAN", "BARBARELLA STREETCAR"], ["WORST BANGER", "PRESIDENT BANG"], ]; for (let i = 1; i <= order2.length; i++) await kanban.verifyCardOrder({ stackIndex: i, order: order2[i - 1], }); await dashboard.viewSidebar.deleteView({ title: "Kanban-1" }); /////////////////////////////////////////////// await dashboard.viewSidebar.openView({ title: "Film Kanban" }); // add new stack await kanban.addNewStack({ title: "Test" }); await dashboard.rootPage.waitForTimeout(1000); await kanban.verifyStackCount({ count: 7 }); await kanban.verifyStackOrder({ order: ["Uncategorized", "G", "PG", "PG-13", "R", "NC-17", "Test"], }); // collapse stack await kanban.verifyCollapseStackCount({ count: 0 }); await kanban.collapseStack({ index: 0 }); await kanban.verifyCollapseStackCount({ count: 1 }); await kanban.expandStack({ index: 0 }); await kanban.verifyCollapseStackCount({ count: 0 }); // add record to stack & verify await toolbar.fields.hideAll(); await toolbar.fields.toggleShowSystemFields(); await toolbar.fields.toggle({ title: "LanguageId" }); await toolbar.fields.toggle({ title: "Title" }); await toolbar.sort.resetSort(); await toolbar.filter.resetFilter(); await kanban.addCard({ stackIndex: 6 }); await dashboard.expandedForm.fillField({ columnTitle: "Title", value: "New record", }); await dashboard.expandedForm.fillField({ columnTitle: "LanguageId", value: "1", }); // todo: Check why kanban doesnt reload the rows data await dashboard.expandedForm.save({ waitForRowsData: false }); await kanban.verifyStackCount({ count: 7 }); await kanban.verifyStackOrder({ order: ["Uncategorized", "G", "PG", "PG-13", "R", "NC-17", "Test"], }); await kanban.verifyCardCount({ count: [0, 25, 25, 25, 25, 25, 1], }); // delete stack await kanban.deleteStack({ index: 6 }); await dashboard.rootPage.waitForTimeout(1000); await kanban.verifyStackCount({ count: 6 }); await kanban.verifyStackOrder({ order: ["Uncategorized", "G", "PG", "PG-13", "R", "NC-17"], }); await kanban.verifyCardCount({ count: [1, 25, 25, 25, 25, 25], }); }); });