多维表格
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.
 
 
 
 
 
 

60 lines
1.8 KiB

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/);
}
}
}