diff --git a/packages/nc-gui/lang/en.json b/packages/nc-gui/lang/en.json index a8917fd1cc..f0b11ad747 100644 --- a/packages/nc-gui/lang/en.json +++ b/packages/nc-gui/lang/en.json @@ -1084,6 +1084,7 @@ }, "toggleMobileMode": "Toggle Mobile Mode", "startCommenting": "Start commenting!", + "noCommentsYet": "No comments yet!", "clearForm": "Clear Form", "addFieldFromFormView": "Add Field", "selectAllFields": "Select all fields", diff --git a/tests/playwright/pages/Dashboard/Grid/Column/index.ts b/tests/playwright/pages/Dashboard/Grid/Column/index.ts index 64d08946ba..ea7ef1f0c1 100644 --- a/tests/playwright/pages/Dashboard/Grid/Column/index.ts +++ b/tests/playwright/pages/Dashboard/Grid/Column/index.ts @@ -94,15 +94,15 @@ export class ColumnPageObject extends BasePage { ltarView?: string; }) { if (insertBeforeColumnTitle) { + await this.grid.get().locator(`th[data-title="${insertBeforeColumnTitle}"]`).scrollIntoViewIfNeeded(); await this.grid.get().locator(`th[data-title="${insertBeforeColumnTitle}"] .nc-ui-dt-dropdown`).click(); - if (isDisplayValue) { await expect(this.rootPage.locator('li[role="menuitem"]:has-text("Insert Before")')).toHaveCount(0); return; } - await this.rootPage.locator('li[role="menuitem"]:has-text("Insert Before"):visible').click(); } else if (insertAfterColumnTitle) { + await this.grid.get().locator(`th[data-title="${insertAfterColumnTitle}"]`).scrollIntoViewIfNeeded(); await this.grid.get().locator(`th[data-title="${insertAfterColumnTitle}"] .nc-ui-dt-dropdown`).click(); await this.rootPage.locator('li[role="menuitem"]:has-text("Insert After"):visible').click(); } else { diff --git a/tests/playwright/pages/Dashboard/common/Toolbar/Fields.ts b/tests/playwright/pages/Dashboard/common/Toolbar/Fields.ts index 06356e965f..4ad2af24b9 100644 --- a/tests/playwright/pages/Dashboard/common/Toolbar/Fields.ts +++ b/tests/playwright/pages/Dashboard/common/Toolbar/Fields.ts @@ -93,7 +93,7 @@ export class ToolbarFieldsPage extends BasePage { uiAction: () => this.get().locator(`.nc-fields-show-all-fields`).click(), requestUrlPathToMatch: isLocallySaved ? '/api/v1/db/public/' : '/api/v1/db/data/noco/', httpMethodsToMatch: ['GET'], - timeout: 10000, + timeout: 30000, // for Kanban, show all fields can take a long time }); await this.toolbar.clickFields(); } diff --git a/tests/playwright/tests/db/columns/columnMultiSelect.spec.ts b/tests/playwright/tests/db/columns/columnMultiSelect.spec.ts index 1b81f11289..f737a52518 100644 --- a/tests/playwright/tests/db/columns/columnMultiSelect.spec.ts +++ b/tests/playwright/tests/db/columns/columnMultiSelect.spec.ts @@ -244,6 +244,8 @@ test.describe('Multi select - filters', () => { options: ['foo', 'bar', 'baz'], }); + const selectOptions = ['', 'foo', 'bar', 'baz', 'foo,bar', 'foo,bar,baz']; + try { const tables = await api.dbTable.list(context.base.id); const rowAttributes = []; @@ -251,6 +253,7 @@ test.describe('Multi select - filters', () => { const row = { Id: i + 1, Title: `${i + 1}`, + MultiSelect: selectOptions[i], }; rowAttributes.push(row); } @@ -263,15 +266,6 @@ test.describe('Multi select - filters', () => { // page reload await page.reload(); - - await grid.cell.selectOption.select({ index: 1, columnHeader: 'MultiSelect', option: 'foo', multiSelect: true }); - await grid.cell.selectOption.select({ index: 2, columnHeader: 'MultiSelect', option: 'bar', multiSelect: true }); - await grid.cell.selectOption.select({ index: 3, columnHeader: 'MultiSelect', option: 'baz', multiSelect: true }); - await grid.cell.selectOption.select({ index: 4, columnHeader: 'MultiSelect', option: 'foo', multiSelect: true }); - await grid.cell.selectOption.select({ index: 4, columnHeader: 'MultiSelect', option: 'bar', multiSelect: true }); - await grid.cell.selectOption.select({ index: 5, columnHeader: 'MultiSelect', option: 'foo', multiSelect: true }); - await grid.cell.selectOption.select({ index: 5, columnHeader: 'MultiSelect', option: 'bar', multiSelect: true }); - await grid.cell.selectOption.select({ index: 5, columnHeader: 'MultiSelect', option: 'baz', multiSelect: true }); }); test.afterEach(async () => { diff --git a/tests/playwright/tests/db/views/viewForm.spec.ts b/tests/playwright/tests/db/views/viewForm.spec.ts index e242d1e21f..745602d896 100644 --- a/tests/playwright/tests/db/views/viewForm.spec.ts +++ b/tests/playwright/tests/db/views/viewForm.spec.ts @@ -934,6 +934,9 @@ test.describe('Form view: field validation', () => { message: 'Thank you for submitting the form', }); + // wait to ensure configured message is saved + await dashboard.rootPage.waitForTimeout(1000); + await dashboard.rootPage.goto(surveyLink); // fix me! kludge@hub; page wasn't getting loaded from previous step await dashboard.rootPage.reload();