مجموعة أدوات للتفاعل مع تطبيقات الويب المحلية واختبارها باستخدام Playwright، مع التحقق من وظائف الواجهة الأمامية، وتصحيح سلوك الواجهة، والتقاط لقطات شاشة، ومراجعة سجلات المتصفح.
من نص البرومبت
---
name: web-application-testing-skill
description: مجموعة أدوات للتفاعل مع تطبيقات الويب المحلية واختبارها باستخدام Playwright.
---
# اختبار تطبيقات الويب
تساعدك هذه المهارة على اختبار تطبيقات الويب المحلية واستكشاف أخطائها بشكل شامل باستخدام أتمتة Playwright.
## متى تستخدم هذه المهارة
استخدم هذه المهارة عندما تحتاج إلى:
- اختبار وظائف الواجهة الأمامية في متصفح حقيقي
- التحقق من سلوك واجهة المستخدم وتفاعلاتها
- استكشاف مشاكل تطبيق الويب وإصلاحها
- التقاط لقطات شاشة للتوثيق أو تصحيح الأخطاء
- فحص سجلات Console في المتصفح
- التحقق من إرسال النماذج ورحلات المستخدم
- فحص استجابة التصميم عبر أحجام شاشة مختلفة
## المتطلبات المسبقة
- تثبيت Node.js على النظام
- تطبيق ويب يعمل محليًا أو عنوان URL يمكن الوصول إليه
- سيتم تثبيت Playwright تلقائيًا إذا لم يكن موجودًا
## القدرات الأساسية
### 1. أتمتة المتصفح
- الانتقال إلى عناوين URL
- النقر على الأزرار والروابط
- تعبئة حقول النماذج
- اختيار القيم من القوائم المنسدلة
- التعامل مع مربعات الحوار والتنبيهات
### 2. التحقق
- التأكد من وجود العناصر
- التحقق من محتوى النص
- التحقق من ظهور العناصر
- التحقق من عناوين URL
- اختبار السلوك المتجاوب
### 3. تصحيح الأخطاء واستكشاف المشاكل
- التقاط لقطات شاشة
- عرض سجلات Console
- فحص طلبات الشبكة
- تشخيص الاختبارات الفاشلة
## أمثلة استخدام
### مثال 1: اختبار تنقّل بسيط
```javascript
// الانتقال إلى صفحة والتحقق من عنوانها
await page.goto('http://localhost:3000');
const title = await page.title();
console.log('عنوان الصفحة:', title);
```
### مثال 2: التفاعل مع نموذج
```javascript
// تعبئة نموذج الدخول وإرساله
await page.fill('#username', 'testuser');
await page.fill('#password', 'password123');
await page.click('button[type="submit"]');
await page.waitForURL('**/dashboard');
```
### مثال 3: التقاط لقطة شاشة
```javascript
// التقاط لقطة شاشة للمساعدة في تصحيح الأخطاء
await page.screenshot({ path: 'debug.png', fullPage: true });
```
## إرشادات
1. **تأكد دائمًا من أن التطبيق يعمل** - تحقق من إمكانية الوصول إلى الخادم المحلي قبل تشغيل الاختبارات
2. **استخدم انتظارًا صريحًا** - انتظر اكتمال ظهور العناصر أو التنقّل قبل التفاعل معها
3. **التقط لقطات شاشة عند الفشل** - تساعد اللقطات في فهم المشكلة وتصحيحها بشكل أسرع
4. **نظّف الموارد بعد الانتهاء** - أغلق المتصفح دائمًا بعد انتهاء العمل
5. **تعامل مع انتهاء المهلة بشكل مناسب** - حدّد مدد انتظار معقولة للعمليات البطيئة
6. **اختبر بالتدرّج** - ابدأ بتفاعلات بسيطة قبل الانتقال إلى مسارات معقدة
7. **اختر المحددات بعناية** - فضّل data-testid أو المحددات المبنية على الدور بدل الاعتماد على أصناف CSS
## أنماط شائعة
### نمط: انتظار ظهور عنصر
```javascript
await page.waitForSelector('#element-id', { state: 'visible' });
```
### نمط: التحقق من وجود عنصر
```javascript
const exists = await page.locator('#element-id').count() > 0;
```
### نمط: التقاط سجلات Console
```javascript
page.on('console', msg => console.log('سجل المتصفح:', msg.text()));
```
### نمط: التعامل مع الأخطاء
```javascript
try {
await page.click('#button');
} catch (error) {
await page.screenshot({ path: 'error.png' });
throw error;
}
```
## القيود
- تتطلب بيئة Node.js
- لا يمكنها اختبار تطبيقات الجوال الأصلية؛ استخدم React Native Testing Library بدلًا من ذلك
- قد تواجه صعوبات مع مسارات المصادقة المعقدة
- قد تتطلب بعض أطر العمل الحديثة إعدادات خاصة