import { test } from "@playwright/test"; import { DashboardPage } from "../pages/Dashboard"; import setup from "../setup"; // Add formula to be verified here & store expected results for 5 rows // Column data from City table (Sakila DB) /** * City LastUpdate Address List Country * A Corua (La Corua) 2006-02-15 04:45:25 939 Probolinggo Loop Spain * Abha 2006-02-15 04:45:25 733 Mandaluyong Place Saudi Arabia * Abu Dhabi 2006-02-15 04:45:25 535 Ahmadnagar Manor United Arab Emirates * Acua 2006-02-15 04:45:25 1789 Saint-Denis Parkway Mexico * Adana 2006-02-15 04:45:25 663 Baha Blanca Parkway Turkey */ const formulaData = [ { formula: "1 + 1", result: ["2", "2", "2", "2", "2"], }, { formula: "ADD({CityId}, {CountryId}) + AVG({CityId}, {CountryId}) + LEN({City})", result: ["150", "130", "165", "100", "158"], }, { formula: `WEEKDAY("2022-07-19")`, result: ["1", "1", "1", "1", "1"], }, { formula: `WEEKDAY("2022-07-19", "sunday")`, result: ["2", "2", "2", "2", "2"], }, { formula: `CONCAT(UPPER({City}), LOWER({City}), TRIM(' trimmed '))`, result: [ '"A CORUA (LA CORUA)a corua (la corua)trimmed"', '"ABHAabhatrimmed"', '"ABU DHABIabu dhabitrimmed"', '"ACUAacuatrimmed"', '"ADANAadanatrimmed"', ], }, { formula: `CEILING(1.4) + FLOOR(1.6) + ROUND(2.5) + MOD({CityId}, 3) + MIN({CityId}, {CountryId}) + MAX({CityId}, {CountryId})`, result: ['"95"', '"92"', '"110"', '"71"', '"110"'], }, { formula: `LOG({CityId}) + EXP({CityId}) + POWER({CityId}, 3) + SQRT({CountryId})`, result: [ "13.04566088154786", "25.137588417628013", "58.23402483297667", "127.73041108667896", "284.8714548168068", ], }, { formula: `NOW()`, result: ["1", "1", "1", "1", "1"], }, ]; test.describe("Virtual Columns", () => { let dashboard: DashboardPage; let context: any; test.beforeEach(async ({ page }) => { context = await setup({ page }); dashboard = new DashboardPage(page, context.project); }); async function formulaResultVerify({ title, result, }: { title: string; result: string[]; }) { for (let i = 0; i < result.length; i++) { await dashboard.grid.cell.verify({ index: i, columnHeader: title, value: result[i], }); } } test("Formula", async () => { // close 'Team & Auth' tab await dashboard.closeTab({ title: "Team & Auth" }); await dashboard.treeView.openTable({ title: "City" }); // Create formula column await dashboard.grid.column.create({ title: "NC_MATH_0", type: "Formula", formula: formulaData[1].formula, }); // verify different formula's for (let i = 1; i < formulaData.length; i++) { await dashboard.grid.column.openEdit({ title: "NC_MATH_0", type: "Formula", formula: formulaData[i].formula, }); await dashboard.grid.column.save({ isUpdated: true }); if (formulaData[i].formula !== `NOW()`) { await formulaResultVerify({ title: "NC_MATH_0", result: formulaData[i].result, }); } } await dashboard.closeTab({ title: "City" }); }); });