From 20fe50b9a3a0ed56cbdc516ee97d4b16b2e617aa Mon Sep 17 00:00:00 2001 From: Nantawat Sukrisunt Date: Sun, 3 Nov 2024 19:58:04 +0700 Subject: [PATCH] New test "project apply" --- tests/test-1-project-apply.spec.ts | 51 ++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 tests/test-1-project-apply.spec.ts diff --git a/tests/test-1-project-apply.spec.ts b/tests/test-1-project-apply.spec.ts new file mode 100644 index 0000000..b8f9b0d --- /dev/null +++ b/tests/test-1-project-apply.spec.ts @@ -0,0 +1,51 @@ +import { test, Locator, Page } from '@playwright/test'; + +// Helper function to handle dropdown selection with retry mechanism, automatically selecting the first option +const selectFirstOption = async (page: Page, triggerLocator: Locator) => { + + try { + await triggerLocator.hover(); + await triggerLocator.click({ force: true }); + + // Select the first available option + const firstOption = page.getByRole("option").first(); + await firstOption.waitFor({ state: 'visible', timeout: 1000 }); + await firstOption.click(); + console.log("First option selected."); + + } catch (error) { + console.log("Retrying as the combobox disappeared..."); + await page.waitForTimeout(100); + } + +}; + +test('test', async ({ page }) => { + await page.goto("http://127.0.0.1:3000/"); + await page.getByRole('button', { name: 'Projects' }).hover(); + await page.getByRole('link', { name: 'Projects Start your new' }).click(); + + await page.locator('#projectName').fill('DummyTester'); + await page.locator('#projectName').fill('DummyTester'); + + // Select first option in 'Select a Project type' + const projectTypeButton = page.locator('button').filter({ hasText: 'Select a Project type' }); + await selectFirstOption(page, projectTypeButton); + + await page.locator('#shortDescription').fill('0123456789'); + await page.getByPlaceholder('https:// ').fill('https://www.google.com/'); + await page.getByPlaceholder('$ 500').fill('499'); + await page.getByPlaceholder('$ 1,000,000').fill('99999999'); + await page.locator('#deadline').fill('2024-11-29T21:19'); + + // Log the text content of the second combobox + const tag = page.getByRole('combobox').nth(1); + const tagText = await tag.textContent(); + console.log('Tag text:', tagText); + + // Select first option in the tag combobox + await selectFirstOption(page, tag); + + // Submit the form + await page.getByRole('button', { name: 'Submit application' }).click(); +});