Files
novalon-website/test-framework/shared/pages/ContactPage.ts
T

39 lines
1.4 KiB
TypeScript

import { Page } from '@playwright/test';
import { BasePage } from './BasePage';
import { getPageConfig } from '../config/test-pages';
export class ContactPage extends BasePage {
constructor(page: Page, config?) {
const pageConfig = getPageConfig('contact');
super(page, pageConfig.url, config);
}
async fillContactForm(data: { name: string; email: string; phone: string; message: string; subject?: string }): Promise<void> {
await this.fill('[data-testid="name-input"]', data.name);
await this.fill('[data-testid="phone-input"]', data.phone);
await this.fill('[data-testid="email-input"]', data.email);
if (data.subject) {
await this.fill('[data-testid="subject-input"]', data.subject);
}
await this.fill('[data-testid="message-input"]', data.message);
}
async submitForm(): Promise<void> {
await this.click('[data-testid="submit-button"]');
}
async getFormErrorMessage(): Promise<string> {
const errorElement = await this.page.locator('p.mt-1.text-sm.text-\\[\\#C41E3A\\]').first();
return await errorElement.textContent() || '';
}
async getFormSuccessMessage(): Promise<string> {
await this.page.waitForTimeout(1000);
const successElement = await this.page.locator('text=消息已发送').first();
if (await successElement.count() > 0) {
return await successElement.textContent() || '';
}
return '';
}
}