revamped database service listing page (#2534)

This commit is contained in:
parthp2107 2022-02-01 18:43:10 +05:30 committed by GitHub
parent b468a189f6
commit 22b31f4618
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 178 additions and 44 deletions

View File

@ -1624,6 +1624,7 @@ export const AddServiceModal: FunctionComponent<Props> = ({
'tw-border-primary': service === selectService,
}
)}
data-testid={service}
key={service}
onClick={() => handleServiceClick(service)}>
<div className="tw-flex tw-items-center">

View File

@ -0,0 +1,114 @@
package org.openmetadata.catalog.selenium.objectRepository;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
public class DatabaseServicePage {
WebDriver webDriver;
public DatabaseServicePage(WebDriver webDriver) {
this.webDriver = webDriver;
}
By headerSettingsServices = By.cssSelector("[data-testid='menu-item-Services']");
By noServicesAddServiceButton = By.cssSelector("[data-testid='add-new-user-button']");
By addServiceButton = By.cssSelector("[data-testid='add-service-button']");
By serviceName = By.cssSelector("[data-testid='name']");
By serviceUrl = By.cssSelector("[data-testid='url']");
By servicePort = By.cssSelector("[data-testid='port']");
By serviceUsername = By.cssSelector("[name='username']");
By servicePassword = By.cssSelector("[name='password']");
By databaseName = By.cssSelector("[data-testid='database']");
By nextButton = By.cssSelector("[data-testid='next-button']");
By saveServiceButton = By.cssSelector("[data-testid='deploy-button']");
By saveEditedService = By.cssSelector("[data-testid='save-button']");
By runIngestion = By.cssSelector("[data-testid='run']");
By editIngestion = By.cssSelector("[data-testid='edit']");
By deleteIngestion = By.cssSelector("[data-testid='delete']");
By saveConnectionConfig = By.cssSelector("[data-testid='saveManageTab']");
By selectInterval = By.xpath("//select[@id='ingestionType']");
public By headerSettingsServices() {
return headerSettingsServices;
}
public By addServiceButton() {
return addServiceButton;
}
public By noServicesAddServiceButton() {
return noServicesAddServiceButton;
}
public By serviceType(String serviceType) {
return By.cssSelector("[data-testid='" + serviceType + "']");
}
public By serviceName() {
return serviceName;
}
public By servicePort() {
return servicePort;
}
public By serviceUsername() {
return serviceUsername;
}
public By servicePassword() {
return servicePassword;
}
public By serviceUrl() {
return serviceUrl;
}
public By databaseName() {
return databaseName;
}
public By nextButton() {
return nextButton;
}
public By saveServiceButton() {
return saveServiceButton;
}
public By deleteServiceButton(String serviceName) {
return By.cssSelector("[data-testid='delete-service-" + serviceName + "']");
}
public By saveEditedService() {
return saveEditedService;
}
public By serviceDetailsTabs(String tab) {
return By.cssSelector("[data-testid='tab'][id='" + tab + "']");
}
public By runIngestion() {
return runIngestion;
}
public By editIngestion() {
return editIngestion;
}
public By deleteIngestion() {
return deleteIngestion;
}
public By selectInterval() {
return selectInterval;
}
public By ingestionInterval(String interval) {
return By.xpath("//select[@id='ingestionType']/option[@value='" + interval + "']");
}
public By saveConnectionConfig() {
return saveConnectionConfig;
}
}

View File

