import { expect, type Locator, type Page } from '@playwright/test'; import { BasePage } from './BasePage'; import { ICustomerDetails } from '@business-logic/types/CustomerDetails'; export class ContactDetailsPage extends BasePage { readonly page: Page; issPageValue = 'contact-details'; // Contact details form // TODO: Check if we can consolidate readonly firstNameTextBox: Locator; readonly lastNameTextBox: Locator; readonly emailAddressTextBox: Locator; readonly phoneNumberTextBox: Locator; readonly notesTextBox: Locator; constructor(page: Page) { super(page); this.page = page; // Contact details form this.firstNameTextBox = this.page.getByRole('textbox', { name: 'First name' }); this.lastNameTextBox = this.page.getByRole('textbox', { name: 'Last name' }); this.emailAddressTextBox = this.page.getByRole('textbox', { name: 'Email address' }); this.phoneNumberTextBox = this.page.getByRole('textbox', { name: 'Phone number' }); this.notesTextBox = this.page.getByRole('textbox', { name: 'Notes' }); } async getContactDetails() { const customerDetails: Partial = {}; customerDetails.firstName = await this.firstNameTextBox.inputValue(); customerDetails.lastName = await this.lastNameTextBox.inputValue(); customerDetails.email = await this.emailAddressTextBox.inputValue(); customerDetails.phoneNumber = await this.phoneNumberTextBox.inputValue(); return customerDetails; } async fillNotes(notes?: string) { if (notes) { await this.notesTextBox.fill(notes); } } }