Hana — VyuApp Support
Online
20/20 pesan tersisa
🌸 Selamat datang di VyuApp! Saya Hana, ada yang bisa saya bantu hari ini?
Semua artikel

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.

15 Juli 2026 9 min read#playwright#cross-browser-testing#e2e-testing#automation
Panduan Lengkap Playwright Cross-Browser Testing 2026

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.

Layar komputer menampilkan kode automated testing untuk Playwright cross-browser testing

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.

Fakta penting: Playwright mendukung lima bahasa pemrograman — TypeScript, JavaScript, Python, .NET, dan Java — sehingga tim bisa menggunakan bahasa yang sudah dikuasai tanpa perlu belajar tools baru.

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, @container queries, dan backdrop-filter berperilaku 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.clipboard memerlukan user permission dan berperilaku berbeda di setiap browser
Monitor yang menampilkan kode pemrograman untuk automated testing di berbagai 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.

Pipeline CI/CD untuk automated testing dengan multiple browser stages

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:

  1. Gunakan auto-waiting: Playwright memiliki built-in auto-waiting yang mengurangi test flakiness secara signifikan. Gunakan locators seperti getByRole, getByText, dan getByTestId alih-alih XPath atau CSS selectors yang rapuh.
  2. Parallel execution: Jalankan test secara paralel untuk mempercepat waktu eksekusi. Playwright Test mendukung parallel execution secara default dengan jumlah worker yang bisa dikonfigurasi.
  3. Test retries: Konfigurasi retries untuk menangani flaky tests yang mungkin terjadi di browser tertentu. Gunakan retries: 2 di config untuk retry otomatis.
  4. 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.
  5. 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.
  6. Trace viewer: Gunakan trace viewer untuk debug test failures — merekam screenshots, network requests, dan console logs dalam format yang bisa diputar ulang.
  7. Page Object Model: Implementasi POM untuk memisahkan test logic dari page structure, memudahkan maintenance saat UI berubah.
  8. Environment-specific config: Gunakan environment variables untuk mengatur URL, credentials, dan browser selection per environment.
Tips: Gunakan 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

  1. Playwright Official Documentation — Browsers. https://playwright.dev/docs/browsers
  2. BecomeQA — Cross-Browser Testing with Playwright. https://becomeqa.com/en/articles/cross-browser-testing-playwright
  3. Codoid — Playwright Cross-browser Testing Tutorial. https://codoid.com/automation-testing/playwright-cross-browser-testing-tutorial/
  4. 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
  5. BrowserStack — Cross-Browser Testing using Playwright. https://www.browserstack.com/guide/cross-browser-testing-using-playwright

Image Attribution

  • Photo by Ilya Pavlov on Unsplash - Unsplash
  • Photo by Arnold Francisca on Unsplash - Unsplash
  • Photo by Kazden Cattuti on Unsplash - Unsplash

// Advertisement

V

VyuApp Studio

Bespoke web engineering — Garut, ID