From 11c41b47d23a0f671f8ebf19bb604137219dbc2e Mon Sep 17 00:00:00 2001 From: kshinde2512 <67048554+kshinde2512@users.noreply.github.com> Date: Sat, 9 Apr 2022 00:39:43 +0530 Subject: [PATCH] Dashboard and Pipeline details error handling (#3858) --- .../selenium/objectRepository/Common.java | 2 + .../DashboardDetailsUIErrorHandlingTest.java | 290 ++++++++++++++++++ .../PipelineDetailsUIErrorHandlingTest.java | 290 ++++++++++++++++++ 3 files changed, 582 insertions(+) create mode 100644 openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/dashboardDetails/DashboardDetailsUIErrorHandlingTest.java create mode 100644 openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/pipelineDetails/PipelineDetailsUIErrorHandlingTest.java 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 c504e4cb10a..5ef4cb3ee4d 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 @@ -79,6 +79,8 @@ public class Common { By version = By.xpath("//button[@data-testid=\"version-button\"]"); By versionRadioButton = By.xpath("//span[@data-testid=\"select-version\"]"); By topics = By.xpath("(//button[@data-testid='tab'])[2]"); + By dashboard = By.xpath("(//button[@data-testid='tab'])[3]"); + By pipeline = By.xpath("(//button[@data-testid='tab'])[4]"); By selectTable = By.xpath("(//button[@data-testid=\"table-link\"])[1]"); By addTag = By.xpath("(//div[@data-testid='tag-container'])[1]"); By breadCrumbTags = By.xpath("(//span[@data-testid='tags'])"); diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/dashboardDetails/DashboardDetailsUIErrorHandlingTest.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/dashboardDetails/DashboardDetailsUIErrorHandlingTest.java new file mode 100644 index 00000000000..f5788989582 --- /dev/null +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/dashboardDetails/DashboardDetailsUIErrorHandlingTest.java @@ -0,0 +1,290 @@ +package org.openmetadata.catalog.selenium.pages.dashboardDetails; + +import com.github.javafaker.Faker; +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; +import org.junit.jupiter.api.*; +import org.openmetadata.catalog.selenium.events.Events; +import org.openmetadata.catalog.selenium.objectRepository.Common; +import org.openmetadata.catalog.selenium.objectRepository.TableDetails; +import org.openmetadata.catalog.selenium.pages.common.Interceptor; +import org.openmetadata.catalog.selenium.properties.Property; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.devtools.DevTools; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Assert; + +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class DashboardDetailsUIErrorHandlingTest { + static ChromeDriver webDriver; + static Common common; + static TableDetails tableDetails; + static DevTools devTools; + static Interceptor interceptor; + static String url = Property.getInstance().getURL(); + static Actions actions; + static WebDriverWait wait; + static Faker faker = new Faker(); + static String serviceName = faker.name().firstName(); + String webDriverInstance = Property.getInstance().getWebDriver(); + String webDriverPath = Property.getInstance().getWebDriverPath(); + static By toastMessage = By.cssSelector("[data-testid='toast']"); + List checkTabs = new ArrayList<>(); + WebElement explore; + WebElement headerSettings; + WebElement version; + WebElement follow; + + @BeforeEach + public void openMetadataWindow() { + System.setProperty(webDriverInstance, webDriverPath); + ChromeOptions options = new ChromeOptions(); + options.addArguments("--headless"); + options.addArguments("--window-size=1280,800"); + webDriver = new ChromeDriver(options); + common = new Common(webDriver); + devTools = webDriver.getDevTools(); + interceptor = new Interceptor(devTools); + tableDetails = new TableDetails(webDriver); + actions = new Actions(webDriver); + wait = new WebDriverWait(webDriver, Duration.ofSeconds(30)); + webDriver.manage().window().maximize(); + webDriver.get(url); + } + + void assertElements() { + explore = webDriver.findElement(common.explore()); + Assert.assertTrue(explore.isDisplayed()); + headerSettings = webDriver.findElement(common.headerSettings()); + Assert.assertTrue(headerSettings.isDisplayed()); + version = webDriver.findElement(common.version()); + Assert.assertTrue(version.isDisplayed()); + follow = webDriver.findElement(common.follow()); + Assert.assertTrue(follow.isDisplayed()); + } + + @Test + @Order(1) + void exceptionCheckForFetchDashboardDetails() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.dashboard()); + interceptor.interceptor("/dashboards/name", "/testing/name"); + Events.click(webDriver, common.selectTableLink(1)); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while fetching dashboard details!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(2) + void exceptionCheckForAddTags() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.dashboard()); + Events.click(webDriver, common.selectTableLink(1)); + Events.click(webDriver, common.addTag()); + Events.sendKeys(webDriver, common.enterAssociatedTagName(), "P"); + Events.click(webDriver, common.tagListItem()); + interceptor.interceptor("/dashboard", "testing"); + Events.click(webDriver, common.saveAssociatedTag()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while updating tags!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(3) + void exceptionCheckForCreateConversation() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.dashboard()); + Events.click(webDriver, common.selectTableLink(1)); + Thread.sleep(2000); + Events.click(webDriver, tableDetails.openTagConversationThread()); + Events.click(webDriver, tableDetails.addConversation()); + Events.click(webDriver, tableDetails.conversationBox()); + Events.sendKeys(webDriver, tableDetails.conversationBox(), "@"); + Events.click(webDriver, tableDetails.select("@aaron_johnson0")); + interceptor.interceptor("/feed", "/test"); + Events.click(webDriver, tableDetails.sendButton()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while creating conversation!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(4) + void exceptionCheckForFetchConversationThreads() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.dashboard()); + Events.click(webDriver, common.selectTableLink(1)); + interceptor.interceptor("/feed", "/test"); + Events.click(webDriver, tableDetails.openTagConversationThread()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while fetching threads!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(5) + void exceptionCheckForAddFeed() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.dashboard()); + Events.click(webDriver, common.selectTableLink(1)); + Events.click(webDriver, tableDetails.openTagConversationThread()); + Events.click(webDriver, tableDetails.mainMessageReply()); + Events.click(webDriver, tableDetails.conversationBox()); + Events.sendKeys(webDriver, tableDetails.conversationBox(), "Message"); + interceptor.interceptor("/feed", "/test"); + Events.click(webDriver, tableDetails.sendButton()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while adding feed!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(6) + void exceptionCheckForUpdatingDescription() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.dashboard()); + Events.click(webDriver, common.selectTableLink(1)); + Events.click(webDriver, tableDetails.editDescriptionButton()); + Events.sendKeys(webDriver, tableDetails.editDescriptionBox(), "updatedDescription"); + interceptor.interceptor("/api/v1/dashboards", "/api/v1/test"); + Events.click(webDriver, tableDetails.saveTableDescription()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while updating description!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(7) + void exceptionCheckForUnfollow() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.dashboard()); + Events.click(webDriver, common.selectTableLink(1)); + Thread.sleep(1000); + String follow = webDriver.findElement(common.follow()).getText(); + if (follow.equals("Follow")) { + Events.click(webDriver, common.follow()); + } + interceptor.interceptor("/api/v1/dashboards", "/api/v1/test"); + Events.click(webDriver, common.follow()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while unfollowing entity!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(8) + void exceptionCheckForFollow() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.dashboard()); + Events.click(webDriver, common.selectTableLink(1)); + Thread.sleep(1000); + String follow = webDriver.findElement(common.follow()).getText(); + if (follow.equals("Unfollow")) { + Events.click(webDriver, common.follow()); + } + interceptor.interceptor("/api/v1/dashboards", "/api/v1/test"); + Events.click(webDriver, common.follow()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while following entity!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(9) + void exceptionCheckForFetchLineage() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.dashboard()); + Events.click(webDriver, common.selectTableLink(1)); + interceptor.interceptor("/api/v1/lineage/dashboard/name", "/api/v1/test/dashboard/name"); + Events.click(webDriver, tableDetails.lineage()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while fetching lineage data!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(10) + void exceptionCheckForManage() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.dashboard()); + Events.click(webDriver, common.selectTableLink(1)); + Events.click(webDriver, tableDetails.manage()); + Events.click(webDriver, tableDetails.owner()); + Events.click(webDriver, tableDetails.selectUser()); + interceptor.interceptor("/api/v1/dashboards", "/api/v1/test"); + Events.click(webDriver, tableDetails.saveManage()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while updating entity!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @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/pipelineDetails/PipelineDetailsUIErrorHandlingTest.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/pipelineDetails/PipelineDetailsUIErrorHandlingTest.java new file mode 100644 index 00000000000..7504b9a8d7e --- /dev/null +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/pipelineDetails/PipelineDetailsUIErrorHandlingTest.java @@ -0,0 +1,290 @@ +package org.openmetadata.catalog.selenium.pages.pipelineDetails; + +import com.github.javafaker.Faker; +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; +import org.junit.jupiter.api.*; +import org.openmetadata.catalog.selenium.events.Events; +import org.openmetadata.catalog.selenium.objectRepository.Common; +import org.openmetadata.catalog.selenium.objectRepository.TableDetails; +import org.openmetadata.catalog.selenium.pages.common.Interceptor; +import org.openmetadata.catalog.selenium.properties.Property; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.devtools.DevTools; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Assert; + +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class PipelineDetailsUIErrorHandlingTest { + static ChromeDriver webDriver; + static Common common; + static TableDetails tableDetails; + static DevTools devTools; + static Interceptor interceptor; + static String url = Property.getInstance().getURL(); + static Actions actions; + static WebDriverWait wait; + static Faker faker = new Faker(); + static String serviceName = faker.name().firstName(); + String webDriverInstance = Property.getInstance().getWebDriver(); + String webDriverPath = Property.getInstance().getWebDriverPath(); + static By toastMessage = By.cssSelector("[data-testid='toast']"); + List checkTabs = new ArrayList<>(); + WebElement explore; + WebElement headerSettings; + WebElement version; + WebElement follow; + + @BeforeEach + public void openMetadataWindow() { + System.setProperty(webDriverInstance, webDriverPath); + ChromeOptions options = new ChromeOptions(); + options.addArguments("--headless"); + options.addArguments("--window-size=1280,800"); + webDriver = new ChromeDriver(options); + common = new Common(webDriver); + devTools = webDriver.getDevTools(); + interceptor = new Interceptor(devTools); + tableDetails = new TableDetails(webDriver); + actions = new Actions(webDriver); + wait = new WebDriverWait(webDriver, Duration.ofSeconds(30)); + webDriver.manage().window().maximize(); + webDriver.get(url); + } + + void assertElements() { + explore = webDriver.findElement(common.explore()); + Assert.assertTrue(explore.isDisplayed()); + headerSettings = webDriver.findElement(common.headerSettings()); + Assert.assertTrue(headerSettings.isDisplayed()); + version = webDriver.findElement(common.version()); + Assert.assertTrue(version.isDisplayed()); + follow = webDriver.findElement(common.follow()); + Assert.assertTrue(follow.isDisplayed()); + } + + @Test + @Order(1) + void exceptionCheckForFetchDashboardDetails() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.pipeline()); + interceptor.interceptor("/pipelines/name", "/testing/name"); + Events.click(webDriver, common.selectTableLink(1)); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while fetching pipeline details!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(2) + void exceptionCheckForAddTags() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.pipeline()); + Events.click(webDriver, common.selectTableLink(1)); + Events.click(webDriver, common.addTag()); + Events.sendKeys(webDriver, common.enterAssociatedTagName(), "P"); + Events.click(webDriver, common.tagListItem()); + interceptor.interceptor("/pipelines", "testing"); + Events.click(webDriver, common.saveAssociatedTag()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while updating tags!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(3) + void exceptionCheckForCreateConversation() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.pipeline()); + Events.click(webDriver, common.selectTableLink(1)); + Thread.sleep(2000); + Events.click(webDriver, tableDetails.openTagConversationThread()); + Events.click(webDriver, tableDetails.addConversation()); + Events.click(webDriver, tableDetails.conversationBox()); + Events.sendKeys(webDriver, tableDetails.conversationBox(), "@"); + Events.click(webDriver, tableDetails.select("@aaron_johnson0")); + interceptor.interceptor("/feed", "/test"); + Events.click(webDriver, tableDetails.sendButton()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while creating conversation!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(4) + void exceptionCheckForFetchConversationThreads() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.pipeline()); + Events.click(webDriver, common.selectTableLink(1)); + interceptor.interceptor("/feed", "/test"); + Events.click(webDriver, tableDetails.openTagConversationThread()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while fetching threads!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(5) + void exceptionCheckForAddFeed() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.pipeline()); + Events.click(webDriver, common.selectTableLink(1)); + Events.click(webDriver, tableDetails.openTagConversationThread()); + Events.click(webDriver, tableDetails.mainMessageReply()); + Events.click(webDriver, tableDetails.conversationBox()); + Events.sendKeys(webDriver, tableDetails.conversationBox(), "Message"); + interceptor.interceptor("/feed", "/test"); + Events.click(webDriver, tableDetails.sendButton()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while adding feed!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(6) + void exceptionCheckForUpdatingDescription() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.pipeline()); + Events.click(webDriver, common.selectTableLink(1)); + Events.click(webDriver, tableDetails.editDescriptionButton()); + Events.sendKeys(webDriver, tableDetails.editDescriptionBox(), "updatedDescription"); + interceptor.interceptor("/api/v1/pipelines", "/api/v1/test"); + Events.click(webDriver, tableDetails.saveTableDescription()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while updating description!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(7) + void exceptionCheckForUnfollow() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.pipeline()); + Events.click(webDriver, common.selectTableLink(1)); + Thread.sleep(1000); + String follow = webDriver.findElement(common.follow()).getText(); + if (follow.equals("Follow")) { + Events.click(webDriver, common.follow()); + } + interceptor.interceptor("/api/v1/pipelines", "/api/v1/test"); + Events.click(webDriver, common.follow()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while unfollowing entity!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(8) + void exceptionCheckForFollow() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.pipeline()); + Events.click(webDriver, common.selectTableLink(1)); + Thread.sleep(1000); + String follow = webDriver.findElement(common.follow()).getText(); + if (follow.equals("Unfollow")) { + Events.click(webDriver, common.follow()); + } + interceptor.interceptor("/api/v1/pipelines", "/api/v1/test"); + Events.click(webDriver, common.follow()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while following entity!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(9) + void exceptionCheckForFetchLineage() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.pipeline()); + Events.click(webDriver, common.selectTableLink(1)); + interceptor.interceptor("/api/v1/lineage/pipeline/name", "/api/v1/test/pipeline/name"); + Events.click(webDriver, tableDetails.lineage()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while fetching lineage data!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @Test + @Order(10) + void exceptionCheckForManage() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.pipeline()); + Events.click(webDriver, common.selectTableLink(1)); + Events.click(webDriver, tableDetails.manage()); + Events.click(webDriver, tableDetails.owner()); + Events.click(webDriver, tableDetails.selectUser()); + interceptor.interceptor("/api/v1/pipelines", "/api/v1/test"); + Events.click(webDriver, tableDetails.saveManage()); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while updating entity!"); + checkTabs = tableDetails.checkTabs(); + for (WebElement e : checkTabs) { + Assert.assertTrue(e.isDisplayed()); + } + } + + @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(); + } +}