# Latihan Playwright, Jenkins, dan Appium

Contoh pendidikan, bukan framework produksi. File tersedia satu per satu dari halaman panduan.

## Web (Linux/macOS)

1. Simpan `test_form.py` dan `test_wait.py` di `tests/web/`.
2. Simpan `requirements.txt` dan `Jenkinsfile` di root repository latihan.
3. Jalankan `python3 -m venv .venv`, lalu `.venv/bin/python -m pip install -r requirements.txt`.
4. Jalankan `.venv/bin/python -m playwright install chromium`.
5. Jalankan `.venv/bin/python -m pytest tests/web --junitxml=reports/web.xml`.

Windows: gunakan `py -m venv .venv` dan `.venv\Scripts\python.exe` sebagai pengganti executable Python di atas.
Dependency di sini tidak dikunci; setelah berhasil pada environment latihan, simpan versi dengan `pip freeze`.
Demo memakai `page.set_content`, tidak memverifikasi login atau API aplikasi nyata.

## Jenkins

Butuh job Pipeline from SCM/Multibranch, Git/Pipeline/JUnit plugins, serta agent Linux
berlabel `python-browser` dengan Python, venv, Git, dan dependency OS Chromium terpasang.
Administrator menyiapkan dependency OS browser sebelum job berjalan. Browser diunduh pada stage Environment.
Tidak ada instalasi OS, credential, webhook, atau job server yang dibuat oleh paket ini.
`deleteDir()` membersihkan workspace job latihan sebelum checkout; jangan arahkan job ke direktori data bersama.
Kegagalan pytest tetap membuat build gagal; report diproses lewat `post always`.

## Mobile

Simpan `test_mobile.py` di `tests/mobile/` dan install `requirements-mobile.txt` dalam virtualenv terpisah.
Siapkan Android SDK/JDK, Appium server + UiAutomator2, dan device/emulator latihan terlebih dahulu.
Set `APP_APK`, `ANDROID_UDID`, `HOME_ACCESSIBILITY_ID` sesuai APK/device sendiri.
Jalankan Appium di 127.0.0.1:4723 dan `python -m pytest tests/mobile`.
Jangan menjalankan test web dan mobile bersamaan tanpa pengaturan fixture: pytest-playwright juga memiliki fixture bernama driver.
Contoh mobile butuh APK dan locator nyata; tidak mengklaim sudah diuji pada device.
