DigitalConsumer.FixMyGlass/playwright-tests/business-logic/constants/DefaultTestData.ts
maguire-arman 404dda6556 Adds Playwright test framework for FMG
Initial commit of the Playwright test framework, including:
- Configuration files for Playwright, Docker, and Sauce Labs
- Test case structure and page object models
- CI/CD pipeline configuration
- Utilities and business logic implementations

This framework will be used for end-to-end testing of the FMG application.
2025-04-07 15:40:31 -04:00

114 lines
No EOL
3.9 KiB
TypeScript

// DefaultTestData.ts
import { faker } from "@faker-js/faker";
import { PaymentMethod, ServicePackage, VehicleLookupType, AppointmentType, PaymentType, DamageType, VehicleDamage } from "@business-logic/types/Enums";
import { ITestData } from "@business-logic/types/ITestData";
import { getNextWeekday } from "@impl/utils/DateUtils";
import { ICustomerDetails, IVehicleDetails, IAppointmentDetails, IPaymentDetails, IClaimDetails } from "@business-logic/types/CustomerDetails";
// Set a default seed for consistent data generation
const DEFAULT_SEED = 1234;
faker.seed(DEFAULT_SEED);
// Function to reset faker to the default seed
export function resetFakerToDefaultSeed() {
faker.seed(DEFAULT_SEED);
}
// Simple hash function to convert a string to a numeric value
function hashStringToNumber(str: string): number {
let hash = 0;
for (let i = 0; i < str.length; i++) {
const char = str.charCodeAt(i);
hash = (hash << 5) - hash + char;
hash = hash & hash; // Convert to 32bit integer
}
return Math.abs(hash);
}
// Function to set a custom seed based on test name
export function setFakerSeedFromTestName(testName: string) {
const seed = hashStringToNumber(testName);
faker.seed(seed);
}
// Functions to generate data (rather than using pre-generated data)
export function getCustomerDetails(): ICustomerDetails {
return {
firstName: faker.person.firstName(),
lastName: faker.person.lastName(),
email: "itqatest@safelite.com",
phoneNumber: '614-254-4109',
notes: 'Automated Test',
address: {
street: faker.location.streetAddress(),
city: 'Columbus',
state: 'Ohio',
postalCode: '43215',
country: 'United States'
}
};
}
export function getVehicleDetails(): IVehicleDetails {
return {
year: '2020',
make: 'Honda',
model: 'Accord',
style: '4 door sedan',
vehicleLookupType: VehicleLookupType.Zip
};
}
export function getAppointmentDetails(): IAppointmentDetails {
return {
serviceLocation: AppointmentType.InShop,
appointmentDate: getNextWeekday()
};
}
export function getPaymentDetails(): IPaymentDetails {
return {
paymentType: PaymentType.PayAtService
};
}
export function getClaimDetails(): IClaimDetails {
return {
client: 'ACUITY INSURANCE',
policyNumber: 'Mock' + faker.string.alphanumeric(6).toUpperCase(),
policyDeductible: 0,
damageDate: new Date(new Date().setDate(new Date().getDate() - 1)).toLocaleDateString('en-US', {month: '2-digit', day: '2-digit', year: 'numeric'}),
damageCause: DamageType.Hail
};
}
// Function to get the entire default test data set with current faker state
export function getDefaultTestData(): Partial<ITestData> {
return {
paymentMethod: PaymentMethod.SelfPay,
servicePackage: ServicePackage.GlassOnly,
customerDetails: getCustomerDetails(),
vehicleDetails: getVehicleDetails(),
appointmentDetails: getAppointmentDetails(),
paymentDetails: getPaymentDetails(),
claimDetails: getClaimDetails(),
vehicleDamage: [VehicleDamage.WindshieldCrack],
isDuplicateClaim: false,
isPolicyDriver: false,
isPolicyFound: false,
isUseVehicleOnPolicy: true,
isRecalNotification: false,
hasOemEndorsement: false,
skipEstimatePage: false,
isRecalVehicle: false,
enterFunnelWithZip: false
};
}
// Keep the pre-generated data for backward compatibility
export const defaultCustomerDetails = getCustomerDetails();
export const defaultVehicleDetails = getVehicleDetails();
export const defaultAppointmentDetails = getAppointmentDetails();
export const defaultPaymentDetails = getPaymentDetails();
export const defaultClaimDetails = getClaimDetails();
export const defaultTestData = getDefaultTestData();