import { expect, type Locator, type Page } from '@playwright/test'; import { BasePage } from './BasePage'; import { IEndorsementDetails } from '@business-logic/types/CustomerDetails'; import { EndorsementType } from '@business-logic/types/Enums'; export class EndorsementsPage extends BasePage { readonly page: Page; readonly educatorYesButton: Locator; readonly educatorNoButton: Locator; issPageValue = 'policy-endorsements'; constructor(page: Page) { super(page); this.page = page; this.educatorYesButton = this.page.locator('label:has(div.button-content:has(span:has-text("Yes")))'); this.educatorNoButton = this.page.locator('label:has(div.button-content:has(span:has-text("No")))'); } async verifyEndorsements(endorsements: IEndorsementDetails[]) { for (const endorsement of endorsements) { switch(endorsement.endorsementType) { case EndorsementType.Educator: if (endorsement.isOnPolicy) { await expect.soft(this.educatorYesButton).toBeAttached(); } else { await expect.soft(this.educatorYesButton).not.toBeAttached(); } break; case EndorsementType.EmployeeParking: // TODO: Implement break; } } } async selectEndorsements(endorsements: IEndorsementDetails[]) { for (const endorsement of endorsements) { if (endorsement.isOnPolicy) { switch (endorsement.endorsementType) { case EndorsementType.Educator: if (endorsement.isClickYes) { await this.educatorYesButton.click(); } else { await this.educatorNoButton.click(); } break; case EndorsementType.EmployeeParking: // TODO: Implement break; } } } } }