Rise of Aqua - A Powerful IDE for Test Automation by JetBrains

Pradap Pandiyan
5 min readNov 13, 2022

--

One of the most commonly asked tools from test automation engineers is a dedicated IDE for QA. We started using dev tools as part of the test automation in a different form of IDE, based on the programming language.

When we create a new project on the Aqua IDE, it has multiple options for creating test automation. Some of the Generators are from the other IDE and it has been consolidated for the QAs to see it in a single place.

Selenium

When I select Selenium I can see the various possible configuration for selenium based on our requirements. I love the fact we have a Test framework selection at the time of selecting the tool with different JDK versions available.

When we select selenium and the required Language, Build System, Test Framework, JDK, etc. It navigates to the next set of configurations for the selected generators.

I love for the fact that the reporting tool and the assertions are integrated as a part of the test automation IDE. We also have the option to select the selenium versions. Once the selenium dependencies are loaded it show the suggestion to download the selenium UI Testing Library plugin from the Marketplace.

When I ran the test it worked like a Charm 😊. I’ve used the traditional way of running the TestNG using the play button next to the test. These are the tests autogenerated from the IDE.

The WebInspector helps to generate the locators from the IDE without using an external browser. The advantage of working with in-build IDE is to capture everything within the IDE itself. Honestly, this is a game-changer for finding locators.

We also have a number of features on the IDE which help us to find multiple locators based on the Text, Tag with classes, CSS and Xpath.

One more feature that I love in the Web Inspector is adding the element directly to the code instead of copy-pasting. I believe that we spend a lot of time copying the element to validate in the locators checker whether it's correct. We can save a lot of time by avoiding these huddles.

Aqua auto-completes the Text, Tag with classes, CSS and Xpath locators, which are available on the selected page on the Web Inspector

Selenium Test automation supports Page Object Model and it's easy to use from the existing resources on Selenium. It has a variety of templates for different frameworks and languages and we can customize the existing one.

Once the default POM is set, we can get the basic skeleton. This is the Page object for the test, I’ve added the codes below.

package com.example.testseleniumaqua;

import com.codeborne.selenide.SelenideElement;

import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.$x;

// page_url = https://www.jetbrains.com/
public class MainPage {
public SelenideElement seeDeveloperToolsButton = $x("//*[@data-test-marker='Developer Tools']");
public SelenideElement findYourToolsButton = $x("//*[@data-test='suggestion-action']");
public SelenideElement toolsMenu = $x("//div[@data-test='main-menu-item' and @data-test-marker = 'Developer Tools']");
public SelenideElement searchButton = $("[data-test='site-header-search-ac']");
}

This is my Main test runner for the whole project. I’ve created as a selenium project It’s created as a whole bunch of feature including reporting on the main test runner

package com.example.testseleniumaqua;

import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.Selenide;
import com.codeborne.selenide.logevents.SelenideLogger;
import io.qameta.allure.selenide.AllureSelenide;
import org.testng.annotations.*;

import static org.testng.Assert.*;

import static com.codeborne.selenide.Condition.attribute;
import static com.codeborne.selenide.Condition.visible;
import static com.codeborne.selenide.Selenide.*;

public class MainPageTest {
MainPage mainPage = new MainPage();

@BeforeClass
public static void setUpAll() {
Configuration.browserSize = "1280x800";
SelenideLogger.addListener("allure", new AllureSelenide());
}

@BeforeMethod
public void setUp() {
open("https://www.jetbrains.com/");
}

@Test
public void search() {
mainPage.searchButton.click();

$("[data-test='search-input']").sendKeys("Selenium");
$("button[data-test='full-search-button']").click();

$("input[data-test='search-input']").shouldHave(attribute("value", "Selenium"));
}


@Test
public void toolsMenu() {
mainPage.toolsMenu.click();

$("div[data-test='main-submenu']").shouldBe(visible);
}

@Test
public void navigationToAllTools() {
mainPage.seeDeveloperToolsButton.click();
mainPage.findYourToolsButton.click();

$("#products-page").shouldBe(visible);

assertEquals(Selenide.title(), "All Developer Tools and Products by JetBrains");
}
}

API testing and environment setup

HTTP client

When developing a web service that sends and receives HTTP requests, you can easily create and edit requests in Aqua’s built-in HTTP client and receive extensive code assistance, including code completion, highlighting refactoring, and more.

Docker

With Aqua, you can get access to your Docker containers, allowing you to run and debug them, download and build images, and run multi-container applications.

Database

JetBrains Aqua does not require any extra tools to prepare your application data. You can seamlessly handle multiple databases, develop SQL scripts, and perform low-level data assertions — right in the IDE. Aqua provides connections to the live databases, runs queries, exports data, and allow you to manage schemes in a visual interface. This means you can access Oracle, SQL Server, PostgreSQL, MySQL, and other databases from the IDE.

Conclusion

Aqua is a game changer for core automation testers. In Web automation, it helps us in building a lot of things quickly and makes the QA life easier and simple.

I would see support more for mobile automation as well as being part of Aqua. Right now I don't think it has the support for Appium or Espresso in it.

Feel free to hit clap if you like the content. Happy Automation Testing :) Cheers. 👏

--

--

Pradap Pandiyan

I’m a passionate QA Engineer. I’m a motovlogger, content creator, off-roader and freelancer. Buy me a coffee here https://www.buymeacoffee.com/pradappandiyan