mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.8 KiB
61 lines
1.8 KiB
3 months ago
|
import { getTextExcludeIconText } from '../../../tests/utils/general';
|
||
|
import BasePage from '../../Base';
|
||
|
import { FormPage } from './index';
|
||
|
import { expect } from '@playwright/test';
|
||
|
|
||
|
export class FormConditionalFieldsPage extends BasePage {
|
||
|
readonly parent: FormPage;
|
||
|
|
||
|
constructor(parent: FormPage) {
|
||
|
super(parent.rootPage);
|
||
|
this.parent = parent;
|
||
|
}
|
||
|
|
||
|
get() {
|
||
|
return this.rootPage.getByTestId('nc-form-field-visibility-btn');
|
||
|
}
|
||
|
|
||
|
async click() {
|
||
|
await this.get().waitFor({ state: 'visible' });
|
||
|
await this.get().click();
|
||
|
await this.rootPage.getByTestId('nc-filter-menu').waitFor({ state: 'visible' });
|
||
|
}
|
||
|
|
||
|
async verify({ isDisabled, count, isVisible }: { isDisabled: boolean; count?: string; isVisible?: boolean }) {
|
||
|
const conditionalFieldBtn = this.get();
|
||
|
|
||
|
await conditionalFieldBtn.waitFor({ state: 'visible' });
|
||
|
|
||
|
if (isDisabled) {
|
||
|
await expect(conditionalFieldBtn).toHaveClass(/nc-disabled/);
|
||
|
} else {
|
||
|
await expect(conditionalFieldBtn).not.toHaveClass(/nc-disabled/);
|
||
|
}
|
||
|
|
||
|
if (count !== undefined) {
|
||
|
const conditionCount = await getTextExcludeIconText(conditionalFieldBtn);
|
||
|
|
||
|
await expect(conditionCount).toContain(count);
|
||
|
}
|
||
|
|
||
|
if (isVisible !== undefined) {
|
||
|
if (isVisible) {
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async verifyVisibility({ title, isVisible }: { title: string; isVisible: boolean }) {
|
||
|
const field = this.parent.get().locator(`[data-testid="nc-form-fields"][data-title="${title}"]`);
|
||
|
await field.scrollIntoViewIfNeeded();
|
||
|
|
||
|
// Wait for icon change transition complete
|
||
|
await this.rootPage.waitForTimeout(300);
|
||
|
|
||
|
if (isVisible) {
|
||
|
await expect(field.locator('.nc-field-visibility-icon')).toHaveClass(/nc-field-visible/);
|
||
|
} else {
|
||
|
await expect(field.locator('.nc-field-visibility-icon')).not.toHaveClass(/nc-field-visible/);
|
||
|
}
|
||
|
}
|
||
|
}
|