Geb ist ein Automatisierungswerkzeug für Web-Oberflächen (Very Groovy Browser automation) mit einem Fokus auf einfache/intuitive Entwicklung.
Es vereinigt:
die Stärke/Mächtigkeit von WebDriver
die Eleganz/Einfachheit von JQuery Content Selection
die Robustheit des Page Object Modellings
die Ausdrucksstärke von Groovy
Geb ist nicht ausschließlich ausgelegt auf Oberflächen-Tests, wird jedoch überwiegend dafür eingesetzt. Es lässt sich mit unterschiedlichen Test-Frameworks integrieren (z.B. JUnit, TestNG), die Autoren empfehlen jedoch Geb zusammen mit Spock zu verwenden.
Es wird geprüft/erwartet, dass die Taschenrechner-Seite angezeigt wird (über den Seiten-Titel)
Es werden nacheinander die Tasten “1”, “+”, “2” und “=” geklickt
Es wird geprüft/erwartet, dass in der Anzeige der Wert “3” erscheint
Der Test liest sich wie ein typisches Automatisierungsskript. Sehr viele Details (URL, Seitentitel, CSS-IDs von Seitenelementen) stehen im Test.
Der selbe Test mit Verwendung eines Page-Objects
Das Page-Object kapselt die Details (URL, Seitentitel, Lookup von Seitenelementen). Der Test beschreibt Ablauf und erwartetes Ergebnis.
Weitere Verfeinerung hin zur funktionalen Spezifikation
Auch Details zur Verwendung der Seite (wie wird eine Addition ausgeführt) werden im Page-Object gekapselt. Der Test wird zur ausführbaren Spezifikation.