Playwright Academy
0 dari 17
Langkah 0 · Persiapan

Unduh dari situs resmi, klik sampai selesai

Bahasa dan laptop dipilih di dua langkah terpisah paling atas, lalu setiap alat punya langkah klik demi klik. Perintah terminal hanya untuk mengecek versi dan membuat project.

Pilih bahasa

Semua contoh kode di Academy mengikuti pilihan ini.

Pilih laptopmu

Langkah install mengikuti sistem operasi ini. Terdeteksi otomatis, bisa diganti.

Install tiga alat

Unduh dari situs resminya, lalu install seperti aplikasi biasa. Setelah ketiganya terpasang, buka VS Code, klik menu Terminal > New Terminal, lalu cek satu per satu.

Python

python.org/downloads
  1. Buka python.org/downloads di browser.
  2. Klik tombol Download Python 3.x.x (versi paling baru).
  3. Buka file installer yang terunduh di folder Downloads.
  4. Centang Add python.exe to PATH di layar pertama.
  5. Klik Install Now, tunggu, lalu klik Close.
  1. Buka python.org/downloads di browser.
  2. Klik tombol Download Python 3.x.x (versi paling baru).
  3. Buka file .pkg yang terunduh di folder Downloads.
  4. Klik Continue di setiap layar, lalu Agree.
  5. Klik Install, masukkan password laptop, lalu Close.
  1. Python biasanya sudah terpasang di Linux.
  2. Langsung cek di terminal (kotak di bawah).
  3. Kalau belum ada, buka python.org/downloads.
  4. Ikuti petunjuk untuk Linux di halaman itu.
  5. Cek lagi sampai versinya muncul.
Cek di terminal VS Code
> python --version
Python 3.x.x> python3 --version
Python 3.x.x> python3 --version
Python 3.x.x

Node.js

nodejs.org
  1. Buka nodejs.org di browser.
  2. Klik tombol Download Node.js (LTS).
  3. Buka file .msi yang terunduh di folder Downloads.
  4. Klik Next, centang I accept the terms, lalu Next terus.
  5. Klik Install, tunggu, lalu klik Finish.
  1. Buka nodejs.org di browser.
  2. Klik tombol Download Node.js (LTS).
  3. Buka file .pkg yang terunduh di folder Downloads.
  4. Klik Continue di setiap layar, lalu Agree.
  5. Klik Install, masukkan password laptop, lalu Close.
  1. Buka nodejs.org/en/download di browser.
  2. Pilih versi LTS dan sistem operasi Linux.
  3. Ikuti perintah yang ditampilkan di halaman itu.
  4. Tutup terminal, lalu buka yang baru.
  5. Cek versinya (kotak di bawah).
Cek di terminal VS Code
> node --version
v22.18.0 atau lebih baru

VS Code

code.visualstudio.com
  1. Buka code.visualstudio.com.
  2. Klik Download for Windows.
  3. Buka installer, pilih I accept the agreement.
  4. Klik Next sampai Install. Biarkan Add to PATH tercentang.
  5. Klik Finish, VS Code terbuka.
  1. Buka code.visualstudio.com.
  2. Klik Download for Mac, lalu buka file .zip-nya.
  3. Seret Visual Studio Code ke folder Applications.
  4. Buka aplikasinya. Kalau ditanya, klik Open.
  5. Tekan Cmd+Shift+P, pilih Shell Command: Install 'code' command in PATH.
  1. Buka aplikasi App Center (Ubuntu Software).
  2. Cari Visual Studio Code.
  3. Pilih yang penerbitnya Microsoft.
  4. Klik Install, masukkan password laptop.
  5. Buka Visual Studio Code dari menu aplikasi.
Cek di terminal VS Code
> code --version
1.10x.x

Git

git-scm.com/downloads
  1. Buka git-scm.com/downloads.
  2. Klik Windows, unduhan mulai otomatis.
  3. Buka installer.
  4. Klik Next di setiap layar, pilihan bawaan sudah tepat.
  5. Klik Install, lalu Finish.
  1. Buka terminal VS Code.
  2. Ketik git --version, lalu tekan Enter.
  3. Kalau Git belum ada, muncul jendela Command Line Tools.
  4. Klik Install, lalu Agree.
  5. Tunggu sampai selesai, lalu klik Done.
  1. Buka git-scm.com/downloads.
  2. Klik Linux/Unix.
  3. Cari distro yang kamu pakai.
  4. Ikuti perintah install di halaman itu.
  5. Cek versinya (kotak di bawah).
