diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/Common.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/Common.java index 63bc4ef2c80..5fe247274d7 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/Common.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/Common.java @@ -32,6 +32,20 @@ public class Common { By saveServiceButton = By.cssSelector("[data-testid='deploy-button']"); By saveEditedService = By.cssSelector("[data-testid='save-button']"); By saveConnectionConfig = By.cssSelector("[data-testid='saveManageTab']"); + By searchResults = By.cssSelector("[data-testid='search-results']"); + By searchBar = By.cssSelector("[data-testid='searchBox']"); + By searchSuggestion = By.cssSelector("[data-testid='data-name']"); + By editAssociatedTagButton = By.xpath("//div[@data-testid='tag-conatiner']//span"); + By enterAssociatedTagName = By.cssSelector("[data-testid='associatedTagName']"); + By tagListItem = By.cssSelector("[data-testid='list-item']"); + By saveAssociatedTag = By.cssSelector("[data-testid='saveAssociatedTag']"); + By searchResultsList = By.xpath("//div[@data-testid='search-results']/div"); + By ownerDropdown = By.cssSelector("[data-testid='owner-dropdown']"); + By ownerSearchBox = By.cssSelector("[data-testid='searchInputText']"); + By closeErrorMessage = By.cssSelector("[data-testid='dismiss']"); + By serviceUrl = By.cssSelector("[data-testid='url']"); + By servicePort = By.cssSelector("[data-testid='port']"); + By databaseName = By.cssSelector("[data-testid='database']"); public By displayName() { return displayName; @@ -136,4 +150,88 @@ public class Common { public By headerSettingsMenu(String menuItem) { return By.cssSelector("[data-testid='menu-item-" + menuItem + "']"); } + + public By selectOverview(String overview) { + return By.cssSelector("[data-testid='" + overview + "']"); + } + + public By explorePagination(int index) { + return By.xpath("//div[@data-testid='pagination-button']//ul//li[" + index + "]"); + } + + public By selectFilterExplore(String filter) { + return By.cssSelector("[data-testid='checkbox'][id='" + filter + "']"); + } + + public By searchResults() { + return searchResults; + } + + public By searchBar() { + return searchBar; + } + + public By headerItem(String item) { + return By.cssSelector("[data-testid='appbar-item'][id='" + item + "']"); + } + + public By searchSuggestion() { + return searchSuggestion; + } + + public By editAssociatedTagButton() { + return editAssociatedTagButton; + } + + public By enterAssociatedTagName() { + return enterAssociatedTagName; + } + + public By tagListItem() { + return tagListItem; + } + + public By saveAssociatedTag() { + return saveAssociatedTag; + } + + public By searchResultsList() { + return searchResultsList; + } + + public By exploreFilterCount(String filter) { + return By.xpath("//div[@data-testid='filter-container-" + filter + "']//span[@data-testid='filter-count']"); + } + + public By entityTabIndex(int index) { + return By.xpath("(//button[@data-testid='tab'])" + "[" + index + "]"); + } + + public By selectSuggestionSearch(String result) { + return By.cssSelector("[data-testid='data-name'][id='" + result + "']"); + } + + public By ownerDropdown() { + return ownerDropdown; + } + + public By ownerSearchBox() { + return ownerSearchBox; + } + + public By closeErrorMessage() { + return closeErrorMessage; + } + + public By serviceUrl() { + return serviceUrl; + } + + public By servicePort() { + return servicePort; + } + + public By databaseName() { + return databaseName; + } } diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/DatabaseServicePage.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/DatabaseServicePage.java index a1f5cde91b3..f0a4cf425b5 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/DatabaseServicePage.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/DatabaseServicePage.java @@ -10,38 +10,11 @@ public class DatabaseServicePage { this.webDriver = webDriver; } - By serviceUrl = By.cssSelector("[data-testid='url']"); - By servicePort = By.cssSelector("[data-testid='port']"); - By databaseName = By.cssSelector("[data-testid='database']"); By runIngestion = By.cssSelector("[data-testid='run']"); By editIngestion = By.cssSelector("[data-testid='edit']"); By deleteIngestion = By.cssSelector("[data-testid='delete']"); By selectInterval = By.xpath("//select[@id='ingestionType']"); - public By serviceType(String serviceType) { - return By.cssSelector("[data-testid='" + serviceType + "']"); - } - - public By servicePort() { - return servicePort; - } - - public By serviceUrl() { - return serviceUrl; - } - - public By databaseName() { - return databaseName; - } - - public By deleteServiceButton(String serviceName) { - return By.cssSelector("[data-testid='delete-service-" + serviceName + "']"); - } - - public By serviceDetailsTabs(String tab) { - return By.cssSelector("[data-testid='tab'][id='" + tab + "']"); - } - public By runIngestion() { return runIngestion; } diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/TagsPage.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/TagsPage.java index ba7569c61f1..c7858c6c7b0 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/TagsPage.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/TagsPage.java @@ -18,7 +18,6 @@ import org.openqa.selenium.WebDriver; public class TagsPage { WebDriver webDriver; - static String enterDescription = "//div[@data-testid='enterDescription']/div/div[2]/div/div/div/div/div/div"; public TagsPage(WebDriver webDriver) { this.webDriver = webDriver; @@ -29,17 +28,12 @@ public class TagsPage { By addTagButton = By.cssSelector("[data-testid='add-new-tag-button']"); By editTagDescription = By.cssSelector("[data-testid='editTagDescription']"); By addAssociatedTagButton = By.cssSelector("[data-testid='tags']"); - By enterAssociatedTagName = By.cssSelector("[data-testid='associatedTagName']"); - By tagListItem = By.cssSelector("[data-testid='list-item']"); - By saveAssociatedTag = By.cssSelector("[data-testid='saveAssociatedTag']"); By removeAssociatedTag = By.cssSelector("[data-testid='remove']"); By tables = By.cssSelector("[data-testid='tables']"); By tableLink = By.xpath("//button[@data-testid='table-link']"); By lastTableLink = By.xpath("//button[@data-testid='table-link'][last()]"); By tagUsageCount = By.cssSelector("[data-testid='usage-count']"); - By editAssociatedTagButton = By.xpath("//div[@data-testid='tag-conatiner']//span"); By headerSettingsTags = By.cssSelector("[data-testid='menu-item-Tags']"); - By headerExplore = By.cssSelector("[data-testid='appbar-item'][id='explore']"); By sortBy = By.cssSelector("[data-testid='sortBy']"); public By addTagCategory() { @@ -58,18 +52,6 @@ public class TagsPage { return addAssociatedTagButton; } - public By enterAssociatedTagName() { - return enterAssociatedTagName; - } - - public By tagListItem() { - return tagListItem; - } - - public By saveAssociatedTag() { - return saveAssociatedTag; - } - public By removeAssociatedTag() { return removeAssociatedTag; } @@ -98,10 +80,6 @@ public class TagsPage { return tagUsageCount; } - public By editAssociatedTagButton() { - return editAssociatedTagButton; - } - public By usageCountElementIndex(int index) { return By.xpath("(//a[@data-testid='usage-count'])[" + index + "]"); } @@ -122,12 +100,8 @@ public class TagsPage { return By.xpath("(//button[@data-testid='tab'])[" + index + "]//span[@data-testid='filter-count']"); } - public By entityTabIndex(int index) { - return By.xpath("(//button[@data-testid='tab'])" + "[" + index + "]"); - } - - public By headerExplore() { - return headerExplore; + public By headerItem(String item) { + return By.cssSelector("[data-testid='appbar-item'][id='" + item + "']"); } public By sortBy() { diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/PaginationAndFilterTest.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/PaginationAndFilterTest.java index c9900d22d92..c459e04e7a2 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/PaginationAndFilterTest.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/PaginationAndFilterTest.java @@ -23,8 +23,8 @@ 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.Common; import org.openmetadata.catalog.selenium.properties.Property; -import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; @@ -43,6 +43,7 @@ public class PaginationAndFilterTest { private static final Logger LOG = Logger.getLogger(PaginationAndFilterTest.class.getName()); static WebDriver webDriver; + static Common common; static String url = Property.getInstance().getURL(); static Actions actions; static WebDriverWait wait; @@ -57,6 +58,7 @@ public class PaginationAndFilterTest { options.addArguments("--headless"); options.addArguments("--window-size=1280,800"); webDriver = new ChromeDriver(options); + common = new Common(webDriver); actions = new Actions(webDriver); wait = new WebDriverWait(webDriver, Duration.ofSeconds(30)); webDriver.manage().window().maximize(); @@ -66,18 +68,16 @@ public class PaginationAndFilterTest { @Test @Order(1) public void checkFlikerInFilter() throws Exception { - Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new + Events.click(webDriver, common.closeWhatsNew()); Thread.sleep(waitTime); - Events.click(webDriver, By.cssSelector("[data-testid='tables']")); // Tables + Events.click(webDriver, common.selectOverview("tables")); for (int i = 0; i <= 5; i++) { - Events.click(webDriver, By.xpath("//div[@data-testid='pagination-button']//ul//li[2]")); // Next Page + Events.click(webDriver, common.explorePagination(2)); } - Events.click(webDriver, By.cssSelector("[data-testid='checkbox'][id='BigQuery']")); // Select Filter + Events.click(webDriver, common.selectFilterExplore("BigQuery")); try { WebElement noDataFound = - wait.until( - ExpectedConditions.presenceOfElementLocated( - By.xpath("//*[contains(text(), 'No matching data assets found')]"))); + wait.until(ExpectedConditions.presenceOfElementLocated(common.containsText("No matching data assets found"))); if (noDataFound.isDisplayed()) { throw new Exception("Flakiness exists"); } @@ -89,15 +89,13 @@ public class PaginationAndFilterTest { @Test @Order(2) public void noDataPresentWithFilter() throws Exception { - Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new + Events.click(webDriver, common.closeWhatsNew()); Thread.sleep(waitTime); - Events.click(webDriver, By.cssSelector("[data-testid='tables']")); // Tables - Events.click(webDriver, By.cssSelector("[data-testid='checkbox'][id='BigQuery']")); // Select Filter + Events.click(webDriver, common.selectOverview("tables")); + Events.click(webDriver, common.selectFilterExplore("BigQuery")); try { WebElement noDataFound = - wait.until( - ExpectedConditions.presenceOfElementLocated( - By.xpath("//*[contains(text(), 'No matching data assets found')]"))); + wait.until(ExpectedConditions.presenceOfElementLocated(common.containsText("No matching data assets found"))); if (noDataFound.isDisplayed()) { throw new Exception("Data not found with filter count more than 0"); } @@ -109,14 +107,12 @@ public class PaginationAndFilterTest { @Test @Order(3) public void dataPresentWithFilter() throws Exception { - Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new + Events.click(webDriver, common.closeWhatsNew()); Thread.sleep(waitTime); - Events.click(webDriver, By.cssSelector("[data-testid='tables']")); // Tables - Events.click(webDriver, By.cssSelector("[data-testid='checkbox'][id='Tier.Tier3']")); // Select Filter + Events.click(webDriver, common.selectOverview("tables")); + Events.click(webDriver, common.selectFilterExplore("Tier.Tier3")); try { - - WebElement dataFound = - wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("[data-testid='search-results']"))); + WebElement dataFound = wait.until(ExpectedConditions.presenceOfElementLocated(common.searchResults())); if (dataFound.isDisplayed()) { throw new Exception("Data found with filter count 0"); } @@ -128,32 +124,32 @@ public class PaginationAndFilterTest { @Test @Order(4) public void leftPanelDisappearsCheck() throws InterruptedException { - Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new + Events.click(webDriver, common.closeWhatsNew()); Thread.sleep(waitTime); - Events.sendKeys(webDriver, By.cssSelector("[data-testid='searchBox']"), "zzzz"); - Events.sendEnter(webDriver, By.cssSelector("[data-testid='searchBox']")); + Events.sendKeys(webDriver, common.searchBar(), "zzzz"); + Events.sendEnter(webDriver, common.searchBar()); webDriver.navigate().refresh(); - Events.click(webDriver, By.cssSelector("[data-testid='appbar-item'][id='explore']")); // Explore - Events.click(webDriver, By.cssSelector("[data-testid='checkbox'][id='BigQuery']")); // Tables + Events.click(webDriver, common.headerItem("explore")); + Events.click(webDriver, common.selectFilterExplore("BigQuery")); } @Test @Order(5) public void filterDisappearsAfterSearchCheck() throws Exception { - Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new + Events.click(webDriver, common.closeWhatsNew()); Thread.sleep(waitTime); - Events.click(webDriver, By.cssSelector("[data-testid='appbar-item'][id='explore']")); // Explore - Events.click(webDriver, By.cssSelector("[data-testid='checkbox'][id='BigQuery']")); - Events.sendKeys(webDriver, By.cssSelector("[data-testid='searchBox']"), "dim"); - Events.sendEnter(webDriver, By.cssSelector("[data-testid='searchBox']")); + Events.click(webDriver, common.headerItem("explore")); + Events.click(webDriver, common.selectFilterExplore("BigQuery")); + Events.sendKeys(webDriver, common.searchBar(), "dim"); + Events.sendEnter(webDriver, common.searchBar()); Thread.sleep(2000); - WebElement clearSearchBox = webDriver.findElement(By.cssSelector("[data-testid='searchBox']")); + WebElement clearSearchBox = webDriver.findElement(common.searchBar()); clearSearchBox.sendKeys(Keys.CONTROL + "a"); clearSearchBox.sendKeys(Keys.DELETE); - Events.sendEnter(webDriver, By.cssSelector("[data-testid='searchBox']")); + Events.sendEnter(webDriver, common.searchBar()); try { - Events.click(webDriver, By.cssSelector("[data-testid='checkbox'][id='Glue']")); - Events.click(webDriver, By.cssSelector("[data-testid='checkbox'][id='default']")); + Events.click(webDriver, common.selectFilterExplore("Glue")); + Events.click(webDriver, common.selectFilterExplore("default")); } catch (TimeoutException exception) { throw new Exception("filters are missing"); } @@ -162,31 +158,29 @@ public class PaginationAndFilterTest { @Test @Order(6) public void databaseFilterCountCheck() throws InterruptedException { - Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new + Events.click(webDriver, common.closeWhatsNew()); Thread.sleep(waitTime); - Events.click(webDriver, By.cssSelector("[data-testid='appbar-item'][id='explore']")); // Explore - Events.sendKeys(webDriver, By.cssSelector("[data-testid='searchBox']"), "dim_api_client"); - Events.click(webDriver, By.cssSelector("[data-testid='data-name']")); + Events.click(webDriver, common.headerItem("explore")); + Events.sendKeys(webDriver, common.searchBar(), "dim_api_client"); + Events.click(webDriver, common.searchSuggestion()); Thread.sleep(waitTime); - actions.moveToElement(webDriver.findElement(By.xpath("//div[@data-testid='tag-conatiner']//span"))).perform(); - Events.click(webDriver, By.xpath("//div[@data-testid='tag-conatiner']//span")); - Events.click(webDriver, By.cssSelector("[data-testid='associatedTagName']")); + actions.moveToElement(webDriver.findElement(common.editAssociatedTagButton())).perform(); + Events.click(webDriver, common.editAssociatedTagButton()); + Events.click(webDriver, common.enterAssociatedTagName()); for (int i = 0; i <= 4; i++) { - Events.sendKeys(webDriver, By.cssSelector("[data-testid='associatedTagName']"), "P"); - Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); + Events.sendKeys(webDriver, common.enterAssociatedTagName(), "P"); + Events.click(webDriver, common.tagListItem()); } - Events.click(webDriver, By.cssSelector("[data-testid='saveAssociatedTag']")); + Events.click(webDriver, common.saveAssociatedTag()); webDriver.navigate().back(); webDriver.navigate().refresh(); - Events.click(webDriver, By.cssSelector("[data-testid='checkbox'][id='PII.None']")); - Events.click(webDriver, By.cssSelector("[data-testid='checkbox'][id='shopify']")); Thread.sleep(2000); - Object filteredResults = webDriver.findElements(By.xpath("//div[@data-testid='search-results']/div")).size(); - String databaseCount = - webDriver - .findElement(By.xpath("//div[@data-testid='filter-container-shopify']//span[@data-testid='filter-count']")) - .getAttribute("innerHTML"); - Assert.assertEquals(databaseCount, filteredResults); + Events.click(webDriver, common.selectFilterExplore("PII.None")); + Events.click(webDriver, common.selectFilterExplore("shopify")); + Thread.sleep(2000); + Object filteredResults = webDriver.findElements(common.searchResultsList()).size(); + String databaseCount = webDriver.findElement(common.exploreFilterCount("shopify")).getAttribute("innerHTML"); + Assert.assertEquals(databaseCount, filteredResults.toString()); } @AfterEach diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/PostIngestionTests.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/PostIngestionTests.java index c949871041f..a39e5e46f01 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/PostIngestionTests.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/PostIngestionTests.java @@ -8,8 +8,8 @@ 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.Common; import org.openmetadata.catalog.selenium.properties.Property; -import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; @@ -21,6 +21,7 @@ import org.openqa.selenium.support.ui.WebDriverWait; public class PostIngestionTests { static WebDriver webDriver; + static Common common; static String url = Property.getInstance().getURL(); static Actions actions; static WebDriverWait wait; @@ -36,6 +37,7 @@ public class PostIngestionTests { options.addArguments("--headless"); options.addArguments("--window-size=1280,800"); webDriver = new ChromeDriver(options); + common = new Common(webDriver); actions = new Actions(webDriver); wait = new WebDriverWait(webDriver, Duration.ofSeconds(30)); webDriver.manage().window().maximize(); @@ -54,29 +56,29 @@ public class PostIngestionTests { @Test @Order(1) public void setOwner() throws InterruptedException { - Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new - Events.click(webDriver, By.cssSelector("[data-testid='appbar-item'][id='explore']")); // Explore - Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[3]")); // Dashboard + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.headerItem("explore")); + Events.click(webDriver, common.entityTabIndex(3)); Thread.sleep(waitTime); - Events.sendKeys(webDriver, By.cssSelector("[data-testid='searchBox']"), dashboard); - Events.click(webDriver, By.cssSelector("[data-testid='data-name'][id='sample_superset34']")); - Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[3]")); // Manage - Events.click(webDriver, By.cssSelector("[data-testid='owner-dropdown']")); // Owner - Events.sendKeys(webDriver, By.cssSelector("[data-testid='searchInputText']"), "Cloud"); - Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); // Select User/Team - Events.click(webDriver, By.cssSelector("[data-testid='saveManageTab']")); // Save + Events.sendKeys(webDriver, common.searchBar(), dashboard); + Events.click(webDriver, common.selectSuggestionSearch("sample_superset34")); + Events.click(webDriver, common.entityTabIndex(3)); + Events.click(webDriver, common.ownerDropdown()); + Events.sendKeys(webDriver, common.ownerSearchBox(), "Cloud"); + Events.click(webDriver, common.tagListItem()); + Events.click(webDriver, common.saveConnectionConfig()); } @Test @Order(2) public void checkOwnerPostIngestion() throws InterruptedException, IOException { ingestSampleDataPostTests(); - Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new - Events.click(webDriver, By.cssSelector("[data-testid='appbar-item'][id='explore']")); // Explore + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.headerItem("explore")); Thread.sleep(waitTime); - Events.sendKeys(webDriver, By.cssSelector("[data-testid='searchBox']"), dashboard); - Events.click(webDriver, By.cssSelector("[data-testid='data-name'][id='sample_superset34']")); - Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[3]")); // Manage - Events.click(webDriver, By.xpath("//*[contains(text(), 'Cloud_Infra')]")); + Events.sendKeys(webDriver, common.searchBar(), dashboard); + Events.click(webDriver, common.selectSuggestionSearch("sample_superset34")); + Events.click(webDriver, common.entityTabIndex(3)); + Events.click(webDriver, common.containsText("Cloud_Infra")); } } diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/UiExceptionHandling.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/UiExceptionHandling.java index cc4876d6856..101b67ccc72 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/UiExceptionHandling.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/UiExceptionHandling.java @@ -11,26 +11,25 @@ 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.Common; import org.openmetadata.catalog.selenium.properties.Property; -import org.openqa.selenium.By; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.devtools.DevTools; import org.openqa.selenium.devtools.v95.fetch.Fetch; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.ui.WebDriverWait; -import org.testng.Assert; @Order(16) @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class UiExceptionHandling { static ChromeDriver webDriver; + static Common common; static DevTools devTools; static String url = Property.getInstance().getURL(); static Actions actions; static WebDriverWait wait; - static String enterDescription = "//div[@data-testid='enterDescription']/div/div[2]/div/div/div/div/div/div"; static Faker faker = new Faker(); static String serviceName = faker.name().firstName(); String webDriverInstance = Property.getInstance().getWebDriver(); @@ -72,6 +71,7 @@ public class UiExceptionHandling { options.addArguments("--headless"); options.addArguments("--window-size=1280,800"); webDriver = new ChromeDriver(options); + common = new Common(webDriver); actions = new Actions(webDriver); wait = new WebDriverWait(webDriver, Duration.ofSeconds(30)); webDriver.manage().window().maximize(); @@ -82,77 +82,81 @@ public class UiExceptionHandling { @Test public void exceptionCheckForUserList() { interceptor("users", "testing"); - 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-Users']")); // Setting/Users - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + "Request failed with status code 400" + "')]]")); - Events.click(webDriver, By.cssSelector("[data-testid='dismiss']")); - Assert.assertEquals(400, 400); + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.headerSettings()); + Events.click(webDriver, common.headerSettingsMenu("Users")); + Events.click(webDriver, common.containsText("Request failed with status code 400")); + Events.click(webDriver, common.closeErrorMessage()); + // Assert.assertEquals(400, 400); } @Test public void exceptionCheckForGetServices() throws InterruptedException { interceptor("databaseService", "testing"); - 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, common.closeWhatsNew()); + Events.click(webDriver, common.headerSettings()); + Events.click(webDriver, common.headerSettingsMenu("Services")); Thread.sleep(2000); - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + "No services found" + "')]]")); - Assert.assertEquals(500, 500); + Events.click(webDriver, common.containsText("No services found")); + // Assert.assertEquals(500, 500); } @Test public void exceptionCheckFor() { interceptor("services/databaseServices", "services/testing"); - 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, common.closeWhatsNew()); // Close What's new + Events.click(webDriver, common.headerSettings()); // Setting + Events.click(webDriver, common.headerSettingsMenu("Services")); // Setting/Services } @Test public void exceptionCheckForPostService() { - 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.cssSelector("[data-testid='add-new-user-button']")); - 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, common.closeWhatsNew()); + Events.click(webDriver, common.headerSettings()); // Setting + Events.click(webDriver, common.headerSettingsMenu("Services")); // Setting/Services + Events.click(webDriver, common.noServicesAddServiceButton()); + Events.click(webDriver, common.serviceType("MySQL")); + Events.click(webDriver, common.nextButton()); + Events.sendKeys(webDriver, common.serviceName(), serviceName); + Events.click(webDriver, common.descriptionBoldButton()); + Events.sendKeys(webDriver, common.addDescriptionString(), faker.address().toString()); + Events.click(webDriver, common.nextButton()); + Events.sendKeys(webDriver, common.serviceUrl(), "localhost"); + Events.sendKeys(webDriver, common.servicePort(), "3306"); + Events.sendKeys(webDriver, common.serviceUsername(), "openmetadata_user"); + Events.sendKeys(webDriver, common.servicePassword(), "openmetadata_password"); + Events.sendKeys(webDriver, common.databaseName(), "openmetadata_db"); interceptor("services/databaseServices", "services/testing"); - Events.click(webDriver, By.cssSelector("[data-testid='save-button']")); - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + "Request failed with status code 500" + "')]]")); - Events.click(webDriver, By.cssSelector("[data-testid='dismiss']")); - Assert.assertEquals(500, 500); + Events.click(webDriver, common.nextButton()); + Events.click(webDriver, common.nextButton()); + Events.click(webDriver, common.saveServiceButton()); + // Assert.assertEquals(500, 500); } @Test public void exceptionCheckForUpdateService() { - 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.cssSelector("[data-testid='edit-service-" + "bigquery_gcp" + "']")); - Events.click(webDriver, By.xpath(enterDescription)); - Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString()); + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.headerSettings()); // Setting + Events.click(webDriver, common.headerSettingsMenu("Services")); // Setting/Services + Events.click(webDriver, common.containsText("bigquery_gcp")); + Events.click(webDriver, common.editTagCategoryDescription()); + Events.click(webDriver, common.addDescriptionString()); + Events.sendKeys(webDriver, common.addDescriptionString(), faker.address().toString()); interceptor("services/databaseServices", "services/testing"); - Events.click(webDriver, By.cssSelector("[data-testid='save-button']")); - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + "Request failed with status code 500" + "')]]")); - Events.click(webDriver, By.cssSelector("[data-testid='dismiss']")); - Assert.assertEquals(500, 500); + Events.click(webDriver, common.editDescriptionSaveButton()); + Events.click(webDriver, common.containsText("Request failed with status code 500")); + Events.click(webDriver, common.closeErrorMessage()); + // Assert.assertEquals(500, 500); } @Test public void exceptionCheckForDeleteService() { - 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.cssSelector("[data-testid='delete-service-" + "bigquery_gcp" + "']")); + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.headerSettings()); // Setting + Events.click(webDriver, common.headerSettingsMenu("Services")); // Setting/Services + Events.click(webDriver, common.deleteServiceButton("bigquery_gcp")); interceptor("services/databaseServices", "services/testing"); - Assert.assertEquals(500, 500); + // Assert.assertEquals(500, 500); } @AfterEach diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/databaseService/DatabaseServicePageTest.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/databaseService/DatabaseServicePageTest.java index c9ab5ccc09e..fd92aff5c53 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/databaseService/DatabaseServicePageTest.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/databaseService/DatabaseServicePageTest.java @@ -98,11 +98,11 @@ public class DatabaseServicePageTest { Events.click(webDriver, common.descriptionLinkButton()); Events.sendKeys(webDriver, common.addDescriptionString(), faker.address().toString()); Events.click(webDriver, common.nextButton()); - Events.sendKeys(webDriver, databaseServicePage.serviceUrl(), "localhost"); - Events.sendKeys(webDriver, databaseServicePage.servicePort(), "3306"); + Events.sendKeys(webDriver, common.serviceUrl(), "localhost"); + Events.sendKeys(webDriver, common.servicePort(), "3306"); Events.sendKeys(webDriver, common.serviceUsername(), "openmetadata_user"); Events.sendKeys(webDriver, common.servicePassword(), "openmetadata_password"); - Events.sendKeys(webDriver, databaseServicePage.databaseName(), "openmetadata_db"); + Events.sendKeys(webDriver, common.databaseName(), "openmetadata_db"); Events.click(webDriver, common.nextButton()); Events.click(webDriver, common.nextButton()); Events.click(webDriver, common.saveServiceButton()); @@ -149,7 +149,7 @@ public class DatabaseServicePageTest { Events.click(webDriver, common.serviceDetailsTabs("connectionConfig")); Events.sendKeys(webDriver, common.serviceUsername(), "1"); Events.sendKeys(webDriver, common.servicePassword(), "1"); - Events.sendKeys(webDriver, databaseServicePage.databaseName(), "1"); + Events.sendKeys(webDriver, common.databaseName(), "1"); Events.click(webDriver, common.saveConnectionConfig()); } diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/tags/TagsPageTest.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/tags/TagsPageTest.java index 94b984af66a..01581b16552 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/tags/TagsPageTest.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/tags/TagsPageTest.java @@ -148,12 +148,12 @@ public class TagsPageTest { Events.click(webDriver, common.containsText(tagCategoryDisplayName)); actions.moveToElement(webDriver.findElement(tagsPage.addAssociatedTagButton())).perform(); Events.click(webDriver, tagsPage.addAssociatedTagButton()); - Events.click(webDriver, tagsPage.enterAssociatedTagName()); + Events.click(webDriver, common.enterAssociatedTagName()); for (int i = 0; i <= 1; i++) { - Events.sendKeys(webDriver, tagsPage.enterAssociatedTagName(), "P"); - Events.click(webDriver, tagsPage.tagListItem()); + Events.sendKeys(webDriver, common.enterAssociatedTagName(), "P"); + Events.click(webDriver, common.tagListItem()); } - Events.click(webDriver, tagsPage.saveAssociatedTag()); + Events.click(webDriver, common.saveAssociatedTag()); } @Test @@ -166,25 +166,25 @@ public class TagsPageTest { for (int i = 0; i <= 1; i++) { Events.click(webDriver, tagsPage.removeAssociatedTag()); } - Events.click(webDriver, tagsPage.saveAssociatedTag()); + Events.click(webDriver, common.saveAssociatedTag()); } @Test @Order(8) public void addTagToTableColumn() throws InterruptedException { Events.click(webDriver, common.closeWhatsNew()); - Events.click(webDriver, tagsPage.headerExplore()); + Events.click(webDriver, common.headerItem("explore")); Events.click(webDriver, tagsPage.sortBy()); - Events.click(webDriver, tagsPage.tagListItem()); + Events.click(webDriver, common.tagListItem()); Events.click(webDriver, tagsPage.lastTableLink()); Thread.sleep(waitTime); actions.moveToElement(webDriver.findElement(tagsPage.addAssociatedTagButton())).perform(); Thread.sleep(waitTime); Events.click(webDriver, tagsPage.addAssociatedTagButton()); - Events.click(webDriver, tagsPage.enterAssociatedTagName()); - Events.sendKeys(webDriver, tagsPage.enterAssociatedTagName(), tagCategoryDisplayName + "." + tagDisplayName); - Events.click(webDriver, tagsPage.tagListItem()); - Events.click(webDriver, tagsPage.saveAssociatedTag()); + Events.click(webDriver, common.enterAssociatedTagName()); + Events.sendKeys(webDriver, common.enterAssociatedTagName(), tagCategoryDisplayName + "." + tagDisplayName); + Events.click(webDriver, common.tagListItem()); + Events.click(webDriver, common.saveAssociatedTag()); Events.click(webDriver, common.headerSettings()); Events.click(webDriver, tagsPage.headerSettingsTags()); Events.click(webDriver, common.containsText(tagCategoryDisplayName)); @@ -207,10 +207,9 @@ public class TagsPageTest { Events.click(webDriver, common.containsText(tagCategoryDisplayName)); Events.click(webDriver, tagsPage.tagUsageCount()); Events.click(webDriver, tagsPage.tableLink()); - // actions.moveToElement(webDriver.findElement(tagsPage.editAssociatedTagButton())).perform(); - Events.click(webDriver, tagsPage.editAssociatedTagButton()); + Events.click(webDriver, common.editAssociatedTagButton()); Events.click(webDriver, tagsPage.removeAssociatedTag()); - Events.click(webDriver, tagsPage.saveAssociatedTag()); + Events.click(webDriver, common.saveAssociatedTag()); } @Test @@ -221,13 +220,13 @@ public class TagsPageTest { Events.click(webDriver, tagsPage.addTagButton()); Events.sendKeys(webDriver, common.displayName(), "Personals"); Events.click(webDriver, common.descriptionSaveButton()); - Events.click(webDriver, tagsPage.headerExplore()); + Events.click(webDriver, common.headerItem("explore")); Events.click(webDriver, tagsPage.tableLink()); - Events.click(webDriver, tagsPage.editAssociatedTagButton()); - Events.click(webDriver, tagsPage.enterAssociatedTagName()); - Events.sendKeys(webDriver, tagsPage.enterAssociatedTagName(), "Personals"); - Events.click(webDriver, tagsPage.tagListItem()); - Events.click(webDriver, tagsPage.saveAssociatedTag()); + Events.click(webDriver, common.editAssociatedTagButton()); + Events.click(webDriver, common.enterAssociatedTagName()); + Events.sendKeys(webDriver, common.enterAssociatedTagName(), "Personals"); + Events.click(webDriver, common.tagListItem()); + Events.click(webDriver, common.saveAssociatedTag()); Events.click(webDriver, common.headerSettings()); Events.click(webDriver, tagsPage.headerSettingsTags()); Events.click(webDriver, common.containsText("PersonalData")); @@ -244,8 +243,8 @@ public class TagsPageTest { Events.click(webDriver, tagsPage.usageCountElementIndex(2)); Thread.sleep(2000); String beforeFilterCount = webDriver.findElement(tagsPage.tagFilterCount(1)).getAttribute("innerHTML"); - Events.click(webDriver, tagsPage.entityTabIndex(2)); - Events.click(webDriver, tagsPage.entityTabIndex(1)); + Events.click(webDriver, common.entityTabIndex(2)); + Events.click(webDriver, common.entityTabIndex(1)); String afterFilterCount = webDriver.findElement(tagsPage.tagFilterCount(1)).getAttribute("innerHTML"); Assert.assertEquals(afterFilterCount, beforeFilterCount); } @@ -258,9 +257,9 @@ public class TagsPageTest { Events.click(webDriver, common.containsText("PersonalData")); Events.click(webDriver, tagsPage.usageCountElementIndex(2)); Events.click(webDriver, tagsPage.tableLink()); - Events.click(webDriver, tagsPage.editAssociatedTagButton()); + Events.click(webDriver, common.editAssociatedTagButton()); Events.click(webDriver, tagsPage.removeAssociatedTag()); - Events.click(webDriver, tagsPage.saveAssociatedTag()); + Events.click(webDriver, common.saveAssociatedTag()); Events.click(webDriver, common.headerSettings()); Events.click(webDriver, tagsPage.headerSettingsTags()); Events.click(webDriver, common.containsText("PersonalData")); @@ -276,10 +275,10 @@ public class TagsPageTest { Events.click(webDriver, common.containsText("PersonalData")); actions.moveToElement(webDriver.findElement(tagsPage.addAssociatedTagButton())).perform(); Events.click(webDriver, tagsPage.addAssociatedTagButton()); - Events.click(webDriver, tagsPage.enterAssociatedTagName()); + Events.click(webDriver, common.enterAssociatedTagName()); try { - Events.sendKeys(webDriver, tagsPage.enterAssociatedTagName(), "PersonalData.Personal"); - WebElement sameTag = webDriver.findElement(tagsPage.tagListItem()); + Events.sendKeys(webDriver, common.enterAssociatedTagName(), "PersonalData.Personal"); + WebElement sameTag = webDriver.findElement(common.tagListItem()); if (sameTag.isDisplayed()) { Assert.fail(); }