Geb (pronounced "jeb") is an Apache-2.0 browser automation framework for the Groovy and Java ecosystems that combines WebDriver, jQuery-style content selection and Page Object modelling, aimed at developers and test engineers who write end-to-end and functional browser tests on the JVM.
What it is
Geb is a browser automation solution and testing framework hosted by the Apache Software Foundation and written in Groovy, with use from Java also reflected in its topic list. Its README describes it as bringing together the power of WebDriver, the elegance of jQuery content selection, the robustness of Page Object modelling and the expressiveness of the Groovy language. In this registry it sits under Developer Tools / Frameworks & Platforms, and its topics — browser-testing, e2e-testing, end-to-end-testing, functional-testing, bdd-style-testing-framework, selenium, groovy, java and test — map closely to that description.
The concrete problem it solves is the low-level plumbing that comes with driving a browser through WebDriver directly: element lookup, selector handling and repeated navigation code scattered across a test suite. Geb replaces that hand-rolled WebDriver code with a Groovy DSL in which page structure is declared once through Page Object modelling and content is selected with jQuery-style expressions. The result is a layer between Selenium WebDriver and the test suite, so that tests read as BDD-style statements about page content rather than as sequences of driver calls.
Key capabilities
- WebDriver-based browser automation, forming the execution layer that Geb drives.
- jQuery-style content selection for locating and navigating page content within tests.
- Page Object modelling, so that a page's structure and content are declared in one place and reused across tests.
- A Groovy DSL that gives tests the expressiveness of the Groovy language, with Java listed among the project's topics.
- BDD-style testing support, reflected in the
bdd-style-testing-framework topic.
- End-to-end, functional and browser testing workflows, as listed in the repository topics.
- Publication to Maven Central under the
org.gebish:geb-core coordinates, with the Maven Central badge in the README pointing at that artifact.
Who uses it and how
- JVM teams already working in Groovy or Java, who can add Geb to an existing build rather than adopting a separate runtime.
- Test engineers writing end-to-end browser tests who want page structure modelled as objects rather than repeated inline selector code.
- Teams adopting a BDD style for functional tests, given the framework's BDD-style testing topic.
- Projects standardising on Selenium WebDriver that want a higher-level, Groovy-based authoring layer on top of it.
- Contributors and integrators who follow the project through its
geb-users@groovy.apache.org mailing list, GitHub Discussions forum and the #geb channel on the Groovy Slack workspace.
Getting started
Geb is consumed from Maven Central as org.gebish:geb-core, and setup and usage information is published on the project site at https://groovy.apache.org/geb/. The repository README points to that site for details about the project rather than restating installation steps.
How it compares
The facts list no paid products that Geb replaces, and no directly comparable tool is named in this registry. WebDriver appears in the README as a component Geb builds on rather than as a competitor, so the framework stands alone here as the Groovy-based browser automation entry.
When to use it — and when not to
There is no database, object store or mail server to operate: Geb is a library resolved from Maven Central and run as part of a JVM build, which keeps the operational surface small. It does, however, assume a Groovy or Java toolchain and a WebDriver browser setup underneath, so teams outside the JVM or without Groovy experience should look elsewhere. The README is deliberately sparse, deferring documentation to the project site and directing usage questions away from the issue tracker to the mailing list, GitHub Discussions and Slack, so users should expect to leave the repository to learn the framework.