From 92f15d5019a563a9b1fee54b696ec5fef0895c74 Mon Sep 17 00:00:00 2001 From: JennyNou <167806377+JennyNou@users.noreply.github.com> Date: Tue, 10 Mar 2026 13:41:06 -0400 Subject: [PATCH] Add functions to validate provider preference page flow --- .../pages/ProviderPreferencePage.ts | 53 +++++++++++++------ 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/playwright-tests/pages/ProviderPreferencePage.ts b/playwright-tests/pages/ProviderPreferencePage.ts index 7b6a53bc..1199a8bb 100644 --- a/playwright-tests/pages/ProviderPreferencePage.ts +++ b/playwright-tests/pages/ProviderPreferencePage.ts @@ -3,34 +3,47 @@ import { BasePage } from './BasePage'; export class ProviderPreferencePage extends BasePage { readonly page: Page; - readonly scheduleWithSafelite: Locator; - readonly scheduleWithOther: Locator; - readonly acknowledgeAdasButton: Locator; + readonly scheduleNowButton: Locator; + readonly findAnotherShopButton: Locator; + + readonly acknowledgeAdasCheckbox: Locator; readonly gotItButton: Locator; + readonly learnMoreLink: Locator; + readonly yesButton: Locator; + readonly noButton: Locator; readonly acknowledgeCheckbox: Locator; - readonly stateLawModalHeading: Locator; + readonly stateLawModalText: Locator; + readonly stateLawModalOkayButton: Locator; issPageValue = 'provider-preference'; constructor(page: Page) { super(page); this.page = page; - // this.scheduleWithSafelite = this.page.locator('div').filter({ hasText: /Schedule online with |Safelite AutoGlass/ }).first(); - this.scheduleWithSafelite = this.page.getByText(/Schedule online with|Safelite AutoGlass/).first(); - this.scheduleWithOther = this.page.getByText(/Find another shop|Choose my own shop/).first(); - this.acknowledgeAdasButton = this.page.getByLabel('I acknowledge that my vehicle'); + + this.scheduleNowButton = this.page.getByRole('button', { name: 'Schedule now' }); + this.findAnotherShopButton = this.page.getByRole('link', { name: 'Find another shop' }); + + //Recal modal + this.learnMoreLink = this.page.locator('#moreDetails'); + this.yesButton = this.page.getByRole('button', { name: 'Yes' }); // schedule with Safelite + this.noButton = this.page.getByRole('button', { name: 'No' }); // find another shop (TPA?) + this.acknowledgeAdasCheckbox = this.page.getByRole('checkbox', { name: 'tpaAcknowledgement' }); // shows up when user clicks no on recal modal + + this.gotItButton = this.page.getByRole('button', { name: 'Got it' }); this.acknowledgeCheckbox = this.page.locator('#tpaAcknowledgement'); - this.stateLawModalHeading = this.page.getByRole('heading').filter({ hasText: /.* State Law/}); + this.stateLawModalText = this.page.getByText(/law prohibits us from requiring you.*You have the right to select the motor vehicle repair shop of your choice\./is); + this.stateLawModalOkayButton = this.page.getByRole('button', { name: 'Okay' }) } async selectProvider(isSafelite = true) { if (isSafelite) { - await this.scheduleWithSafelite.click(); + await this.scheduleNowButton.click(); await this.nextPage(); } else { - await this.scheduleWithOther.waitFor({ state: 'visible' }); - await this.scheduleWithOther.click(); + await this.findAnotherShopButton.waitFor({ state: 'visible' }); + await this.findAnotherShopButton.click(); await this.continueButton.click(); //if(await this.acknowledgeAdasButton.isEnabled({timeout: 2500})){ // await this.acknowledgeAdasButton.click(); @@ -39,12 +52,20 @@ export class ProviderPreferencePage extends BasePage { //} } } - async acknowledgeRecalNotificaiton() { - await this.acknowledgeAdasButton.click(); - await this.gotItButton.click(); + async scheduleWithSafeliteADAS() { + await this.learnMoreLink.click(); + await this.yesButton.click(); + await this.continueButton.click(); + } + + async scheduleTPAWithAdas() { + await this.learnMoreLink.click(); + await this.noButton.click(); + await this.acknowledgeAdasCheckbox.click(); + await this.continueButton.click(); } async validateStateLawModalIsVisible() { - await expect.soft(this.stateLawModalHeading).toBeVisible(); + await expect.soft(this.stateLawModalText).toBeVisible(); } } \ No newline at end of file