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.
60 lines
1.8 KiB
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/); |
|
} |
|
} |
|
}
|
|
|