Monday, April 21, 2014

Geb Browser Automation Quick Start for Continuous Integration Linux

How to Stand Up a Geb Sample Application On a CI Server(Continuous Integration) Linux

This guide will show you step-by-step how to setup a simple Geb app to get started using the automated testing framework.

This guide is intended for setting up automated browser tests on a Linux continuous integration server that is command line only with no UI enabled.

This guide focuses on using a headless browser for testing.

If you are trying to setup Geb on Windows instead please use the following link:

Setup Geb on Windows

Pull a copy of the Geb Sample App

 First, pull the Geb sample application from Github:


Add the GhostDriver library to your grails app

Add the following line to your BuildConfig.groovy:

         // You usually only need one of these, but this project uses both
         test "org.gebish:geb-spock:$gebVersion"
         test "org.gebish:geb-junit4:$gebVersion"
         test( "com.github.detro.ghostdriver:phantomjsdriver:1.0.1" ) {
             transitive = false
     plugins {

Update and sync your config and clean and rebuild your project.

Download Location for PhantomJS Ghostdriver

Find the download location for the most recent version here:

As of 4/21/2014 the most recent version is 1.9.7:

For 64-bit system, download phantomjs-1.9.7-linux-x86_64.tar.bz2 (12.6 MB).
For 32-bit system, download phantomjs-1.9.7-linux-i686.tar.bz2 (12.9 MB).

Install PhantomJS

Change directory to the location you want the driver.


cd home/bitnami

Retrieve the file


wget phantomjs-1.9.7-linux-i686.tar.bz2

Unzip the file

sudo tar -xjvf phantomjs-1.9.7-linux-i686.tar.bz2

Set the path in your GebConfig.groovy

 driver = {

     System.setProperty('phantomjs.binary.path', '/home/bitnami/phantomjs-1.9.7-linux-x86_64/bin/phantomjs')
     new PhantomJSDriver(new DesiredCapabilities())

Setup and Run your CI build

You will see something similar to this in your logs if it's successful

PhantomJS is launching GhostDriver...
[INFO  - 2014-04-21T14:42:34.840Z] GhostDriver - Main - running on port 9031
| Completed 1 spock test, 0 failed in 0m 44s
| Running 1 functional test...
| Running 1 functional test... 1 of 1
| Completed 1 functional test, 0 failed in 0m 35s
| Server stopped
| Tests PASSED - view reports in 
Finished: SUCCESS

You will be able to find the test reports in the following location

/project directory/target/test-reports

Additional Resources

Related links
Geb Home Page
Geb Github
Book of Geb

Software Development Blogs - BlogCatalog Blog Directory

Wednesday, April 16, 2014

Geb Configuration

Geb Configuration Tips

Setting up parameterized form fields

Place the GebConfig.groovy in your test/functional  folder

Then you add a block of code similar to the following:

//Values for form fields
formFields {

    //Guest donate to a Non-profit Flow: Form field parameters
    form1 {
        field1 = "value1"
        field2 = "value2"

Then you can reference those form fields in your functional tests that extend GebReportingTest like so:

String searchValueParam = browser.config.rawConfig.formFields.form1.field1

This way you can have custom fields for each form for each functional test.

Custom baseUrl

You can set a custom baseUrl as a VM parameter using the following


This will be the base URL that your pages build their static url off.  For instance your home page object with the static url

static url = /home/

Will resolve to http://localhost:8080/myApp/home/

Software Development Blogs - BlogCatalog Blog Directory