59 lines
2.8 KiB
TypeScript
59 lines
2.8 KiB
TypeScript
import { test, expect } from '../../fixtures';
|
|
|
|
test.describe('سناریوی فرم تماس و استعلام (Contact Flow)', () => {
|
|
test('ورود به /contact -> اعتبارسنجی فیلدها -> پر کردن و ارسال پیام -> دریافت فیدبک', async ({ page }) => {
|
|
// 1. ورود به /contact
|
|
await page.goto('/contact');
|
|
await expect(page).toHaveURL(/\/contact/);
|
|
|
|
// 2. بررسی وجود تیتر صفحه تماس با ما
|
|
const contactHeading = page.locator('h1');
|
|
await expect(contactHeading).toBeVisible();
|
|
await expect(contactHeading).toContainText(/تماس با|کنینا/i);
|
|
|
|
// 3. پیدا کردن فیلدهای فرم تماس
|
|
const nameInput = page.locator('input[placeholder*="نام"]').first();
|
|
const phoneInput = page.locator('input[placeholder*="موبایل"], input[placeholder*="۰۹"]').first();
|
|
const messageInput = page.locator('textarea[placeholder*="پیام"]').first();
|
|
const submitBtn = page.getByRole('button', { name: /ارسال پیام|ثبت پیام|ارسال/i }).first();
|
|
|
|
await expect(submitBtn).toBeVisible();
|
|
|
|
// 4. تست اعتبارسنجی: ارسال فرم خالی
|
|
await submitBtn.click();
|
|
const validationError = page.locator('text=لطفاً نام، شماره موبایل و متن پیام را وارد کنید')
|
|
.or(page.locator('[data-sonner-toast]'))
|
|
.or(page.locator('[role="alert"]'))
|
|
.or(page.locator('text=معتبر نیست'))
|
|
.first();
|
|
await expect(validationError).toBeVisible({ timeout: 5000 });
|
|
|
|
// 5. Mock کردن پاسخ API ثبت پیام برای اطمینان از عدم ثبت دیتای هرز در دیتابیس اصلی
|
|
await page.route('**/api/contact', async (route) => {
|
|
await route.fulfill({
|
|
status: 201,
|
|
contentType: 'application/json',
|
|
body: JSON.stringify({ success: true, message: 'پیام شما با موفقیت ثبت گردید.' }),
|
|
});
|
|
});
|
|
|
|
// 6. پر کردن فرم با دیتای معتبر
|
|
await page.locator('#contact-name').fill('کاربر تستی');
|
|
await page.locator('#contact-phone').fill('09123456789');
|
|
if (await page.locator('#contact-subject').count() > 0) {
|
|
await page.locator('#contact-subject').fill('استعلام تستی محصول');
|
|
}
|
|
await page.locator('#contact-message').fill('این یک پیام آزمایشی برای تست خودکار Playwright است.');
|
|
|
|
// 7. ارسال فرم
|
|
await submitBtn.click();
|
|
|
|
// 8. بررسی نمایش پیام موفقیتآمیز
|
|
const successAlert = page.locator('text=پیام شما با موفقیت ثبت شد')
|
|
.or(page.locator('text=موفقیت'))
|
|
.or(page.locator('[data-sonner-toast]'))
|
|
.first();
|
|
await expect(successAlert).toBeVisible({ timeout: 7000 });
|
|
});
|
|
});
|