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 }); }); });