Cek di terminal VS Code
> git --version
git version 2.5x
Satu perintah yang tersisa: uv

uv mengurus paket dan project Python. uv tidak punya installer berbentuk aplikasi, jadi diinstall dengan satu perintah setelah Python terpasang:

Python
# Install uv memakai pip, pengunduh paket bawaan Python (macOS dan Linux: ketik pip3)
pip install uv
# Cek versi uv
uv --version

Terakhir, di VS Code klik ikon Extensions (empat kotak) di panel kiri, cari Python, lalu klik Install pada ekstensi buatan Microsoft.

Ekstensi VS Code

Di VS Code, klik ikon Extensions (empat kotak) di panel kiri, cari Playwright Test for VSCode, lalu klik Install pada ekstensi buatan Microsoft. TypeScript tidak perlu diinstall terpisah.

Kalau gagal: muncul command not found atau is not recognized

Terminal belum mengenal programnya. Tutup VS Code sepenuhnya, buka lagi, lalu buka terminal baru. Di Windows, kalau python masih tidak dikenal, jalankan installer Python sekali lagi dan pastikan Add python.exe to PATH tercentang. Di macOS, kalau code tidak dikenal, ulangi langkah 5 di kartu VS Code.

Langkah 4: Buat folder projectSatu folder untuk semua latihan

Semua latihan di 17 modul disimpan di satu folder. Buat foldernya dulu, lalu buka di VS Code.

  1. Buka File Explorer (ikon folder kuning di taskbar), lalu klik Documents di panel kiri.
  2. Klik kanan di area kosong, pilih New > Folder.
  1. Buka Finder, lalu klik Documents di panel kiri.
  2. Klik kanan di area kosong, pilih New Folder.
  1. Buka aplikasi Files, lalu klik Documents di panel kiri.
  2. Klik kanan di area kosong, pilih New Folder.
  1. Ketik nama playwright-python, lalu tekan Enter.
  2. Di VS Code, klik menu File > Open Folder, pilih folder playwright-python di Documents, lalu klik Select Folder (macOS: Open).
  3. Kalau VS Code bertanya Do you trust the authors of the files in this folder?, klik Yes, I trust the authors.
  4. Buka terminal baru lewat Terminal > New Terminal. Sekarang terminal berada di dalam folder project.
  1. Ketik nama playwright-typescript, lalu tekan Enter.
  2. Di VS Code, klik menu File > Open Folder, pilih folder playwright-typescript di Documents, lalu klik Select Folder (macOS: Open).
  3. Kalau VS Code bertanya Do you trust the authors of the files in this folder?, klik Yes, I trust the authors.
  4. Buka terminal baru lewat Terminal > New Terminal. Sekarang terminal berada di dalam folder project.

Berhasil kalau nama folder project tampil di bagian atas panel kiri VS Code (panel Explorer).

Langkah 5: Siapkan projectBeberapa perintah di terminal VS Code

Ketik perintah di bawah satu per satu di terminal VS Code, dan tekan Enter setelah setiap baris. Tunggu sampai perintah selesai sebelum mengetik yang berikutnya.

# Jadikan folder ini project Python. Membuat pyproject.toml (daftar paket dan pengaturan)
uv init --no-package
# Install test runner pytest, plugin Playwright, dan pembaca file .env
uv add pytest pytest-playwright python-dotenv
# Unduh browser untuk test: Chromium, Firefox, dan WebKit (cukup sekali per laptop)
uv run playwright install
# Cek versi Playwright
uv run playwright --version
# Jadikan folder ini project Playwright Test. Kalau ditanya "Ok to proceed?", tekan Enter
npm init playwright@latest -- . --quiet --no-examples
# Install pembaca file .env (dipakai mulai Modul 11)
npm install -D dotenv
# Ubah project ke mode module, supaya script di Modul 3 boleh memakai import dan await
npm pkg set type=module
# Unduh browser untuk test: Chromium, Firefox, dan WebKit (cukup sekali per laptop)
npx playwright install
# Cek versi Playwright
npx playwright --version

playwright install mengunduh sekitar 1,2 GB. Ulangi perintah ini setelah memperbarui Playwright.

Opsi --quiet memilih semua jawaban standar (TypeScript, test di folder tests), dan --no-examples tidak membuat file contoh. playwright install mengunduh sekitar 1,2 GB. Ulangi perintah ini setelah memperbarui Playwright.

