Skip to content
Layout and functional testing framework for websites
Java JavaScript HTML CSS Shell Python
Branch: master
Clone or download


Type Name Latest commit message Commit time
Failed to load latest commit information.
design Merge pull request #512 from JimiC/patch-1 Sep 6, 2017
etc using 4 spaces indention Jan 13, 2015
fordist Removed leftover code Feb 20, 2016
galen-core [maven-release-plugin] prepare for next development iteration Mar 10, 2019
galen-distribution [maven-release-plugin] prepare for next development iteration Mar 10, 2019
galen-integration-tests [maven-release-plugin] prepare for next development iteration Mar 10, 2019
galen-java-support [maven-release-plugin] prepare for next development iteration Mar 10, 2019
galen-rainbow4j [maven-release-plugin] prepare for next development iteration Mar 10, 2019
samples Added groups support to html report Mar 5, 2015
.README Added help command action Jul 20, 2015
.gitignore ignore coverage report Dec 1, 2015
.ltpl Updated license headers Jul 19, 2015
.travis.yml changed firefox version to 53.0.3 in travis Jun 13, 2017 Updated changelog Nov 3, 2018 Create May 10, 2015
LICENSE-2.0.txt Added license Jul 14, 2013 minor update Nov 3, 2018
appveyor.yml Fix for #105 Added crop-if-outside flag in order to test images that … Oct 2, 2014
assembly.xml changed groupid in pom files Jul 24, 2015 Added a script for making release notes Nov 25, 2013 Simplify mvn command for verify. Dec 18, 2015 Added changelog Sep 16, 2015
pom.xml [maven-release-plugin] prepare for next development iteration Mar 10, 2019 Added signing and deploying galen-parent in script Apr 14, 2016 Adding mocha run to maven Jan 30, 2015

Galen Framework

master: Build Status

Galen is an open-source tool for testing layout and responsive design of web applications. It is also a powerfull functional testing framework. For more information visit

How does it work?

Galen Framework uses Selenium in order to open web browser and select the tested elements on page. It has a special language to describe the layout of web page for different browser sizes. You just need to define your own tags for devices and sizes and then using the galen spec language write checks for each element on page. The best way to test the layout is to check location and dimensions of elements relatively to each other. Here is a small example of basic syntax.

    header                  id  header
    menu                    css #menu
    content                 id  content
    side-panel              id  side-panel
    footer                  id  footer

= Main section =
    @on *
            inside screen 0px top, 0px left, 0px right

            inside screen 0px left right
            below header 0px

            below menu 0px
            inside screen 0px left

    @on desktop
            below menu 0px
            inside screen 0px right
            width 300px
            near content 0px right

    @on mobile
        content, side-panel:
            width 100% of screen/width

            below content 0px

And here is a more advanced spec:

# example of using custom rules (functions)

@set userMargin 5 to 10 px

    user-*      div.users-list .user

@rule %{pattern} are below each other by %{distance} and aligned
    @forEach [pattern] as object, prev as prevObject
            below ${prevObject} ${distance}
            aligned vertically all ${prevObject}

= Checking all users =
    | user-* are below each other by ${userMargin} and aligned

Conditional statements:

    banner-container    #banner-container

= Banner section =
    @if ${isVisible("banner-container")}
            image file imgs/banner.png, error 5%

For more information please read Galen Framework Documentation


If you want to contribute to this project just look for current open issues. Please let know in the comments of the issue that you are going to pick it up because somebody could already work on it. In the end just send the pull request. By the way the feature that you are going to work on should not just solve your particular problem. It should be extendable and configurable. The github issues is the best place to debate on the feature and discuss how it should be implemented.

All the work on the next version is performed in corresponding release branch (e.g. release-2.5). The master branch reflects the current live version. Most of the pull requests are accepted on release branch and not on master.

If you would like to make a change to the Galen Framework website ( you can do it here

Add GPG key to your maven settings.xml:


Setup the dependencies mvn clean install

The test can be run via mvn verify

To run integrations tests against chrome:

mvn clean verify -Dselenium.browser=chrome

Please ensure that you downloaded chromedriver, see here

Also you need Maven 3.3 or greater and Node with some modules:

  • sudo npm install -g grunt-cli
  • sudo npm install -g bower


This project is based on Maven. You can use both Intellij or Eclipse for it. It is being developed in Linux so all the assembling scripts are in bash. In order to assemble the dist with zip archives just run ./ and it will create a dist folder with both binary and source folders and it will prepare zip archives there as well. If you want to quickly test the concept and install galen right after the assembling you can use script ./ It uses and then just invokes sudo ./


There are two levels of testing. The first one is just the regular mvn clean test. But as there is a lot of Javascript code - you need Mocha. The tests are located in folder src/test/js/. To run the just go to that folder and execute


Galen Framework is licensed under Apache License, Version 2.0

You can’t perform that action at this time.