Skip to content

Commit 01a61f9

Browse files
committed
Browser testing via Selenium now supported
1 parent f4f51c1 commit 01a61f9

File tree

6 files changed

+130
-3
lines changed

6 files changed

+130
-3
lines changed

Vagrantfile

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,23 @@ supported_ubuntu = ["14.04", "16.04"]
1212
supported_webservers = ["apache", "nginx"]
1313
supported_php = ["5.5", "5.6", "7.0", "7.1"]
1414
supported_mysql = ["5.5", "5.6", "5.7"]
15+
supported_java = ["8", "9"]
1516

1617
default_ubuntu = "16.04"
1718
default_webserver = "nginx"
1819
default_php = "7.1"
1920
default_mysql = "5.7"
21+
default_java = "8"
22+
default_selenium = "3.8.1"
23+
default_chromedriver = "latest"
2024

2125
ubuntu_ver = settings["ubuntu-ver"] ||= default_ubuntu
2226
webserver = settings["webserver"] ||= default_webserver
2327
php_ver = settings["php-ver"] ||= default_php
2428
mysql_ver = settings["mysql-ver"] ||= default_mysql
29+
java_ver = settings["java-ver"] ||= default_java
30+
selenium_ver = settings["selenium-ver"] ||= default_selenium
31+
chromedriver_ver = settings["chromedriver-ver"] ||= default_chromedriver
2532
enable_ssl = settings["ssl"] ||= false
2633

2734
unless supported_ubuntu.include?(ubuntu_ver)
@@ -52,6 +59,10 @@ if ubuntu_ver == "16.04" && mysql_ver == "5.6"
5259
abort("MySQL 5.6 isn't supported on Ubuntu 16.04.")
5360
end
5461

62+
unless supported_java.include?(java_ver)
63+
abort("Java version #{java_ver} not supported. Only versions #{supported_java} are currently supported.")
64+
end
65+
5566
# Set which devbox version to use
5667
if ubuntu_ver == "14.04"
5768
if php_ver == "5.5"
@@ -151,6 +162,26 @@ Vagrant.configure("2") do |config|
151162
end
152163
end
153164

165+
# Install Google Chrome, ChromeDriver and Selenium Server
166+
if settings.has_key?("selenium") && settings["selenium"] == true
167+
config.vm.provision "shell" do |s|
168+
s.name = "Installing Selenium Server"
169+
s.path = script_dir + "/install-selenium.sh"
170+
s.args = [java_ver, selenium_ver]
171+
end
172+
173+
config.vm.provision "shell" do |s|
174+
s.name = "Installing Google Chrome and ChromeDriver"
175+
s.path = script_dir + "/install-chrome+chromedriver.sh"
176+
s.args = [chromedriver_ver != "latest" ? chromedriver_ver : ""]
177+
end
178+
179+
config.vm.provision "shell" do |s|
180+
s.name = "Adding Selenium Server bash commands"
181+
s.path = script_dir + "/add-selenium-commands.sh"
182+
end
183+
end
184+
154185
# Install Laravel Envoy
155186
if settings.has_key?("envoy") && settings["envoy"] == true
156187
config.vm.provision "shell" do |s|

devbox.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,7 @@ ip: "192.168.10.10"
33
site: site.test
44
root: /vagrant
55

6-
databases:
7-
- dbname
6+
#selenium: true
7+
8+
#databases:
9+
# - dbname

scripts/add-selenium-commands.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env bash
2+
3+
profile_file='/home/vagrant/.profile'
4+
5+
source="\n\n# Run Chrome via Selenium Server
6+
start-chrome() {
7+
xvfb-run java -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver -jar /usr/local/bin/selenium-server-standalone.jar
8+
}
9+
10+
start-chrome-debug() {
11+
xvfb-run java -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver -jar /usr/local/bin/selenium-server-standalone.jar -debug
12+
}
13+
14+
# Run Chrome Headless
15+
start-chrome-headless() {
16+
chromedriver --url-base=/wd/hub
17+
}"
18+
19+
# Append Selenium Server commands to ~/.profile
20+
if ! grep -cqs 'chromedriver' ${profile_file}
21+
then
22+
printf "$source" >> "$profile_file"
23+
fi
24+
25+
# Re-source user profiles
26+
source ${profile_file}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/usr/bin/env bash
2+
3+
[[ -n "$1" ]] && chromedriver_ver=$1 || chromedriver_ver=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`
4+
is_updated=0
5+
6+
# Install Google Chrome.
7+
if [[ -f "/usr/bin/google-chrome-stable" ]]
8+
then
9+
echo 'Google Chrome already installed'
10+
else
11+
curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add > /dev/null 2>&1
12+
echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
13+
apt-get update > /dev/null 2>&1
14+
is_updated=1
15+
apt-get -y install google-chrome-stable > /dev/null 2>&1
16+
fi
17+
18+
# Install ChromeDriver.
19+
if [[ -f "/usr/local/bin/chromedriver" ]]
20+
then
21+
echo 'ChromeDriver already installed'
22+
else
23+
if [[ ${is_updated} == 0 ]]
24+
then
25+
apt-get update > /dev/null 2>&1
26+
is_updated=1
27+
fi
28+
apt-get -y install unzip > /dev/null 2>&1
29+
wget -N http://chromedriver.storage.googleapis.com/${chromedriver_ver}/chromedriver_linux64.zip -P ~/ > /dev/null 2>&1
30+
unzip ~/chromedriver_linux64.zip -d ~/ > /dev/null 2>&1
31+
rm ~/chromedriver_linux64.zip
32+
mv -f ~/chromedriver /usr/local/bin/chromedriver
33+
fi
34+
35+
# Install Xvfb.
36+
if [[ -f "/usr/bin/Xvfb" ]]
37+
then
38+
echo "Xvfb already installed"
39+
else
40+
if [[ ${is_updated} == 0 ]]
41+
then
42+
apt-get update > /dev/null 2>&1
43+
fi
44+
apt-get -y install xvfb > /dev/null 2>&1
45+
fi

scripts/install-envoy.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
composer_bin_path='/home/vagrant/.config/composer/vendor/bin'
44

55
# Check if Envoy has been installed
6-
if [ -h "$composer_bin_path/envoy" ]
6+
if [[ -h "$composer_bin_path/envoy" ]]
77
then
88
echo 'Laravel Envoy already installed'
99
exit 0

scripts/install-selenium.sh

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/usr/bin/env bash
2+
3+
java_ver=$1
4+
selenium_ver=$2
5+
selenium_sub_dir=$(echo "$selenium_ver" | cut -d"." -f-2)
6+
7+
# Install Java JRE
8+
if [[ -f "/usr/bin/java" ]]
9+
then
10+
echo 'Java already installed'
11+
else
12+
apt-get update > /dev/null 2>&1
13+
apt-get -y install openjdk-${java_ver}-jre-headless > /dev/null 2>&1
14+
fi
15+
16+
# Install Selenium Server Standalone
17+
if [[ -f "/usr/local/bin/selenium-server-standalone.jar" ]]
18+
then
19+
echo 'Selenium Server Standalone already installed'
20+
else
21+
wget -N http://selenium-release.storage.googleapis.com/${selenium_sub_dir}/selenium-server-standalone-${selenium_ver}.jar -P ~/ > /dev/null 2>&1
22+
mv -f ~/selenium-server-standalone-${selenium_ver}.jar /usr/local/bin/selenium-server-standalone.jar
23+
fi

0 commit comments

Comments
 (0)