64 lines
3.1 KiB
TypeScript
64 lines
3.1 KiB
TypeScript
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();
|
|
});
|
|
});
|