Testing web apps in Java using Selenium WebDriver
This quickstart will show you how to visually test web apps in Java using Selenium WebDriver without any specific test framework. Visual testing can help you catch problems that traditional automation struggles to find. You can also leverage Applitools Ultrafast Grid to run your tests across all the major browsers in a fraction of the time as other cross-browser testing platforms. Furthermore, you can run your Selenium WebDriver sessions remotely in Applitools Execution Cloud, which will alleviate your infrastructure burden as well as automatically heal any broken locators.
After preparing your environment, this three-step quickstart should take about 15 minutes to complete.
If you get stuck on this example, don't suffer in silence! Please reach out to us to get things working. We can also help you get Applitools running in your own project.
This quickstart does not use a test framework like JUnit, TestNG, or Cucumber.
Instead, all calls are made directly from a main
method.
It shows the bare minimum code required to start using Applitools.
You can copy and paste its sections into your own project, too.
For better practice, we strongly recommend using a test framework. Test frameworks provide features like test case structure, straightforward execution, and result reporting. We provide an alternative quickstart guide for testing web apps in Java using Selenium WebDriver and JUnit.
Step 1: Preparing your environment
You'll need a few things to run this quickstart:
An Applitools account, which you can register for free.
The Java Development Kit (JDK), version 8 or higher. To install it, follow the JDK Installation Guide.
A good Java editor, such as:
Apache Maven for project builds and dependencies.
Installing MavenIf you use JetBrains IntelliJ IDEA, Eclipse IDE, or Apache NetBeans, then you do not need to install Maven separately because these IDEs come bundled with Maven.
Otherwise, you will need to install Maven and add it to the system
PATH
variable. Follow instructions on the Installing Apache Maven page. On macOS and Linux, you can install Maven with Homebrew by runningbrew install maven
.If you installed Maven separately from an IDE, then you can test that Maven is working by running the
mvn -v
command to print its version.An up-to-date version of Google Chrome.
A corresponding version of ChromeDriver.
Installing ChromeDriverThe major version numbers of Chrome and ChromeDriver must be the same. Otherwise, Selenium WebDriver may raise an exception when it is initialized. For example, Chrome v101 requires ChromeDriver v101.
ChromeDriver must be installed into a directory covered by the system
PATH
variable. Follow the instructions on Selenium's Install browser drivers page. On macOS and Linux, the recommended location for thechromedriver
executable is the/usr/local/bin
directory.You can test that ChromeDriver is working by running the
chromedriver -v
command to print its version.
Step 2: Getting your example project
Downloading the example project
The example project is located at https://github.com/applitools/example-selenium-java-basic. Clone this repository to your local machine:
git clone https://github.com/applitools/example-selenium-java-basic.git
cd example-selenium-java-basic
Instead of running git clone
, you can download the project as a ZIP file and extract it.
Installing the dependencies
The example project uses Apache Maven for package management.
All dependencies are listed in the project's pom.xml
file.
If you are using a Java IDE,
then the IDE should install the dependencies and build the project for you.
However, you may also install dependencies from the command line using the following command:
mvn install
This example project already has the Applitools Eyes SDK as a dependency.
If you want to add the Applitools Eyes SDK as a new dependency to another Maven project,
then add the latest version of the
eyes-selenium-java5
package to the project's pom.xml
file.
The eyes-selenium-java5
package includes a dependency for the Selenium 3 package.
If you want to use Selenium 4,
then add the latest 4.x version of the
selenium-java
package to the project's pom.xml
file as well.
Deciding how to run tests
The test uses Selenium WebDriver to automate the browser. There are two places to run your Selenium WebDriver session:
- On your local machine (which is the default option)
- On Applitools Execution Cloud
If you run WebDriver locally, then you need to set it up and manage it yourself. If you use Execution Cloud, then Applitools will manage WebDriver for you. It will also automatically heal broken locators and wait for elements to be ready. If you would like to try Execution Cloud, please request access. The docs for Execution Cloud provide more information.
There are two ways to test the visual snapshots captured by the test:
- Using Applitools Ultrafast Grid for cross-browser testing in the cloud
- Using Applitools Classic runner on your local machine
If you are not sure which one to pick, read Leveraging the Applitools platform. For most cases, we recommend Applitools Ultrafast Grid. The docs for Ultrafast Grid and Classic runner provide more information.
Walking through the code
The project contains one visual test case,
which is located at src/test/java/com/applitools/example/AcmeBankTests.java
.
AcmeBankTests
is a plain-old Java class that covers login behavior for the ACME Bank demo web app.
It uses the Applitools Eyes SDK to execute the test.
The variables at the top control how tests will run:
- Set
USE_ULTRAFAST_GRID
totrue
to use Ultrafast Grid orfalse
to use the Classic runner. - Set
USE_EXECUTION_CLOUD
totrue
to use Execution Cloud orfalse
to run WebDriver sessions locally.
Setup varies slightly for these different options. In-line comments explain every section of its code. Read it top to bottom to understand how it works:
Step 3: Running your tests
Setting Applitools variables
Before running the visual test,
you must find your Applitools API key
and set it as an environment variable named APPLITOOLS_API_KEY
.
You may set it through your IDE (if applicable),
or you may set it from the command line like this:
- macOS and Linux
- Windows
export APPLITOOLS_API_KEY=<your-api-key>
set APPLITOOLS_API_KEY=<your-api-key>
If you have trouble setting the APPLITOOLS_API_KEY
environment variable, you can hard-code your API key like this:
// Change the following line:
// config.setApiKey(System.getenv("APPLITOOLS_API_KEY"));
config.setApiKey("<your-api-key>");
However, be warned: hard-coding secrets is poor practice. Do this only temporarily for debugging, and never commit hard-coded secrets to version control.
You may also need to set your Applitools Eyes server.
By default, tests will use the public Applitools Eyes server at eyes.applitools.com.
However, if your team is using a private Applitools Eyes server,
you can target it by setting the APPLITOOLS_SERVER_URL
environment variable.
(If you are using a free Applitools account, then use the public server.)
Launching visual tests
The easiest way to launch this test is through a Java IDE.
Just make sure to set the APPLITOOLS_API_KEY
environment variable in your test's run configuration.
You can also launch this test from the command line using the following Maven command, which works for both example projects on any operating system:
mvn exec:exec@run-the-tests -Dexec.classpathScope=test
To run tests headlessly, set the HEADLESS
environment variable to true
.
After your tests run, you should see results in the Eyes Test Manager. You can log into the Test Manager at eyes.applitools.com or at the address for your private Applitools Eyes server.
When you run tests with the Applitools Ultrafast Grid, the tests will run one time on the local machine, and then they will upload snapshots to render on each target configuration in the cloud. The Test Manager will show a separate result for each rendering. When you run tests with the Applitools Classic runner, the Test Manager will show the one snapshot from your local machine.
You can also change the web page to inject visual bugs:
// driver.get("https://demo.applitools.com");
driver.get("https://demo.applitools.com/index_v2.html");
If you rerun the tests, then they should yield "unresolved" results for you to review. Visual differences will be highlighted in magenta. It's up to you to accept (👍) or reject (👎) the changes. Applitools will remember your decisions for future analysis.
Again, it's okay. If you get stuck on this example, don't suffer in silence! Please reach out to us to get things working. We can also help you get Applitools running in your own project.
Taking the next steps with Applitools
Congratulations on completing this quickstart! There's still so much to learn about visual testing with Applitools, but you're off to a great start.
Resources for next steps:
- 🤖 Learning how visual testing works
- ↔️ Setting match levels for visual checkpoints
- 💥 Troubleshooting common issues
- 🐞 Reporting bugs
- 🗺 Detailed overview of visual testing with Applitools