In scenarios that reach the order confirmation page, the query string includes more than the issPageValue, whiche was breaking validateURL
45 lines
No EOL
1.7 KiB
TypeScript
45 lines
No EOL
1.7 KiB
TypeScript
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<ICustomerDetails> = {};
|
|
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);
|
|
}
|
|
}
|
|
} |