import { test, expect } from '../../fixtures'; test.describe('سناریوی پیگیری سفارشات (Order Tracking Flow & Edge Cases)', () => { test('استعلام کد رهگیری نامعتبر -> راستی‌آزمایی پیام خطا -> ثبت و استعلام سفارش معتبر', async ({ page }) => { // 1. ورود به صفحه /track await page.goto('/track', { waitUntil: 'domcontentloaded' }); await expect(page).toHaveURL(/\/track/); // 2. راستی‌آزمایی وجود المان‌های ورودی و دکمه استعلام const trackingInput = page.locator('input[placeholder*="شماره سفارش"]'); await expect(trackingInput).toBeVisible({ timeout: 20000 }); const trackBtn = page.getByRole('button', { name: 'رهگیری آنی' }); await expect(trackBtn).toBeVisible(); // 3. تست منفی (Negative Test): استعلام کد رهگیری نامعتبر/ساختگی await trackingInput.fill('INVALID-TRACK-99999'); await trackBtn.click(); // راستی‌آزمایی پیام صریح خطای عدم یافت سفارش (نه فقط پاس شدن بدون بررسی) const notFoundMessage = page.locator('p').filter({ hasText: 'سفارشی یافت نشد. لطفاً شماره سفارش صحیح را وارد کنید.' }); await expect(notFoundMessage).toBeVisible({ timeout: 10000 }); // 4. تزریق یک سفارش به استیت لوکال zustand (کلید canina-cart) await page.evaluate(() => { const mockOrder = { id: 'CN-88888', trackingNumber: 'IR-POST-88888', date: new Date().toISOString(), items: [{ product: { id: 'p1', name: 'مکمل کلسیم و مفاصل سگ Canina' }, quantity: 2 }], total: 1500000, status: 'processing', }; const cartState = { state: { items: [], orders: [mockOrder], isOpen: false, isSubscribed: false, charityDonation: 0, coupon: null, }, version: 0, }; localStorage.setItem('canina-cart', JSON.stringify(cartState)); }); // بارگذاری مجدد صفحه برای لود سفارش تزریق شده در zustand await page.reload({ waitUntil: 'domcontentloaded' }); // 5. استعلام شماره سفارش معتبر و بررسی تایم‌لاین و محتویات فاکتور await trackingInput.fill('CN-88888'); await trackBtn.click(); // راستی‌آزمایی تایم‌لاین مراحل await expect(page.locator('h4').filter({ hasText: 'ثبت سفارش' })).toBeVisible({ timeout: 10000 }); await expect(page.locator('h4').filter({ hasText: 'آماده‌سازی در انبار' })).toBeVisible(); // راستی‌آزمایی محتویات اقلام فاکتور و کد مرسوله await expect(page.locator('p').filter({ hasText: 'IR-POST-88888' })).toBeVisible(); await expect(page.locator('span').filter({ hasText: 'مکمل کلسیم و مفاصل سگ Canina' })).toBeVisible(); }); });