Tes Fungsional menggunakan Google Chrome dengan Server Selenium dan Virtual Network Computing
Tes fungsional itu penting dalam membuat aplikasi yang bagus dan handal. Sebelumnya, kita menggunakan capybara webkit. Tapi teknologi ini headless. Jadi susah melihat apa yang terjadi sebenarnya pada saat penjelajah web menguji tes kita. Selain itu, di mesin Jenkins, dengan capybara webkit, kita kadang-kadang mendapat kerusakan Errno::EPIPE: Broken pipe. Penyebab hal ini agak misterius, umumnya karena kekurangan memori tapi bisa saja dikarenakan hal lain.
Oleh karena itu, kita memutuskan untuk mengganti teknologi ini dengan penjelajah web Google Chrome dengan server Selenium dan Virtual Network Computing. Teknologi ini ramah terhadap mesin yang tidak punya monitor atau virtual environment tanpa X seperti vagrant.
Kita perlu menginstalasi peranti lunak yang dibutuhkan seperti ini.
- wget -q -O — “https://dl-ssl.google.com/linux/linux_signing_key.pub" | sudo apt-key add -- sudo echo ‘deb http://dl.google.com/linux/chrome/deb/ stable main’ >> /etc/apt/sources.list- sudo apt-get update- sudo apt-get -y install openjdk-7-jre google-chrome-stable xvfb unzip- wget http://chromedriver.storage.googleapis.com/2.16/chromedriver_linux64.zip - unzip chromedriver_linux64.zip - sudo mv chromedriver /usr/local/bin/- wget http://selenium-release.storage.googleapis.com/2.47/selenium-server-standalone-2.47.1.jar- mv /karir_vagrant/selenium-server-standalone-2.47.1.jar /usr/local/bin
Selepas itu kita perlu menjalankan Server Selenium. Server ini yang akan mengotak-atik penjelajah web Google Chrome pada saat menjalankan tes fungsional.
nohup java -jar /usr/local/bin/selenium-server-standalone-2.47.1.jar &
Buat XServer di DISPLAY 10 (angka ini bisa diganti sesuka hati Anda). Ini supaya penjelajah web Google Chrome punya saluran untuk menampilkan dirinya karena Chrome adalah aplikasi X.
Xvfb :10 -screen 0 1366x768x24 -ac &
Jalankan Virtual Network Computing. Ini supaya kita bisa melihat DISPLAY 10 ini dari mesin lain. Seperti livestreaming.
x11vnc -display :10 &
Nah, jalankan tes seperti biasa. Sebelumnya pastikan kita punya DISPLAY 10 di environment variable.
export DISPLAY=:10
rspec spec/features/username_spec.rb
Nah, dari mesin lain, Anda mesti menginstalasi klien Virtual Network Computing. Ada banyak klien seperti dari RealVNC, TIghtVNC. Gunakan klien apapun yang Anda suka.
Jalankan klien Anda, dan masukkan alaman IP server tempat kita jalankan tes. Kalau tidak ada masalah, Anda akan melihat Chrome menjalankan tes Anda.