32 lines
1.7 KiB
TypeScript
32 lines
1.7 KiB
TypeScript
import { test, expect } from '../../fixtures';
|
|
|
|
test.describe('سناریوی پیگیری سفارشات (Order Tracking Flow & Edge Cases)', () => {
|
|
test('ورود به صفحه پیگیری -> استعلام کد نامعتبر (Edge Case) -> استعلام سفارش معتبر', async ({ page }) => {
|
|
// 1. ورود به صفحه /track
|
|
await page.goto('/track', { waitUntil: 'domcontentloaded' });
|
|
await expect(page).toHaveURL(/\/track/);
|
|
|
|
// 2. بررسی وجود المانهای پیگیری و فیلد ورودی
|
|
const trackingInput = page.locator('input[placeholder*="شماره سفارش"], input[placeholder*="کد رهگیری"]').first();
|
|
await expect(trackingInput).toBeVisible({ timeout: 15000 });
|
|
|
|
const trackBtn = page.getByRole('button', { name: /رهگیری|پیگیری|استعلام/i }).or(
|
|
page.locator('button').filter({ hasText: /رهگیری|پیگیری/i })
|
|
).first();
|
|
await expect(trackBtn).toBeVisible();
|
|
|
|
// 3. تست Edge Case: ورود کد پیگیری نامعتبر
|
|
await trackingInput.fill('INVALID-TRACK-99999');
|
|
await trackBtn.click();
|
|
await page.waitForTimeout(500);
|
|
|
|
// 4. تست ورود کد رهگیری ساختگی یا بررسی ساختار تایملاین وضعیت
|
|
await trackingInput.fill('CN-10001');
|
|
await trackBtn.click();
|
|
|
|
// 5. بررسی تایملاین مراحل تحویل (ثبت سفارش، آمادهسازی، ارسال)
|
|
const timelineStep = page.locator('div, h4, span').filter({ hasText: /ثبت سفارش|آمادهسازی|تحویل|وضعیت/i }).first();
|
|
await expect(timelineStep).toBeVisible({ timeout: 10000 });
|
|
});
|
|
});
|