Git
Menyimpan riwayat kode, branch, pull request, dan menyelesaikan merge conflict.
Git menyimpan riwayat perubahan kode. Test-mu disimpan, di-review tim, dan dijalankan CI dari repository Git.
Git seperti riwayat versi dokumen test case di Google Docs, tapi lebih rapi: setiap perubahan punya pesan, bisa dibandingkan, dan bisa dikembalikan kalau keliru.
Istilah Git dalam 1 menit
| Istilah | Artinya |
|---|---|
| Repository (repo) | Folder project beserta seluruh riwayat perubahannya |
| Commit | Satu titik simpan, lengkap dengan catatan apa yang berubah |
| Staging area | Perubahan yang akan masuk ke commit berikutnya |
| Branch | Jalur kerja terpisah untuk mencoba hal baru |
| Merge | Menggabungkan isi branch ke branch lain |
| Remote (GitHub) | Salinan repo di internet, untuk berbagi dengan tim |
| Pull Request (PR) | Permintaan "tolong cek dan gabungkan branch-ku, ya" |
Pengaturan awal (cukup sekali)
git config --global user.name "Nama Kamu" # nama yang tercatat di setiap commit
git config --global user.email "kamu@contoh.com" # email yang tercatat di setiap commit
git config --global init.defaultBranch main # nama branch pertama: mainAlur harian
# Mulai repo baru di folder project (project dari uv init sudah jadi repo Git, jadi aman diulang)
cd playwright-python # atau: cd playwright-typescript
git init # jadikan folder ini repository Git
# Lihat apa yang berubah (perintah yang paling sering kamu ketik!)
git status
# Masukkan perubahan ke staging, lalu save
git add tests/academy/test_m10_pom.py
git commit -m "test: tambah test login dengan page object" # simpan perubahan dengan pesan yang jelas
# Lihat riwayat
git log --onelineCatat di .gitignore: .env, auth.json, node_modules/, .venv/, test-results/, playwright-report/. uv init dan npm init playwright sudah membuat file ini, tapi .env belum ada di dalamnya. Isi minimalnya:
# Python
.venv/
__pycache__/
.pytest_cache/
# Node
node_modules/
# Playwright artefacts
test-results/
playwright-report/
output/
# Rahasia
.env
auth.json
playwright/.auth/Menghapus file-nya di commit berikutnya belum cukup, karena password-nya masih tersimpan di riwayat. Segera ganti password atau token itu dulu, baru bersihkan riwayatnya.
Branch dan Pull Request: cara kerja bareng tim
# 1. Ambil kode terbaru dari main
git switch main
git pull # ambil perubahan terbaru dari GitHub
# 2. Buat branch untuk pekerjaanmu
git switch -c test/checkout-validation
# 3. Kerjakan, commit sesering perlu
git add .
git commit -m "test: validasi form checkout dari data JSON" # simpan perubahan
# 4. Kirim branch ke GitHub
git push -u origin test/checkout-validation
# 5. Buka GitHub → "Compare & pull request" → minta review → mergeAwali pesan commit dengan test: (test), fix: (perbaikan), refactor: (merapikan), chore: (konfigurasi, dependency), atau ci: (pipeline). Contoh: fix: perbaiki locator tombol checkout setelah redesign.
Merge conflict
Conflict terjadi kalau dua orang mengubah baris yang sama di file yang sama. Misalnya kamu dan Budi sama-sama mengubah locator tombol login:
<<<<<<< HEAD
self.submit_button = page.get_by_role("button", name="Masuk")
=======
self.submit_button = page.get_by_test_id("login-button")
>>>>>>> test/budi-login<<<<<<< HEAD
this.submitButton = page.getByRole('button', { name: 'Masuk' });
=======
this.submitButton = page.getByTestId('login-button');
>>>>>>> test/budi-loginCara membacanya:
- Di antara
<<<<<<< HEADdan=======→ versi kamu (branch yang sedang kamu pakai). - Di antara
=======dan>>>>>>>→ versi yang mau digabungkan.
Cara menyelesaikannya:
- Sepakati versi yang benar (di contoh ini,
get_by_rolelebih dianjurkan, Modul 4). - Edit file-nya: sisakan kode yang benar, lalu hapus semua tanda
<<<<<<<,=======,>>>>>>>. - Jalankan test untuk memastikan semuanya masih hijau.
git add <file>lalugit commit(ataugit merge --continue).
VS Code menampilkan tombol Accept Current / Accept Incoming / Accept Both di atas blok conflict, dan punya Merge Editor 3 panel.
Kebiasaan Git yang baik untuk QA
- Commit kecil tapi sering, satu commit untuk satu tujuan.
- Biasakan
git pullsebelum mulai bekerja. - Jalankan test sebelum push, supaya error sepele tidak baru ketahuan di CI.
- Ikut membaca PR dari developer. QA yang tahu bagian mana yang diubah bisa menebak area mana yang rawan.
Lebih jauh (opsional)Trik komunitas
- Conventional Commits (
test:,fix:,ci:) membuat riwayat gampang dibaca, dan bisa dipakai untuk membuat catatan perubahan (changelog) secara otomatis. - Pre-commit hook: linter otomatis jalan setiap kali kamu commit. Python:
pre-commit+ruff. TypeScript:husky+lint-staged. - GitHub CLI:
gh pr createmembuat Pull Request langsung dari terminal. - Branch protection: atur supaya CI wajib hijau dan minimal satu orang sudah review sebelum boleh merge ke
main. - Perintah yang lebih baru:
git switchuntuk pindah branch dangit restoreuntuk membatalkan perubahan file. Lebih jelas daripadagit checkoutyang dipakai untuk dua hal sekaligus.
Latihan
Kerjakan di terminal VS Code, di folder project-mu (playwright-python atau playwright-typescript).
Simpan pertamamu
- Jalankan
git init, lalugit status. - Pastikan
.env,node_modules, dan.venvtidak muncul di daftar. - Buat commit pertama dengan pesan
chore: setup project playwright academy.
Hasilgit log menampilkan satu commit
git init # jadikan folder ini repository Git
git status # lihat file yang berubah
git add . # siapkan semua perubahan
git commit -m "chore: setup project playwright academy" # simpan dengan pesan
git log --oneline # lihat riwayat singkatKalau .env, node_modules, atau .venv ikut muncul di git status, tambahkan namanya ke file .gitignore di root project (lihat contoh isinya di atas), lalu cek lagi.
Branch, ubah, lalu gabungkan
- Buat branch
test/latihan-git. - Ubah satu test (misalnya ganti nama test-nya), lalu commit.
- Kembali ke
main, lalu merge branch tadi.
Hasilperubahan dari branch ikut masuk ke main
git switch -c test/latihan-git # buat branch baru dan pindah ke sana
# ...ubah satu file test...
git add .
git commit -m "test: perjelas nama test login" # simpan perubahan di branch itu
git switch main # kembali ke main
git merge test/latihan-git # gabungkan branch latihan ke main
git log --oneline # lihat riwayatBikin conflict, lalu selesaikan
- Di branch
a, ubah satu baris locator. Commit. - Kembali ke
main, buat branchb, ubah baris yang sama dengan isi berbeda. Commit. - Merge
akeb, lalu selesaikan conflict-nya.
Hasilmerge selesai, tanda conflict hilang, dan test tetap lulus
git switch -c a # branch a
# ...ubah baris locator, commit...
git switch main
git switch -c b # branch b
# ...ubah baris yang sama dengan isi lain, commit...
git merge a # Git melaporkan CONFLICT
# buka file-nya, pilih versi yang benar, hapus semua tanda conflict
git add <file>
git commit # simpan hasil penyelesaian conflictSetelah memilih versi yang benar, jalankan test-nya dulu sebelum commit.