الكاتب المسرحي هو إطار لاختبار الويب والأتمتة. فهو يسمح باختبار Chromium وFirefox وWebKit باستخدام واجهة برمجة تطبيقات واحدة. تم تصميم Playwright لتمكين أتمتة الويب عبر المستعرضات والتي تتسم دائمًا بالخضرة والقدرة والموثوقية والسرعة .
لينكس | ماك | ويندوز | |
---|---|---|---|
الكروم 131.0.6778.33 | ✅ | ✅ | ✅ |
ويب كيت 18.0 | ✅ | ✅ | ✅ |
فايرفوكس 132.0 | ✅ | ✅ | ✅ |
يتم دعم التنفيذ بدون استخدام الرأس لجميع المتصفحات على جميع الأنظمة الأساسية. تحقق من متطلبات النظام للحصول على التفاصيل.
هل تبحث عن كاتب مسرحي لـ Python أو .NET أو Java؟
لدى الكاتب المسرحي برنامج اختبار خاص به للاختبارات الشاملة، ونحن نسميه اختبار الكاتب المسرحي.
أسهل طريقة لبدء اختبار Playwright هي تشغيل الأمر init.
# Run from your project's root directory
npm init playwright@latest
# Or create a new project
npm init playwright@latest new-project
سيؤدي هذا إلى إنشاء ملف تكوين، وإضافة أمثلة اختياريًا، وسير عمل GitHub Action، واختبار example.spec.ts الأول. يمكنك الآن الانتقال مباشرة إلى قسم كتابة التأكيدات.
إضافة التبعية وتثبيت المتصفحات.
npm i -D @playwright/test
# install supported browsers
npx playwright install
يمكنك اختياريًا تثبيت المتصفحات المحددة فقط، راجع تثبيت المتصفحات لمزيد من التفاصيل. أو لا يمكنك تثبيت أي متصفحات على الإطلاق واستخدام قنوات المتصفح الموجودة.
الانتظار التلقائي . ينتظر الكاتب المسرحي أن تكون العناصر قابلة للتنفيذ قبل تنفيذ الإجراءات. كما أن لديها مجموعة غنية من أحداث الاستبطان. يؤدي الجمع بين الاثنين إلى إلغاء الحاجة إلى مهلات مصطنعة - وهو السبب الرئيسي للاختبارات غير المستقرة.
التأكيدات على شبكة الإنترنت أولا . يتم إنشاء تأكيدات الكاتب المسرحي خصيصًا للويب الديناميكي. تتم إعادة محاولة الشيكات تلقائيًا حتى يتم استيفاء الشروط اللازمة.
تتبع . قم بتكوين استراتيجية إعادة محاولة الاختبار، والتقاط تتبع التنفيذ، ومقاطع الفيديو ولقطات الشاشة للتخلص من الرقائق.
تقوم المتصفحات بتشغيل محتوى الويب الذي ينتمي إلى أصول مختلفة في عمليات مختلفة. يتوافق الكاتب المسرحي مع بنية المتصفحات الحديثة ويقوم بإجراء اختبارات خارج نطاق المعالجة. وهذا يجعل Playwright خاليًا من القيود النموذجية لمجري الاختبار أثناء العملية.
متعددة كل شيء . سيناريوهات الاختبار التي تمتد عبر علامات تبويب متعددة وأصول متعددة ومستخدمين متعددين. أنشئ سيناريوهات بسياقات مختلفة لمستخدمين مختلفين وقم بتشغيلها على خادمك، كل ذلك في اختبار واحد.
أحداث موثوقة . قم بتمرير العناصر، والتفاعل مع عناصر التحكم الديناميكية وإنتاج أحداث موثوقة. يستخدم الكاتب المسرحي خط أنابيب إدخال متصفح حقيقي لا يمكن تمييزه عن المستخدم الحقيقي.
إطارات الاختبار، بيرس الظل DOM. محددات الكاتب المسرحي تخترق Shadow DOM وتسمح بإدخال الإطارات بسلاسة.
سياقات المتصفح يقوم الكاتب المسرحي بإنشاء سياق متصفح لكل اختبار. سياق المتصفح يعادل ملف تعريف المتصفح الجديد تمامًا. وهذا يوفر عزلًا كاملاً للاختبار بدون أي حمل. لا يستغرق إنشاء سياق متصفح جديد سوى بضعة أجزاء من الثانية.
تسجيل الدخول مرة واحدة . احفظ حالة المصادقة للسياق وأعد استخدامها في جميع الاختبارات. ويتجاوز هذا عمليات تسجيل الدخول المتكررة في كل اختبار، ولكنه يوفر عزلًا كاملاً للاختبارات المستقلة.
كودجن . إنشاء اختبارات عن طريق تسجيل أفعالك. حفظها في أي لغة.
مفتش المسرحي . افحص الصفحة، وأنشئ المحددات، وتنقل عبر تنفيذ الاختبار، وراجع نقاط النقر واستكشف سجلات التنفيذ.
عارض التتبع . التقط جميع المعلومات للتحقيق في فشل الاختبار. يحتوي تتبع الكاتب المسرحي على تسجيل رقمي للشاشة لتنفيذ الاختبار، ولقطات DOM مباشرة، ومستكشف الحركة، ومصدر الاختبار، وغير ذلك الكثير.
هل تبحث عن كاتب مسرحي لـ TypeScript، أو JavaScript، أو Python، أو .NET، أو Java؟
لمعرفة كيفية تشغيل أمثلة اختبار الكاتب المسرحي هذه، راجع مستندات البدء الخاصة بنا.
ينتقل مقتطف الكود هذا إلى الصفحة الرئيسية لـ Playwright ويحفظ لقطة شاشة.
import { test } from '@playwright/test' ;
test ( 'Page Screenshot' , async ( { page } ) => {
await page . goto ( 'https://playwright.dev/' ) ;
await page . screenshot ( { path : `example.png` } ) ;
} ) ;
يحاكي هذا المقتطف Mobile Safari على جهاز في موقع جغرافي معين، وينتقل إلى Maps.google.com، وينفذ الإجراء ويلتقط لقطة شاشة.
import { test , devices } from '@playwright/test' ;
test . use ( {
... devices [ 'iPhone 13 Pro' ] ,
locale : 'en-US' ,
geolocation : { longitude : 12.492507 , latitude : 41.889938 } ,
permissions : [ 'geolocation' ] ,
} )
test ( 'Mobile and geolocation' , async ( { page } ) => {
await page . goto ( 'https://maps.google.com' ) ;
await page . getByText ( 'Your location' ) . click ( ) ;
await page . waitForRequest ( / .*preview/pwa / ) ;
await page . screenshot ( { path : 'colosseum-iphone.png' } ) ;
} ) ;
ينتقل مقتطف الكود هذا إلى example.com، وينفذ برنامجًا نصيًا في سياق الصفحة.
import { test } from '@playwright/test' ;
test ( 'Evaluate in browser context' , async ( { page } ) => {
await page . goto ( 'https://www.example.com/' ) ;
const dimensions = await page . evaluate ( ( ) => {
return {
width : document . documentElement . clientWidth ,
height : document . documentElement . clientHeight ,
deviceScaleFactor : window . devicePixelRatio
}
} ) ;
console . log ( dimensions ) ;
} ) ;
يقوم مقتطف الرمز هذا بإعداد توجيه الطلب لصفحة لتسجيل جميع طلبات الشبكة.
import { test } from '@playwright/test' ;
test ( 'Intercept network requests' , async ( { page } ) => {
// Log and continue all network requests
await page . route ( '**' , route => {
console . log ( route . request ( ) . url ( ) ) ;
route . continue ( ) ;
} ) ;
await page . goto ( 'http://todomvc.com' ) ;
} ) ;