Berhasil kalau perintah terakhir menampilkan Version 1.xx.x.

Kalau gagal: unduhan browser berhenti atau error

Cek koneksi internet, lalu jalankan ulang perintah yang gagal. Semua perintah di langkah ini aman diulang.

Langkah 6: Atur base URLSatu bagian di file konfigurasi

Test di tutorial ini hanya menulis path, misalnya page.goto("/login-toko.html"). Base URL melengkapinya menjadi URL penuh https://playground.aminhamzah.com/login-toko.html.

  1. Di panel kiri VS Code, klik file pyproject.toml. Isinya terbuka di tengah.
  2. Klik di akhir baris paling bawah, lalu tekan Enter dua kali untuk membuat baris kosong.
  3. Salin tiga baris di bawah ke baris kosong itu.
  4. Simpan dengan Ctrl+S (macOS: Cmd+S). Titik putih di nama tab hilang tanda file sudah tersimpan.
  1. Di panel kiri VS Code, klik file playwright.config.ts. Isinya terbuka di tengah.
  2. Cari baris // baseURL: 'http://localhost:3000', di dalam bagian use. Tekan Ctrl+F (macOS: Cmd+F) dan ketik baseURL supaya cepat ketemu.
  3. Ganti baris itu dengan baris baseURL di bawah: tanpa // di depannya, dan dengan URL playground.
  4. Simpan dengan Ctrl+S (macOS: Cmd+S). Titik putih di nama tab hilang tanda file sudah tersimpan.
pyproject.tomlplaywright.config.ts
# Pengaturan pytest untuk project ini
[tool.pytest.ini_options]
# URL playground. page.goto("/login-toko.html") jadi https://playground.aminhamzah.com/login-toko.html
base_url = "https://playground.aminhamzah.com"
  use: {
    // URL playground. page.goto('/login-toko.html') jadi https://playground.aminhamzah.com/login-toko.html
    baseURL: 'https://playground.aminhamzah.com',
    // Rekam trace saat test diulang setelah gagal (dibahas di Modul 12)
    trace: 'on-first-retry',
  },

Berhasil kalau URL-nya persis https://playground.aminhamzah.com, tanpa garis miring di akhir. File .env belum perlu sekarang, kamu membuatnya di Modul 11.

Langkah 7: Jalankan test pertamaSampai terminal menulis 1 passed
  1. Di panel kiri VS Code, arahkan kursor ke nama project PLAYWRIGHT-PYTHON. Klik ikon New Folder (folder dengan tanda +) yang muncul di sebelahnya.
  2. Ketik tests, lalu tekan Enter.
  3. Klik kanan folder tests, pilih New File.
  4. Ketik test_pertama.py, lalu tekan Enter. File kosong terbuka.
  5. Salin kode di bawah ke file itu, lalu simpan dengan Ctrl+S (macOS: Cmd+S).
  1. Di panel kiri VS Code, arahkan kursor ke nama project PLAYWRIGHT-TYPESCRIPT. Klik ikon New Folder (folder dengan tanda +) yang muncul di sebelahnya.
  2. Ketik tests, lalu tekan Enter. Playwright Test mencari file test di folder ini.
  3. Klik kanan folder tests, pilih New File.
  4. Ketik pertama.spec.ts, lalu tekan Enter. File kosong terbuka.
  5. Salin kode di bawah ke file itu, lalu simpan dengan Ctrl+S (macOS: Cmd+S).
tests/test_pertama.pytests/pertama.spec.ts
import re  # alat pencocok teks (regular expression)

from playwright.sync_api import Page, expect  # Page = satu tab browser, expect = pemeriksa hasil


# pytest menjalankan setiap fungsi yang namanya diawali test_
def test_halaman_login_terbuka(page: Page) -> None:  # page disiapkan otomatis oleh pytest-playwright
    page.goto("/login-toko.html")  # buka halaman login (base URL + path ini)
    expect(page).to_have_title(re.compile("TokoQA"))  # judul tab harus mengandung "TokoQA"
    expect(page.get_by_role("button", name="Masuk")).to_be_visible()  # tombol Masuk harus terlihat
import { test, expect } from '@playwright/test'; // test = pembuat test, expect = pemeriksa hasil

