From a0045a437c25bbd9d91afcd998275783fb0bb4a4 Mon Sep 17 00:00:00 2001 From: parthp2107 <83201188+parthp2107@users.noreply.github.com> Date: Thu, 2 Dec 2021 12:47:52 +0530 Subject: [PATCH] added dbtmodel test cases and uncommented profiler test part (#1514) --- .../DbtModelDetailsPageTest.java | 157 ++++++++++++++++++ .../tableDetails/TableDetailsPageTest.java | 20 +-- 2 files changed, 167 insertions(+), 10 deletions(-) create mode 100644 openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/dbtModelDetails/DbtModelDetailsPageTest.java diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/dbtModelDetails/DbtModelDetailsPageTest.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/dbtModelDetails/DbtModelDetailsPageTest.java new file mode 100644 index 00000000000..68c3676931b --- /dev/null +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/dbtModelDetails/DbtModelDetailsPageTest.java @@ -0,0 +1,157 @@ +/* + * 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.dbtModelDetails; + +import com.github.javafaker.Faker; +import io.github.artsok.RepeatedIfExceptionsTest; +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.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 java.time.Duration; +import java.util.ArrayList; + +@Order(13) +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class DbtModelDetailsPageTest { + + static WebDriver webDriver; + static String url = Property.getInstance().getURL(); + static Faker faker = new Faker(); + 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(); + + @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); + } + + @RepeatedIfExceptionsTest(repeats = 2) + @Order(1) + public void openDbtModelPage() 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'])[5]")); // Dashboard + Thread.sleep(waitTime); + } + + @RepeatedIfExceptionsTest(repeats = 2) + @Order(2) + public void editDescription() throws InterruptedException { + openDbtModelPage(); + Events.click(webDriver, By.cssSelector("[data-testid='sortBy']")); // Sort By + Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); // Last Updated + Events.click(webDriver, By.xpath("(//a[@data-testid='table-link'])[last()]")); + Events.click(webDriver, By.cssSelector("[data-testid='edit-description']")); + Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString()); + Events.click(webDriver, By.cssSelector("[data-testid='save']")); + } + + @RepeatedIfExceptionsTest(repeats = 2) + @Order(3) + public void editColumnDescription() throws InterruptedException { + openDbtModelPage(); + Events.click(webDriver, By.cssSelector("[data-testid='sortBy']")); // Sort By + Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); // Last Updated + Events.click(webDriver, By.xpath("(//a[@data-testid='table-link'])[1]")); + Thread.sleep(waitTime); + actions.moveToElement(webDriver.findElement(By.xpath("//div[@data-testid='description']/button"))).perform(); + Events.click(webDriver, By.xpath("//div[@data-testid='description']/button")); + Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString()); + Events.click(webDriver, By.cssSelector("[data-testid='save']")); + } + + @RepeatedIfExceptionsTest(repeats = 2) + @Order(4) + public void addColumnTag() throws InterruptedException { + openDbtModelPage(); + Events.click(webDriver, By.cssSelector("[data-testid='sortBy']")); // Sort By + Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); // Last Updated + Events.click(webDriver, By.xpath("(//a[@data-testid='table-link'])[1]")); + Thread.sleep(waitTime); + Events.click(webDriver, By.cssSelector("[data-testid='tags']")); + Events.click(webDriver, By.cssSelector("[data-testid='associatedTagName']")); + for (int i = 1; i <= 2; i++) { + Events.sendKeys(webDriver, By.cssSelector("[data-testid='associatedTagName']"), "P"); + Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); + } + Events.click(webDriver, By.cssSelector("[data-testid='saveAssociatedTag']")); + webDriver.navigate().back(); + webDriver.navigate().refresh(); + } + + @RepeatedIfExceptionsTest(repeats = 2) + @Order(5) + public void removeColumnTag() throws InterruptedException { + openDbtModelPage(); + Events.click(webDriver, By.cssSelector("[data-testid='sortBy']")); // Sort By + Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); // Last Updated + Events.click(webDriver, By.xpath("(//a[@data-testid='table-link'])[1]")); + Events.click(webDriver, By.cssSelector("[data-testid='tag-conatiner']")); + Events.click(webDriver, By.cssSelector("[data-testid='remove']")); + Events.click(webDriver, By.cssSelector("[data-testid='remove']")); + Events.click(webDriver, By.cssSelector("[data-testid='saveAssociatedTag']")); + } + + @RepeatedIfExceptionsTest(repeats = 2) + @Order(6) + public void checkManage() throws InterruptedException { + openDbtModelPage(); + Events.click(webDriver, By.cssSelector("[data-testid='sortBy']")); // Sort By + Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); // Last Updated + Events.click(webDriver, By.xpath("(//a[@data-testid='table-link'])[last()]")); + Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[2]")); + Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[3]")); + 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='card-list']")); // Select Tier + Events.click(webDriver, By.cssSelector("[data-testid='saveManageTab']")); // Save + webDriver.navigate().back(); + webDriver.navigate().refresh(); + } + + @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/tableDetails/TableDetailsPageTest.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/tableDetails/TableDetailsPageTest.java index 2e5f52dbc9b..34e2aeae050 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 @@ -156,16 +156,16 @@ public class TableDetailsPageTest { 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 -// for (int i = 1; i <= 4; i++) { -// Events.click( -// webDriver, By.xpath("(//td[@data-testid='tableBody-cell']//span)" + "[" + i + "]")); // Profiler -// actions.moveToElement( -// webDriver.findElement(By.xpath("(//tr[@data-testid='tableBody-row']//td" + "[" + i + "]" + ")"))) -// .perform(); -// Events.click( -// webDriver, By.xpath("(//td[@data-testid='tableBody-cell']//span)" + "[" + i + "]")); // Profiler -// Thread.sleep(waitTime); -// } + for (int i = 1; i <= 4; i++) { + Events.click( + webDriver, By.xpath("(//td[@data-testid='tableBody-cell']//span)" + "[" + i + "]")); // Profiler + actions.moveToElement( + webDriver.findElement(By.xpath("(//tr[@data-testid='tableBody-row']//td" + "[" + i + "]" + ")"))) + .perform(); + Events.click( + webDriver, By.xpath("(//td[@data-testid='tableBody-cell']//span)" + "[" + i + "]")); // Profiler + Thread.sleep(waitTime); + } } @RepeatedIfExceptionsTest(repeats = 2)