DigitalConsumer.ISS/playwright-tests/pages/VinLookupPage.ts
2026-04-08 09:45:18 -04:00

49 lines
1.8 KiB
TypeScript

import { expect, type Locator, type Page } from '@playwright/test';
import { BasePage } from './BasePage';
export class VinLookupPage extends BasePage {
readonly page: Page;
readonly vinLookupTextBox: Locator;
readonly lookupVinForMe: Locator;
readonly vinMismatchAlert: Locator;
issPageValue = 'vin-lookup';
constructor(page: Page) {
super(page);
this.page = page;
this.vinLookupTextBox = page.getByRole('textbox', { name: 'Enter your VIN' });
this.lookupVinForMe = page.getByRole('link', { name: 'look up your VIN' });
this.vinMismatchAlert = page.getByLabel('vehicle-not-matched-alert');
// this.validateURL(this.url);
}
async enterVin(vin: string | string[], isVehicleLookupValidations = false) {
if (Array.isArray(vin)) {
if (vin.length > 1) {
if (isVehicleLookupValidations) {
await this.vinLookupTextBox.fill(vin[0]);
await this.continueButton.click({ timeout: 1000 });
await expect(this.vinMismatchAlert).toBeVisible();
await this.vinLookupTextBox.fill(vin[1]);
}
} else {
console.warn("VIN array is blank. Either provide VIN as string or string[]")
}
} else {
await this.vinLookupTextBox.fill(vin);
}
}
async returnToVehicleLookupPage() {
await this.continueButton.click();
await this.lookupVinForMe.click();
}
async handleNonServiceableVin() {
await this.continueButton.click();
const nonServiceableWarning = this.page.getByText('Service not available for your vehicle');
await expect(nonServiceableWarning).toBeVisible();
await expect(this.continueButton).toBeDisabled();
}
}