البدء باستخدام Playwright لتطبيقات React
اكتب اختبارات Playwright تفتح متصفحًا وتتفاعل مع تطبيق React وتتحقق من النتائج.
البدء باستخدام Playwright لتطبيقات React درس مجاني في React Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.
ما هو Playwright؟
Playwright هو إطار لاختبار E2E في Node.js، ويتحكم في متصفحات Chromium وFirefox وWebKit الحقيقية. وهو مناسب لاختبار تدفقات تطبيق React الكاملة، بما في ذلك التوجيه والمصادقة والتفاعلات مع API.
التثبيت
ثبّت Playwright وملفات المتصفحات الثنائية الخاصة به باستخدام أمر واحد.
# npm init playwright@latest
# or
# npx playwright install
# playwright.config.ts is created automaticallyتهيئة Playwright لـ React
هيّئ Playwright لبدء خادم التطوير قبل تشغيل الاختبارات.
import { defineConfig } from '@playwright/test';
export default defineConfig({
testDir: './e2e',
use: { baseURL: 'http://localhost:5173' },
webServer: {
command: 'npm run dev',
url: 'http://localhost:5173',
reuseExistingServer: !process.env.CI,
},
});كتابة الاختبار الأول
تستخدم الاختبارات page، وهو كائن يمثل صفحة في المتصفح. انتقل إلى عنوان URL، وتفاعل مع العناصر، وتحقّق من النتيجة.
import { test, expect } from '@playwright/test';
test('home page shows heading', async ({ page }) => {
await page.goto('/');
await expect(page.getByRole('heading', { name: 'Welcome' })).toBeVisible();
});محدّدات العناصر
تشبه محدّدات العناصر في Playwright استعلامات RTL. فضّل المحدّدات المعتمدة على الأدوار لتحقيق قدر أكبر من المتانة.
// By role
const button = page.getByRole('button', { name: 'Submit' });
// By label
const input = page.getByLabel('Email address');
// By text
const link = page.getByText('Sign in');
// By placeholder
const search = page.getByPlaceholder('Search products');النقر والكتابة
تفاعل مع العناصر باستخدام click() وfill() وpress() وselectOption().
await page.getByLabel('Email').fill('user@example.com');
await page.getByLabel('Password').fill('secret');
await page.getByRole('button', { name: 'Log in' }).click();انتظار التنقّل
ينتظر Playwright تلقائيًا حتى تصبح العناصر جاهزة، ولكن يمكنك الانتظار صراحةً حتى يكتمل التنقّل أو تكتمل طلبات الشبكة.
// Wait for URL to change after form submit
await page.waitForURL('/dashboard');
// Wait for a specific request
const [response] = await Promise.all([
page.waitForResponse('/api/users'),
page.click('button[type="submit"]'),
]);التحققات
استخدم expect(locator) مع أدوات المطابقة المضمّنة في Playwright. فهي تنتظر تلقائيًا حتى يتحقق الشرط.
await expect(page.getByRole('heading')).toHaveText('Dashboard');
await expect(page.getByTestId('user-count')).toContainText('5 users');
await expect(page.getByRole('button', { name: 'Delete' })).toBeDisabled();
await expect(page).toHaveURL('/success');التقاط لقطات الشاشة عند الفشل
يلتقط Playwright تلقائيًا لقطات الشاشة وملفات التتبّع عند فشل الاختبار، إذا جرى تكوينه لذلك. فعّل هذه الميزة في ملف التهيئة.
use: {
screenshot: 'only-on-failure',
trace: 'retain-on-failure',
video: 'retain-on-failure',
}تشغيل الاختبارات
شغّل جميع الاختبارات دون واجهة رسومية، أو استخدم --ui لفتح مستكشف الاختبارات التفاعلي الذي يتيح لك استعراض الاختبارات بصريًا خطوةً بخطوة.
# Run all tests
npx playwright test
# Run with UI mode
npx playwright test --ui
# Run a specific file
npx playwright test e2e/login.spec.ts
# Debug mode
npx playwright test --debugعارض تتبّع Playwright
عند فشل اختبار، افتح ملف التتبّع باستخدام npx playwright show-trace لإعادة تشغيل الاختبار خطوةً بخطوة مع لقطات الشاشة وطلبات الشبكة وسجلات وحدة التحكم.
التكامل مع CI
يعمل Playwright دون واجهة رسومية افتراضيًا في CI. ثبّت المتصفحات باستخدام npx playwright install --with-deps وشغّل الاختبارات كأيّ سكربت npm عادي.
# .github/workflows/e2e.yml
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Run Playwright tests
run: npx playwright testتحقق سريع
ما طريقة Playwright التي ينبغي استخدامها لملء حقل إدخال نصي؟
خلاصة
يختبر Playwright المتصفحات الحقيقية وينتظر تلقائيًا حتى تصبح العناصر جاهزة. استخدم المحدّدات المعتمدة على الأدوار، وfill() وclick() للتفاعلات، وexpect(locator) للتحققات، ووضع --ui لتصحيح الأخطاء بصريًا أثناء التطوير.
الأسئلة الشائعة
هل درس «البدء باستخدام Playwright لتطبيقات React» مجاني؟
نعم — نص درس «البدء باستخدام Playwright لتطبيقات React» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.
ماذا ستتعلم في «البدء باستخدام Playwright لتطبيقات React»؟
اكتب اختبارات Playwright تفتح متصفحًا وتتفاعل مع تطبيق React وتتحقق من النتائج. تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟
لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «البدء باستخدام Playwright لتطبيقات React»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟
نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- اختبار التكامل باستخدام React Testing Library
- اختبار الواجهة غير المتزامنة واستدعاءات API باستخدام MSW
- البدء باستخدام Playwright لتطبيقات React
- اختبار النماذج وتدفقات المستخدم من البداية إلى النهاية