Blibli QA Diary — Masalah pada Automation UI di Chrome Versi 87

Argo triwidodo
3 min readDec 2, 2020

--

Dipagi yang cerah di hari senin , hari yang membuat beberapa orang malas buat bangun pagi , karena masih terngiang ngiang akan weekend yang barusaja terlewatkan, dikabarkan beberapa QA mengalami masalah pada saat menjalankan automation UI mereka di browser Chrome. Error yang didapat adalah sebagai berikut

“[SEVERE]: Timed out receiving a message from renderer: 10.000”

Yah , sebuah error message yang tergolong baru dan membingungkan karena selama ini belum pernah mengalami hal serupa,

Impact dari error tersebut adalah dari framework tidak dapat melakukan Action seperti Klik , Type dan sebagainya. Sehingga automationnya gagal untuk dijalankan.

Ketika dilakukan debugging , barulah ketahuan jika ternyata ui yang dirender berbentuk seperti gambar dibawah ini.

Gambar 1. UI yang Blank

dan kemudian akan muncul error seperti ini

Gambar 2. UI yang blank

Kami juga menemukan apabila browsernya dibuka, ( tidak di minimize ataupun tidak di timpa diwindows lain) maka automation akan berjalan lancar. namun hal ini sangatlah mengganggu tugas QA / SDET karena tidak bisa pararel mengerjakan hal lain ketika automation sedang berjalan.

Setelah melakukan beberapa pencarian , akhirnya kami menemukan sebuah keajaiban di chrome 87. Dalam code commit yang ada di bawah ini , terdapat perubahan default value terhadap windows nya ,

Diff — 6caff4fbbc0b9f8baed54cc58dffda6f7d68c060^! — chromium/src — Git at Google (googlesource.com)

Di codenya jelas sekali terlihat bahwa ada sebuah parameter yang diganti dari disable menjadi enable , yaitu di “CalculateNativeWinOcclusion”. Apa itu CalculateNativeWinOcclusion ?

Di dokumentasinya dijelaskan bahwa

Calculate window occlusion on Windows will be used in the future to throttle and potentially unload foreground tabs in occluded windows

Intinya parameter tersebut digunakan chrome untuk lebih menghemat memory ketika tabs running di belakang.

Lalu bagaimana caranya agar automation Bisa berjalan dengan baik ?

Solusi

Seperti yang diketahui , perubahan tersebut akan mempengaruhi default setting yang ada di dalam chrome , kamu dapat mengakses beberapa seting di url chrome://flags/

dan tinggal cari “Calculate Window Occlusion on windows” , dan mengubahnya ke disabled. Tapi ? ketika automation jalan setingan tersebut akan ganti lagi ke default, lalu bagaimana kami bisa mengubah configurasi tersebut agar menjadi disabled ?

Untuk menjalankan Chrome dengan flag disabled , kami perlu menambahkan beberapa argumen agar parameter tersebut menjadi disabled.

Pada list argumen yang diberikan di dokumentasi chrome , terdapat salah satu argumen yang bisa kami gunakan untuk mendisabled parameter tersbut.

Sumber List of Chromium Command Line Switches « Peter Beverloo

Lalu kami mulai dengan percobaan

ChromeOptions option = new ChromeOptions();
option.addArguments("--disable-backgrounding-occluded-windows");
chromeDriver = new ChromeDriver(option);

dengan begitu , opsi “Calculate Window Occlusion on windows” akan terdisable dan automation akan berjalan dengan lancar.

Kesimpulan

Pada awal issue terjadi , kami sempat panik karena problem yang terjadi kali ini belum pernah terlihat sebelumnya , sehingga tim kami mencoba mencari — cari di beberapa forum dan ada beberapa yang melaporkan hal serupa. Oleh karena itu kami beranggapan issue ini hanya terjadi di chrome versi 87 yang barusaja dirilis ke publik . dan belum bisa dipastikan apakah chrome versi berikutnya akan dilakukan fixing atau akan tetap seperti ini.

Terima kasih ,
Jakarta Barat 1 Desember 2020

--

--