Or press ESC to close.

Aqua, an IDE for us!

Jan 29th 2023 10 min read

A few days ago, I read a post in my company's community channel that JetBrains is launching a new IDE aimed at automation testers. Naturally, I had to give it a try.

I used a couple of JetBrains IDEs like IntelliJ IDEA, PyCharm, and DataGrip. When I heard that they were releasing one for test automation, I could have predicted what was coming. And I wasn't wrong, for most of the part. 😅

Aqua, an IDE for writing unit, Web API, and UI tests. Coming with support for the most popular programming languages in the automation world, like Java, Kotlin, Python, JavaScript, and TypeScript. And it also features Docker and database support.

Is it time to switch to a new IDE? Let's find out.


Let's discuss the GUI for a moment. If you have used any JetBrains IDEs, you would expect this one to have a similar style or GUI design. You would be correct. However, at the initial launch, the 'New UI' mode is enabled by default, and I must say, "I like it!"

new GUI design for the Aqua IDE

Upon first glance, we can observe that the options from the top menu have been removed and are now distributed throughout the sides of the IDE. At first, it may seem like it will take some time to get used to it, but the icons are quite intuitive, and after 15 minutes, I felt like I had always been using this IDE.

Retained options

Individuals familiar with JetBrains software know it is filled with numerous helpful features and shortcuts. They may wonder if these are also available in Aqua. The answer is yes. Most of the editor shortcuts, code completion, navigation, debugging, and refactoring features are still present.

Some of my favorite shortcuts are:

Supported project types

We already mentioned that the IDE supports the most popular programming languages used in automation. When starting with a new project, Go, Ruby, Scala, and PHP are also supported (only plugin installation is required).

new project window

If we examine the Generators tab, we can observe that it currently supports the most widely used web development frameworks and libraries. Particularly in the realm of automation, there is built-in support for Selenium, and support for Cypress and Playwright is forthcoming.

Let's generate a Selenium project with some sample code.

Sample Selenium project

From the Selenium generator window, I choose Kotlin for the language, Maven for the build system, and TestNG for the test framework. I also checked the 'Add sample code' checkbox to see what the IDE is going to create for us.

On the next window, we can choose between Selenium version 3 or 4 and add additional dependencies if required. By default Allure Framework for reporting and Selenide framework for test automation are selected. In the following screenshot, you can see which ones are also available:

dependencies window for new Selenium project

I chose the default dependencies and clicked the 'Create' button.

And what I saw was pretty nice. The project generated the following files:

I recently clicked the Play button next to the MainPageTest class, which generated a TestNG configuration. A Chrome browser window opened and executed all of the test cases, without the need for me to add the driver.

execution of the sample test cases

I must say, pretty good for a minimal setup.

Automation related features

Features like code runners, debuggers, and search engines are available in many IDEs. What does Aqua have that others don't?

Web Inspector

Most of us, when we are adding locators to a page class, go the following route:

If the element cannot be located for any reason in our test, we must return to finding another solution.

Well, Aqua comes with a built-in solution for this situation. The 'Web Inspector' tool provides an easy way to add element locators to our code without leaving the IDE.

the web inspector tool

In other words, the tool serves as a built-in 'Inspect Elements' tab in browsers, optimized specifically for automation testers.

Clicking an element in the preview allows us to attain a satisfactory locator. We have the option to choose a different variant from the ones generated by the tool. Additionally, we can determine to locate the element using CSS, XPath, or data attributes. A single button click suffices to add the locator to our page class.

But how does the tool know which type of locators we are using? Well, we tell it. In the bottom bar, we just specify which UI Automation Framework we are using.

What's noteworthy is that it permits customization. JetBrains is cognizant of the fact that not every company or individual has the same set of rules for writing their locators. By utilizing the Apache Velocity template language, we can create our algorithms for generating code for the web element locator.

And that is not all when it comes to the Web Inspector tool. With one button click, we can also clear the website cookies, enable popup windows, switch to the mobile version of the website, or even open the developer tools.

API requests support

When we write our API tests, we usually check if the API endpoints behave as expected by executing a specific HTTP request and checking the response. And, of course, we use specific tools for this, like Postman or Insomnia.

To get started, we just need to choose the 'Create request in HTTP client' option from the Tools menu.

the http client tool

The tool comes with a lot of similar features that we see in other API platform tools:

To get familiar with the HTTP request syntax, visit the following link.

Test Management Systems

Aqua also comes with a TMS integration tool which allows us to connect to a Test Management System. Once connected, we can browse and filter the test suites and cases or generate unit tests for selected test scenarios.

The current problem with the tool is that it only supports TestRail at the moment, but they will add additional TMSs in future releases like Xray and Zephyr.

The cool aspect of this feature is the ability to create link annotations, which are special markers in the code containing metadata about it. These annotations can be utilized to link unit tests to TMS items.

And, of course, that's not all. There is also support for local TMS where we can create .md files stored locally to represent our test suites and test runs.

local TMS file examples

In the above example, the .t.md file represents a test suite. Test suites can have tags and metadata used for filtering TMS items. The .r.md file represents a test run file. Once the test is executed, we can define the state of the test in the [] brackets and the name of the tester with the @ sign.

Database support

As testers, we often engage with databases, whether it's to troubleshoot unusual behaviors in systems under test or to validate the contents of the database. Regardless of the purpose, utilizing databases in QA automation serves to guarantee the dependability and consistency of the data used in testing and to validate the interactions between the system being tested and the database.

Of course, Aqua comes with built-in support. If you are familiar with DataGrip, then the Database feature should look quite familiar to you. It provides us with the capability to establish a data source, complete with support for popular databases such as Cassandra, Redis, PostgreSQL, and others.

Once added, we can inspect the database structure in the tree view, execute queries in the query console, and view/extract/compare the results in many formats from the output window. In other words, the tool has all the features we need.

Below you can see an example query I executed upon a PostgreSQL table.

executed database query with results using the Database feature


So, is it time to remove all other tools and replace them with Aqua IDE? Not yet. As we mentioned, the IDE is still in the preview stage, and issues are still present. As I was exploring it, a couple of errors popped up from time to time (reported them, of course 😅).

The IDE already comes equipped with a plethora of fantastic features. However, support for some widely used tools/frameworks is still missing. According to the JetBrains website, some of these will be available in future updates, and I am confident that even more will be added.

The ability to have a code editor, database/test case management tools, website inspection capabilities, API request functionality, and reporting all in one place is fantastic. I eagerly anticipate what new updates will bring.

I recommend that everyone downloads the preview version and gives it a try. I am confident that you will not be disappointed, and you can assist the developers of the IDE by providing suggestions for useful features and reporting any issues that you encounter.