// playwright-dev-page.ts import { expect, Locator, Page } from '@playwright/test'; import { BasePage } from './Base'; export class DashboardPage { readonly project: any; readonly page: Page; readonly tablesSideBar: Locator; readonly tabBar: Locator; readonly base: BasePage; constructor(page: Page, project: any) { this.page = page; this.base = new BasePage(page); this.project = project; this.tablesSideBar = page.locator('.nc-treeview-container'); this.tabBar = page.locator('.nc-tab-bar'); } async goto() { await this.page.goto(`http://localhost:3000/#/nc/${this.project.id}/auth`); } async gotoSettings() { await this.page.locator('[pw-data="nc-project-menu"]').click(); await this.page.locator('div.nc-project-menu-item:has-text(" Team & Settings")').click(); } async openTable({ title }: { title: string }) { await this.tablesSideBar.locator(`.nc-project-tree-tbl-${title}`).click(); await this.tabBar.textContent().then((text) => expect(text).toContain(title)); } async createTable({ title }: { title: string }) { await this.tablesSideBar.locator('.nc-add-new-table').click(); await this.page.locator('.ant-modal-body').waitFor() await this.page.locator('[placeholder="Enter table name"]').fill(title); await this.page.locator('button:has-text("Submit")').click(); await expect(this.page).toHaveURL(`http://localhost:3000/#/nc/${this.project.id}/table/${title}`); await this.page.locator('[pw-data="grid-load-spinner"]').waitFor({ state: 'hidden' }); } async verifyTableExistsInSidebar({ title }: { title: string }) { await expect(this.tablesSideBar.locator(`.nc-project-tree-tbl-${title}`)).toBeVisible(); } async verifyTableDoesNotExistInSidebar({ title }: { title: string }) { await expect(await this.tablesSideBar.locator(`.nc-project-tree-tbl-${title}`).count()).toBe(0); } async deleteTable({ title }: { title: string }) { await this.tablesSideBar.locator(`.nc-project-tree-tbl-${title}`).click({ button: 'right' }); await this.page.locator('div.nc-project-menu-item:has-text("Delete")').click(); await this.page.locator('button:has-text("Yes")').click(); await this.base.toastWait({ message:'Deleted table successfully' }) } async renameTable({ title, newTitle }: { title: string; newTitle: string }) { await this.tablesSideBar.locator(`.nc-project-tree-tbl-${title}`).click({ button: 'right' }); await this.page.locator('div.nc-project-menu-item:has-text("Rename")').click(); await this.page.locator('[placeholder="Enter table name"]').fill(newTitle); await this.page.locator('button:has-text("Submit")').click(); await this.base.toastWait({ message:'Table renamed successfully' }) } }