DigitalConsumer.ISS/playwright-tests/pages/VehicleDamagePage.ts
2026-03-10 13:39:38 -04:00

173 lines
No EOL
8.7 KiB
TypeScript

import { expect, type Locator, type Page } from '@playwright/test';
import { BasePage } from './BasePage';
import { VehicleDamage } from '@business-logic/types/Enums';
export class VehicleDamagePage extends BasePage {
readonly page: Page;
readonly windshieldButton: Locator;
readonly sideDoorButton: Locator;
readonly replaceButton: Locator;
readonly repairButton: Locator;
readonly singleWindshieldButton: Locator;
readonly splitWindshieldDriverSideButton: Locator;
readonly splitWindshieldPassengerSideButton: Locator;
readonly driverSideButton: Locator;
readonly passengerSideButton: Locator;
readonly driverQuarterPanelChkBox: Locator;
readonly driverFrontDoorChkBox: Locator;
readonly driverBackDoorChkBox: Locator;
readonly driverSlidingDoorChkBox: Locator;
readonly driverVentGlassChkBox: Locator;
readonly passengerQuarterPanelChkBox: Locator;
readonly passengerFrontDoorChkBox: Locator;
readonly passengerBackDoorChkBox: Locator;
readonly passengerVentGlassChkBox: Locator;
readonly rearWindowChkBox: Locator;
readonly separateApptsWarning: Locator;
readonly editVehicleButton: Locator;
issPageValue = 'vehicle-damage';
constructor(page: Page) {
super(page);
this.page = page;
this.windshieldButton = this.page.locator('[buttonlabel="Windshield"]');
this.sideDoorButton = this.page.locator('[buttonlabel="Side door"]');
this.rearWindowChkBox = this.page.locator('[buttonlabel="Rear window"]');
this.replaceButton = this.page.locator('div.list-card-content:has-text("Replace")');
this.repairButton = this.page.locator('div.list-card-content:has-text("Repair")');
this.singleWindshieldButton = this.page.locator('[buttonlabel="Single windshield"]');
this.splitWindshieldDriverSideButton = this.page.locator('[buttonlabel="Split windshield, driver side"]');
this.splitWindshieldPassengerSideButton = this.page.locator('[buttonlabel="Split windshield, passenger side"]');
this.sideDoorButton = this.page.locator('[buttonlabel="Side door"]');
this.driverSideButton = this.page.locator('[buttonlabel="Driver side"]');
this.passengerSideButton = this.page.locator('[buttonlabel="Passenger side"]');
this.driverQuarterPanelChkBox = this.page.locator('[aria-labelledby="driverSideOptions"]').locator('[buttonlabel="Quarter panel"]');
this.driverFrontDoorChkBox = this.page.locator('[aria-labelledby="driverSideOptions"]').locator('[buttonlabel="Front door"]');
this.driverBackDoorChkBox = this.page.locator('[aria-labelledby="driverSideOptions"]').locator('[buttonlabel="Back door"]');
this.driverVentGlassChkBox = this.page.locator('[aria-labelledby="driverSideOptions"]').locator('[buttonlabel="Vent glass"]');
this.driverSlidingDoorChkBox = this.page.locator('[aria-labelledby="driverSideOptions"]').locator('[buttonlabel="Sliding door"]');
this.passengerQuarterPanelChkBox = this.page.locator('[aria-labelledby="passengerSideOptions"]').locator('[buttonlabel="Quarter panel"]');
this.passengerFrontDoorChkBox = this.page.locator('[aria-labelledby="passengerSideOptions"]').locator('[buttonlabel="Front door"]');
this.passengerVentGlassChkBox = this.page.locator('[aria-labelledby="passengerSideOptions"]').locator('[buttonlabel="Vent glass"]');
this.passengerBackDoorChkBox = this.page.locator('[aria-labelledby="passengerSideOptions"]').locator('[buttonlabel="Back door"]');
this.rearWindowChkBox = this.page.locator('[buttonlabel="Rear window"]');
this.separateApptsWarning = this.page.locator('[class*="widget-name-HasReplacementConflict"]');
this.editVehicleButton = this.page.getByRole('link', { name: 'Edit vehicle' });
}
async checkSeparateApptsWarning() {
// Select conflict
await this.windshieldButton.check();
await this.repairButton.check();
await this.rearWindowChkBox.check();
// Expect warning
await expect.soft(this.separateApptsWarning).toBeAttached();
// Undo changes
await this.replaceButton.check();
await this.windshieldButton.uncheck();
await expect.soft(this.replaceButton).not.toBeVisible();
await this.rearWindowChkBox.uncheck();
}
async selectDamage(vehicleDamage: VehicleDamage[]) {
for (const damage of vehicleDamage) {
switch(damage) {
case VehicleDamage.WindshieldOneChip:
await this.windshieldButton.check();
await this.selectChips('1');
break;
case VehicleDamage.WindshieldTwoChips:
await this.windshieldButton.check();
await this.selectChips('2');
break;
case VehicleDamage.WindshieldThreeChips:
await this.windshieldButton.check();
await this.selectChips('3');
break;
case VehicleDamage.WindshieldCrack:
await this.windshieldButton.check();
await this.selectCrack();
break;
case VehicleDamage.WindshieldCrackSingleWindshield:
await this.windshieldButton.check();
await this.selectCrack();
await this.singleWindshieldButton.check();
break;
case VehicleDamage.WindshieldCrackDriverSide:
await this.windshieldButton.check();
await this.selectCrack();
await this.splitWindshieldDriverSideButton.check();
break;
case VehicleDamage.WindshieldCrackPassengerSide:
await this.windshieldButton.check();
await this.selectCrack();
await this.splitWindshieldPassengerSideButton.check();
break;
case VehicleDamage.DriverFrontDoor:
await this.sideDoorButton.check();
await this.driverSideButton.check();
await this.driverFrontDoorChkBox.check();
break;
case VehicleDamage.DriverRearDoor:
await this.sideDoorButton.check();
await this.driverSideButton.check();
await this.driverBackDoorChkBox.check();
break;
case VehicleDamage.DriverQuarterPanel:
await this.sideDoorButton.check();
await this.driverSideButton.check();
await this.driverQuarterPanelChkBox.check();
break;
case VehicleDamage.DriverVentGlass:
await this.sideDoorButton.check();
await this.driverSideButton.check();
await this.driverVentGlassChkBox.check();
break;
case VehicleDamage.DriverSlidingDoor:
await this.sideDoorButton.check();
await this.driverSideButton.check();
await this.driverSlidingDoorChkBox.check();
break;
case VehicleDamage.PassengerFrontDoor:
await this.sideDoorButton.check();
await this.passengerSideButton.check();
await this.passengerFrontDoorChkBox.check();
break;
case VehicleDamage.PassengerRearDoor:
await this.sideDoorButton.check();
await this.passengerSideButton.check();
await this.passengerBackDoorChkBox.check();
break;
case VehicleDamage.PassengerQuarterPanel:
await this.sideDoorButton.check();
await this.passengerSideButton.check();
await this.passengerQuarterPanelChkBox.click();
break;
case VehicleDamage.PassengerVentGlass:
await this.sideDoorButton.check();
await this.passengerSideButton.check();
await this.passengerVentGlassChkBox.check();
break;
case VehicleDamage.RearWindow:
await this.selectRearWindowDamage();
break;
}
}
}
async selectCrack(){
await this.replaceButton.click();
}
async selectChips(numChips: string){
const numChipsButton = this.page.getByText(numChips, {exact: true});
await this.repairButton.check();
await numChipsButton.check();
}
async selectRearWindowDamage(){
await this.rearWindowChkBox.check();
}
}