diff --git a/docs/workshops/day_3_bdd.md b/docs/workshops/day_3_bdd.md index e1d29ff76b60f4a82fafdadf63a21f92c17518e9..214f0c8ffd36e6f9b8fbe9cfe9e61edfef8cdac9 100644 --- a/docs/workshops/day_3_bdd.md +++ b/docs/workshops/day_3_bdd.md @@ -54,7 +54,7 @@ Untuk mengikuti rangkaian kegiatan workshop hari ini, harap persiapkan _tools_ b - [Git](https://git-scm.com/) - [Java JDK 17](https://adoptium.net/temurin/releases/?version=17) - [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download/) - - Pasang _plugin_ Cucumber + - Harap pasang _plugin_ Cucumber yang dapat diunduh melalui menu Plugins > Marketplace di dalam IntelliJ IDEA. - [Apache Maven](https://maven.apache.org/download.cgi) - _Web browser_ seperti [Mozilla Firefox](https://www.mozilla.org/en-US/firefox/new/) atau [Google Chrome](https://www.google.com/chrome/index.html). @@ -73,7 +73,7 @@ mvn --version Hasil pemanggilan program-program di atas seharusnya akan mencetak versi program yang terpasang di komputer anda. -Buka proyek [Spring Petclinic BDD di GitLab CSUI][Spring Petclinic BDD @ GitLab CSUI] +Buka proyek [Spring Petclinic BDD di GitLab CSUI](https://gitlab.cs.ui.ac.id/pmpl/workshops/spring-petclinic-bdd) dan buat salinan proyek (_fork_) ke dalam akun GitLab CSUI anda. Kemudian buat salinan kode templat dari _fork_ ke komputer anda menggunakan perintah `git`: @@ -253,6 +253,56 @@ Peran teknis seperti programmer dan _test engineer_ penting untuk dapat menyambu > seringkali terjadi karena DOM Tree dari tampilan HTML belum sinkron. Hal ini sangat mungkin terjadi pada aplikasi > Web dengan _user interface_ yang dibuat atau diubah oleh kode JavaScript. +### Latihan Singkat: Atur Konfigurasi Test Suite BDD + +Saat ini _test suite_ BDD disiapkan untuk menjalankan _test case_ terhadap aplikasi yang berjalan secara lokal. +Anda dapat mengubah alamat aplikasi yang akan diujicobakan dengan membuka berkas _class_ Java `SpringPetclinicHomePage` +di dalam folder `src/test/java/starter/navigation`. + +Isi dari _class_ tersebut saat ini adalah sebagai berikut: + +```java +package starter.navigation; + +import net.serenitybdd.annotations.DefaultUrl; +import net.serenitybdd.core.pages.PageObject; + +@DefaultUrl("http://127.0.0.1") +public class SpringPetclinicHomePage extends PageObject { } +``` + +Silakan ubah nilai string di dalam anotasi `@DefaultUrl` ke alamat aplikasi anda. +Misalnya: `@DefaultUrl("https://spring-petclinic-angular-[nama depan anda].dokku-ppl.cs.ui.ac.id")`. + +Jika anda menjalankan aplikasi contoh Spring Petclinic secara lokal, +maka anda tidak perlu mengubah nilai string di dalam `@DefaultUrl`. + +Anda juga dapat mengatur apakah _test suite_ BDD akan berjalan secara _headless_ ataupun tidak. +Saat ini opsi `headless.mode` diatur menjadi `true` sehingga _web browser_ tidak akan muncul di layar ketika _test suite_ BDD berjalan. +Konfigurasi terkait dapat dilihat di berkas `serenity.conf` dengan contoh sebagai berikut: + +``` +serenity { + take.screenshots = FOR_FAILURES +} + +headless.mode = true +webdriver { + driver = chrome + capabilities { + browserName = "chrome" + acceptInsecureCerts = true + "goog:chromeOptions" { + args = ["remote-allow-origins=*","test-type", "no-sandbox", "ignore-certificate-errors", "--window-size=1000,800", + "incognito", "disable-infobars", "disable-gpu", "disable-default-apps", "disable-popup-blocking", + "disable-dev-shm-usage", "disable-extensions", "disable-web-security", "disable-translate", "disable-logging"] + } + } +} +``` + +Nilai di dalam opsi `headless.mode` dapat diatur menjadi `false` apabila ingin melihat _web browser_ menyimulasikan interaksi dengan SUT. + ## Membuat Step Definition & Glue Code Mari lihat kembali contoh skenario test "Add new specialty": @@ -656,9 +706,9 @@ Untuk bahan diskusi saat refleksi: dengan _test_ BDD? - [ ] Apakah hasil eksekusi _test suite_ BDD anda stabil? - [ ] Apa saja isu yang dapat terjadi ketika menguji SUT melalui simulasi interaksi terhadap _user interface_? +- [ ] Apakah BDD bisa diterapkan juga untuk menguji _software_ dengan _user interface_ non-visual seperti API? [1]: https://docs.google.com/presentation/d/1YQtWa0k45xCsa3Rugt-xfZxUSCg8uoMQepMASh1QEeU?usp=drive_fs [2]: https://gitlab.cs.ui.ac.id/pmpl/workshops/spring-petclinic-bdd/-/blob/development/docker-compose.yml [3]: https://gitlab.cs.ui.ac.id/pmpl/workshops/spring-petclinic-bdd/-/blob/development/src/test/resources/features/veterinarian/manage_specialties.feature -[Spring Petclinic BDD @ GitLab CSUI](https://gitlab.cs.ui.ac.id/pmpl/workshops/spring-petclinic-bdd) [CucumberTestSuite]: https://gitlab.cs.ui.ac.id/pmpl/workshops/spring-petclinic-bdd/blob/development/src/test/java/starter/CucumberTestSuite.java