import { expect, type Locator, type Page } from '@playwright/test'; import { BasePage } from './BasePage'; import { IPartQuestion } from '@business-logic/types/CustomerDetails'; export class PartQuestionsPage extends BasePage { readonly page: Page; url = process.env['BASE_URL']! + '/?issPage=part-questions'; constructor(page: Page) { super(page); this.page = page; } async validatePartQuestions(partQuestions: IPartQuestion[]) { for (const pq of partQuestions) { const partQuestionOptions = this.page.locator(`fieldset[aria-labelledby="${pq.partQuestionType}"]`); if (pq.isOnPage) { await expect(partQuestionOptions).toBeAttached(); } else { await expect(partQuestionOptions).not.toBeAttached(); } } } async selectPartQuestionResponses(partQuestions: IPartQuestion[]) { for (const pq of partQuestions) { const parentobject=this.page.locator(`fieldset[aria-labelledby="${pq.partQuestionType}"]`); const partQuestionOptionButton = parentobject.locator(`[buttonlabel="${pq.optionToSelect}"]`); await partQuestionOptionButton.click(); if (pq.secondaryQuestionOptionToSelect != null) { const secondaryQuestionButton = parentobject.getByText(`${pq.secondaryQuestionOptionToSelect}`); await secondaryQuestionButton.click(); } } } }