From 783cbb46de0224a4fae35a128f1be54d75d07628 Mon Sep 17 00:00:00 2001 From: parthp2107 <83201188+parthp2107@users.noreply.github.com> Date: Mon, 10 Jan 2022 11:25:33 +0530 Subject: [PATCH] added test for tag duplication (#2096) * added test for tag dublication * minor changes * java style-check changes * minor fixing in tests * test fixes * minor change --- .../selenium/pages/common/CommonTests.java | 92 +++++++++++++++++++ .../pages/common/PaginationAndFilterTest.java | 1 + .../MessagingServicePageTest.java | 1 + .../selenium/pages/myData/MyDataPageTest.java | 2 +- .../tableDetails/TableDetailsPageTest.java | 14 +-- .../selenium/pages/teams/TeamsPageTest.java | 2 +- 6 files changed, 103 insertions(+), 9 deletions(-) create mode 100644 openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/CommonTests.java diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/CommonTests.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/CommonTests.java new file mode 100644 index 00000000000..83d60c0f7a0 --- /dev/null +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/common/CommonTests.java @@ -0,0 +1,92 @@ +/* + * Copyright 2021 Collate + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openmetadata.catalog.selenium.pages.common; + +import java.time.Duration; +import java.util.ArrayList; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.MethodOrderer; +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.properties.Property; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Assert; + +@Order(17) +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class CommonTests { + + static WebDriver webDriver; + static String url = Property.getInstance().getURL(); + static Actions actions; + static WebDriverWait wait; + Integer waitTime = Property.getInstance().getSleepTime(); + + @BeforeEach + public void openMetadataWindow() { + System.setProperty("webdriver.chrome.driver", "src/test/resources/drivers/linux/chromedriver"); + ChromeOptions options = new ChromeOptions(); + options.addArguments("--headless"); + options.addArguments("--window-size=1280,800"); + webDriver = new ChromeDriver(options); + actions = new Actions(webDriver); + wait = new WebDriverWait(webDriver, Duration.ofSeconds(30)); + webDriver.manage().window().maximize(); + webDriver.get(url); + } + + @Test + @Order(1) + public void tagDuplicationCheck() throws InterruptedException { + Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new + Thread.sleep(waitTime); + Events.click(webDriver, By.cssSelector("[data-testid='tables']")); // Tables + Events.sendKeys(webDriver, By.cssSelector("[data-testid='searchBox']"), "dim_location"); + Events.click(webDriver, By.cssSelector("[data-testid='data-name']")); + 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']")); + Events.sendKeys(webDriver, By.cssSelector("[data-testid='associatedTagName']"), "PersonalData.Personal"); + Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); + Events.sendKeys(webDriver, By.cssSelector("[data-testid='associatedTagName']"), "User.FacePhoto"); + Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); + Events.click(webDriver, By.cssSelector("[data-testid='saveAssociatedTag']")); + Thread.sleep(2000); + Object tagCount = + webDriver.findElements(By.xpath("//*[text()[contains(.,'" + "#PersonalData.Personal" + "')]] ")).size(); + Assert.assertEquals(tagCount, 2); + } + + @AfterEach + public void closeTabs() { + ArrayList tabs = new ArrayList<>(webDriver.getWindowHandles()); + String originalHandle = webDriver.getWindowHandle(); + for (String handle : webDriver.getWindowHandles()) { + if (!handle.equals(originalHandle)) { + webDriver.switchTo().window(handle); + webDriver.close(); + } + } + webDriver.switchTo().window(tabs.get(0)).close(); + } +} 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 07b639854d3..f06cf48e72c 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 @@ -175,6 +175,7 @@ public class PaginationAndFilterTest { } Events.click(webDriver, By.cssSelector("[data-testid='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); 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 d5739443957..2d493319307 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 @@ -50,6 +50,7 @@ public class MessagingServicePageTest { System.setProperty("webdriver.chrome.driver", "src/test/resources/drivers/linux/chromedriver"); ChromeOptions options = new ChromeOptions(); options.addArguments("--headless"); + options.addArguments("--window-size=1280,800"); webDriver = new ChromeDriver(options); actions = new Actions(webDriver); wait = new WebDriverWait(webDriver, Duration.ofSeconds(30)); diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/myData/MyDataPageTest.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/myData/MyDataPageTest.java index f3d6d29b7ea..5ca5712aa9d 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/myData/MyDataPageTest.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/myData/MyDataPageTest.java @@ -138,7 +138,7 @@ public class MyDataPageTest { Events.click(webDriver, By.cssSelector("[data-testid='tables']")); // Tables Events.sendKeys(webDriver, By.cssSelector("[data-testid='searchBox']"), table); Events.click(webDriver, By.cssSelector("[data-testid='data-name'][id='bigquery_gcpshopifydim_product_variant']")); - Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[4]")); // Manage + Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[5]")); // Manage Events.click(webDriver, By.cssSelector("[data-testid='owner-dropdown']")); // Owner Events.click(webDriver, By.xpath("//div[@data-testid='dropdown-list']//div[2]//button[2]")); Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); // Select User/Team diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/tableDetails/TableDetailsPageTest.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/tableDetails/TableDetailsPageTest.java index d4931dbbd70..74035e57ccf 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/tableDetails/TableDetailsPageTest.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/tableDetails/TableDetailsPageTest.java @@ -72,9 +72,10 @@ public class TableDetailsPageTest { openExplorePage(); Events.sendKeys(webDriver, By.cssSelector("[data-testid='searchBox']"), tableName); Events.click(webDriver, By.cssSelector("[data-testid='data-name']")); - Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[2]")); // Profiler - Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[3]")); // Lineage - Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[4]")); // Manage + Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[2]")); // Sample Data + Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[3]")); // Profiler + Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[4]")); // Lineage + Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[5]")); // Manage } @Test @@ -178,7 +179,6 @@ public class TableDetailsPageTest { Events.click(webDriver, By.cssSelector("[data-testid='getFollowerDetail']")); Events.click(webDriver, By.cssSelector("[data-testid='follow-button']")); Events.click(webDriver, By.cssSelector("[data-testid='getFollowerDetail']")); - Events.click(webDriver, By.cssSelector("[data-testid='sample-data-button']")); } @Test @@ -187,7 +187,7 @@ public class TableDetailsPageTest { openExplorePage(); Events.sendKeys(webDriver, By.cssSelector("[data-testid='searchBox']"), tableName); Events.click(webDriver, By.cssSelector("[data-testid='data-name']")); - Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[2]")); // Profiler + Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[3]")); // Profiler for (int i = 1; i <= 4; i++) { Events.click(webDriver, By.xpath("(//td[@data-testid='tableBody-cell']//span)" + "[" + i + "]")); // Profiler actions @@ -207,7 +207,7 @@ public class TableDetailsPageTest { Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); // Last Updated Thread.sleep(3000); Events.click(webDriver, By.xpath("(//button[@data-testid='table-link'])[last()]")); - Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[4]")); // Manage + Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[5]")); // 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 @@ -223,7 +223,7 @@ public class TableDetailsPageTest { openExplorePage(); Events.sendKeys(webDriver, By.cssSelector("[data-testid='searchBox']"), tableName); Events.click(webDriver, By.cssSelector("[data-testid='data-name']")); - Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[3]")); + Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[4]")); for (int i = 1; i <= 3; i++) { WebElement lineageEntity = webDriver.findElement(By.xpath("(//span[@data-testid='lineage-entity'])" + "[" + i + "]")); diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/teams/TeamsPageTest.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/teams/TeamsPageTest.java index 0d7da24196c..0c4377a3fb9 100644 --- a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/teams/TeamsPageTest.java +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/teams/TeamsPageTest.java @@ -119,7 +119,7 @@ public class TeamsPageTest { Events.click(webDriver, By.cssSelector("[data-testid='sortBy']")); // Sort By Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); // Last Updated // Last Updated Events.click(webDriver, By.xpath("(//button[@data-testid='table-link'])[last()]")); - Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[4]")); // Manage + Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[5]")); // Manage Events.click(webDriver, By.cssSelector("[data-testid='owner-dropdown']")); // Owner Events.sendKeys(webDriver, By.cssSelector("[data-testid='searchInputText']"), teamDisplayName); Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); // Select User/Team