|
| 1 | +import { expect, test } from '@playwright/test'; |
| 2 | + |
| 3 | +import { asyncEvents } from './utils/async-events.js'; |
| 4 | + |
| 5 | +test('Should render form fields', async ({ page }) => { |
| 6 | + const { navigate } = asyncEvents(page); |
| 7 | + await navigate('/?clientId=60de77d5-dd2c-41ef-8c40-f8bb2381a359'); |
| 8 | + |
| 9 | + await expect(page.getByText('Select Test Form')).toBeVisible(); |
| 10 | + await page.getByRole('button', { name: 'Form Fields' }).click(); |
| 11 | + |
| 12 | + await expect(page.getByText('Form Fields Test')).toBeVisible(); |
| 13 | + await page.getByRole('textbox', { name: 'Text Input Label' }).fill('The input'); |
| 14 | + |
| 15 | + await page.locator('#checkbox-field-key-1').check(); |
| 16 | + await page.locator('#checkbox-field-key-2').check(); |
| 17 | + |
| 18 | + await page.locator('#dropdown-field-key').selectOption('dropdown-option1-value'); |
| 19 | + await page.locator('#dropdown-field-key').selectOption('dropdown-option2-value'); |
| 20 | + |
| 21 | + await page.locator('#radio-group-key').selectOption('option2 label'); |
| 22 | + |
| 23 | + await page.locator('#combobox-field-key-1').check(); |
| 24 | + await page.locator('#combobox-field-key-2').check(); |
| 25 | + await page.locator('#combobox-field-key-3').check(); |
| 26 | + await page.locator('#combobox-field-key-2').uncheck(); |
| 27 | + |
| 28 | + await expect(page.getByRole('button', { name: 'Flow Button' })).toBeVisible(); |
| 29 | + await expect(page.getByRole('button', { name: 'Flow Link' })).toBeVisible(); |
| 30 | + |
| 31 | + const requestPromise = page.waitForRequest( |
| 32 | + (request) => request.url().includes('customForm') && request.method() === 'POST', |
| 33 | + ); |
| 34 | + |
| 35 | + await page.getByRole('button', { name: 'Submit' }).click(); |
| 36 | + const request = await requestPromise; |
| 37 | + |
| 38 | + const parsedData = JSON.parse(request.postData()); |
| 39 | + const data = parsedData.parameters.data; |
| 40 | + expect(data.actionKey).toBe('submit'); |
| 41 | + expect(data.formData).toStrictEqual({ |
| 42 | + 'text-input-key': 'The input', |
| 43 | + 'checkbox-field-key': ['option1 value', 'option2 value'], |
| 44 | + 'dropdown-field-key': 'dropdown-option2-value', |
| 45 | + 'radio-group-key': 'option2 value', |
| 46 | + 'combobox-field-key': ['option1 value', 'option3 value'], |
| 47 | + }); |
| 48 | +}); |
| 49 | + |
| 50 | +test('should render form validation fields', async ({ page }) => { |
| 51 | + await page.goto('http://localhost:5829/?clientId=60de77d5-dd2c-41ef-8c40-f8bb2381a359'); |
| 52 | + |
| 53 | + await expect(page.getByText('Select Test Form')).toBeVisible(); |
| 54 | + |
| 55 | + await page.getByRole('button', { name: 'Form Validation' }).click(); |
| 56 | + |
| 57 | + await expect(page.getByText('Form Fields Validation')).toBeVisible(); |
| 58 | + |
| 59 | + await page.getByRole('textbox', { name: 'Username' }).fill('@#$'); |
| 60 | + await expect(page.getByText('Must be alphanumeric')).toBeVisible(); |
| 61 | + |
| 62 | + await page.getByRole('textbox', { name: 'Email Address' }).fill('abc'); |
| 63 | + await expect(page.getByText('Not a valid email')).toBeVisible(); |
| 64 | + |
| 65 | + await page.getByRole('textbox', { name: 'Email Address' }).fill('abc@email.com'); |
| 66 | + await expect(page.getByText('Not a valid email')).not.toBeVisible(); |
| 67 | +}); |
0 commit comments