@ -24,8 +24,9 @@ import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.openmetadata.catalog.selenium.events.Events;
import org.openmetadata.catalog.selenium.objectRepository.DatabaseServicePage;
import org.openmetadata.catalog.selenium.objectRepository.TagsPage;
import org.openmetadata.catalog.selenium.properties.Property;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
@ -38,10 +39,11 @@ import org.openqa.selenium.support.ui.WebDriverWait;
public class DatabaseServicePageTest {
static WebDriver webDriver;
static TagsPage tagsPage;
static DatabaseServicePage databaseServicePage;
static String url = Property.getInstance().getURL();
static Faker faker = new Faker();
static String serviceName = faker.name().firstName();
static String enterDescription = "//div[@data-testid='enterDescription']/div/div[2]/div/div/div/div/div/div";
static Actions actions;
static WebDriverWait wait;
Integer waitTime = Property.getInstance().getSleepTime();
@ -52,6 +54,8 @@ public class DatabaseServicePageTest {
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
webDriver = new ChromeDriver(options);
tagsPage = new TagsPage(webDriver);
databaseServicePage = new DatabaseServicePage(webDriver);
actions = new Actions(webDriver);
wait = new WebDriverWait(webDriver, Duration.ofSeconds(30));
webDriver.manage().window().maximize();
@ -61,10 +65,10 @@ public class DatabaseServicePageTest {
@Test
@Order(1)
public void openDatabaseServicePage() throws InterruptedException {
Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new
Events.click(webDriver, tagsPage.closeWhatsNew()); // Close What's new
Thread.sleep(waitTime);
Events.click(webDriver, By.cssSelector("[data-testid='menu-button'][id='menu-button-Settings']")); // Setting
Events.click(webDriver, By.cssSelector("[data-testid='menu-item-Services']")); // Setting/Services
Events.click(webDriver, tagsPage.headerSettings()); // Setting
Events.click(webDriver, databaseServicePage.headerSettingsServices()); // Setting/Services
Thread.sleep(waitTime);
}
@ -72,64 +76,79 @@ public class DatabaseServicePageTest {
@Order(2)
public void addDatabaseService() throws InterruptedException {
openDatabaseServicePage();
Thread.sleep(2000);
List<WebElement> webElementList = webDriver.findElements(By.cssSelector("[data-testid='add-new-user-button']"));
List<WebElement> webElementList = webDriver.findElements(databaseServicePage.addServiceButton());
if (webElementList.isEmpty()) {
Events.click(webDriver, By.cssSelector("[data-testid='add-service-button']"));
Events.click(webDriver, databaseServicePage.noServicesAddServiceButton());
} else {
Events.click(webDriver, By.cssSelector("[data-testid='add-new-user-button']"));
Events.click(webDriver, databaseServicePage.addServiceButton());
}
Events.click(webDriver, By.cssSelector("[data-testid='selectService']"));
Events.click(webDriver, By.cssSelector("[value='MySQL']"));
Events.sendKeys(webDriver, By.cssSelector("[data-testid='name']"), serviceName);
Events.sendKeys(webDriver, By.cssSelector("[data-testid='url']"), "localhost:3306");
Events.sendKeys(webDriver, By.cssSelector("[data-testid='database']"), "openmetadata_db");
Events.click(webDriver, By.cssSelector("[data-testid='boldButton']"));
Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString());
Events.click(webDriver, By.xpath(enterDescription));
Events.sendEnter(webDriver, By.xpath(enterDescription));
Events.click(webDriver, By.cssSelector("[data-testid='italicButton']"));
Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString());
Events.click(webDriver, By.xpath(enterDescription));
Events.sendEnter(webDriver, By.xpath(enterDescription));
Events.click(webDriver, By.cssSelector("[data-testid='linkButton']"));
Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString());
Events.click(webDriver, By.cssSelector("[data-testid='save-button']"));
Events.click(webDriver, databaseServicePage.serviceType("MySQL"));
Events.click(webDriver, databaseServicePage.nextButton());
Events.sendKeys(webDriver, databaseServicePage.serviceName(), serviceName);
Events.click(webDriver, tagsPage.descriptionBoldButton());
Events.sendKeys(webDriver, tagsPage.addDescriptionString(), faker.address().toString());
Events.click(webDriver, tagsPage.addDescriptionString());
Events.sendEnter(webDriver, tagsPage.addDescriptionString());
Events.click(webDriver, tagsPage.descriptionItalicButton());
Events.sendKeys(webDriver, tagsPage.addDescriptionString(), faker.address().toString());
Events.click(webDriver, tagsPage.addDescriptionString());
Events.sendEnter(webDriver, tagsPage.addDescriptionString());
Events.click(webDriver, tagsPage.descriptionLinkButton());
Events.sendKeys(webDriver, tagsPage.addDescriptionString(), faker.address().toString());
Events.click(webDriver, databaseServicePage.nextButton());
Events.sendKeys(webDriver, databaseServicePage.serviceUrl(), "localhost");
Events.sendKeys(webDriver, databaseServicePage.servicePort(), "3306");
Events.sendKeys(webDriver, databaseServicePage.serviceUsername(), "openmetadata_user");
Events.sendKeys(webDriver, databaseServicePage.servicePassword(), "openmetadata_password");
Events.sendKeys(webDriver, databaseServicePage.databaseName(), "openmetadata_db");
Events.click(webDriver, databaseServicePage.nextButton());
Events.click(webDriver, databaseServicePage.nextButton());
Events.click(webDriver, databaseServicePage.saveServiceButton());
}
@Test
@Order(3)
public void editDatabaseService() throws InterruptedException {
public void checkDatabaseServiceDetails() throws InterruptedException {
openDatabaseServicePage();
Thread.sleep(2000);
Events.click(webDriver, By.cssSelector("[data-testid='edit-service-" + serviceName + "']"));
Events.click(webDriver, By.xpath(enterDescription));
Events.sendEnter(webDriver, By.xpath(enterDescription));
Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString());
Events.click(webDriver, By.cssSelector("[data-testid='save-button']"));
Events.click(webDriver, tagsPage.containsText(serviceName));
Events.click(webDriver, tagsPage.editTagCategoryDescription());
Events.click(webDriver, tagsPage.addDescriptionString());
Events.sendKeys(webDriver, tagsPage.addDescriptionString(), faker.address().toString());
Events.click(webDriver, tagsPage.editDescriptionSaveButton());
}
@Test
@Order(4)
public void checkDatabaseServiceDetails() throws InterruptedException {
public void checkIngestionTab() throws InterruptedException {
openDatabaseServicePage();
Thread.sleep(2000);
Events.click(webDriver, By.cssSelector("[data-testid='service-name-" + serviceName + "']"));
Thread.sleep(waitTime);
Events.click(webDriver, By.cssSelector("[data-testid='edit-description']"));
Events.click(webDriver, By.xpath(enterDescription));
Events.sendEnter(webDriver, By.xpath(enterDescription));
Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString());
Events.click(webDriver, By.cssSelector("[data-testid='save']"));
Events.click(webDriver, tagsPage.containsText("Demo1"));
Events.click(webDriver, databaseServicePage.serviceDetailsTabs("ingestions"));
Events.click(webDriver, databaseServicePage.runIngestion()); // run ingestion
Events.click(webDriver, databaseServicePage.editIngestion()); // edit ingestion
Events.click(webDriver, databaseServicePage.nextButton());
Events.click(webDriver, databaseServicePage.selectInterval());
Events.click(webDriver, databaseServicePage.ingestionInterval("day"));
Events.click(webDriver, databaseServicePage.nextButton());
Events.click(webDriver, databaseServicePage.saveServiceButton());
Events.click(webDriver, databaseServicePage.deleteIngestion()); // delete ingestion
Events.click(webDriver, databaseServicePage.saveEditedService());
}
@Test
@Order(5)
public void searchDatabaseService() throws InterruptedException {
public void checkConnectionConfigTab() throws InterruptedException {
openDatabaseServicePage();
Thread.sleep(2000);
Events.click(webDriver, By.cssSelector("[data-testid='service-name-" + serviceName + "']"));
Events.click(webDriver, tagsPage.containsText(serviceName));
Events.click(webDriver, databaseServicePage.serviceDetailsTabs("connectionConfig"));
Events.sendKeys(webDriver, databaseServicePage.serviceUsername(), "1");
Events.sendKeys(webDriver, databaseServicePage.servicePassword(), "1");
Events.sendKeys(webDriver, databaseServicePage.databaseName(), "1");
Events.click(webDriver, databaseServicePage.saveConnectionConfig());
}
@Test
@ -137,8 +156,8 @@ public class DatabaseServicePageTest {
public void deleteDatabaseService() throws InterruptedException {
openDatabaseServicePage();
Thread.sleep(2000);
Events.click(webDriver, By.cssSelector("[data-testid='delete-service-" + serviceName + "']"));
Events.click(webDriver, By.cssSelector("[data-testid='save-button']"));
Events.click(webDriver, databaseServicePage.deleteServiceButton(serviceName));
Events.click(webDriver, databaseServicePage.saveEditedService());
}
@AfterEach