Project ini adalah implementasi test automation untuk platform JTKLearn menggunakan Java, Selenium WebDriver, Cucumber BDD (Behavior-Driven Development), dan pola desain Page Object Model (POM).
Proyek ini dirancang secara kolaboratif sehingga beberapa pengembang/tester (Zaky, Hasbi, Deus) dapat menambahkan test case masing-masing tanpa terjadi konflik kode.
- TC-FR-1.2 (Login Pelajar Berhasil): Memverifikasi proses autentikasi pelajar menggunakan email dan password valid, serta memastikan menu navigasi header termuat dengan benar.
- TC-FR-6.0.2 (Berhasil Daftar Course): Memvalidasi alur otomatisasi pendaftaran kursus (course enrollment) menggunakan kode pendaftaran (enrollment key).
- TC-FR-2.2 (Logout Pelajar Berhasil): Memverifikasi proses logout pelajar secara otomatis — mulai dari klik nama akun, klik Keluar, validasi redirect ke halaman login, penghapusan session, hingga memastikan dashboard tidak dapat diakses tanpa login ulang.
- TC-FR-6.0.8 (Gagal Daftar Course - Enroll Key Kosong): Memvalidasi bahwa sistem menampilkan pesan error "Silakan masukkan kode pendaftaran" ketika field kode pendaftaran dibiarkan kosong dan tombol Daftar ditekan, serta memastikan user tetap berada di halaman Course Overview.
Struktur proyek disusun rapi menggunakan folder khusus per kontributor untuk mencegah konflik Git:
automation-testing/
│
├── pom.xml # Konfigurasi Maven & Dependensi
├── README.md # Dokumentasi Utama Proyek
├── LAPORAN_PEMAHAMAN.md # Laporan Pemahaman Web Automation
│
└── src/
└── test/
├── java/
│ ├── pages/ # Page Object Model (Shared)
│ │ ├── LoginPage.java # Page Object untuk halaman Login
│ │ ├── DashboardPage.java # Page Object untuk halaman Dashboard
│ │ └── CourseOverviewPage.java # Page Object untuk halaman Detail Kursus
│ │
│ ├── stepdefinitions/ # Cucumber Step Definitions
│ │ ├── Hooks.java # Setup, Teardown & Screenshot on Failure (Shared)
│ │ ├── zaky/ # Folder khusus Step Definitions milik Zaky
│ │ │ ├── TC_FR_1_2_LoginSteps.java
│ │ │ └── TC_FR_6_0_2_CourseRegistrationSteps.java
│ │ └── deus/ # Folder khusus Step Definitions milik Deus
│ │ ├── TC_FR_2_2_LogoutSteps.java
│ │ └── TC_FR_6_0_8_EnrollKeyEmptySteps.java
│ │
│ ├── runners/ # Cucumber Test Runner
│ │ └── TestRunner.java
│ │
│ └── utils/ # Driver Utilities
│ └── DriverFactory.java
│
└── resources/
└── features/ # Gherkin Feature Files
├── zaky/ # Folder khusus berkas .feature milik Zaky
│ ├── TC_FR_1_2_Authentication.feature
│ └── TC_FR_6_0_2_CourseRegistration.feature
└── deus/ # Folder khusus berkas .feature milik Deus
├── TC_FR_2_2_Logout.feature
└── TC_FR_6_0_8_EnrollKeyEmpty.feature
Secara default, TestRunner.java dikonfigurasi untuk menjalankan semua test case milik Zaky di folder features/zaky:
# Menjalankan secara headless (tanpa GUI browser)
mvn test
# Menjalankan secara visual (headed mode)
mvn test -Dheadless=falseUbah parameter features pada TestRunner.java agar mengarah ke folder deus:
@CucumberOptions(
features = "src/test/resources/features/deus", // Arahkan ke folder deus
glue = "stepdefinitions", // Jangan diubah — agar Hooks & step Zaky terpanggil
plugin = { ... }
)mvn test -Dheadless=false📖 Panduan lengkap (prasyarat, troubleshooting, penjelasan assertion) ada di PANDUAN_DEUS.md
Ubah parameter features pada TestRunner.java agar mengarah ke folder induk:
@CucumberOptions(
features = "src/test/resources/features", // Tanpa subfolder
glue = "stepdefinitions", // Tetap stepdefinitions agar Hooks.java terpanggil
plugin = { ... }
)Bagi kontributor lain (Hasbi, Deus, dll.) yang ingin menambahkan test case baru, silakan ikuti panduan struktur berikut agar kode tetap bersih dan bebas konflik:
- Buat subfolder dengan nama Anda di dalam
src/test/resources/features/(contoh:features/hasbi/ataufeatures/deus/). - Buat berkas skenario menggunakan format BDD Gherkin dengan prefix Kode Test Case (contoh:
TC_FR_1_8_LoginFailed.feature).
- PENTING: Jangan menduplikasi halaman web! Jika elemen halaman sudah ada di
LoginPage.java,DashboardPage.java, atauCourseOverviewPage.java, gunakan kelas tersebut. - Jika Anda menguji halaman baru yang belum ada representasi kelasnya, buat kelas Java baru di dalam folder
src/test/java/pages/(tanpa prefix nama orang/test case, karena halaman web bersifat shared).
- Buat subfolder dengan nama Anda di dalam
src/test/java/stepdefinitions/(contoh:stepdefinitions/hasbi/). - Buat berkas Step Definition baru di dalam folder tersebut (contoh:
TC_FR_1_8_LoginFailedSteps.java). - Pastikan baris pertama deklarasi package berkas Java Anda mengarah ke sub-package Anda sendiri:
package stepdefinitions.hasbi;
Sebelum melakukan commit atau push, Anda bisa menguji berkas Anda sendiri dengan mengganti features di TestRunner.java ke folder Anda:
features = "src/test/resources/features/hasbi"Setelah pengujian selesai dijalankan, Cucumber akan otomatis membuat laporan di dalam folder target/:
- HTML Report:
target/cucumber-report.html(Laporan interaktif lengkap dengan penataan visual dan screenshot kegagalan). - JSON Report:
target/cucumber-report.json