From 60aa5f39396d1fa03332e292432790ee5b16b0c5 Mon Sep 17 00:00:00 2001 From: parthp2107 <83201188+parthp2107@users.noreply.github.com> Date: Wed, 2 Feb 2022 17:10:42 +0530 Subject: [PATCH] Fix#2559: Revamped service listing page (#2570) * revamped service listing page * addressing style check --- .../DashboardServicePage.java | 22 ++++ .../MessagingServicePage.java | 23 ++++ .../objectRepository/PipelineServicePage.java | 18 ++++ .../DashboardServiceTestPage.java | 100 +++++++++--------- .../MessagingServicePageTest.java | 99 ++++++++--------- .../PipelineServiceTestPage.java | 95 +++++++++-------- 6 files changed, 213 insertions(+), 144 deletions(-) create mode 100644 openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/DashboardServicePage.java create mode 100644 openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/MessagingServicePage.java create mode 100644 openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/PipelineServicePage.java diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/DashboardServicePage.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/DashboardServicePage.java new file mode 100644 index 00000000000..14407a7d318 --- /dev/null +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/DashboardServicePage.java @@ -0,0 +1,22 @@ +package org.openmetadata.catalog.selenium.objectRepository; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +public class DashboardServicePage { + WebDriver webDriver; + + public DashboardServicePage(WebDriver webDriver) { + this.webDriver = webDriver; + } + + By dashboardServiceUrl = By.cssSelector("[data-testid='dashboard-url']"); + + public By selectServiceTab(int index) { + return By.xpath("(//div[@data-testid='tab'])[" + index + "]"); + } + + public By dashboardServiceUrl() { + return dashboardServiceUrl; + } +} diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/MessagingServicePage.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/MessagingServicePage.java new file mode 100644 index 00000000000..02aa795a270 --- /dev/null +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/MessagingServicePage.java @@ -0,0 +1,23 @@ +package org.openmetadata.catalog.selenium.objectRepository; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +public class MessagingServicePage { + WebDriver webDriver; + + public MessagingServicePage(WebDriver webDriver) { + this.webDriver = webDriver; + } + + By messagingServiceBrokerUrl = By.cssSelector("[data-testid='broker-url']"); + By messagingServiceSchemaRegistry = By.cssSelector("[data-testid='schema-registry']"); + + public By messagingServiceBrokerUrl() { + return messagingServiceBrokerUrl; + } + + public By messagingServiceSchemaRegistry() { + return messagingServiceSchemaRegistry; + } +} diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/PipelineServicePage.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/PipelineServicePage.java new file mode 100644 index 00000000000..56aee5c89b3 --- /dev/null +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/PipelineServicePage.java @@ -0,0 +1,18 @@ +package org.openmetadata.catalog.selenium.objectRepository; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +public class PipelineServicePage { + WebDriver webDriver; + + public PipelineServicePage(WebDriver webDriver) { + this.webDriver = webDriver; + } + + By pipelineServiceUrl = By.cssSelector("[data-testid='pipeline-url']"); + + public By pipelineServiceUrl() { + return pipelineServiceUrl; + } +} diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/dashboardService/DashboardServiceTestPage.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/dashboardService/DashboardServiceTestPage.java index 285d6231f14..451c9fe0d43 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/dashboardService/DashboardServiceTestPage.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/dashboardService/DashboardServiceTestPage.java @@ -24,8 +24,10 @@ 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.DashboardServicePage; +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; @@ -37,10 +39,12 @@ import org.openqa.selenium.support.ui.WebDriverWait; @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class DashboardServiceTestPage { static WebDriver webDriver; + static TagsPage tagsPage; + static DatabaseServicePage databaseServicePage; + static DashboardServicePage dashboardServicePage; 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(); @@ -54,6 +58,9 @@ public class DashboardServiceTestPage { options.addArguments("--headless"); options.addArguments("--window-size=1280,800"); webDriver = new ChromeDriver(options); + tagsPage = new TagsPage(webDriver); + databaseServicePage = new DatabaseServicePage(webDriver); + dashboardServicePage = new DashboardServicePage(webDriver); actions = new Actions(webDriver); wait = new WebDriverWait(webDriver, Duration.ofSeconds(30)); webDriver.manage().window().maximize(); @@ -63,10 +70,10 @@ public class DashboardServiceTestPage { @Test @Order(1) public void openDashboardServicePage() throws InterruptedException { - Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new - 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, By.xpath("(//div[@data-testid='tab'])[3]")); + Events.click(webDriver, tagsPage.closeWhatsNew()); // Close What's new + Events.click(webDriver, tagsPage.headerSettings()); // Setting + Events.click(webDriver, databaseServicePage.headerSettingsServices()); // Setting/Services + Events.click(webDriver, dashboardServicePage.selectServiceTab(3)); Thread.sleep(waitTime); } @@ -75,72 +82,65 @@ public class DashboardServiceTestPage { public void addDashboardService() throws InterruptedException { openDashboardServicePage(); Thread.sleep(2000); - List webElementList = webDriver.findElements(By.cssSelector("[data-testid='add-new-user-button']")); + List 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("[value='Looker']")); - Events.sendKeys(webDriver, By.cssSelector("[data-testid='name']"), serviceName); - Events.sendKeys(webDriver, By.cssSelector("[data-testid='dashboard-url']"), "http://localhost:8080"); - Events.sendKeys(webDriver, By.cssSelector("[data-testid='username']"), faker.name().firstName()); - Events.sendKeys(webDriver, By.cssSelector("[data-testid='password']"), faker.name().firstName()); - - 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("Looker")); + 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, dashboardServicePage.dashboardServiceUrl(), "localhost:8080"); + Events.sendKeys(webDriver, databaseServicePage.serviceUsername(), "openmetadata_user"); + Events.sendKeys(webDriver, databaseServicePage.servicePassword(), "openmetadata_password"); + Events.click(webDriver, databaseServicePage.nextButton()); + Events.click(webDriver, databaseServicePage.saveServiceButton()); } @Test @Order(3) - public void editDashboardService() throws InterruptedException { + public void checkDashboardServiceDetails() throws InterruptedException { openDashboardServicePage(); 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 checkDashboardServiceDetails() throws InterruptedException { + public void checkConnectionConfigTab() throws InterruptedException { openDashboardServicePage(); 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(serviceName)); + Events.click(webDriver, databaseServicePage.serviceDetailsTabs("connectionConfig")); + Events.sendKeys(webDriver, dashboardServicePage.dashboardServiceUrl(), "1"); + Events.sendKeys(webDriver, databaseServicePage.serviceUsername(), "1"); + Events.sendKeys(webDriver, databaseServicePage.servicePassword(), "1"); + Events.click(webDriver, databaseServicePage.saveConnectionConfig()); } @Test @Order(5) - public void searchDashboardService() throws InterruptedException { - openDashboardServicePage(); - Thread.sleep(2000); - Events.click(webDriver, By.cssSelector("[data-testid='service-name-" + serviceName + "']")); - } - - @Test - @Order(6) public void deleteDashboardService() throws InterruptedException { openDashboardServicePage(); 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 diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/messagingService/MessagingServicePageTest.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/messagingService/MessagingServicePageTest.java index f44da40a207..24505e8bd10 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/messagingService/MessagingServicePageTest.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/messagingService/MessagingServicePageTest.java @@ -24,8 +24,11 @@ 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.DashboardServicePage; +import org.openmetadata.catalog.selenium.objectRepository.DatabaseServicePage; +import org.openmetadata.catalog.selenium.objectRepository.MessagingServicePage; +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; @@ -37,6 +40,10 @@ import org.openqa.selenium.support.ui.WebDriverWait; @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class MessagingServicePageTest { static WebDriver webDriver; + static TagsPage tagsPage; + static DatabaseServicePage databaseServicePage; + static DashboardServicePage dashboardServicePage; + static MessagingServicePage messagingServicePage; static String url = Property.getInstance().getURL(); static Faker faker = new Faker(); static String serviceName = faker.name().firstName(); @@ -54,6 +61,10 @@ public class MessagingServicePageTest { options.addArguments("--headless"); options.addArguments("--window-size=1280,800"); webDriver = new ChromeDriver(options); + tagsPage = new TagsPage(webDriver); + databaseServicePage = new DatabaseServicePage(webDriver); + dashboardServicePage = new DashboardServicePage(webDriver); + messagingServicePage = new MessagingServicePage(webDriver); actions = new Actions(webDriver); wait = new WebDriverWait(webDriver, Duration.ofSeconds(30)); webDriver.manage().window().maximize(); @@ -63,10 +74,10 @@ public class MessagingServicePageTest { @Test @Order(1) public void openMessagingServicePage() throws InterruptedException { - Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new - 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, By.xpath("(//div[@data-testid='tab'])[2]")); + Events.click(webDriver, tagsPage.closeWhatsNew()); // Close What's new + Events.click(webDriver, tagsPage.headerSettings()); // Setting + Events.click(webDriver, databaseServicePage.headerSettingsServices()); // Setting/Services + Events.click(webDriver, dashboardServicePage.selectServiceTab(2)); Thread.sleep(waitTime); } @@ -75,71 +86,63 @@ public class MessagingServicePageTest { public void addMessagingService() throws InterruptedException { openMessagingServicePage(); Thread.sleep(2000); - List webElementList = webDriver.findElements(By.cssSelector("[data-testid='add-new-user-button']")); + List 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("[value='Kafka']")); - Events.sendKeys(webDriver, By.cssSelector("[data-testid='name']"), serviceName); - Events.sendKeys(webDriver, By.cssSelector("[data-testid='broker-url']"), "localhost:9092"); - Events.sendKeys(webDriver, By.cssSelector("[data-testid='schema-registry']"), "http://localhost:8081"); - - 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("Kafka")); + 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, messagingServicePage.messagingServiceBrokerUrl(), "localhost:8080, localhost:9092"); + Events.sendKeys(webDriver, messagingServicePage.messagingServiceSchemaRegistry(), "https://localhost:8081"); + Events.click(webDriver, databaseServicePage.nextButton()); + Events.click(webDriver, databaseServicePage.saveServiceButton()); } @Test @Order(3) - public void editMessagingService() throws InterruptedException { + public void checkMessagingServiceDetails() throws InterruptedException { openMessagingServicePage(); 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, databaseServicePage.serviceDetailsTabs("connectionConfig")); + Events.sendKeys(webDriver, messagingServicePage.messagingServiceBrokerUrl(), "1"); + Events.sendKeys(webDriver, messagingServicePage.messagingServiceSchemaRegistry(), "1"); + Events.click(webDriver, databaseServicePage.saveConnectionConfig()); } @Test @Order(4) - public void checkMessagingServiceDetails() throws InterruptedException { + public void checkConnectionConfigTab() throws InterruptedException { openMessagingServicePage(); 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(serviceName)); + Events.click(webDriver, databaseServicePage.serviceDetailsTabs("connectionConfig")); + Events.sendKeys(webDriver, messagingServicePage.messagingServiceBrokerUrl(), "1"); + Events.sendKeys(webDriver, messagingServicePage.messagingServiceSchemaRegistry(), "1"); + Events.click(webDriver, databaseServicePage.saveConnectionConfig()); } @Test @Order(5) - public void searchMessagingService() throws InterruptedException { - openMessagingServicePage(); - Thread.sleep(2000); - Events.click(webDriver, By.cssSelector("[data-testid='service-name-" + serviceName + "']")); - } - - @Test - @Order(6) public void deleteMessagingService() throws InterruptedException { openMessagingServicePage(); 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 diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/pipelineService/PipelineServiceTestPage.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/pipelineService/PipelineServiceTestPage.java index 8bafa260aae..45e195f9d97 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/pipelineService/PipelineServiceTestPage.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/pipelineService/PipelineServiceTestPage.java @@ -24,8 +24,11 @@ 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.DashboardServicePage; +import org.openmetadata.catalog.selenium.objectRepository.DatabaseServicePage; +import org.openmetadata.catalog.selenium.objectRepository.PipelineServicePage; +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; @@ -37,6 +40,10 @@ import org.openqa.selenium.support.ui.WebDriverWait; @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class PipelineServiceTestPage { static WebDriver webDriver; + static TagsPage tagsPage; + static DatabaseServicePage databaseServicePage; + static DashboardServicePage dashboardServicePage; + static PipelineServicePage pipelineServicePage; static String url = Property.getInstance().getURL(); static Faker faker = new Faker(); static String serviceName = faker.name().firstName(); @@ -54,6 +61,10 @@ public class PipelineServiceTestPage { options.addArguments("--headless"); options.addArguments("--window-size=1280,800"); webDriver = new ChromeDriver(options); + tagsPage = new TagsPage(webDriver); + databaseServicePage = new DatabaseServicePage(webDriver); + dashboardServicePage = new DashboardServicePage(webDriver); + pipelineServicePage = new PipelineServicePage(webDriver); actions = new Actions(webDriver); wait = new WebDriverWait(webDriver, Duration.ofSeconds(30)); webDriver.manage().window().maximize(); @@ -63,10 +74,10 @@ public class PipelineServiceTestPage { @Test @Order(1) public void openPipelineServicePage() throws InterruptedException { - Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new - 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, By.xpath("(//div[@data-testid='tab'])[4]")); + Events.click(webDriver, tagsPage.closeWhatsNew()); // Close What's new + Events.click(webDriver, tagsPage.headerSettings()); // Setting + Events.click(webDriver, databaseServicePage.headerSettingsServices()); // Setting/Services + Events.click(webDriver, dashboardServicePage.selectServiceTab(4)); Thread.sleep(waitTime); } @@ -75,69 +86,61 @@ public class PipelineServiceTestPage { public void addPipelineService() throws InterruptedException { openPipelineServicePage(); Thread.sleep(2000); - List webElementList = webDriver.findElements(By.cssSelector("[data-testid='add-new-user-button']")); + List 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("[value='Prefect']")); - Events.sendKeys(webDriver, By.cssSelector("[data-testid='name']"), serviceName); - Events.sendKeys(webDriver, By.cssSelector("[data-testid='pipeline-url']"), "http://localhost:8080"); - 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("Prefect")); + 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, pipelineServicePage.pipelineServiceUrl(), "localhost:8080"); + Events.click(webDriver, databaseServicePage.nextButton()); + Events.click(webDriver, databaseServicePage.saveServiceButton()); } @Test @Order(3) - public void editPipelineService() throws InterruptedException { + public void checkPipelineServiceDetails() throws InterruptedException { openPipelineServicePage(); 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 checkPipelineServiceDetails() throws InterruptedException { + public void checkConnectionConfig() throws InterruptedException { openPipelineServicePage(); 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(serviceName)); + Events.click(webDriver, databaseServicePage.serviceDetailsTabs("connectionConfig")); + Events.sendKeys(webDriver, pipelineServicePage.pipelineServiceUrl(), "1"); + Events.click(webDriver, databaseServicePage.saveConnectionConfig()); } @Test @Order(5) - public void searchPipelineService() throws InterruptedException { - openPipelineServicePage(); - Thread.sleep(2000); - Events.click(webDriver, By.cssSelector("[data-testid='service-name-" + serviceName + "']")); - } - - @Test - @Order(6) public void deletePipelineService() throws InterruptedException { openPipelineServicePage(); 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