UI tests typically require browser/machine focus (especially when entering text in input fields). To avoid being stuck while UI tests proceed, it's handy to run them — the Selenium part — inside a VM.
Author's note: This page is a first draft, feel free to complete the missing parts.
Outlook
- The Magnolia webapp runs on the host as usual
- with manual-tests profile
- e.g.
mvn clean install -P jetty6-standalone,manual-tests
- free hint #1: run this build from another location on your machine than the one you typically work at
- free hint #2: run it in offline mode (
mvn -o ...
) if you just installed one of the modules you want to put under test
- A Selenium standalone server runs on the guest VM
- Test execution is done from the IDE, i.e. also on the host
Instructions
1. VM Setup
- Setup your VM and install Ubuntu for example
- mount iso image in optical drive
- In VirtualBox preferences > Network > Host-only Networks, click the add icon
- creates a new virtual network interface e.g.
vboxnet0
- creates a new virtual network interface e.g.
- In VM Settings > Network
- 1st slot: select "Host-only Adapter", then choose the one you just created — that
vboxnet0
- 2nd slot: select NAT as is usually the default (to access the interwebs through the host)
- 1st slot: select "Host-only Adapter", then choose the one you just created — that
- Install guest additions
- When VirtualBox VM is running
- Devices > Insert Guest Additions CD image...
2. Selenium server setup
- Download Selenium Server (formerly the Selenium RC Server)
- http://docs.seleniumhq.org/download/
- should be something like
selenium-server-standalone-2.42.2.jar
- Adjust
AbstractMagnoliaUITest
locally only- Basically replace the
FirefoxDriver
with aRemoteWebDriver
- pass on the URL of your selenium server
- default URL is something like
http://{your-hostname.local}:4444/wd/hub
- default URL is something like
- pass the
FirefoxProfile
along through theDesiredCapabilities
- AbstractMagnoliaUITest.java
URL seleniumServerUrl = null; try { String vmHostName = "your-vm-hostname"; seleniumServerUrl = new URL(String.format("http://%s.local:4444/wd/hub", vmHostName)); } catch (MalformedURLException e1) {} DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability(FirefoxDriver.PROFILE, firefoxProfile); driver = new RemoteWebDriver(seleniumServerUrl, capabilities);
- Check out the patch file in the attachments!
- Basically replace the
3. Fancy shell script + desktop launcher for the Selenium server
- Create a new script, e.g.
selenium-server
on the desktop as follows- provided your selenium server jar is on the desktop too)
- selenium-server.sh
#!/bin/bash gnome-terminal -e "java -jar selenium-server-standalone-2.42.2.jar"
- Make it executable
chmod +x your-script
- Go to Nautilus (eq. Finder) preferences
- Edit > Preferences, "Behavior" tab
- Tick "Run executable text files when they are opened"
- The fancy icon
- Download it http://www.seleniumhq.org/images/selenium-logo.png and save it locally to e.g.
/home/{user}/.icons/
- Select your script, right-click and go to the file Properties > Click the icon and select yours
Double-click your script and you're good to go!
Overview
Content Tools