// Satu test bernama "halaman login terbuka". page = satu tab browser, disiapkan otomatis
test('halaman login terbuka', async ({ page }) => {
  await page.goto('/login-toko.html'); // buka halaman login (base URL + path ini)
  await expect(page).toHaveTitle(/TokoQA/); // judul tab harus mengandung "TokoQA"
  await expect(page.getByRole('button', { name: 'Masuk' })).toBeVisible(); // tombol Masuk harus terlihat
});
Arti setiap baris
def test_halaman_login_terbuka(page: Page)
Satu test. pytest mencari fungsi yang namanya diawali test_, lalu memberinya page: tab browser baru yang sudah siap pakai.
page.goto("/login-toko.html")
Membuka halaman. Path ini digabung dengan base_url dari pyproject.toml.
expect(page).to_have_title(...)
Memeriksa judul tab. re.compile("TokoQA") artinya judul cukup mengandung TokoQA, tidak harus sama persis.
page.get_by_role("button", name="Masuk")
Mencari tombol bertuliskan Masuk, seperti pengguna mencarinya di layar.
.to_be_visible()
Lulus kalau tombol itu terlihat. Playwright menunggu sebentar dulu kalau halamannya belum selesai dimuat.
Arti setiap baris
test('halaman login terbuka', async ({ page }) => {
Satu test dengan nama yang mudah dibaca. Playwright Test memberinya page: tab browser baru yang sudah siap pakai.
await page.goto('/login-toko.html')
Membuka halaman. Path ini digabung dengan baseURL dari playwright.config.ts. await artinya tunggu sampai selesai.
await expect(page).toHaveTitle(/TokoQA/)
Memeriksa judul tab. /TokoQA/ artinya judul cukup mengandung TokoQA.
page.getByRole('button', { name: 'Masuk' })
Mencari tombol bertuliskan Masuk, seperti pengguna mencarinya di layar.
.toBeVisible()
Lulus kalau tombol itu terlihat. Playwright menunggu sebentar dulu kalau halamannya belum selesai dimuat.

Jalankan test-nya. Opsi --headed menampilkan jendela browser supaya kamu bisa melihatnya bekerja:

# Jalankan satu file test dengan jendela browser terlihat
uv run pytest tests/test_pertama.py --headed
# Jalankan satu file test di Chromium dengan jendela browser terlihat
npx playwright test tests/pertama.spec.ts --headed --project=chromium

Berhasil kalau jendela browser muncul sebentar, lalu terminal menulis:

tests/test_pertama.py .                                  [100%]
============================ 1 passed in 2.10s ============================
Running 1 test using 1 worker
  1 passed (2.3s)
Kalau gagal: test tidak bisa membuka situs

Pastikan laptopmu terhubung ke internet, dan base URL di langkah sebelumnya persis https://playground.aminhamzah.com.

Sudah selesai semua langkah? Tandai persiapan selesai, supaya Beranda mengarahkanmu ke Modul 1.

Lanjut ke Modul 1

Cara membaca tutorial

Yang kamu temuiArtinya
LatihanTugas singkat dengan hasil yang diharapkan. Coba sendiri dulu, lalu buka Lihat jawaban dan centang Sudah dicoba
Latihan di playgroundDi akhir setiap modul. Praktikkan materinya langsung di aplikasi latihan
Di dunia QAPerbandingan dengan pekerjaan QA sehari-hari, supaya konsep baru terasa akrab
Arti setiap barisPenjelasan rinci di bawah kode. Komentar di dalam kode adalah versi singkatnya
Hati-hatiJebakan yang sering membuat test gagal atau flaky
Jangan lakukanKebiasaan buruk yang pasti ditegur saat code review
Lebih jauh (opsional)Bagian yang dilipat: trik komunitas dan materi tambahan. Boleh dilewati
Lulus testKode diambil dari project contoh Academy dan lulus test terhadap situs ini

Setiap contoh kode diberi nama file, misalnya tests/academy/test_m04_locators.py. Cara memakainya:

  1. Di panel kiri VS Code, buat folder yang disebut nama file itu kalau belum ada (klik kanan > New Folder).
  2. Klik kanan folder itu, pilih New File, lalu ketik nama file-nya persis sama.
  3. Ketik ulang isi kodenya. Komentar di ujung baris boleh ikut diketik atau dilewati.
  4. Simpan dengan Ctrl+S (macOS: Cmd+S).
  5. Jalankan perintah yang tertulis di bawah blok kode lewat terminal VS Code.

Mengetik ulang memang lebih lambat daripada menyalin, tapi di situ kamu belajar membaca error.

playwright-python/playwright-typescript/
playwright-python/
├─ pyproject.toml                   ← daftar paket + pengaturan pytest
├─ .env                             ← dibuat di Modul 11 (tidak di-commit)
├─ scripts/                         ← script biasa (Modul 3)
├─ tests/
│  ├─ test_pertama.py               ← test pertamamu
│  └─ academy/                      ← contoh per modul: test_m04_locators.py, dst.
├─ pages/                           ← page object (Modul 10)
└─ data/                            ← test data JSON (Modul 11)
playwright-typescript/
├─ package.json                     ← daftar paket ("type": "module")
├─ playwright.config.ts             ← pengaturan Playwright Test
├─ .env                             ← dibuat di Modul 11 (tidak di-commit)
├─ scripts/                         ← script biasa (Modul 3)
├─ tests/
│  ├─ pertama.spec.ts               ← test pertamamu
│  └─ academy/                      ← contoh per modul: m04-locators.spec.ts, dst.
├─ pages/                           ← page object (Modul 10)
└─ data/                            ← test data JSON (Modul 11)
Situs ini dipakai bersama

Jangan isi data pribadi asli. Keranjang, pesanan, dan janji temu terikat ke sesi login-mu, tapi akun admin TokoQA dan dokter KlinikQA melihat data semua sesi. Data latihan dihapus otomatis setelah 24 jam.

Perintah yang sering dipakai (jalankan test, debug, codegen, report) ada di Cheatsheet.

Alat untuk nanti

Install saat modulnya tiba. Tidak perlu sekarang.

AlatDipakai di
Akun GitHubModul 15: menjalankan test otomatis di GitHub Actions
Node.js, juga untuk jalur PythonModul 16: Playwright MCP dijalankan dengan npx
AI agent, misalnya Claude CodeModul 16: menulis dan memperbaiki test dengan bantuan AI
Docker (opsional)Modul 15: menjalankan test di image resmi Playwright
Lebih jauh (opsional)Struktur project di dunia kerja

Project latihanmu diberi nama per modul supaya gampang dicocokkan dengan materi. Di kantor, biasanya satu repository hanya untuk satu bahasa, aplikasinya ada di repository lain (atau sudah online), dan test dikelompokkan per fitur.

tokoqa-e2e/ (Python)tokoqa-e2e/ (TypeScript)
tokoqa-e2e/
├─ .github/workflows/e2e.yml        ← CI (Modul 15)
├─ pages/                           ← page object per halaman
│  ├─ login_page.py
│  ├─ shop_page.py
│  └─ components/header.py          ← komponen yang muncul di banyak halaman
├─ api/
│  └─ client.py                     ← helper request: login, buat data
├─ tests/
│  ├─ conftest.py                   ← fixture bersama (login, page object)
│  ├─ e2e/
│  │  ├─ auth/test_login.py
│  │  └─ checkout/test_checkout.py
│  └─ api/test_products.py
├─ data/users.json
├─ .env.example                     ← contoh variabel, .env asli tidak di-commit
├─ pyproject.toml                   ← dependency + konfigurasi pytest
└─ README.md
tokoqa-e2e/
├─ .github/workflows/playwright.yml ← CI (Modul 15)
├─ src/
│  ├─ pages/                        ← page object per halaman
│  │  ├─ LoginPage.ts
│  │  └─ components/Header.ts
│  ├─ fixtures/index.ts             ← test.extend: page object + login
│  └─ api/ApiClient.ts              ← helper request: login, buat data
├─ tests/
│  ├─ auth.setup.ts                 ← login sekali, simpan storage state (Modul 11)
│  ├─ e2e/
│  │  ├─ auth/login.spec.ts
│  │  └─ checkout/checkout.spec.ts
│  └─ api/products.spec.ts
├─ test-data/users.json
├─ playwright.config.ts
├─ .env.example
├─ package.json
└─ README.md
Project latihanmuProject kerja
Aplikasi yang diujiSitus Academy iniAplikasi tim, biasanya di server staging
Nama file testPer modul: test_m10_pom.pyPer fitur: tests/e2e/checkout/test_checkout.py
URL aplikasibase_url / baseURL berisi URL situs iniDibaca dari BASE_URL di .env, berbeda untuk tiap server
Data rahasiaAkun latihan publik.env lokal + Secrets di CI, tidak pernah di-commit

Di Modul 17 (Proyek Akhir) kamu membuat suite dengan struktur kerja ini dari nol.