import { test } from '@playwright/test'; import { DashboardPage } from '../pages/Dashboard'; import setup from '../setup'; test.describe('Relational Columns', () => { let dashboard: DashboardPage; let context: any; test.beforeEach(async ({ page }) => { context = await setup({ page }); dashboard = new DashboardPage(page, context.project); }); test('Relational columns: HM, BT, MM', async () => { // close 'Team & Auth' tab await dashboard.closeTab({ title: 'Team & Auth' }); ///////////// Has many // const cityList = [['Kabul'], ['Batna', 'Bchar', 'Skikda']]; await dashboard.treeView.openTable({ title: 'Country' }); for (let i = 0; i < cityList.length; i++) { await dashboard.grid.cell.verifyVirtualCell({ index: i, columnHeader: 'City List', count: cityList[i].length, value: cityList[i], }); } // click on expand icon, open child list await dashboard.grid.cell.inCellExpand({ index: 0, columnHeader: 'City List', }); await dashboard.childList.verify({ cardTitle: ['Kabul'], linkField: 'City', }); // open link record modal // await dashboard.childList.openLinkRecord({ linkTableTitle: 'City' }); await dashboard.linkRecord.verify([ 'A Corua (La Corua)', 'Abha', 'Abu Dhabi', 'Acua', 'Adana', 'Addis Abeba', 'Aden', 'Adoni', 'Ahmadnagar', 'Akishima', ]); await dashboard.linkRecord.close(); ///////////// Belongs to // await dashboard.treeView.openTable({ title: 'City' }); const countryList = [['Spain'], ['Saudi Arabia']]; for (let i = 0; i < countryList.length; i++) { await dashboard.grid.cell.verifyVirtualCell({ index: i, columnHeader: 'Country', count: countryList[i].length, value: countryList[i], }); } ///////////// Many to many // await dashboard.treeView.openTable({ title: 'Actor' }); const filmList = [ [ 'ACADEMY DINOSAUR', 'ANACONDA CONFESSIONS', 'ANGELS LIFE', 'BULWORTH COMMANDMENTS', 'CHEAPER CLYDE', 'COLOR PHILADELPHIA', 'ELEPHANT TROJAN', 'GLEAMING JAWBREAKER', 'HUMAN GRAFFITI', 'KING EVOLUTION', ], ]; for (let i = 0; i < filmList.length; i++) { await dashboard.grid.cell.verifyVirtualCell({ index: i, columnHeader: 'Film List', // Count hardwired to avoid verifying all 19 entries count: 19, value: filmList[i], }); } // click on expand icon, open child list await dashboard.grid.cell.inCellExpand({ index: 0, columnHeader: 'Film List', }); await dashboard.childList.verify({ cardTitle: filmList[0], linkField: 'Film', }); // open link record modal // await dashboard.childList.openLinkRecord({ linkTableTitle: 'Film' }); await dashboard.linkRecord.verify([ 'ACE GOLDFINGER', 'ADAPTATION HOLES', 'AFFAIR PREJUDICE', 'AFRICAN EGG', 'AGENT TRUMAN', 'AIRPLANE SIERRA', 'AIRPORT POLLOCK', 'ALABAMA DEVIL', 'ALADDIN CALENDAR', 'ALAMO VIDEOTAPE', ]); await dashboard.linkRecord.close(); }); });