Testing
Panduan Lengkap Playwright Cross-Browser Testing 2026
Panduan lengkap Playwright Cross-Browser Testing — cara setup, konfigurasi multi-browser (Chromium, Firefox, WebKit), strategi tiered testing, dan best practices untuk produksi.
Playwright Cross-Browser Testing adalah teknik menjalankan automated tests pada beberapa browser engine — Chromium, Firefox, dan WebKit — menggunakan satu API tunggal. Dikembangkan oleh Microsoft sejak 2020, framework ini kini menjadi standar end-to-end testing untuk memastikan aplikasi web berfungsi konsisten di semua browser. Panduan ini membahas setup, konfigurasi multi-browser, strategi tiered testing, dan best practices untuk produksi di tahun 2026.
Playwright Cross-Browser Testing memungkinkan developer menjalankan test di Chromium, Firefox, dan WebKit dengan satu API
Apa Itu Playwright Cross-Browser Testing?
Cross-browser testing adalah proses memastikan aplikasi web berfungsi dengan benar di berbagai browser, versi, dan perangkat. Setiap browser — Chrome, Firefox, Safari, Edge — menggunakan engine rendering yang berbeda untuk memproses HTML, CSS, dan JavaScript. Akibatnya, elemen yang sama bisa tampil berbeda, lambat dimuat, atau bahkan tidak berfungsi di browser tertentu.
Playwright menyelesaikan masalah ini dengan menyediakan satu API unified yang bisa menjalankan test pada tiga browser engine utama:
- Chromium — engine V8 + Blink, digunakan oleh Chrome dan Edge, menguasai sekitar 65% traffic desktop di 2026
- Firefox — engine SpiderMonkey + Gecko, menguasai sekitar 5% traffic desktop, dengan perilaku CSS edge cases yang berbeda dari browser lain
- WebKit — engine JavaScriptCore + WebKit, digunakan oleh Safari di Mac dan iOS (semua browser di iOS wajib menggunakan WebKit)
Yang membuat framework ini berbeda dari Selenium adalah Playwright mengunduh browser binary sendiri — tidak perlu WebDriver terpisah atau konfigurasi browser-specific. Satu baris perintah bisa menjalankan test di semua browser sekaligus. Bagi yang ingin memahami lebih dalam tentang arsitektur backend yang mendukung testing infrastructure, baca juga pola caching Redis untuk aplikasi web yang skalabel.
Mengapa Cross-Browser Testing Penting untuk Aplikasi Web?
Bayangkan sebuah tombol yang sempurna di Chrome tapi miring di Safari. Atau dropdown menu yang berfungsi di Firefox tapi gagal di Edge. Masalah kecil seperti ini bisa merusak user experience dan menyebabkan kehilangan pengguna.
Berikut adalah area yang paling sering bermasalah saat Playwright Cross-Browser Testing:
- CSS flexbox dan layout: Properti seperti
gap,subgrid,@containerqueries, danbackdrop-filterberperilaku berbeda di setiap engine rendering - Date/time input: Render
<input type="date">sangat bervariasi — WebKit dan Firefox memiliki date picker UI sendiri yang berbeda dari Chrome - File upload: Dialog file chooser bervariasi antar browser, meskipun Playwright bisa mengatasinya melalui
setInputFiles() - Scrollbar: WebKit di Mac menyembunyikan scrollbar secara default, yang bisa mempengaruhi koordinat klik dan layout
- Clipboard API:
navigator.clipboardmemerlukan user permission dan berperilaku berbeda di setiap browser
Perbedaan rendering antar browser menjadi alasan utama mengapa Playwright Cross-Browser Testing 2026 sangat dibutuhkan
Menurut survei BrowserStack tahun 2025 terhadap 3.000 developer, sekitar sepertiga bug yang ditemukan di produksi adalah bug spesifik browser — artinya bug tersebut hanya muncul di satu atau dua browser tertentu. Tanpa cross-browser testing, bug semacam ini lolos ke produksi dan berdampak pada ribuan pengguna.
Setup Playwright untuk Cross-Browser Testing Indonesia
Memulai Playwright Cross-Browser Testing Indonesia sangat mudah. Berikut langkah-langkahnya:
1. Instalasi Playwright
Buat folder project baru dan jalankan perintah berikut:
# Inisialisasi project Playwright baru
npm init playwright@latest
# Atau tambahkan ke project yang sudah ada
npm install -D @playwright/test
Perintah ini akan mengunduh browser binary untuk Chromium, Firefox, dan WebKit secara otomatis ke direktori cache lokal.
2. Konfigurasi playwright.config.ts
Buka file playwright.config.ts dan pastikan ketiga browser terkonfigurasi dengan benar:
// playwright.config.ts
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
{
name: 'firefox',
use: { ...devices['Desktop Firefox'] },
},
{
name: 'webkit',
use: { ...devices['Desktop Safari'] },
},
],
});
3. Jalankan Test di Semua Browser
Untuk menjalankan test di semua browser sekaligus:
npx playwright test
Untuk menjalankan di browser tertentu saja:
# Chromium saja
npx playwright test --project=chromium
# Firefox saja
npx playwright test --project=firefox
# Safari/WebKit saja
npx playwright test --project=webkit
Playwright akan menjalankan test secara paralel di setiap browser dan menghasilkan laporan terpisah untuk masing-masing. Anda bisa melihat hasilnya di folder test-results/ dan report HTML di playwright-report/.
// Advertisement
Strategi Tiered Testing untuk CI/CD
Menjalankan semua test di semua browser pada setiap pull request akan melipatgandakan waktu CI sebanyak tiga kali lipat tanpa proporsi bug coverage yang sepadan. Strategi praktis Playwright Cross-Browser Testing 2026 adalah tiered testing — membagi test ke dalam tiga tier berdasarkan frekuensi dan kedalaman.
Strategi tiered testing mengoptimalkan waktu CI/CD tetap cepat tanpa mengorbankan coverage browser
Tier 1: Setiap Pull Request (Chromium Saja)
- Jalankan semua test di Chromium saja untuk setiap pull request
- Waktu CI tetap cepat — sekitar 3-5 menit untuk suite 200 test
- Cukup untuk menangkap lebih dari 90% bug karena sebagian besar bug logic tidak spesifik browser
Tier 2: Merge ke Main (Chromium + Firefox + WebKit)
- Jalankan full cross-browser test saat merge ke branch main
- Menangkap browser-specific issues yang tidak terdeteksi di Tier 1
- Waktu eksekusi sekitar 10-15 menit — masih wajar untuk merge gate
Tier 3: Nightly (Semua Browser, Full Suite)
- Jalankan semua test di semua browser setiap malam
- Termasuk visual regression tests dan screenshot comparison
- Mendeteksi perubahan yang disebabkan oleh browser update otomatis
Berikut konfigurasi untuk strategi tiered:
// playwright.config.ts
import { defineConfig, devices } from '@playwright/test';
const isCIFullRun = process.env.CROSS_BROWSER === 'true';
export default defineConfig({
projects: [
// Selalu jalankan Chromium
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
// Firefox dan WebKit hanya di cross-browser mode
...(isCIFullRun ? [
{
name: 'firefox',
use: { ...devices['Desktop Firefox'] },
},
{
name: 'webkit',
use: { ...devices['Desktop Safari'] },
},
] : []),
],
});
Contoh implementasi di GitHub Actions:
# .github/workflows/tests.yml
name: Playwright Tests
on: [push, pull_request]
jobs:
test-chromium:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npx playwright test --project=chromium
test-cross-browser:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: CROSS_BROWSER=true npx playwright test
test-nightly:
if: github.event_name == 'schedule'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: CROSS_BROWSER=true npx playwright test
Handling Perbedaan Browser Behavior
Kadang test harus berperilaku berbeda di setiap browser. Playwright menyediakan properti browserName untuk menulis kondisional logic yang spesifik per browser:
import { test, expect } from '@playwright/test';
test('date input works across browsers', async ({ page, browserName }) => {
await page.goto('/form');
if (browserName === 'webkit') {
// WebKit date picker memiliki UI yang berbeda
await page.click('input[type="date"]');
await page.selectOption('.webkit-date-picker', '2026-07');
} else {
// Chrome dan Firefox bisa langsung fill
await page.fill('input[type="date"]', '2026-07-15');
}
await expect(page.locator('.date-display')).toHaveText('July 15, 2026');
});
Pendekatan lain adalah membuat test fixtures terpisah per browser. Ini lebih bersih daripada menumpuk kondisional logic di dalam satu test:
// fixtures/cross-browser.ts
import { test as base } from '@playwright/test';
type Fixtures = {
datePickerFill: (page: any, date: string) => Promise<void>;
};
export const test = base.extend<Fixtures>({
datePickerFill: async ({ page, browserName }, use) => {
const fill = async (p: any, date: string) => {
if (browserName === 'webkit') {
await p.click('input[type="date"]');
await p.selectOption('.webkit-date-picker', date.slice(0, 7));
} else {
await p.fill('input[type="date"]', date);
}
};
await use(fill);
},
});
Best Practices Playwright Cross-Browser Testing untuk Produksi
Berikut praktik terbaik yang harus diikuti saat menjalankan Playwright Cross-Browser Testing di lingkungan produksi:
- Gunakan auto-waiting: Playwright memiliki built-in auto-waiting yang mengurangi test flakiness secara signifikan. Gunakan locators seperti
getByRole,getByText, dangetByTestIdalih-alih XPath atau CSS selectors yang rapuh. - Parallel execution: Jalankan test secara paralel untuk mempercepat waktu eksekusi. Playwright Test mendukung parallel execution secara default dengan jumlah worker yang bisa dikonfigurasi.
- Test retries: Konfigurasi retries untuk menangani flaky tests yang mungkin terjadi di browser tertentu. Gunakan
retries: 2di config untuk retry otomatis. - Visual regression testing: Gunakan fitur screenshot comparison untuk mendeteksi perubahan visual yang tidak diinginkan di setiap browser. Perbandingan screenshot antar browser membantu menemukan rendering issues.
- CI/CD integration: Gunakan Playwright Docker image yang sudah termasuk semua browser untuk CI yang konsisten. Pelajari lebih lanjut tentang hardening keamanan Docker container untuk menjaga image testing tetap aman di produksi.
- Trace viewer: Gunakan trace viewer untuk debug test failures — merekam screenshots, network requests, dan console logs dalam format yang bisa diputar ulang.
- Page Object Model: Implementasi POM untuk memisahkan test logic dari page structure, memudahkan maintenance saat UI berubah.
- Environment-specific config: Gunakan environment variables untuk mengatur URL, credentials, dan browser selection per environment.
npx playwright show-trace trace.zip untuk membuka trace viewer secara lokal. Fitur ini sangat membantu saat debugging test failures di browser tertentu.
Perbandingan Playwright vs Selenium untuk Cross-Browser Testing
Playwright dan Selenium adalah dua framework terpopuler untuk automated testing. Berikut perbandingan berdasarkan data benchmark tahun 2026:
| Aspek | Playwright | Selenium |
|---|---|---|
| Browser Engine | Chromium, Firefox, WebKit | Chrome, Firefox, Edge, Safari |
| WebDriver | Tidak diperlukan — binary diunduh otomatis | Memerlukan WebDriver terpisah per browser |
| Auto-waiting | Built-in — otomatis menunggu elemen siap | Tidak ada — harus menulis kode tunggu manual |
| Eksekusi paralel | Built-in — worker bisa dikonfigurasi | Memerlukan Selenium Grid setup terpisah |
| Dukungan bahasa | TS, JS, Python, .NET, Java | Java, Python, C#, Ruby, JS |
| Kecepatan eksekusi | Lebih cepat sekitar 30-60% (tanpa WebDriver overhead) | Lebih lambat karena komunikasi via HTTP ke WebDriver |
| Debugging | Trace viewer, UI mode, Codegen | Log analysis manual, screenshot via WebDriver |
| Test flakiness | Rendah — auto-waiting + network interception built-in | Tinggi — sering memerlukan explicit waits |
Untuk project baru di tahun 2026, Playwright menjadi pilihan yang lebih praktis karena tidak memerlukan setup WebDriver dan memiliki fitur built-in yang mengurangi kode berulang. Selenium tetap relevan untuk project lama yang sudah terintegrasi mendalam dengan ekosistem Selenium.
// Advertisement
FAQ: Pertanyaan Umum tentang Playwright Cross-Browser Testing
Apakah Playwright Cross-Browser Testing bisa digunakan dengan Python?
Ya. Playwright mendukung Python melalui paket playwright yang tersedia di PyPI. Instal dengan pip install playwright lalu jalankan playwright install untuk mengunduh browser binary. API-nya mirip dengan versi TypeScript, sehingga transisi antar bahasa relatif mudah.
Bagaimana cara menjalankan Playwright Cross-Browser Testing 2026 di GitHub Actions?
Gunakan Docker image resmi Playwright (mcr.microsoft.com/playwright:v1.48.0-noble) di workflow GitHub Actions. Image ini sudah termasuk semua browser binary dan dependencies. Untuk testing lintas browser, set environment variable CROSS_BROWSER=true dan jalankan npx playwright test.
Berapa lama waktu yang dibutuhkan untuk menjalankan full cross-browser test suite?
Tergantung jumlah test dan hardware. Di GitHub Actions (2 core CPU), suite dengan 200 test membutuhkan sekitar 10-15 menit per browser. Dengan strategi tiered testing, Anda bisa menjalankan hanya Chromium (3-5 menit) untuk setiap pull request dan full suite hanya saat merge ke main.
Apakah Playwright Cross-Browser Testing Indonesia mendukung testing di browser mobile?
Ya. Playwright mendukung testing di device mobile seperti iPhone dan Android melalui device descriptors. Anda bisa mengkonfigurasi project untuk menjalankan test di iPhone 14, Pixel 7, atau device lainnya menggunakan devices['iPhone 14'] di config.
Apa perbedaan utama Playwright Cross-Browser Testing adalah dengan Cypress?
Cypress hanya mendukung Chromium-based browsers (Chrome, Edge, Electron), sedangkan Playwright mendukung tiga engine berbeda termasuk Firefox dan WebKit. Untuk testing yang mencakup Safari, Playwright menjadi pilihan yang lebih komprehensif. Untuk data testing yang kompleks, pertimbangkan juga membaca tentang pola lanjutan MongoDB Aggregation Pipeline.
Butuh bantuan implementasi testing di project Anda?
VyuApp menyediakan layanan konsultasi teknis untuk setup automated testing dan CI/CD pipeline.
Hubungi VyuApp →Sumber Referensi
- Playwright Official Documentation — Browsers. https://playwright.dev/docs/browsers
- BecomeQA — Cross-Browser Testing with Playwright. https://becomeqa.com/en/articles/cross-browser-testing-playwright
- Codoid — Playwright Cross-browser Testing Tutorial. https://codoid.com/automation-testing/playwright-cross-browser-testing-tutorial/
- Software Testing Tutorials — How to Perform Cross Browser Testing in Playwright. https://software-testing-tutorials-automation.com/2025/08/cross-browser-testing-in-playwright.html
- BrowserStack — Cross-Browser Testing using Playwright. https://www.browserstack.com/guide/cross-browser-testing-using-playwright
Image Attribution
// Advertisement
VyuApp Studio
Bespoke web engineering — Garut, ID