Browse Source

test: fix undo filter test

Signed-off-by: mertmit <mertmit99@gmail.com>
pull/5624/head
mertmit 2 years ago
parent
commit
b07b717b30
  1. 47
      tests/playwright/pages/Dashboard/common/Toolbar/Filter.ts
  2. 6
      tests/playwright/tests/db/undo-redo.spec.ts

47
tests/playwright/pages/Dashboard/common/Toolbar/Filter.ts

@ -45,6 +45,7 @@ export class ToolbarFilterPage extends BasePage {
locallySaved = false,
dataType,
openModal = false,
skipWaitingResponse = false, // used for undo (single request, less stable)
}: {
title: string;
operation: string;
@ -53,15 +54,25 @@ export class ToolbarFilterPage extends BasePage {
locallySaved?: boolean;
dataType?: string;
openModal?: boolean;
skipWaitingResponse?: boolean;
}) {
if (!openModal) await this.get().locator(`button:has-text("Add Filter")`).first().click();
const selectedField = await getTextExcludeIconText(await this.rootPage.locator('.nc-filter-field-select .ant-select-selection-item'));
const selectedField = await getTextExcludeIconText(
await this.rootPage.locator('.nc-filter-field-select .ant-select-selection-item')
);
if (selectedField !== title) {
await this.rootPage.locator('.nc-filter-field-select').last().click();
if (skipWaitingResponse) {
this.rootPage
.locator('div.ant-select-dropdown.nc-dropdown-toolbar-field-list')
.locator(`div[label="${title}"]:visible`)
.click();
} else {
await this.waitForResponse({
uiAction: () => this.rootPage
uiAction: () =>
this.rootPage
.locator('div.ant-select-dropdown.nc-dropdown-toolbar-field-list')
.locator(`div[label="${title}"]:visible`)
.click(),
@ -69,14 +80,23 @@ export class ToolbarFilterPage extends BasePage {
requestUrlPathToMatch: locallySaved ? `/api/v1/db/public/` : `/api/v1/db/data/noco/`,
});
}
}
const selectedOpType = await getTextExcludeIconText(await this.rootPage.locator('.nc-filter-operation-select'));
if (selectedOpType !== operation) {
await this.rootPage.locator('.nc-filter-operation-select').click();
// first() : filter list has >, >=
if (skipWaitingResponse) {
this.rootPage
.locator('.nc-dropdown-filter-comp-op')
.locator(`.ant-select-item:has-text("${operation}")`)
.first()
.click();
} else {
await this.waitForResponse({
uiAction: () => this.rootPage
uiAction: () =>
this.rootPage
.locator('.nc-dropdown-filter-comp-op')
.locator(`.ant-select-item:has-text("${operation}")`)
.first()
@ -85,6 +105,7 @@ export class ToolbarFilterPage extends BasePage {
requestUrlPathToMatch: locallySaved ? `/api/v1/db/public/` : `/api/v1/db/data/noco/`,
});
}
}
// subtype for date
if (dataType === UITypes.Date && subOperation) {
@ -95,8 +116,16 @@ export class ToolbarFilterPage extends BasePage {
await this.rootPage.locator('.nc-filter-sub_operation-select').click();
// first() : filter list has >, >=
if (skipWaitingResponse) {
this.rootPage
.locator('.nc-dropdown-filter-comp-sub-op')
.locator(`.ant-select-item:has-text("${subOperation}")`)
.first()
.click();
} else {
await this.waitForResponse({
uiAction: () => this.rootPage
uiAction: () =>
this.rootPage
.locator('.nc-dropdown-filter-comp-sub-op')
.locator(`.ant-select-item:has-text("${subOperation}")`)
.first()
@ -106,6 +135,7 @@ export class ToolbarFilterPage extends BasePage {
});
}
}
}
// if value field was provided, fill it
if (value) {
@ -135,11 +165,16 @@ export class ToolbarFilterPage extends BasePage {
if (subOperation === 'exact date') {
await this.get().locator('.nc-filter-value-select').click();
await this.rootPage.locator(`.ant-picker-dropdown:visible`);
if (skipWaitingResponse) {
this.rootPage.locator(`.ant-picker-cell-inner:has-text("${value}")`).click();
} else {
await this.waitForResponse({
uiAction: () => this.rootPage.locator(`.ant-picker-cell-inner:has-text("${value}")`).click(),
httpMethodsToMatch: ['GET'],
requestUrlPathToMatch: locallySaved ? `/api/v1/db/public/` : `/api/v1/db/data/noco/`,
});
}
} else {
fillFilter = () => this.rootPage.locator('.nc-filter-value-select > input').last().fill(value);
await this.waitForResponse({
@ -152,11 +187,15 @@ export class ToolbarFilterPage extends BasePage {
}
break;
case UITypes.Duration:
if (skipWaitingResponse) {
this.get().locator('.nc-filter-value-select').locator('input').fill(value);
} else {
await this.waitForResponse({
uiAction: () => this.get().locator('.nc-filter-value-select').locator('input').fill(value),
httpMethodsToMatch: ['GET'],
requestUrlPathToMatch: locallySaved ? `/api/v1/db/public/` : `/api/v1/db/data/noco/`,
});
}
break;
case UITypes.Rating:
await this.get()

6
tests/playwright/tests/db/undo-redo.spec.ts

@ -273,15 +273,19 @@ test.describe('Undo Redo', () => {
}
await toolbar.clickFilter();
await toolbar.filter.add({ title: 'Number', operation: '=', value: '33' });
await toolbar.filter.add({ title: 'Number', operation: '=', value: '33', skipWaitingResponse: true });
await toolbar.clickFilter();
await verifyRecords({ filtered: true });
await toolbar.filter.reset();
await verifyRecords({ filtered: false });
// undo: remove filter
await undo({ page });
await verifyRecords({ filtered: true });
// undo: update filter
await undo({ page });
// undo: add filter
await undo({ page });
await verifyRecords({ filtered: false });
});

Loading…
Cancel
Save