From 739928eb102bd3f3e32b714a2213bb62660dc056 Mon Sep 17 00:00:00 2001
From: Daya Adianto <dayaadianto@cs.ui.ac.id>
Date: Thu, 9 Nov 2023 13:01:12 +0700
Subject: [PATCH] Add troubleshooting section in day 3 workshop instructions

---
 docs/workshops/day_3_bdd.md | 40 +++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/docs/workshops/day_3_bdd.md b/docs/workshops/day_3_bdd.md
index 35702f7..5ec79f3 100644
--- a/docs/workshops/day_3_bdd.md
+++ b/docs/workshops/day_3_bdd.md
@@ -529,6 +529,46 @@ Berikut ini adalah daftar referensi terkait XPath yang direkomendasikan:
 - [XPath | Mozilla Developer Network](https://developer.mozilla.org/en-US/docs/Web/XPath)
 - [XPath Cheatsheet](https://devhints.io/xpath)
 
+### Materi Tambahan: Troubleshooting Kegagalan Pencarian Elemen
+
+Salah satu isu yang umum terjadi dalam pengujian aplikasi melalui simulasi interaksi dengan _user interface_ adalah hasil eksekusi _test_ yang tidak stabil,
+atau seringkali disebut sebagai _flaky test_.
+Misalnya, kadang ada sebuah _test case_ yang sukses berjalan kemudian gagal ketika dijalankan kembali.
+_Test_ yang tidak stabil bisa disebabkan karena beberapa hal,
+seperti isu koneksi antara _web browser_ dengan aplikasi yang diujicobakan,
+atau struktur dokumen yang belum final di-_update_ oleh kode JavaScript yang berjalan di _web browser_.
+
+Beberapa isu seperti masalah koneksi memang sulit diantisipasi,
+sehingga solusinya terkadang cukup sekedar menjalankan _test_-nya kembali.
+Tapi terkadang ada isu yang muncul karena implementasi _test_ yang belum komprehensif.
+
+Ambil contoh misalnya ada sebuah _test_ yang gagal
+dan laporan _error_ yang ditangkap oleh Serenity adalah sebagai berikut:
+
+```
+Element click intercepted exception: element click intercepted: Element (button _ngcontent-ng-c910900098='' class='btn btn-default')...(/button) is not clickable at point (115, 717). Other element would receive the click: (div _ngcontent-ng-c87473289='' class='col-12 text-center')...(/div)
+```
+
+Berdasarkan pesan _error_ yang ditangkap oleh Serenity dan Selenium,
+_web browser_ yang dikendalikan oleh Selenium gagal menekan tombol pada titik koordinat `(115, 717)`.
+Kemungkinan besar _error_ tersebut muncul karena secara visual tombol terkait memang tidak terlihat di dalam jendela _web browser_.
+Oleh karena itu, instruksi di dalam fungsi _step definition_ bisa diperbaiki untuk menjamin jendela _web browser_ digerakkan (di-_scroll_) ke lokasi tombol yang diinginkan.
+
+Sebagai contoh, mari perbaiki _step definition_ yang dipetakan ke kalimat `When {actor} adds a new specialty` sehingga _web browser_ di-_scroll_ ke lokasi tombol yang diinginkan sebelum menekan tombol:
+
+```java
+@When("{actor} adds a new specialty called {string}")
+public void addsNewSpecialty(Actor actor, String name) {
+    actor.attemptsTo(
+        Scroll.to(Button.withText("Add")),  // <-- Statement baru ditambahkan ke dalam step definition
+        Click.on(Button.withText("Add")),
+        Enter.theValue(name)
+             .into(InputField.withNameOrId("name"))
+             .thenHit(Keys.ENTER)
+    );
+}
+```
+
 ### Latihan Singkat: Membuat Step Definition Baru
 
 Mari coba membuat sebuah deskripsi fitur beserta sebuah skenario test baru.
-- 
GitLab