From a455f98faef1ccbd1db74c2f81f3ce4ac685d534 Mon Sep 17 00:00:00 2001 From: kshinde2512 Date: Tue, 5 Apr 2022 14:14:50 +0530 Subject: [PATCH] Error handling for topic details --- .../TopicDetailsUIErrorHandlingTest.java | 273 ++++++++++++++++++ 1 file changed, 273 insertions(+) create mode 100644 openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/topicDetails/TopicDetailsUIErrorHandlingTest.java diff --git a/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/topicDetails/TopicDetailsUIErrorHandlingTest.java b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/topicDetails/TopicDetailsUIErrorHandlingTest.java new file mode 100644 index 00000000000..0fb816d74b1 --- /dev/null +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/pages/topicDetails/TopicDetailsUIErrorHandlingTest.java @@ -0,0 +1,273 @@ +package org.openmetadata.catalog.selenium.pages.topicDetails; + +import com.github.javafaker.Faker; +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +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; + +public class TopicDetailsUIErrorHandlingTest { + 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(); + 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 exceptionCheckForFetchTopicDetails() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.topics()); + interceptor.interceptor("/topics/name", "/testing/name"); + Events.click(webDriver, common.selectTableLink(1)); + Thread.sleep(2000); + String errorMessage = webDriver.findElement(toastMessage).getText(); + Assert.assertEquals(errorMessage, "Error while fetching topic 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.topics()); + Events.click(webDriver, common.selectTableLink(1)); + Events.click(webDriver, common.addTag()); + Events.sendKeys(webDriver, common.enterAssociatedTagName(), "P"); + Events.click(webDriver, common.tagListItem()); + interceptor.interceptor("/topics", "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.topics()); + 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.topics()); + 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.topics()); + 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.topics()); + Events.click(webDriver, common.selectTableLink(1)); + Events.click(webDriver, tableDetails.editDescriptionButton()); + Events.sendKeys(webDriver, tableDetails.editDescriptionBox(), "updatedDescription"); + interceptor.interceptor("/api/v1/topics", "/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.topics()); + 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/topics", "/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.topics()); + 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/topics", "/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 exceptionCheckForManage() throws InterruptedException { + Events.click(webDriver, common.closeWhatsNew()); + Events.click(webDriver, common.explore()); + Events.click(webDriver, common.topics()); + 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/topics", "/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(); + } +}