Skip to content

Commit

Permalink
LPD-38309 Reorganize fields tests
Browse files Browse the repository at this point in the history
  • Loading branch information
larissacribeiro authored and brianchandotcom committed Oct 22, 2024
1 parent ca7d330 commit 9bfdef0
Showing 1 changed file with 130 additions and 120 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,169 +19,179 @@ test.afterEach(async ({formsPage, page}) => {
await deleteItems(formsPage, page);
});

test.describe('Can configure a HTML autocomplete attribute in Date, Numeric and Text field types', () => {
test('LPD-12824 HTML autocomplete attribute is rendered and has the configured value limited to 20 non-special characters', async ({
formBuilderPage,
formBuilderSidePanelPage,
}) => {
const testData: {
expectedValue: string;
fieldTitle: FormFieldTypeTitle;
inputValue: string;
}[] = [
{
expectedValue: 'bday',
fieldTitle: 'Date',
inputValue: '+)(*&^%$#@ bday$__% ',
},
{
expectedValue: 'one-time-code',
fieldTitle: 'Numeric',
inputValue: '****[][one-time-code&&#()',
},
{
expectedValue: 'transaction-currency',
fieldTitle: 'Text',
inputValue: 'transaction-currencyextracharacters',
},
];
test.describe('Manage fields through Form Preview page', () => {
test.describe('Can configure a HTML autocomplete attribute in Date, Numeric and Text field types', () => {
test('LPD-12824 HTML autocomplete attribute is rendered and has the configured value limited to 20 non-special characters', async ({
formBuilderPage,
formBuilderSidePanelPage,
}) => {
const testData: {
expectedValue: string;
fieldTitle: FormFieldTypeTitle;
inputValue: string;
}[] = [
{
expectedValue: 'bday',
fieldTitle: 'Date',
inputValue: '+)(*&^%$#@ bday$__% ',
},
{
expectedValue: 'one-time-code',
fieldTitle: 'Numeric',
inputValue: '****[][one-time-code&&#()',
},
{
expectedValue: 'transaction-currency',
fieldTitle: 'Text',
inputValue: 'transaction-currencyextracharacters',
},
];

await formBuilderPage.goToNew();

await expect(formBuilderPage.newFormHeading).toBeVisible();

await formBuilderPage.fillFormTitle('Form' + getRandomInt());

for (const data of testData) {
await formBuilderSidePanelPage.addFieldByDoubleClick(
data.fieldTitle
);

await formBuilderSidePanelPage.clickAdvancedTab();

await formBuilderPage.goToNew();
await expect(
formBuilderSidePanelPage.htmlAutocompleteAttributeField
).toBeVisible();

await expect(formBuilderPage.newFormHeading).toBeVisible();
await formBuilderSidePanelPage.htmlAutocompleteAttributeField.fill(
data.inputValue
);

await formBuilderPage.fillFormTitle('Form' + getRandomInt());
await formBuilderSidePanelPage.clickBackButton();
}

for (const data of testData) {
await formBuilderSidePanelPage.addFieldByDoubleClick(
data.fieldTitle
const newTabPagePromise = new Promise<Page>((resolve) =>
formBuilderPage.page.once('popup', resolve)
);

await formBuilderSidePanelPage.clickAdvancedTab();
await formBuilderPage.previewButton.click();

await expect(
formBuilderSidePanelPage.htmlAutocompleteAttributeField
).toBeVisible();
const newTabPage = await newTabPagePromise;

await formBuilderSidePanelPage.htmlAutocompleteAttributeField.fill(
data.inputValue
);
await newTabPage.waitForLoadState('domcontentloaded');

await formBuilderSidePanelPage.clickBackButton();
}
for (const data of testData) {
if (data.fieldTitle === 'Date') {
await expect(
newTabPage.getByPlaceholder('__/__/____')
).toHaveAttribute('autocomplete', data.expectedValue);

const newTabPagePromise = new Promise<Page>((resolve) =>
formBuilderPage.page.once('popup', resolve)
);
continue;
}

await formBuilderPage.previewButton.click();

const newTabPage = await newTabPagePromise;

await newTabPage.waitForLoadState('domcontentloaded');

for (const data of testData) {
if (data.fieldTitle === 'Date') {
await expect(
newTabPage.getByPlaceholder('__/__/____')
newTabPage.getByLabel(data.fieldTitle)
).toHaveAttribute('autocomplete', data.expectedValue);

continue;
}

await expect(
newTabPage.getByLabel(data.fieldTitle)
).toHaveAttribute('autocomplete', data.expectedValue);
}

await newTabPage.close();
await newTabPage.close();
});
});
});

test('make sure the aria-labelledby reference is present in the captcha form view', async ({
formBuilderPage,
formBuilderSidePanelPage,
}) => {
await formBuilderPage.goToNew();
test('make sure the aria-labelledby reference is present in the captcha form view', async ({
formBuilderPage,
formBuilderSidePanelPage,
}) => {
await formBuilderPage.goToNew();

await formBuilderPage.fillFormTitle('Form' + getRandomInt());
await formBuilderPage.fillFormTitle('Form' + getRandomInt());

await formBuilderSidePanelPage.addFieldByDoubleClick('Text');
await formBuilderSidePanelPage.addFieldByDoubleClick('Text');

await formBuilderPage.formSettingsButton.click();
await formBuilderPage.formSettingsButton.click();

await formBuilderPage.requireCaptchaToggle.click();
await formBuilderPage.requireCaptchaToggle.click();

await formBuilderPage.formSettingsDoneButton.click();
await formBuilderPage.formSettingsDoneButton.click();

const newTabPagePromise = new Promise<Page>((resolve) =>
formBuilderPage.page.once('popup', resolve)
);
const newTabPagePromise = new Promise<Page>((resolve) =>
formBuilderPage.page.once('popup', resolve)
);

await formBuilderPage.previewButton.click();
await formBuilderPage.previewButton.click();

const newTabPage = await newTabPagePromise;
const newTabPage = await newTabPagePromise;

await newTabPage.waitForLoadState('domcontentloaded');
await newTabPage.waitForLoadState('domcontentloaded');

const captchaContainer = newTabPage.locator(
"[data-field-reference='_CAPTCHA_']"
);
const captchaContainer = newTabPage.locator(
"[data-field-reference='_CAPTCHA_']"
);

await expect(captchaContainer).toBeVisible();
await expect(captchaContainer).toBeVisible();

const captchaContainerAriaLabelledby =
await captchaContainer.getAttribute('aria-labelledby');
const captchaContainerAriaLabelledby =
await captchaContainer.getAttribute('aria-labelledby');

const screenReaderOnlyCaptchaSpan = newTabPage.locator(
`span[id='${captchaContainerAriaLabelledby}']`
);
const screenReaderOnlyCaptchaSpan = newTabPage.locator(
`span[id='${captchaContainerAriaLabelledby}']`
);

await expect(screenReaderOnlyCaptchaSpan).toHaveClass('sr-only');
await expect(screenReaderOnlyCaptchaSpan).toHaveClass('sr-only');

await expect(screenReaderOnlyCaptchaSpan).toContainText('captcha');
await expect(screenReaderOnlyCaptchaSpan).toContainText('captcha');

await newTabPage.close();
await newTabPage.close();
});
});

test('assert edition of a rich text field predefined value that contains a rule', async ({
formBuilderPage,
formsPage,
page,
}) => {
await formsPage.goTo();

await formsPage.importForm(
path.join(__dirname, 'dependencies', 'form-with-rich-text.portlet.lar')
);

await formsPage.openForm('Form with rich text field');
test.describe('Manage fields through Form Builder page', () => {
test('assert edition of a rich text field predefined value that contains a rule', async ({
formBuilderPage,
formsPage,
page,
}) => {
await formsPage.goTo();

await formsPage.importForm(
path.join(
__dirname,
'dependencies',
'form-with-rich-text.portlet.lar'
)
);

await expect(page.getByRole('textbox', {name: 'Rich Text'})).toBeVisible();
await formsPage.openForm('Form with rich text field');

await formBuilderPage.openFieldSettings('Rich Text');
await expect(
page.getByRole('textbox', {name: 'Rich Text'})
).toBeVisible();

await formBuilderPage.settingsAdvancedTab.click();
await formBuilderPage.openFieldSettings('Rich Text');

const richTextPredefinedValueIframe = page
.getByRole('textbox', {name: 'Predefined Value'})
.frameLocator('iframe');
await formBuilderPage.settingsAdvancedTab.click();

await richTextPredefinedValueIframe
.getByText("Rich's text predefined value")
.click();
const richTextPredefinedValueIframe = page
.getByRole('textbox', {name: 'Predefined Value'})
.frameLocator('iframe');

await page.keyboard.press('Control+A');
await richTextPredefinedValueIframe
.getByText("Rich's text predefined value")
.click();

await page.keyboard.press('Backspace');
await page.keyboard.press('Control+A');

await page.keyboard.type(
'Typing a new predefined value for the rich text field.'
);
await page.keyboard.press('Backspace');

await expect(
richTextPredefinedValueIframe.getByText(
await page.keyboard.type(
'Typing a new predefined value for the rich text field.'
)
).toBeVisible();
);

await expect(
richTextPredefinedValueIframe.getByText(
'Typing a new predefined value for the rich text field.'
)
).toBeVisible();
});
});

0 comments on commit 9bfdef0

Please sign in to comment.