77 lines
No EOL
3.3 KiB
TypeScript
77 lines
No EOL
3.3 KiB
TypeScript
import test, { expect, type Locator, type Page } from '@playwright/test';
|
|
import { BasePage } from './BasePage';
|
|
|
|
export class ProviderPreferencePage extends BasePage {
|
|
readonly page: Page;
|
|
readonly scheduleNowButton: Locator;
|
|
readonly findAnotherShopButton: Locator;
|
|
|
|
readonly acknowledgeAdasCheckbox: Locator;
|
|
readonly gotItButton: Locator;
|
|
readonly tpaRecalModal: Locator;
|
|
readonly learnMoreLink: Locator;
|
|
readonly yesButton: Locator;
|
|
readonly noButton: Locator;
|
|
readonly acknowledgeCheckbox: Locator;
|
|
readonly tpaRecalModalContinueButton: Locator;
|
|
readonly stateLawModalText: Locator;
|
|
readonly stateLawRepairModalText: Locator;
|
|
readonly stateLawModalOkayButton: Locator;
|
|
issPageValue = 'provider-preference';
|
|
|
|
constructor(page: Page) {
|
|
super(page);
|
|
this.page = page;
|
|
|
|
this.scheduleNowButton = this.page.getByRole('button', { name: 'Schedule now' });
|
|
this.findAnotherShopButton = this.page.getByRole('link', { name: 'Find another shop' });
|
|
|
|
//Recal modal
|
|
this.tpaRecalModal = this.page.locator('#TPARecalModal');
|
|
this.learnMoreLink = this.page.locator('#moreDetails');
|
|
this.yesButton = this.page.getByText('Yes', { exact: true }); // schedule with Safelite
|
|
this.noButton = this.page.getByText('No', { exact: true }); // schedule with TPA
|
|
this.acknowledgeAdasCheckbox = this.page.getByRole('checkbox', { name: /I acknowledge/i })
|
|
this.tpaRecalModalContinueButton = this.page.locator('#modalbtn', { hasText: 'Continue' });
|
|
|
|
// State law modal - is there a difference between repair and replacement modals? need to check
|
|
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.stateLawRepairModalText = this.page.getByText(/We are prohibited by law from requiring that repairs be done at a specific automotive repair dealer. You are entitled to select the auto body repair shop to repair damage covered by us\./is);
|
|
this.stateLawModalOkayButton = this.page.getByRole('button', { name: 'Okay' })
|
|
}
|
|
|
|
async selectProvider(isSafelite: boolean) {
|
|
if (isSafelite) {
|
|
await this.scheduleNowButton.click();
|
|
await this.nextPage();
|
|
}
|
|
}
|
|
|
|
async scheduleWithSafeliteADAS() {
|
|
await this.learnMoreLink.click();
|
|
await this.yesButton.click();
|
|
await this.tpaRecalModalContinueButton.click();
|
|
}
|
|
|
|
async scheduleTPAWithAdas() {
|
|
await this.findAnotherShopButton.waitFor({ state: 'visible' });
|
|
await this.findAnotherShopButton.click();
|
|
await this.tpaRecalModal.waitFor({ state: 'visible' });
|
|
await this.learnMoreLink.click();
|
|
await this.noButton.click(); // continue to schedule with TPA even with recal disclaimer
|
|
await this.acknowledgeAdasCheckbox.click();
|
|
await this.tpaRecalModalContinueButton.click();
|
|
}
|
|
|
|
async scheduleTPAWithoutAdas() {
|
|
await this.findAnotherShopButton.click();
|
|
}
|
|
|
|
async validateStateLawModalIsVisible() {
|
|
await expect.soft(this.stateLawModalText).toBeVisible();
|
|
}
|
|
|
|
async validateStateLawRepairModalIsVisible() {
|
|
await expect.soft(this.stateLawRepairModalText).toBeVisible();
|
|
}
|
|
} |