Update validateURL to account for variations in query string

In scenarios that reach the order confirmation page, the query string
includes more than the issPageValue, whiche was breaking validateURL
This commit is contained in:
Alex Humphries 2025-03-07 11:47:06 -05:00
parent b935cf0efa
commit 49c951fe25
31 changed files with 75 additions and 74 deletions

View file

@ -9,7 +9,7 @@ export class BailoutPage extends BasePage {
readonly phoneNumberTextBox: Locator; readonly phoneNumberTextBox: Locator;
readonly emailAddressTextBox: Locator; readonly emailAddressTextBox: Locator;
url = process.env['BASE_URL']! + '/?issPage=bailout-page'; issPageValue = 'bailout-page';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -115,9 +115,9 @@ export class BasePage {
} }
async validateURL(url: string) { async validateURL(issPageValue: string) {
await test.step(`Validating URL:${url}`, async () => { await test.step(`Validating page value:${issPageValue}`, async () => {
let failCount = 0; let failCount = 0;
/* /*
We can't assume that the URL has already changed when we get here, but the point of this We can't assume that the URL has already changed when we get here, but the point of this
@ -128,7 +128,7 @@ export class BasePage {
await this.page.waitForTimeout(1000); await this.page.waitForTimeout(1000);
const currentUrl = this.page.url(); const currentUrl = this.page.url();
console.log(`Current URL: ${currentUrl}`) console.log(`Current URL: ${currentUrl}`)
if(currentUrl == url) if(currentUrl.includes(issPageValue))
break; break;
else { else {
failCount++; failCount++;

View file

@ -2,7 +2,7 @@ import { Page } from "@playwright/test";
import { PartQuestionsPage } from "./PartQuestionsPage"; import { PartQuestionsPage } from "./PartQuestionsPage";
export default class CapabilityQuestionsPage extends PartQuestionsPage { export default class CapabilityQuestionsPage extends PartQuestionsPage {
url = process.env['BASE_URL']! + '/?issPage=capability-questions'; issPageValue = 'capability-questions';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -6,7 +6,7 @@ export class ContactConfirmationPage extends BasePage {
readonly page: Page; readonly page: Page;
readonly ConfirmMessageLabel: Locator; readonly ConfirmMessageLabel: Locator;
url = process.env['BASE_URL']! + '/?issPage=contact-confirmation'; issPageValue = 'contact-confirmation';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -4,7 +4,7 @@ import { ICustomerDetails } from '@business-logic/types/CustomerDetails';
export class ContactDetailsPage extends BasePage { export class ContactDetailsPage extends BasePage {
readonly page: Page; readonly page: Page;
url = process.env['BASE_URL']! + '/?issPage=contact-details'; issPageValue = 'contact-details';
// Contact details form // Contact details form
// TODO: Check if we can consolidate // TODO: Check if we can consolidate

View file

@ -8,7 +8,7 @@ export class CoverageStatementPage extends BasePage {
readonly deductibleAmount: Locator; readonly deductibleAmount: Locator;
readonly verfiyingCoverageText: Locator; readonly verfiyingCoverageText: Locator;
readonly continueToScheduleButton: Locator; // For ITAC/NoComp readonly continueToScheduleButton: Locator; // For ITAC/NoComp
url = process.env['BASE_URL']! + '/?issPage=coverage-statement'; issPageValue = 'coverage-statement';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -4,7 +4,7 @@ import { BasePage } from './BasePage';
export class DuplicateCheckPage extends BasePage { export class DuplicateCheckPage extends BasePage {
readonly page: Page; readonly page: Page;
readonly newClaimButton: Locator; readonly newClaimButton: Locator;
url = process.env['BASE_URL']! + '/?issPage=duplicate-check'; issPageValue = 'duplicate-check';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -7,7 +7,7 @@ export class EndorsementsPage extends BasePage {
readonly page: Page; readonly page: Page;
readonly educatorYesButton: Locator; readonly educatorYesButton: Locator;
readonly educatorNoButton: Locator; readonly educatorNoButton: Locator;
url = process.env['BASE_URL']! + '/?issPage=policy-endorsements'; issPageValue = 'policy-endorsements';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -3,7 +3,7 @@ import { BasePage } from './BasePage';
export class MoldingQuestionsPage extends BasePage { export class MoldingQuestionsPage extends BasePage {
readonly page: Page; readonly page: Page;
url = process.env['BASE_URL']! + '/?issPage=part-questions'; issPageValue = 'part-questions';
readonly yesButton: Locator; readonly yesButton: Locator;
constructor(page: Page) { constructor(page: Page) {

View file

@ -15,7 +15,7 @@ export class OrderConfirmationPage extends BasePage {
readonly subtotalText: Locator; readonly subtotalText: Locator;
readonly finalAmountDue: Locator; readonly finalAmountDue: Locator;
readonly cartServicePackageText: Locator; readonly cartServicePackageText: Locator;
url = process.env['BASE_URL']! + '/?issPage=order-confirmation'; issPageValue = 'order-confirmation';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -4,7 +4,7 @@ import { IPartQuestion } from '@business-logic/types/CustomerDetails';
export class PartQuestionsPage extends BasePage { export class PartQuestionsPage extends BasePage {
readonly page: Page; readonly page: Page;
url = process.env['BASE_URL']! + '/?issPage=part-questions'; issPageValue = 'part-questions';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -15,7 +15,7 @@ export class PaymentMethodPage extends BasePage {
readonly paypalButton: Locator; readonly paypalButton: Locator;
readonly paymentPage: PaymentPage; readonly paymentPage: PaymentPage;
readonly paypalPage: PaypalPage; readonly paypalPage: PaypalPage;
url = process.env['BASE_URL']! + '/?issPage=payment-method'; issPageValue = 'payment-method';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -13,7 +13,7 @@ export class PaymentPage extends BasePage {
readonly stateDropDown: Locator; readonly stateDropDown: Locator;
readonly billingZipTextField: Locator; readonly billingZipTextField: Locator;
readonly submitPaymentButton: Locator; readonly submitPaymentButton: Locator;
url = process.env['BASE_URL']! + '/?issPage=payment-page'; issPageValue = 'payment-page';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -6,7 +6,7 @@ import { AddressForm } from './forms/AddressForm';
export class PolicyHolderDetailsPage extends BasePage { export class PolicyHolderDetailsPage extends BasePage {
readonly page: Page; readonly page: Page;
readonly addressForm: AddressForm; readonly addressForm: AddressForm;
readonly url = process.env['BASE_URL']! + '/?issPage=policy-holder-details'; readonly issPageValue = 'policy-holder-details';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -4,7 +4,7 @@ import { IVehicleDetails } from '@business-logic/types/CustomerDetails';
export class PolicyVehiclesPage extends BasePage { export class PolicyVehiclesPage extends BasePage {
readonly page: Page; readonly page: Page;
url = process.env['BASE_URL']! + '/?issPage=policy-vehicles'; issPageValue = 'policy-vehicles';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -9,7 +9,7 @@ export class ProviderPreferencePage extends BasePage {
readonly gotItButton: Locator; readonly gotItButton: Locator;
readonly acknowledgeCheckbox: Locator; readonly acknowledgeCheckbox: Locator;
readonly stateLawModalHeading: Locator; readonly stateLawModalHeading: Locator;
url = process.env['BASE_URL']! + '/?issPage=provider-preference'; issPageValue = 'provider-preference';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -6,7 +6,7 @@ import { ServiceLocation } from '@business-logic/types/Enums';
export class SchedulePage extends BasePage { export class SchedulePage extends BasePage {
readonly page: Page; readonly page: Page;
url = process.env['BASE_URL']! + '/?issPage=schedule-page'; issPageValue = 'schedule-page';
readonly firstAvailableDate: Locator; readonly firstAvailableDate: Locator;
readonly firstAvailableTime: Locator; readonly firstAvailableTime: Locator;
readonly modalContinueButton: Locator; readonly modalContinueButton: Locator;

View file

@ -36,7 +36,7 @@ export class ServiceLocationPage extends BasePage {
readonly vehicleProtectedNoButton: Locator; readonly vehicleProtectedNoButton: Locator;
readonly saveAddressButton: Locator; readonly saveAddressButton: Locator;
url = process.env['BASE_URL']! + '/?issPage=service-location'; issPageValue = 'service-location';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -7,7 +7,7 @@ export class ServicePackagesPage extends BasePage {
readonly standardPackageButton: Locator; readonly standardPackageButton: Locator;
readonly premiumPackageButton: Locator; readonly premiumPackageButton: Locator;
readonly glassOnlyButton: Locator; readonly glassOnlyButton: Locator;
url = process.env['BASE_URL']! + '/?issPage=service-packages'; issPageValue = 'service-packages';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -4,7 +4,7 @@ import { BasePage } from './BasePage';
export class TpaConfirmationPage extends BasePage { export class TpaConfirmationPage extends BasePage {
readonly page: Page; readonly page: Page;
readonly successMessage: Locator; readonly successMessage: Locator;
readonly url = process.env['BASE_URL']! + '/?issPage=tpa-confirmation'; readonly issPageValue = 'tpa-confirmation';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -5,7 +5,7 @@ export class TpaSearchPage extends BasePage {
readonly page: Page; readonly page: Page;
readonly firstLocationButton: Locator; readonly firstLocationButton: Locator;
readonly doNotSeeMyShopButton: Locator; readonly doNotSeeMyShopButton: Locator;
url = process.env['BASE_URL']! + '/?issPage=tpa-search'; issPageValue = 'tpa-search';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -4,7 +4,7 @@ import { BasePage } from './BasePage';
export class TpaSubmitPage extends BasePage { export class TpaSubmitPage extends BasePage {
readonly page: Page; readonly page: Page;
readonly deductible: Locator; readonly deductible: Locator;
url = process.env['BASE_URL']! + '/?issPage=tpa-submit'; issPageValue = 'tpa-submit';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -22,7 +22,7 @@ export class VehicleDamagePage extends BasePage {
readonly rearWindowChkBox: Locator; readonly rearWindowChkBox: Locator;
readonly separateApptsWarning: Locator; readonly separateApptsWarning: Locator;
readonly editVehicleButton: Locator; readonly editVehicleButton: Locator;
url = process.env['BASE_URL']! + '/?issPage=vehicle-damage'; issPageValue = 'vehicle-damage';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -8,7 +8,7 @@ export class VehicleLookupAddressPage extends BasePage {
readonly page: Page; readonly page: Page;
readonly addressForm: AddressForm; readonly addressForm: AddressForm;
readonly vehicleSelectionForm: VehicleSelectionForm; readonly vehicleSelectionForm: VehicleSelectionForm;
url = process.env['BASE_URL']! + '/?issPage=address-lookup'; issPageValue = 'address-lookup';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -8,7 +8,7 @@ export class VehicleLookupLicensePage extends BasePage {
readonly licensePlateStateDrpDwn: Locator; readonly licensePlateStateDrpDwn: Locator;
readonly plateNoMatchError: Locator; readonly plateNoMatchError: Locator;
readonly plateMismatchAlert: Locator; readonly plateMismatchAlert: Locator;
url = process.env['BASE_URL']! + '/?issPage='; // TODO: Input correct URL issPageValue = 'license-plate-lookup';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -14,7 +14,7 @@ export class VehicleLookupPage extends BasePage {
readonly vinLookupPage: VinLookupPage; readonly vinLookupPage: VinLookupPage;
readonly vehicleLookupAddressPage: VehicleLookupAddressPage; readonly vehicleLookupAddressPage: VehicleLookupAddressPage;
readonly vehicleLookupLicensePage: VehicleLookupLicensePage; readonly vehicleLookupLicensePage: VehicleLookupLicensePage;
url = process.env['BASE_URL']! + '/?issPage=vehicle-lookup'; issPageValue = 'vehicle-lookup';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -2,7 +2,7 @@ import { Page } from "@playwright/test";
import { PartQuestionsPage } from "./PartQuestionsPage"; import { PartQuestionsPage } from "./PartQuestionsPage";
export default class VehiclePartQuestionsPage extends PartQuestionsPage{ export default class VehiclePartQuestionsPage extends PartQuestionsPage{
url = process.env['BASE_URL']! + '/?issPage=vehicle-parts'; issPageValue = 'vehicle-parts';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -9,7 +9,7 @@ export class VehicleSelectionPage extends BasePage {
readonly modelDropdown: Locator; readonly modelDropdown: Locator;
readonly styleDropdown: Locator; readonly styleDropdown: Locator;
url = process.env['BASE_URL']! + '/?issPage=vehicle-selection'; issPageValue = 'vehicle-selection';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -6,7 +6,7 @@ export class VinLookupPage extends BasePage {
readonly vinLookupTextBox: Locator; readonly vinLookupTextBox: Locator;
readonly lookupVinForMe: Locator; readonly lookupVinForMe: Locator;
readonly vinMismatchAlert: Locator; readonly vinMismatchAlert: Locator;
url = process.env['BASE_URL']! + '/?issPage=vin-lookup'; // TODO: Input correct URL issPageValue = 'vin-lookup';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -17,6 +17,7 @@ export class WelcomePage extends BasePage {
readonly state: Locator; readonly state: Locator;
readonly cookieCloseButton: Locator; readonly cookieCloseButton: Locator;
url = process.env['BASE_URL']! + '/?issPage=welcome-page'; url = process.env['BASE_URL']! + '/?issPage=welcome-page';
issPageValue = 'welcome-page';
constructor(page: Page) { constructor(page: Page) {
super(page); super(page);

View file

@ -370,7 +370,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
// TODO: Dynamic for when we don't care if duplicate page appears // TODO: Dynamic for when we don't care if duplicate page appears
await test.step('DuplicateCheckPage >> Start New Claim', async () => { await test.step('DuplicateCheckPage >> Start New Claim', async () => {
await duplicateCheckPage.validateURL(duplicateCheckPage.url); await duplicateCheckPage.validateURL(duplicateCheckPage.issPageValue);
await duplicateCheckPage.startNewClaim(); await duplicateCheckPage.startNewClaim();
await duplicateCheckPage.nextPage(); await duplicateCheckPage.nextPage();
}); });
@ -378,7 +378,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
if (isPolicyFound) { if (isPolicyFound) {
await test.step('PolicyVehiclesPage >> Select vehicle', async () => { await test.step('PolicyVehiclesPage >> Select vehicle', async () => {
await policyVehiclesPage.validateURL(policyVehiclesPage.url); await policyVehiclesPage.validateURL(policyVehiclesPage.issPageValue);
await policyVehiclesPage.logReferralNumber(); await policyVehiclesPage.logReferralNumber();
// Validate other vehicles on policy // Validate other vehicles on policy
if (otherVehiclesOnPolicy && otherVehiclesOnPolicy.length > 0) { if (otherVehiclesOnPolicy && otherVehiclesOnPolicy.length > 0) {
@ -400,7 +400,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
if (isHeavyTruckVehicleBailout) { if (isHeavyTruckVehicleBailout) {
await test.step('BailoutPage >> Heavy Vehicle Bailout', async () => { await test.step('BailoutPage >> Heavy Vehicle Bailout', async () => {
await bailoutPage.validateURL(bailoutPage.url); await bailoutPage.validateURL(bailoutPage.issPageValue);
await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.HeavyTruckVehicle); await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.HeavyTruckVehicle);
}); });
return; return;
@ -408,7 +408,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
if (hasEndorsements) { if (hasEndorsements) {
await test.step('EndorsementsPage >> Select Endorsements', async () => { await test.step('EndorsementsPage >> Select Endorsements', async () => {
await endorsementsPage.validateURL(endorsementsPage.url); await endorsementsPage.validateURL(endorsementsPage.issPageValue);
await endorsementsPage.verifyEndorsements(endorsements); await endorsementsPage.verifyEndorsements(endorsements);
await endorsementsPage.selectEndorsements(endorsements); await endorsementsPage.selectEndorsements(endorsements);
await endorsementsPage.nextPage(); await endorsementsPage.nextPage();
@ -418,7 +418,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
} else { } else {
await policyVehiclesPage.logReferralNumber(); await policyVehiclesPage.logReferralNumber();
await test.step('PolicyHolderDetailsPage >> Enter customer data', async () => { await test.step('PolicyHolderDetailsPage >> Enter customer data', async () => {
await policyHolderDetailsPage.validateURL(policyHolderDetailsPage.url); await policyHolderDetailsPage.validateURL(policyHolderDetailsPage.issPageValue);
await policyHolderDetailsPage.fillCustomerDetails(customerDetails!); await policyHolderDetailsPage.fillCustomerDetails(customerDetails!);
await policyHolderDetailsPage.nextPage(); await policyHolderDetailsPage.nextPage();
}); });
@ -428,14 +428,14 @@ async function runWorkflow(page: Page, testCase: TestCase) {
} }
await test.step('VehicleDetailsPage >> Select Vehicle', async () => { await test.step('VehicleDetailsPage >> Select Vehicle', async () => {
await vehicleSelectionPage.validateURL(vehicleSelectionPage.url); await vehicleSelectionPage.validateURL(vehicleSelectionPage.issPageValue);
await vehicleSelectionPage.selectVehicle(vehicleDetails!); await vehicleSelectionPage.selectVehicle(vehicleDetails!);
await vehicleSelectionPage.nextPage(); await vehicleSelectionPage.nextPage();
}); });
if (isVehicleLookupBailout) { if (isVehicleLookupBailout) {
await test.step('BailoutPage >> Vehicle Lookup Bailout', async () => { await test.step('BailoutPage >> Vehicle Lookup Bailout', async () => {
await bailoutPage.validateURL(bailoutPage.url); await bailoutPage.validateURL(bailoutPage.issPageValue);
await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.VehicleYMMSLookupError); await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.VehicleYMMSLookupError);
}); });
return; return;
@ -443,7 +443,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
if (isHeavyTruckVehicleBailout) { if (isHeavyTruckVehicleBailout) {
await test.step('BailoutPage >> Heavy Vehicle Bailout', async () => { await test.step('BailoutPage >> Heavy Vehicle Bailout', async () => {
await bailoutPage.validateURL(bailoutPage.url); await bailoutPage.validateURL(bailoutPage.issPageValue);
await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.HeavyTruckVehicle); await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.HeavyTruckVehicle);
}); });
return; return;
@ -454,13 +454,13 @@ async function runWorkflow(page: Page, testCase: TestCase) {
isPolicyFound = false; // Flow proceeds as unverified isPolicyFound = false; // Flow proceeds as unverified
testCase.testData.isPolicyFound = false; testCase.testData.isPolicyFound = false;
await test.step('VehicleDamagePage >> Click Edit Vehicle', async () => { await test.step('VehicleDamagePage >> Click Edit Vehicle', async () => {
await vehicleDamagePage.validateURL(vehicleDamagePage.url); await vehicleDamagePage.validateURL(vehicleDamagePage.issPageValue);
await vehicleDamagePage.editVehicleButton.click(); await vehicleDamagePage.editVehicleButton.click();
}); });
await test.step('VehicleDetailsPage >> Select edited vehicle', async () => { await test.step('VehicleDetailsPage >> Select edited vehicle', async () => {
await test.step('VehicleDetailsPage >> Select Vehicle', async () => { await test.step('VehicleDetailsPage >> Select Vehicle', async () => {
await vehicleSelectionPage.validateURL(vehicleSelectionPage.url); await vehicleSelectionPage.validateURL(vehicleSelectionPage.issPageValue);
await vehicleSelectionPage.selectVehicle(editVehicleDetails); await vehicleSelectionPage.selectVehicle(editVehicleDetails);
await vehicleSelectionPage.nextPage(); await vehicleSelectionPage.nextPage();
}); });
@ -468,7 +468,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
} }
await test.step('VehicleDamagePage >> Select Damage', async () => { await test.step('VehicleDamagePage >> Select Damage', async () => {
await vehicleDamagePage.validateURL(vehicleDamagePage.url); await vehicleDamagePage.validateURL(vehicleDamagePage.issPageValue);
if (isSeparateApptsWarning) { if (isSeparateApptsWarning) {
await vehicleDamagePage.checkSeparateApptsWarning(); await vehicleDamagePage.checkSeparateApptsWarning();
} }
@ -478,17 +478,17 @@ async function runWorkflow(page: Page, testCase: TestCase) {
if (isPartsServiceErrorBailout) { if (isPartsServiceErrorBailout) {
await test.step('VehicleLookupPage >> Select Lookup Type', async () => { await test.step('VehicleLookupPage >> Select Lookup Type', async () => {
await vehicleLookupPage.validateURL(vehicleLookupPage.url); await vehicleLookupPage.validateURL(vehicleLookupPage.issPageValue);
await vehicleLookupPage.vehicleLookup(vehicleDetails!); await vehicleLookupPage.vehicleLookup(vehicleDetails!);
}); });
await test.step('VinLookupPage >> Lookup by VIN', async () => { await test.step('VinLookupPage >> Lookup by VIN', async () => {
await vinLookupPage.validateURL(vinLookupPage.url); await vinLookupPage.validateURL(vinLookupPage.issPageValue);
await vinLookupPage.enterVin(vehicleDetails!.vin!); await vinLookupPage.enterVin(vehicleDetails!.vin!);
forceAPIError(page, '/parts/api/v1/parts') forceAPIError(page, '/parts/api/v1/parts')
await vinLookupPage.nextPage(); await vinLookupPage.nextPage();
}); });
await test.step('BailoutPage >> Parts Service Error Bailout', async () => { await test.step('BailoutPage >> Parts Service Error Bailout', async () => {
await bailoutPage.validateURL(bailoutPage.url); await bailoutPage.validateURL(bailoutPage.issPageValue);
await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.PartsServiceError); await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.PartsServiceError);
return; return;
}); });
@ -499,13 +499,13 @@ async function runWorkflow(page: Page, testCase: TestCase) {
await test.step('VehicleLookupPage >> Select Lookup Type' + vehicleDetails?.vehicleLookupType, async () => { await test.step('VehicleLookupPage >> Select Lookup Type' + vehicleDetails?.vehicleLookupType, async () => {
await vehicleLookupPage.validateURL(vehicleLookupPage.url); await vehicleLookupPage.validateURL(vehicleLookupPage.issPageValue);
await vehicleLookupPage.vehicleLookup(vehicleDetails!); await vehicleLookupPage.vehicleLookup(vehicleDetails!);
}); });
if (isVehicleSelectBailout) { if (isVehicleSelectBailout) {
await vinLookupPage.validateURL(vinLookupPage.url); await vinLookupPage.validateURL(vinLookupPage.issPageValue);
await test.step('Lookup vehicle >> By VIN-' + vehicleDetails!.vin!, async () => { await test.step('Lookup vehicle >> By VIN-' + vehicleDetails!.vin!, async () => {
await vinLookupPage.enterVin(vehicleDetails!.vin!); await vinLookupPage.enterVin(vehicleDetails!.vin!);
}); });
@ -523,13 +523,13 @@ async function runWorkflow(page: Page, testCase: TestCase) {
switch (vehicleDetails!.vehicleLookupType!) { switch (vehicleDetails!.vehicleLookupType!) {
case VehicleLookupType.Address: case VehicleLookupType.Address:
await test.step('VehicleLookupAddressPage >> Lookup by address: ' + customerDetails!.address.street, async () => { await test.step('VehicleLookupAddressPage >> Lookup by address: ' + customerDetails!.address.street, async () => {
await vehicleLookupAddressPage.validateURL(vehicleLookupAddressPage.url); await vehicleLookupAddressPage.validateURL(vehicleLookupAddressPage.issPageValue);
await vehicleLookupAddressPage.lookupVehicleByAddress(customerDetails!, vehicleDetails!); await vehicleLookupAddressPage.lookupVehicleByAddress(customerDetails!, vehicleDetails!);
await vehicleLookupAddressPage.nextPage(); await vehicleLookupAddressPage.nextPage();
}); });
break; break;
case VehicleLookupType.LicensePlateNumber: case VehicleLookupType.LicensePlateNumber:
await vehicleLookupLicensePage.validateURL(vehicleLookupLicensePage.url); await vehicleLookupLicensePage.validateURL(vehicleLookupLicensePage.issPageValue);
if (isVehicleLookupValidations) { if (isVehicleLookupValidations) {
await test.step('VehicleLookupLicensePage >> Lookup by license plate: ' + vehicleDetails!.licensePlateNumber, async () => { await test.step('VehicleLookupLicensePage >> Lookup by license plate: ' + vehicleDetails!.licensePlateNumber, async () => {
await vehicleLookupLicensePage.enterPlateDetails(vehicleDetails!, isVehicleLookupValidations); await vehicleLookupLicensePage.enterPlateDetails(vehicleDetails!, isVehicleLookupValidations);
@ -545,7 +545,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
break; break;
case VehicleLookupType.Vin: case VehicleLookupType.Vin:
await test.step('VinLookupPage >> Lookup by VIN: ' + vehicleDetails!.vin!, async () => { await test.step('VinLookupPage >> Lookup by VIN: ' + vehicleDetails!.vin!, async () => {
await vinLookupPage.validateURL(vinLookupPage.url); await vinLookupPage.validateURL(vinLookupPage.issPageValue);
await vinLookupPage.enterVin(vehicleDetails!.vin!, isVehicleLookupValidations); await vinLookupPage.enterVin(vehicleDetails!.vin!, isVehicleLookupValidations);
await vinLookupPage.nextPage(); await vinLookupPage.nextPage();
}); });
@ -554,7 +554,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
} }
if (isMoldingQuestion) { if (isMoldingQuestion) {
await test.step('Molding Questions Page >> Select Yes', async () => { await test.step('Molding Questions Page >> Select Yes', async () => {
await moldingQuestionsPage.validateURL(moldingQuestionsPage.url); await moldingQuestionsPage.validateURL(moldingQuestionsPage.issPageValue);
if (!moldingQuestionsPage) { if (!moldingQuestionsPage) {
console.error("moldingQuestionsPage is not initialized"); console.error("moldingQuestionsPage is not initialized");
} }
@ -563,28 +563,28 @@ async function runWorkflow(page: Page, testCase: TestCase) {
}); });
} }
if (capabilityQuestions && capabilityQuestions.length > 0) { if (capabilityQuestions && capabilityQuestions.length > 0) {
await capabilityQuestionsPage.validateURL(capabilityQuestionsPage.url); await capabilityQuestionsPage.validateURL(capabilityQuestionsPage.issPageValue);
await capabilityQuestionsPage.validatePartQuestions(capabilityQuestions); await capabilityQuestionsPage.validatePartQuestions(capabilityQuestions);
await capabilityQuestionsPage.selectPartQuestionResponses(capabilityQuestions); await capabilityQuestionsPage.selectPartQuestionResponses(capabilityQuestions);
await capabilityQuestionsPage.nextPage(); await capabilityQuestionsPage.nextPage();
} }
if (partQuestions && partQuestions.length > 0) { if (partQuestions && partQuestions.length > 0) {
await partQuestionsPage.validateURL(partQuestionsPage.url); await partQuestionsPage.validateURL(partQuestionsPage.issPageValue);
await partQuestionsPage.validatePartQuestions(partQuestions); await partQuestionsPage.validatePartQuestions(partQuestions);
await partQuestionsPage.selectPartQuestionResponses(partQuestions); await partQuestionsPage.selectPartQuestionResponses(partQuestions);
await partQuestionsPage.nextPage(); await partQuestionsPage.nextPage();
} }
if (vehiclePartQuestions && vehiclePartQuestions.length > 0) { if (vehiclePartQuestions && vehiclePartQuestions.length > 0) {
await vehiclePartQuestionsPage.validateURL(vehiclePartQuestionsPage.url); await vehiclePartQuestionsPage.validateURL(vehiclePartQuestionsPage.issPageValue);
await vehiclePartQuestionsPage.validatePartQuestions(vehiclePartQuestions); await vehiclePartQuestionsPage.validatePartQuestions(vehiclePartQuestions);
await vehiclePartQuestionsPage.selectPartQuestionResponses(vehiclePartQuestions); await vehiclePartQuestionsPage.selectPartQuestionResponses(vehiclePartQuestions);
await vehiclePartQuestionsPage.nextPage(); await vehiclePartQuestionsPage.nextPage();
} }
await test.step('CoverageStatementPage >> Next page', async () => { await test.step('CoverageStatementPage >> Next page', async () => {
await coverageStatementPage.validateURL(coverageStatementPage.url); await coverageStatementPage.validateURL(coverageStatementPage.issPageValue);
// Confirm no coverage // Confirm no coverage
if (isPolicyFound && (isItac || isNoComp)) { if (isPolicyFound && (isItac || isNoComp)) {
await coverageStatementPage.continueToScheduleButton.click(); await coverageStatementPage.continueToScheduleButton.click();
@ -595,7 +595,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
if (hasStateLawPopup) { if (hasStateLawPopup) {
await test.step('ProviderPreferencePage >> Dismiss state law popup', async () => { await test.step('ProviderPreferencePage >> Dismiss state law popup', async () => {
await providerPreferencePage.validateURL(providerPreferencePage.url); await providerPreferencePage.validateURL(providerPreferencePage.issPageValue);
await providerPreferencePage.validateStateLawModalIsVisible(); await providerPreferencePage.validateStateLawModalIsVisible();
await providerPreferencePage.gotItButton.click(); await providerPreferencePage.gotItButton.click();
}); });
@ -603,20 +603,20 @@ async function runWorkflow(page: Page, testCase: TestCase) {
if (!isPolicyFound || !(isItac || isNoComp)) { if (!isPolicyFound || !(isItac || isNoComp)) {
await test.step('ProviderPreferencePage >> Select Provider ' + isSafelite ? "Safelite" : "Other shops(Non-Safelite)", async () => { await test.step('ProviderPreferencePage >> Select Provider ' + isSafelite ? "Safelite" : "Other shops(Non-Safelite)", async () => {
await providerPreferencePage.validateURL(providerPreferencePage.url); await providerPreferencePage.validateURL(providerPreferencePage.issPageValue);
await providerPreferencePage.selectProvider(isSafelite); await providerPreferencePage.selectProvider(isSafelite);
}); });
} }
// validations for Recal warning mesage // validations for Recal warning mesage
if (isRecalWarning) { if (isRecalWarning) {
await serviceLocationPage.validateURL(serviceLocationPage.url); await serviceLocationPage.validateURL(serviceLocationPage.issPageValue);
await serviceLocationPage.validateRecalWarning(); await serviceLocationPage.validateRecalWarning();
} }
// if isRecalNotifidation flag true additional step to acknowledge Recal notification. // if isRecalNotifidation flag true additional step to acknowledge Recal notification.
if (isRecalNotification) { if (isRecalNotification) {
await providerPreferencePage.validateURL(providerPreferencePage.url); await providerPreferencePage.validateURL(providerPreferencePage.issPageValue);
await providerPreferencePage.acknowledgeRecalNotificaiton(); await providerPreferencePage.acknowledgeRecalNotificaiton();
} }
// If No-Comp or ITAC, ProviderPreferencePage does not appear // If No-Comp or ITAC, ProviderPreferencePage does not appear
@ -627,7 +627,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
if (testCase.testData!.clientTag == '05CC1609-3631-4044-B45A-E78E13343B9A') { // Avoiding TPA flow for Federated Insureance due to Defect# SSR-1984 //Temporary fix until Defect# SSR-1984 is addressed. if (testCase.testData!.clientTag == '05CC1609-3631-4044-B45A-E78E13343B9A') { // Avoiding TPA flow for Federated Insureance due to Defect# SSR-1984 //Temporary fix until Defect# SSR-1984 is addressed.
await test.step('***** Performing Safelite flow for Federal Insurance due to defec# SSR-1984 *****', async () => { }); await test.step('***** Performing Safelite flow for Federal Insurance due to defec# SSR-1984 *****', async () => { });
await test.step('TpaSearchPage >> TPA Search', async () => { await test.step('TpaSearchPage >> TPA Search', async () => {
await tpaSearchPage.validateURL(tpaSearchPage.url); await tpaSearchPage.validateURL(tpaSearchPage.issPageValue);
await tpaSearchPage.selectFirstLocation(); await tpaSearchPage.selectFirstLocation();
// await tpaSearchPage.nextPage(); // await tpaSearchPage.nextPage();
}); });
@ -635,7 +635,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
} }
if (isTpaNotEnabledBailout) { if (isTpaNotEnabledBailout) {
await test.step('validateBailoutDetails >> Bailout code : ' + BailoutCode.TPANotEnabled, async () => { await test.step('validateBailoutDetails >> Bailout code : ' + BailoutCode.TPANotEnabled, async () => {
await bailoutPage.validateURL(bailoutPage.url); await bailoutPage.validateURL(bailoutPage.issPageValue);
await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.TPANotEnabled); await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.TPANotEnabled);
return; return;
}); });
@ -644,28 +644,28 @@ async function runWorkflow(page: Page, testCase: TestCase) {
if (isDoNotSeeMyShopBailout) { if (isDoNotSeeMyShopBailout) {
await test.step('TpaSearchPage >> Select "Do Not See My Shop"', async () => { await test.step('TpaSearchPage >> Select "Do Not See My Shop"', async () => {
await tpaSearchPage.validateURL(tpaSearchPage.url); await tpaSearchPage.validateURL(tpaSearchPage.issPageValue);
await tpaSearchPage.selectDoNotSeeMyShop(); await tpaSearchPage.selectDoNotSeeMyShop();
}); });
await bailoutPage.validateURL(bailoutPage.url); await bailoutPage.validateURL(bailoutPage.issPageValue);
await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.DoNotSeeMyShop); await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.DoNotSeeMyShop);
return; return;
} }
await test.step('TpaSearchPage >> TPA Search', async () => { await test.step('TpaSearchPage >> TPA Search', async () => {
await tpaSearchPage.validateURL(tpaSearchPage.url); await tpaSearchPage.validateURL(tpaSearchPage.issPageValue);
await tpaSearchPage.selectFirstLocation(); await tpaSearchPage.selectFirstLocation();
await tpaSearchPage.nextPage(); await tpaSearchPage.nextPage();
}); });
await test.step('TpaSubmitPage >> TPA Submit', async () => { await test.step('TpaSubmitPage >> TPA Submit', async () => {
// TODO: Validations // TODO: Validations
await tpaSubmitPage.validateURL(tpaSubmitPage.url); await tpaSubmitPage.validateURL(tpaSubmitPage.issPageValue);
await tpaSubmitPage.nextPage(); await tpaSubmitPage.nextPage();
}); });
await test.step('TpaConfirmationPage >> TPA Confirmation', async () => { await test.step('TpaConfirmationPage >> TPA Confirmation', async () => {
await tpaConfirmationPage.validateURL(tpaConfirmationPage.url); await tpaConfirmationPage.validateURL(tpaConfirmationPage.issPageValue);
await tpaConfirmationPage.validateSuccessMessage(); await tpaConfirmationPage.validateSuccessMessage();
return; return;
}); });
@ -674,7 +674,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
} }
await test.step('ServiceLocationPage >> Select service location', async () => { await test.step('ServiceLocationPage >> Select service location', async () => {
await serviceLocationPage.validateURL(serviceLocationPage.url); await serviceLocationPage.validateURL(serviceLocationPage.issPageValue);
await serviceLocationPage.selectLocation(appointmentDetails!); await serviceLocationPage.selectLocation(appointmentDetails!);
if (hasMilitaryWarning) { if (hasMilitaryWarning) {
await expect.soft(serviceLocationPage.militaryWarningMessage).toBeVisible(); await expect.soft(serviceLocationPage.militaryWarningMessage).toBeVisible();
@ -683,7 +683,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
}); });
await test.step('SchedulePage >> Select day and time', async () => { await test.step('SchedulePage >> Select day and time', async () => {
await schedulePage.validateURL(schedulePage.url); await schedulePage.validateURL(schedulePage.issPageValue);
customerDetails!.apptDate = await schedulePage.scheduleFirstAppointment(appointmentDetails!.serviceLocation); customerDetails!.apptDate = await schedulePage.scheduleFirstAppointment(appointmentDetails!.serviceLocation);
}); });
@ -694,7 +694,7 @@ async function runWorkflow(page: Page, testCase: TestCase) {
email: customerDetails!.email, email: customerDetails!.email,
phoneNumber: customerDetails!.phoneNumber phoneNumber: customerDetails!.phoneNumber
}; };
await contactDetailsPage.validateURL(contactDetailsPage.url); await contactDetailsPage.validateURL(contactDetailsPage.issPageValue);
const actualContactDetails = await contactDetailsPage.getContactDetails(); const actualContactDetails = await contactDetailsPage.getContactDetails();
expect.soft(actualContactDetails).toEqual(expectedContactDetails); expect.soft(actualContactDetails).toEqual(expectedContactDetails);
@ -709,33 +709,33 @@ async function runWorkflow(page: Page, testCase: TestCase) {
if (isPriceServiceErrorBailout) { if (isPriceServiceErrorBailout) {
await test.step('BailoutPage >> Price Service Error Bailout', async () => { await test.step('BailoutPage >> Price Service Error Bailout', async () => {
await bailoutPage.validateURL(bailoutPage.url); await bailoutPage.validateURL(bailoutPage.issPageValue);
await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.PricingResponseError); await bailoutPage.validateBailoutDetails(customerDetails!, BailoutCode.PricingResponseError);
}); });
return; return;
} }
await test.step('ServicePackagesPage >> Choose service package', async () => { await test.step('ServicePackagesPage >> Choose service package', async () => {
await servicePackagesPage.validateURL(servicePackagesPage.url); await servicePackagesPage.validateURL(servicePackagesPage.issPageValue);
customerDetails!.packagePrice = await servicePackagesPage.selectServicePackage(servicePackage!); customerDetails!.packagePrice = await servicePackagesPage.selectServicePackage(servicePackage!);
await servicePackagesPage.nextPage(); await servicePackagesPage.nextPage();
}); });
if (isPolicyFound && (isUseVehicleOnPolicy ?? true) && claimDetails!.policyDeductible > 0) { if (isPolicyFound && (isUseVehicleOnPolicy ?? true) && claimDetails!.policyDeductible > 0) {
await test.step('PaymentMethodPage >> Execute Payment', async () => { await test.step('PaymentMethodPage >> Execute Payment', async () => {
await paymentMethodPage.validateURL(paymentMethodPage.url); await paymentMethodPage.validateURL(paymentMethodPage.issPageValue);
await paymentMethodPage.executePayment(paymentDetails!); await paymentMethodPage.executePayment(paymentDetails!);
await paymentMethodPage.nextPage(); await paymentMethodPage.nextPage();
}); });
} else { } else {
await test.step('PaymentMethodPage >> Skip to Order Confirmation', async () => { await test.step('PaymentMethodPage >> Skip to Order Confirmation', async () => {
await paymentMethodPage.validateURL(paymentMethodPage.url); await paymentMethodPage.validateURL(paymentMethodPage.issPageValue);
await paymentMethodPage.nextPage(); await paymentMethodPage.nextPage();
}); });
} }
await test.step('OrderConfirmationPage >> Validate order', async () => { await test.step('OrderConfirmationPage >> Validate order', async () => {
await orderConfirmationPage.validateURL(orderConfirmationPage.url); await orderConfirmationPage.validateURL(orderConfirmationPage.issPageValue);
await orderConfirmationPage.validateOrderConfirmationPage(testCase.testData); await orderConfirmationPage.validateOrderConfirmationPage(testCase.testData);
}); });
} }