Penulis naskah drama adalah kerangka kerja untuk Pengujian dan Otomatisasi Web. Ini memungkinkan pengujian Chromium, Firefox dan WebKit dengan satu API. Playwright dibuat untuk memungkinkan otomatisasi web lintas browser yang selalu ramah lingkungan , mumpuni , andal , dan cepat .
Linux | macOS | jendela | |
---|---|---|---|
Kromium 131.0.6778.33 | ✅ | ✅ | ✅ |
WebKit 18.0 | ✅ | ✅ | ✅ |
Firefox 132.0 | ✅ | ✅ | ✅ |
Eksekusi tanpa kepala didukung untuk semua browser di semua platform. Lihat persyaratan sistem untuk detailnya.
Mencari Penulis Drama untuk Python, .NET, atau Java?
Playwright memiliki test runner sendiri untuk pengujian end-to-end, kami menyebutnya Playwright Test.
Cara termudah untuk memulai Playwright Test adalah dengan menjalankan perintah init.
# Run from your project's root directory
npm init playwright@latest
# Or create a new project
npm init playwright@latest new-project
Ini akan membuat file konfigurasi, secara opsional menambahkan contoh, alur kerja Tindakan GitHub, dan pengujian pertama example.spec.ts. Anda sekarang dapat langsung melompat ke bagian menulis pernyataan.
Tambahkan ketergantungan dan instal browser.
npm i -D @playwright/test
# install supported browsers
npx playwright install
Secara opsional, Anda hanya dapat menginstal browser yang dipilih, lihat menginstal browser untuk detail selengkapnya. Atau Anda tidak dapat menginstal browser sama sekali dan menggunakan saluran browser yang ada.
Tunggu otomatis . Penulis naskah menunggu elemen dapat ditindaklanjuti sebelum melakukan tindakan. Ini juga memiliki serangkaian peristiwa introspeksi yang kaya. Kombinasi keduanya menghilangkan kebutuhan akan waktu tunggu buatan yang merupakan penyebab utama pengujian tidak stabil.
Pernyataan yang mengutamakan web . Pernyataan penulis naskah dibuat khusus untuk web dinamis. Pemeriksaan secara otomatis dicoba ulang hingga kondisi yang diperlukan terpenuhi.
Pelacakan . Konfigurasikan strategi percobaan ulang pengujian, rekam jejak eksekusi, video, dan tangkapan layar untuk menghilangkan kesalahan.
Browser menjalankan konten web dari asal yang berbeda dalam proses yang berbeda. Penulis naskah selaras dengan arsitektur browser modern dan menjalankan pengujian di luar proses. Hal ini membuat Playwright bebas dari batasan-batasan test runner dalam proses yang umum.
Lipat gandakan segalanya . Uji skenario yang mencakup banyak tab, banyak asal, dan banyak pengguna. Buat skenario dengan konteks berbeda untuk pengguna berbeda dan jalankan di server Anda, semuanya dalam satu pengujian.
Acara terpercaya . Arahkan elemen, berinteraksi dengan kontrol dinamis, dan hasilkan peristiwa tepercaya. Penulis naskah menggunakan saluran masukan browser nyata yang tidak dapat dibedakan dari pengguna sebenarnya.
Uji bingkai, tembus Shadow DOM. Penyeleksi penulis naskah menembus shadow DOM dan memungkinkan memasukkan bingkai dengan mulus.
Konteks peramban . Penulis naskah membuat konteks browser untuk setiap pengujian. Konteks browser setara dengan profil browser baru. Hal ini memberikan isolasi pengujian penuh tanpa overhead. Membuat konteks browser baru hanya membutuhkan waktu beberapa milidetik.
Masuk sekali . Simpan status autentikasi konteks dan gunakan kembali di semua pengujian. Hal ini mengabaikan operasi masuk berulang di setiap pengujian, namun memberikan isolasi penuh terhadap pengujian independen.
kodegen . Hasilkan tes dengan mencatat tindakan Anda. Simpan ke dalam bahasa apa pun.
Inspektur penulis naskah drama . Periksa halaman, buat penyeleksi, ikuti eksekusi pengujian, lihat titik klik, dan jelajahi log eksekusi.
Penampil Jejak . Tangkap semua informasi untuk menyelidiki kegagalan pengujian. Jejak penulis naskah berisi screencast eksekusi pengujian, snapshot DOM langsung, penjelajah tindakan, sumber pengujian, dan banyak lagi.
Mencari Penulis Drama untuk TypeScript, JavaScript, Python, .NET, atau Java?
Untuk mempelajari cara menjalankan contoh Tes Penulis Drama ini, lihat dokumen awal kami.
Cuplikan kode ini menavigasi ke beranda Playwright dan menyimpan tangkapan layar.
import { test } from '@playwright/test' ;
test ( 'Page Screenshot' , async ( { page } ) => {
await page . goto ( 'https://playwright.dev/' ) ;
await page . screenshot ( { path : `example.png` } ) ;
} ) ;
Cuplikan ini mengemulasi Mobile Safari pada perangkat dengan geolokasi tertentu, membuka map.google.com, melakukan tindakan, dan mengambil tangkapan layar.
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' } ) ;
} ) ;
Cuplikan kode ini menavigasi ke example.com, dan menjalankan skrip dalam konteks halaman.
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 ) ;
} ) ;
Cuplikan kode ini menyiapkan perutean permintaan pada laman untuk mencatat semua permintaan jaringan.
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' ) ;
} ) ;