mirror of https://github.com/nocodb/nocodb
Raju Udava
1 year ago
77 changed files with 1114 additions and 477 deletions
@ -1,9 +1,9 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { SharedFormPage } from '../../pages/SharedForm'; |
import { SharedFormPage } from '../../../pages/SharedForm'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { AccountPage } from '../../pages/Account'; |
import { AccountPage } from '../../../pages/Account'; |
||||||
import { AccountLicensePage } from '../../pages/Account/License'; |
import { AccountLicensePage } from '../../../pages/Account/License'; |
||||||
|
|
||||||
test.describe('Attachment column', () => { |
test.describe('Attachment column', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,7 +1,7 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { GridPage } from '../../pages/Dashboard/Grid'; |
import { GridPage } from '../../../pages/Dashboard/Grid'; |
||||||
|
|
||||||
interface ExpectedBarcodeData { |
interface ExpectedBarcodeData { |
||||||
referencedValue: string; |
referencedValue: string; |
@ -1,7 +1,7 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
import { UITypes } from 'nocodb-sdk'; |
import { UITypes } from 'nocodb-sdk'; |
||||||
import { Api } from 'nocodb-sdk'; |
import { Api } from 'nocodb-sdk'; |
||||||
let api: Api<any>; |
let api: Api<any>; |
@ -1,6 +1,6 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
const dateTimeData = [ |
const dateTimeData = [ |
||||||
{ |
{ |
@ -1,6 +1,6 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
// Storing one additional dummy value "10" at end of every input array
|
// Storing one additional dummy value "10" at end of every input array
|
||||||
// this will trigger update to previously committed data
|
// this will trigger update to previously committed data
|
@ -1,7 +1,7 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup, { NcContext } from '../../setup'; |
import setup, { NcContext } from '../../../setup'; |
||||||
import { isPg, isSqlite } from '../../setup/db'; |
import { isPg, isSqlite } from '../../../setup/db'; |
||||||
|
|
||||||
// Add formula to be verified here & store expected results for 5 rows
|
// Add formula to be verified here & store expected results for 5 rows
|
||||||
// Column data from City table (Sakila DB)
|
// Column data from City table (Sakila DB)
|
@ -1,7 +1,7 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { GridPage } from '../../pages/Dashboard/Grid'; |
import { GridPage } from '../../../pages/Dashboard/Grid'; |
||||||
|
|
||||||
test.describe('Geo Data column', () => { |
test.describe('Geo Data column', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,6 +1,6 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('LTAR create & update', () => { |
test.describe('LTAR create & update', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,6 +1,6 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('Virtual columns', () => { |
test.describe('Virtual columns', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,9 +1,9 @@ |
|||||||
import { expect, Locator, test } from '@playwright/test'; |
import { expect, Locator, test } from '@playwright/test'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { Api, UITypes } from 'nocodb-sdk'; |
import { Api, UITypes } from 'nocodb-sdk'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { GridPage } from '../../pages/Dashboard/Grid'; |
import { GridPage } from '../../../pages/Dashboard/Grid'; |
||||||
import { getTextExcludeIconText } from '../utils/general'; |
import { getTextExcludeIconText } from '../../utils/general'; |
||||||
let api: Api<any>; |
let api: Api<any>; |
||||||
const recordCount = 10; |
const recordCount = 10; |
||||||
|
|
@ -1,6 +1,6 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
const columns = [ |
const columns = [ |
||||||
{ |
{ |
@ -1,8 +1,8 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { GridPage } from '../../pages/Dashboard/Grid'; |
import { GridPage } from '../../../pages/Dashboard/Grid'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
|
|
||||||
test.describe('Multi select', () => { |
test.describe('Multi select', () => { |
||||||
let dashboard: DashboardPage, grid: GridPage; |
let dashboard: DashboardPage, grid: GridPage; |
@ -1,7 +1,7 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { GridPage } from '../../pages/Dashboard/Grid'; |
import { GridPage } from '../../../pages/Dashboard/Grid'; |
||||||
|
|
||||||
type ExpectedQrCodeData = { |
type ExpectedQrCodeData = { |
||||||
referencedValue: string; |
referencedValue: string; |
@ -1,7 +1,7 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
|
|
||||||
test.describe('Rating - cell, filter, sort', () => { |
test.describe('Rating - cell, filter, sort', () => { |
||||||
let dashboard: DashboardPage, toolbar: ToolbarPage; |
let dashboard: DashboardPage, toolbar: ToolbarPage; |
@ -1,6 +1,6 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('Relational Columns', () => { |
test.describe('Relational Columns', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,8 +1,8 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { GridPage } from '../../pages/Dashboard/Grid'; |
import { GridPage } from '../../../pages/Dashboard/Grid'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
|
|
||||||
test.describe('Single select', () => { |
test.describe('Single select', () => { |
||||||
let dashboard: DashboardPage, grid: GridPage; |
let dashboard: DashboardPage, grid: GridPage; |
@ -1,10 +1,10 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
import { LoginPage } from '../../pages/LoginPage'; |
import { LoginPage } from '../../../pages/LoginPage'; |
||||||
import { ProjectsPage } from '../../pages/ProjectsPage'; |
import { ProjectsPage } from '../../../pages/ProjectsPage'; |
||||||
import { getDefaultPwd } from '../utils/general'; |
import { getDefaultPwd } from '../../utils/general'; |
||||||
|
|
||||||
test.describe('Shared base', () => { |
test.describe('Shared base', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,9 +1,9 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { GalleryPage } from '../../pages/Dashboard/Gallery'; |
import { GalleryPage } from '../../../pages/Dashboard/Gallery'; |
||||||
import { GridPage } from '../../pages/Dashboard/Grid'; |
import { GridPage } from '../../../pages/Dashboard/Grid'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
|
|
||||||
test.describe('Expanded form URL', () => { |
test.describe('Expanded form URL', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,13 +1,13 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
import { UITypes } from 'nocodb-sdk'; |
import { UITypes } from 'nocodb-sdk'; |
||||||
import { Api } from 'nocodb-sdk'; |
import { Api } from 'nocodb-sdk'; |
||||||
import { rowMixedValue } from '../../setup/xcdb-records'; |
import { rowMixedValue } from '../../../setup/xcdb-records'; |
||||||
import dayjs from 'dayjs'; |
import dayjs from 'dayjs'; |
||||||
import { createDemoTable } from '../../setup/demoTable'; |
import { createDemoTable } from '../../../setup/demoTable'; |
||||||
import { isPg } from '../../setup/db'; |
import { isPg } from '../../../setup/db'; |
||||||
|
|
||||||
let dashboard: DashboardPage, toolbar: ToolbarPage; |
let dashboard: DashboardPage, toolbar: ToolbarPage; |
||||||
let context: any; |
let context: any; |
@ -1,8 +1,8 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
import { FormPage } from '../../pages/Dashboard/Form'; |
import { FormPage } from '../../../pages/Dashboard/Form'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
// Skip for now as it is not working in CI atm
|
// Skip for now as it is not working in CI atm
|
||||||
test.describe.skip('Find row by scanner', () => { |
test.describe.skip('Find row by scanner', () => { |
@ -1,9 +1,9 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { airtableApiBase, airtableApiKey } from '../../constants'; |
import { airtableApiBase, airtableApiKey } from '../../../constants'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { quickVerify } from '../../quickTests/commonTest'; |
import { quickVerify } from '../../../quickTests/commonTest'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { isPg, isSqlite } from '../../setup/db'; |
import { isPg, isSqlite } from '../../../setup/db'; |
||||||
|
|
||||||
test.describe('Import', () => { |
test.describe('Import', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,7 +1,7 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { GridPage } from '../../pages/Dashboard/Grid'; |
import { GridPage } from '../../../pages/Dashboard/Grid'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { Api, UITypes } from 'nocodb-sdk'; |
import { Api, UITypes } from 'nocodb-sdk'; |
||||||
|
|
||||||
let api: Api<any>; |
let api: Api<any>; |
@ -1,8 +1,8 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { SettingsPage, SettingTab } from '../../pages/Dashboard/Settings'; |
import { SettingsPage, SettingTab } from '../../../pages/Dashboard/Settings'; |
||||||
import setup, { NcContext } from '../../setup'; |
import setup, { NcContext } from '../../../setup'; |
||||||
import { isMysql, isPg, isSqlite, mysqlExec, pgExec, sqliteExec } from '../../setup/db'; |
import { isMysql, isPg, isSqlite, mysqlExec, pgExec, sqliteExec } from '../../../setup/db'; |
||||||
|
|
||||||
test.describe('Meta sync', () => { |
test.describe('Meta sync', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,8 +1,8 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
import { FormPage } from '../../pages/Dashboard/Form'; |
import { FormPage } from '../../../pages/Dashboard/Form'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('Mobile Mode', () => { |
test.describe('Mobile Mode', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,6 +1,6 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('Grid pagination', () => { |
test.describe('Grid pagination', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,7 +1,7 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { GridPage } from '../../pages/Dashboard/Grid'; |
import { GridPage } from '../../../pages/Dashboard/Grid'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('Table Column Operations', () => { |
test.describe('Table Column Operations', () => { |
||||||
let grid: GridPage, dashboard: DashboardPage; |
let grid: GridPage, dashboard: DashboardPage; |
@ -1,12 +1,12 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { knex } from 'knex'; |
import { knex } from 'knex'; |
||||||
import { Api, UITypes } from 'nocodb-sdk'; |
import { Api, UITypes } from 'nocodb-sdk'; |
||||||
import { ProjectsPage } from '../../pages/ProjectsPage'; |
import { ProjectsPage } from '../../../pages/ProjectsPage'; |
||||||
import { isMysql, isPg, isSqlite } from '../../setup/db'; |
import { isMysql, isPg, isSqlite } from '../../../setup/db'; |
||||||
import { getKnexConfig } from '../utils/config'; |
import { getKnexConfig } from '../../utils/config'; |
||||||
import { getBrowserTimezoneOffset } from '../utils/general'; |
import { getBrowserTimezoneOffset } from '../../utils/general'; |
||||||
let api: Api<any>, records: any[]; |
let api: Api<any>, records: any[]; |
||||||
|
|
||||||
const columns = [ |
const columns = [ |
@ -1,11 +1,11 @@ |
|||||||
import { expect, Page, test } from '@playwright/test'; |
import { expect, Page, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { Api, UITypes } from 'nocodb-sdk'; |
import { Api, UITypes } from 'nocodb-sdk'; |
||||||
import { rowMixedValue } from '../../setup/xcdb-records'; |
import { rowMixedValue } from '../../../setup/xcdb-records'; |
||||||
import { GridPage } from '../../pages/Dashboard/Grid'; |
import { GridPage } from '../../../pages/Dashboard/Grid'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
import { isSqlite } from '../../setup/db'; |
import { isSqlite } from '../../../setup/db'; |
||||||
|
|
||||||
let dashboard: DashboardPage, |
let dashboard: DashboardPage, |
||||||
grid: GridPage, |
grid: GridPage, |
@ -1,11 +1,11 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { Api } from 'nocodb-sdk'; |
import { Api } from 'nocodb-sdk'; |
||||||
import { createDemoTable } from '../../setup/demoTable'; |
import { createDemoTable } from '../../../setup/demoTable'; |
||||||
import { BulkUpdatePage } from '../../pages/Dashboard/BulkUpdate'; |
import { BulkUpdatePage } from '../../../pages/Dashboard/BulkUpdate'; |
||||||
import { AccountLicensePage } from '../../pages/Account/License'; |
import { AccountLicensePage } from '../../../pages/Account/License'; |
||||||
import { AccountPage } from '../../pages/Account'; |
import { AccountPage } from '../../../pages/Account'; |
||||||
|
|
||||||
let bulkUpdateForm: BulkUpdatePage; |
let bulkUpdateForm: BulkUpdatePage; |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -0,0 +1,258 @@ |
|||||||
|
import { expect, test } from '@playwright/test'; |
||||||
|
import setup from '../../../setup'; |
||||||
|
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
|
import { Api } from 'nocodb-sdk'; |
||||||
|
import { createDemoTable } from '../../../setup/demoTable'; |
||||||
|
import { BulkUpdatePage } from '../../../pages/Dashboard/BulkUpdate'; |
||||||
|
|
||||||
|
let dashboard: DashboardPage; |
||||||
|
let context: any; |
||||||
|
let api: Api<any>; |
||||||
|
let table; |
||||||
|
async function dragDrop({ firstColumn, lastColumn }: { firstColumn: string; lastColumn: string }) { |
||||||
|
await dashboard.grid.cell.get({ index: 0, columnHeader: firstColumn }).click(); |
||||||
|
await dashboard.rootPage.keyboard.press( |
||||||
|
(await dashboard.grid.isMacOs()) ? 'Meta+Shift+ArrowRight' : 'Control+Shift+ArrowRight' |
||||||
|
); |
||||||
|
|
||||||
|
// get fill handle locator
|
||||||
|
const src = await dashboard.rootPage.locator(`.nc-fill-handle`); |
||||||
|
const dst = await dashboard.grid.cell.get({ index: 3, columnHeader: lastColumn }); |
||||||
|
|
||||||
|
// drag and drop
|
||||||
|
await src.dragTo(dst); |
||||||
|
} |
||||||
|
async function beforeEachInit({ page, tableType }: { page: any; tableType: string }) { |
||||||
|
context = await setup({ page, isEmptyProject: true }); |
||||||
|
dashboard = new DashboardPage(page, context.project); |
||||||
|
|
||||||
|
api = new Api({ |
||||||
|
baseURL: `http://localhost:8080/`, |
||||||
|
headers: { |
||||||
|
'xc-auth': context.token, |
||||||
|
}, |
||||||
|
}); |
||||||
|
|
||||||
|
table = await createDemoTable({ context, type: tableType, recordCnt: 10 }); |
||||||
|
await page.reload(); |
||||||
|
|
||||||
|
await dashboard.treeView.openTable({ title: tableType }); |
||||||
|
} |
||||||
|
|
||||||
|
test.describe('Fill Handle', () => { |
||||||
|
test.beforeEach(async ({ page }) => { |
||||||
|
await beforeEachInit({ page, tableType: 'textBased' }); |
||||||
|
}); |
||||||
|
|
||||||
|
test('Text based', async () => { |
||||||
|
const fields = [ |
||||||
|
{ title: 'SingleLineText', value: 'Afghanistan', type: 'text' }, |
||||||
|
{ title: 'Email', value: 'jbutt@gmail.com', type: 'text' }, |
||||||
|
{ title: 'PhoneNumber', value: '1-541-754-3010', type: 'text' }, |
||||||
|
{ title: 'URL', value: 'https://www.google.com', type: 'text' }, |
||||||
|
{ title: 'MultiLineText', value: 'Aberdeen, United Kingdom', type: 'longText' }, |
||||||
|
]; |
||||||
|
|
||||||
|
await dragDrop({ firstColumn: 'SingleLineText', lastColumn: 'URL' }); |
||||||
|
|
||||||
|
// verify data on grid (verifying just two rows)
|
||||||
|
for (let i = 0; i < fields.length; i++) { |
||||||
|
for (let j = 0; j < 4; j++) { |
||||||
|
await dashboard.grid.cell.verify({ index: j, columnHeader: fields[i].title, value: fields[i].value }); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// verify api response
|
||||||
|
const updatedRecords = (await api.dbTableRow.list('noco', context.project.id, table.id, { limit: 4 })).list; |
||||||
|
for (let i = 0; i < updatedRecords.length; i++) { |
||||||
|
for (let j = 0; j < fields.length; j++) { |
||||||
|
expect(updatedRecords[i][fields[j].title]).toEqual(fields[j].value); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
test.describe('Fill Handle', () => { |
||||||
|
test.beforeEach(async ({ page }) => { |
||||||
|
await beforeEachInit({ page, tableType: 'numberBased' }); |
||||||
|
}); |
||||||
|
|
||||||
|
test('Number based', async () => { |
||||||
|
const fields = [ |
||||||
|
{ title: 'Number', value: '33', type: 'text' }, |
||||||
|
{ title: 'Decimal', value: '33.3', type: 'text' }, |
||||||
|
{ title: 'Currency', value: '33.30', type: 'text' }, |
||||||
|
{ title: 'Percent', value: '33', type: 'text' }, |
||||||
|
{ title: 'Duration', value: '00:01', type: 'text' }, |
||||||
|
{ title: 'Rating', value: '3', type: 'rating' }, |
||||||
|
{ title: 'Year', value: '2023', type: 'year' }, |
||||||
|
{ title: 'Time', value: '02:02', type: 'time' }, |
||||||
|
]; |
||||||
|
|
||||||
|
// kludge: insert time from browser until mysql issue with timezone is fixed
|
||||||
|
await dashboard.grid.cell.time.set({ index: 0, columnHeader: 'Time', value: '02:02' }); |
||||||
|
|
||||||
|
// set rating for first record
|
||||||
|
await dashboard.grid.cell.rating.select({ index: 0, columnHeader: 'Rating', rating: 2 }); |
||||||
|
|
||||||
|
await dragDrop({ firstColumn: 'Number', lastColumn: 'Time' }); |
||||||
|
|
||||||
|
// verify data on grid
|
||||||
|
for (let i = 0; i < fields.length; i++) { |
||||||
|
for (let j = 0; j < 4; j++) { |
||||||
|
if (fields[i].type === 'rating') { |
||||||
|
await dashboard.grid.cell.rating.verify({ |
||||||
|
index: j, |
||||||
|
columnHeader: fields[i].title, |
||||||
|
rating: +fields[i].value, |
||||||
|
}); |
||||||
|
} else if (fields[i].type === 'year') { |
||||||
|
await dashboard.grid.cell.year.verify({ index: j, columnHeader: fields[i].title, value: +fields[i].value }); |
||||||
|
} else if (fields[i].type === 'time') { |
||||||
|
await dashboard.grid.cell.time.verify({ index: j, columnHeader: fields[i].title, value: fields[i].value }); |
||||||
|
} else { |
||||||
|
await dashboard.grid.cell.verify({ index: j, columnHeader: fields[i].title, value: fields[i].value }); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// verify api response
|
||||||
|
// duration in seconds
|
||||||
|
const APIResponse = [33, 33.3, 33.3, 33, 60, 3, 2023, '02:02:00']; |
||||||
|
const updatedRecords = (await api.dbTableRow.list('noco', context.project.id, table.id, { limit: 4 })).list; |
||||||
|
for (let i = 0; i < updatedRecords.length; i++) { |
||||||
|
for (let j = 0; j < fields.length; j++) { |
||||||
|
if (fields[j].title === 'Time') { |
||||||
|
expect(updatedRecords[i][fields[j].title]).toContain(APIResponse[j]); |
||||||
|
} else { |
||||||
|
expect(+updatedRecords[i][fields[j].title]).toEqual(APIResponse[j]); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
test.describe('Fill Handle', () => { |
||||||
|
test.beforeEach(async ({ page }) => { |
||||||
|
await beforeEachInit({ page, tableType: 'selectBased' }); |
||||||
|
}); |
||||||
|
|
||||||
|
test('Select based', async () => { |
||||||
|
const fields = [ |
||||||
|
{ title: 'SingleSelect', value: 'jan', type: 'singleSelect' }, |
||||||
|
{ title: 'MultiSelect', value: 'jan,feb,mar', type: 'multiSelect' }, |
||||||
|
]; |
||||||
|
|
||||||
|
await dragDrop({ firstColumn: 'SingleSelect', lastColumn: 'MultiSelect' }); |
||||||
|
|
||||||
|
// verify data on grid
|
||||||
|
const displayOptions = ['jan', 'feb', 'mar']; |
||||||
|
for (let i = 0; i < fields.length; i++) { |
||||||
|
for (let j = 0; j < 4; j++) { |
||||||
|
if (fields[i].type === 'singleSelect') { |
||||||
|
await dashboard.grid.cell.selectOption.verify({ |
||||||
|
index: j, |
||||||
|
columnHeader: fields[i].title, |
||||||
|
option: fields[i].value, |
||||||
|
}); |
||||||
|
} else { |
||||||
|
await dashboard.grid.cell.selectOption.verifyOptions({ |
||||||
|
index: j, |
||||||
|
columnHeader: fields[i].title, |
||||||
|
options: displayOptions, |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// verify api response
|
||||||
|
const updatedRecords = (await api.dbTableRow.list('noco', context.project.id, table.id, { limit: 4 })).list; |
||||||
|
for (let i = 0; i < updatedRecords.length; i++) { |
||||||
|
for (let j = 0; j < fields.length; j++) { |
||||||
|
expect(updatedRecords[i][fields[j].title]).toContain(fields[j].value); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
test.describe('Fill Handle', () => { |
||||||
|
test.beforeEach(async ({ page }) => { |
||||||
|
await beforeEachInit({ page, tableType: 'miscellaneous' }); |
||||||
|
}); |
||||||
|
|
||||||
|
test('Miscellaneous (Checkbox, attachment)', async () => { |
||||||
|
const fields = [ |
||||||
|
{ title: 'Checkbox', value: 'true', type: 'checkbox' }, |
||||||
|
{ title: 'Attachment', value: `${process.cwd()}/fixtures/sampleFiles/1.json`, type: 'attachment' }, |
||||||
|
]; |
||||||
|
|
||||||
|
await dashboard.grid.cell.checkbox.click({ index: 0, columnHeader: 'Checkbox' }); |
||||||
|
const filepath = [`${process.cwd()}/fixtures/sampleFiles/1.json`]; |
||||||
|
await dashboard.grid.cell.attachment.addFile({ |
||||||
|
index: 0, |
||||||
|
columnHeader: 'Attachment', |
||||||
|
filePath: filepath, |
||||||
|
}); |
||||||
|
await dragDrop({ firstColumn: 'Checkbox', lastColumn: 'Attachment' }); |
||||||
|
|
||||||
|
// verify data on grid
|
||||||
|
for (let i = 0; i < fields.length; i++) { |
||||||
|
for (let j = 0; j < 4; j++) { |
||||||
|
if (fields[i].type === 'checkbox') { |
||||||
|
await dashboard.grid.cell.checkbox.verifyChecked({ |
||||||
|
index: j, |
||||||
|
columnHeader: fields[i].title, |
||||||
|
}); |
||||||
|
} else { |
||||||
|
await dashboard.grid.cell.attachment.verifyFileCount({ |
||||||
|
index: j, |
||||||
|
columnHeader: fields[i].title, |
||||||
|
count: 1, |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// verify api response
|
||||||
|
const updatedRecords = (await api.dbTableRow.list('noco', context.project.id, table.id, { limit: 4 })).list; |
||||||
|
for (let i = 0; i < updatedRecords.length; i++) { |
||||||
|
for (let j = 0; j < fields.length; j++) { |
||||||
|
expect(+updatedRecords[i]['Checkbox']).toBe(1); |
||||||
|
expect(updatedRecords[i]['Attachment'][0].title).toBe('1.json'); |
||||||
|
expect(updatedRecords[i]['Attachment'][0].mimetype).toBe('application/json'); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
test.describe('Fill Handle', () => { |
||||||
|
test.beforeEach(async ({ page }) => { |
||||||
|
await beforeEachInit({ page, tableType: 'dateTimeBased' }); |
||||||
|
}); |
||||||
|
|
||||||
|
test('Date Time Based', async () => { |
||||||
|
const row0_date = await api.dbTableRow.read('noco', context.project.id, table.id, 1); |
||||||
|
const fields = [{ title: 'Date', value: row0_date['Date'], type: 'date' }]; |
||||||
|
|
||||||
|
await dragDrop({ firstColumn: 'Date', lastColumn: 'Date' }); |
||||||
|
|
||||||
|
// verify data on grid
|
||||||
|
for (let i = 0; i < fields.length; i++) { |
||||||
|
for (let j = 0; j < 4; j++) { |
||||||
|
await dashboard.grid.cell.date.verify({ |
||||||
|
index: j, |
||||||
|
columnHeader: fields[i].title, |
||||||
|
date: fields[i].value, |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// verify api response
|
||||||
|
const updatedRecords = (await api.dbTableRow.list('noco', context.project.id, table.id, { limit: 4 })).list; |
||||||
|
for (let i = 0; i < updatedRecords.length; i++) { |
||||||
|
for (let j = 0; j < fields.length; j++) { |
||||||
|
expect(updatedRecords[i]['Date']).toBe(fields[j].value); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
}); |
@ -1,11 +1,11 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import makeServer from '../../setup/server'; |
import makeServer from '../../../setup/server'; |
||||||
import { WebhookFormPage } from '../../pages/Dashboard/WebhookForm'; |
import { WebhookFormPage } from '../../../pages/Dashboard/WebhookForm'; |
||||||
import { isSubset } from '../utils/general'; |
import { isSubset } from '../../utils/general'; |
||||||
import { Api, UITypes } from 'nocodb-sdk'; |
import { Api, UITypes } from 'nocodb-sdk'; |
||||||
import { isMysql, isPg, isSqlite } from '../../setup/db'; |
import { isMysql, isPg, isSqlite } from '../../../setup/db'; |
||||||
|
|
||||||
const hookPath = 'http://localhost:9090/hook'; |
const hookPath = 'http://localhost:9090/hook'; |
||||||
let api: Api<any>; |
let api: Api<any>; |
@ -1,7 +1,7 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { GridPage } from '../../pages/Dashboard/Grid'; |
import { GridPage } from '../../../pages/Dashboard/Grid'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('Verify cell selection', () => { |
test.describe('Verify cell selection', () => { |
||||||
let dashboard: DashboardPage, grid: GridPage; |
let dashboard: DashboardPage, grid: GridPage; |
@ -1,5 +1,5 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { UITypes } from 'nocodb-sdk'; |
import { UITypes } from 'nocodb-sdk'; |
||||||
import { Api } from 'nocodb-sdk'; |
import { Api } from 'nocodb-sdk'; |
||||||
let api: Api<any>; |
let api: Api<any>; |
@ -1,13 +1,13 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { airtableApiBase, airtableApiKey } from '../../constants'; |
import { airtableApiBase, airtableApiKey } from '../../../constants'; |
||||||
import { quickVerify } from '../../quickTests/commonTest'; |
import { quickVerify } from '../../../quickTests/commonTest'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
import { ProjectsPage } from '../../pages/ProjectsPage'; |
import { ProjectsPage } from '../../../pages/ProjectsPage'; |
||||||
import { Api } from 'nocodb-sdk'; |
import { Api } from 'nocodb-sdk'; |
||||||
import { ProjectInfo, ProjectInfoApiUtil } from '../utils/projectInfoApiUtil'; |
import { ProjectInfo, ProjectInfoApiUtil } from '../../utils/projectInfoApiUtil'; |
||||||
import { deepCompare } from '../utils/objectCompareUtil'; |
import { deepCompare } from '../../utils/objectCompareUtil'; |
||||||
|
|
||||||
test.describe('Project operations', () => { |
test.describe('Project operations', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,7 +1,7 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { GridPage } from '../../pages/Dashboard/Grid'; |
import { GridPage } from '../../../pages/Dashboard/Grid'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('Table Column Operations', () => { |
test.describe('Table Column Operations', () => { |
||||||
let grid: GridPage, dashboard: DashboardPage; |
let grid: GridPage, dashboard: DashboardPage; |
@ -1,10 +1,10 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { Api, TableListType, TableType } from 'nocodb-sdk'; |
import { Api, TableListType, TableType } from 'nocodb-sdk'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { SettingsPage, SettingTab } from '../../pages/Dashboard/Settings'; |
import { SettingsPage, SettingTab } from '../../../pages/Dashboard/Settings'; |
||||||
import { deepCompare } from '../utils/objectCompareUtil'; |
import { deepCompare } from '../../utils/objectCompareUtil'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { ProjectInfoApiUtil, TableInfo } from '../utils/projectInfoApiUtil'; |
import { ProjectInfoApiUtil, TableInfo } from '../../utils/projectInfoApiUtil'; |
||||||
|
|
||||||
test.describe('Table Operations', () => { |
test.describe('Table Operations', () => { |
||||||
let dashboard: DashboardPage, settings: SettingsPage; |
let dashboard: DashboardPage, settings: SettingsPage; |
@ -1,7 +1,7 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('Toolbar operations (GRID)', () => { |
test.describe('Toolbar operations (GRID)', () => { |
||||||
let dashboard: DashboardPage, toolbar: ToolbarPage; |
let dashboard: DashboardPage, toolbar: ToolbarPage; |
@ -1,7 +1,7 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { isPg } from '../../setup/db'; |
import { isPg } from '../../../setup/db'; |
||||||
|
|
||||||
test.describe('Grid view locked', () => { |
test.describe('Grid view locked', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,7 +1,7 @@ |
|||||||
import { expect, test } from '@playwright/test'; |
import { expect, test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('Views CRUD Operations', () => { |
test.describe('Views CRUD Operations', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,8 +1,8 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { AccountPage } from '../../pages/Account'; |
import { AccountPage } from '../../../pages/Account'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { AccountLicensePage } from '../../pages/Account/License'; |
import { AccountLicensePage } from '../../../pages/Account/License'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
|
|
||||||
test.describe('Enterprise License', () => { |
test.describe('Enterprise License', () => { |
||||||
// @ts-ignore
|
// @ts-ignore
|
@ -1,7 +1,7 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { AccountPage } from '../../pages/Account'; |
import { AccountPage } from '../../../pages/Account'; |
||||||
import { AccountTokenPage } from '../../pages/Account/Token'; |
import { AccountTokenPage } from '../../../pages/Account/Token'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('User roles', () => { |
test.describe('User roles', () => { |
||||||
let accountTokenPage: AccountTokenPage; |
let accountTokenPage: AccountTokenPage; |
@ -1,10 +1,10 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { AccountPage } from '../../pages/Account'; |
import { AccountPage } from '../../../pages/Account'; |
||||||
import { AccountUsersPage } from '../../pages/Account/Users'; |
import { AccountUsersPage } from '../../../pages/Account/Users'; |
||||||
import { ProjectsPage } from '../../pages/ProjectsPage'; |
import { ProjectsPage } from '../../../pages/ProjectsPage'; |
||||||
import { SignupPage } from '../../pages/SignupPage'; |
import { SignupPage } from '../../../pages/SignupPage'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { getDefaultPwd } from '../utils/general'; |
import { getDefaultPwd } from '../../utils/general'; |
||||||
|
|
||||||
const roleDb = [ |
const roleDb = [ |
||||||
{ email: 'creator@nocodb.com', role: 'Organization Level Creator', url: '' }, |
{ email: 'creator@nocodb.com', role: 'Organization Level Creator', url: '' }, |
@ -1,9 +1,9 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { AccountPage } from '../../pages/Account'; |
import { AccountPage } from '../../../pages/Account'; |
||||||
import { AccountSettingsPage } from '../../pages/Account/Settings'; |
import { AccountSettingsPage } from '../../../pages/Account/Settings'; |
||||||
import { SignupPage } from '../../pages/SignupPage'; |
import { SignupPage } from '../../../pages/SignupPage'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { getDefaultPwd } from '../utils/general'; |
import { getDefaultPwd } from '../../utils/general'; |
||||||
|
|
||||||
test.describe('App settings', () => { |
test.describe('App settings', () => { |
||||||
let accountSettingsPage: AccountSettingsPage; |
let accountSettingsPage: AccountSettingsPage; |
@ -1,12 +1,12 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { LoginPage } from '../../pages/LoginPage'; |
import { LoginPage } from '../../../pages/LoginPage'; |
||||||
import { SettingsPage, SettingTab } from '../../pages/Dashboard/Settings'; |
import { SettingsPage, SettingTab } from '../../../pages/Dashboard/Settings'; |
||||||
import { SignupPage } from '../../pages/SignupPage'; |
import { SignupPage } from '../../../pages/SignupPage'; |
||||||
import { ProjectsPage } from '../../pages/ProjectsPage'; |
import { ProjectsPage } from '../../../pages/ProjectsPage'; |
||||||
import { AccountPage } from '../../pages/Account'; |
import { AccountPage } from '../../../pages/Account'; |
||||||
import { getDefaultPwd } from '../utils/general'; |
import { getDefaultPwd } from '../../utils/general'; |
||||||
|
|
||||||
test.describe('Auth', () => { |
test.describe('Auth', () => { |
||||||
let context: any; |
let context: any; |
@ -1,10 +1,10 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { SettingsPage, SettingTab } from '../../pages/Dashboard/Settings'; |
import { SettingsPage, SettingTab } from '../../../pages/Dashboard/Settings'; |
||||||
import { SignupPage } from '../../pages/SignupPage'; |
import { SignupPage } from '../../../pages/SignupPage'; |
||||||
import { ProjectsPage } from '../../pages/ProjectsPage'; |
import { ProjectsPage } from '../../../pages/ProjectsPage'; |
||||||
import { getDefaultPwd } from '../utils/general'; |
import { getDefaultPwd } from '../../utils/general'; |
||||||
|
|
||||||
const roleDb = [ |
const roleDb = [ |
||||||
{ email: 'creator@nocodb.com', role: 'creator', url: '' }, |
{ email: 'creator@nocodb.com', role: 'creator', url: '' }, |
@ -1,8 +1,8 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
import { SettingsPage, SettingTab } from '../../pages/Dashboard/Settings'; |
import { SettingsPage, SettingTab } from '../../../pages/Dashboard/Settings'; |
||||||
|
|
||||||
const roles = ['Editor', 'Commenter', 'Viewer']; |
const roles = ['Editor', 'Commenter', 'Viewer']; |
||||||
|
|
@ -1,6 +1,6 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('Super user', () => { |
test.describe('Super user', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,10 +1,10 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { FormPage } from '../../pages/Dashboard/Form'; |
import { FormPage } from '../../../pages/Dashboard/Form'; |
||||||
import { SharedFormPage } from '../../pages/SharedForm'; |
import { SharedFormPage } from '../../../pages/SharedForm'; |
||||||
import { AccountPage } from '../../pages/Account'; |
import { AccountPage } from '../../../pages/Account'; |
||||||
import { AccountAppStorePage } from '../../pages/Account/AppStore'; |
import { AccountAppStorePage } from '../../../pages/Account/AppStore'; |
||||||
import { Api, UITypes } from 'nocodb-sdk'; |
import { Api, UITypes } from 'nocodb-sdk'; |
||||||
let api: Api<any>; |
let api: Api<any>; |
||||||
|
|
@ -1,7 +1,7 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { SurveyFormPage } from '../../pages/Dashboard/SurveyForm'; |
import { SurveyFormPage } from '../../../pages/Dashboard/SurveyForm'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('Share form', () => { |
test.describe('Share form', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,7 +1,7 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { isMysql, isPg, isSqlite } from '../../setup/db'; |
import { isMysql, isPg, isSqlite } from '../../../setup/db'; |
||||||
|
|
||||||
test.describe('Shared view', () => { |
test.describe('Shared view', () => { |
||||||
let dashboard: DashboardPage; |
let dashboard: DashboardPage; |
@ -1,9 +1,9 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
|
|
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
import { isPg, isSqlite } from '../../setup/db'; |
import { isPg, isSqlite } from '../../../setup/db'; |
||||||
|
|
||||||
const filmRatings = ['G', 'PG', 'PG-13', 'R', 'NC-17']; |
const filmRatings = ['G', 'PG', 'PG-13', 'R', 'NC-17']; |
||||||
|
|
@ -1,8 +1,8 @@ |
|||||||
import { test } from '@playwright/test'; |
import { test } from '@playwright/test'; |
||||||
import { DashboardPage } from '../../pages/Dashboard'; |
import { DashboardPage } from '../../../pages/Dashboard'; |
||||||
import { ToolbarPage } from '../../pages/Dashboard/common/Toolbar'; |
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; |
||||||
|
|
||||||
import setup from '../../setup'; |
import setup from '../../../setup'; |
||||||
|
|
||||||
test.describe('Map View', () => { |
test.describe('Map View', () => { |
||||||
let dashboard: DashboardPage, toolbar: ToolbarPage; |
let dashboard: DashboardPage, toolbar: ToolbarPage; |
Loading…
Reference in new issue