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 new file mode 100644 index 00000000000..fab8b592357 --- /dev/null +++ b/openmetadata-ui/src/test/java/org/openmetadata/catalog/selenium/objectRepository/TagsPage.java @@ -0,0 +1,185 @@ +/* + * 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.objectRepository; + +import org.openqa.selenium.By; +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; + } + + By closeWhatsNew = By.cssSelector("[data-testid='closeWhatsNew']"); + By addTagCategory = By.cssSelector("[data-testid='add-category']"); + By displayName = By.name("name"); + By descriptionBoldButton = By.cssSelector("[data-testid='boldButton']"); + By descriptionItalicButton = By.cssSelector("[data-testid='italicButton']"); + By descriptionLinkButton = By.cssSelector("[data-testid='linkButton']"); + By descriptionSaveButton = By.cssSelector("[data-testid='saveButton']"); + By addDescriptionString = By.xpath(enterDescription); + By editTagCategoryDescription = By.cssSelector("[data-testid='edit-description']"); + By editDescriptionSaveButton = By.cssSelector("[data-testid='save']"); + 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 headerSettings = By.cssSelector("[data-testid='menu-button'][id='menu-button-Settings']"); + 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() { + return addTagCategory; + } + + public By displayName() { + return displayName; + } + + public By descriptionBoldButton() { + return descriptionBoldButton; + } + + public By descriptionItalicButton() { + return descriptionItalicButton; + } + + public By descriptionLinkButton() { + return descriptionLinkButton; + } + + public By descriptionSaveButton() { + return descriptionSaveButton; + } + + public By addDescriptionString() { + return addDescriptionString; + } + + public By editTagCategoryDescription() { + return editTagCategoryDescription; + } + + public By editDescriptionSaveButton() { + return editDescriptionSaveButton; + } + + public By containsText(String matchingText) { + return By.xpath("//*[text()[contains(.,'" + matchingText + "')]] "); + } + + public By addTagButton() { + return addTagButton; + } + + public By editTagDescription() { + return editTagDescription; + } + + public By addAssociatedTagButton() { + return addAssociatedTagButton; + } + + public By enterAssociatedTagName() { + return enterAssociatedTagName; + } + + public By tagListItem() { + return tagListItem; + } + + public By saveAssociatedTag() { + return saveAssociatedTag; + } + + public By removeAssociatedTag() { + return removeAssociatedTag; + } + + public By closeWhatsNew() { + return closeWhatsNew; + } + + public By tables() { + return tables; + } + + public By tagFilter(String tagCategoryDisplayName, String tagDisplayName) { + return By.cssSelector("[data-testid='checkbox'][id='" + tagCategoryDisplayName + "." + tagDisplayName + "']"); + } + + public By tableLink() { + return tableLink; + } + + public By lastTableLink() { + return lastTableLink; + } + + public By tagUsageCount() { + return tagUsageCount; + } + + public By editAssociatedTagButton() { + return editAssociatedTagButton; + } + + public By usageCountElementIndex(int index) { + return By.xpath("(//a[@data-testid='usage-count'])[" + index + "]"); + } + + public By headerSettings() { + return headerSettings; + } + + public By headerSettingsTags() { + return headerSettingsTags; + } + + public By spanTagUsageCountElementIndex(int index) { + return By.xpath("(//div[@data-testid='usage'])[" + index + "]/span[@data-testid='usage-count']"); + } + + public By aTagUsageCountElementIndex(int index) { + return By.xpath("(//div[@data-testid='usage'])[" + index + "]/a[@data-testid='usage-count']"); + } + + public By tagFilterCount(int index) { + 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 sortBy() { + return sortBy; + } +} 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 3fa0ad8b34b..d65ab1c7780 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 @@ -24,16 +24,15 @@ 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.TagsPage; import org.openmetadata.catalog.selenium.pages.myData.MyDataPageTest; import org.openmetadata.catalog.selenium.properties.Property; -import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.interactions.Actions; -import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.Assert; @@ -44,6 +43,7 @@ public class TagsPageTest { private static final Logger LOG = Logger.getLogger(MyDataPageTest.class.getName()); static WebDriver webDriver; + static TagsPage tagsPage; static String url = Property.getInstance().getURL(); static Faker faker = new Faker(); static String tagCategoryDisplayName = faker.name().firstName(); @@ -60,6 +60,7 @@ public class TagsPageTest { options.addArguments("--headless"); options.addArguments("--window-size=1280,800"); webDriver = new ChromeDriver(options); + tagsPage = new TagsPage(webDriver); actions = new Actions(webDriver); wait = new WebDriverWait(webDriver, Duration.ofSeconds(30)); webDriver.manage().window().maximize(); @@ -69,9 +70,9 @@ public class TagsPageTest { @Test @Order(1) public void openTagsPage() throws InterruptedException { - 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-Tags']")); // Setting/Tags + Events.click(webDriver, tagsPage.closeWhatsNew()); + Events.click(webDriver, tagsPage.headerSettings()); + Events.click(webDriver, tagsPage.headerSettingsTags()); Thread.sleep(waitTime); } @@ -79,171 +80,154 @@ public class TagsPageTest { @Order(2) public void addTagCategory() throws InterruptedException { openTagsPage(); - Events.click(webDriver, By.cssSelector("[data-testid='add-category']")); - wait.until(ExpectedConditions.elementToBeClickable(webDriver.findElement(By.name("name")))); - Events.sendKeys(webDriver, By.name("name"), tagCategoryDisplayName); - Events.click(webDriver, By.cssSelector("[data-testid='boldButton']")); - Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString()); - Events.click(webDriver, By.xpath(enterDescription)); - Events.sendEnter(webDriver, By.xpath(enterDescription)); - Events.click(webDriver, By.cssSelector("[data-testid='italicButton']")); - Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString()); - Events.click(webDriver, By.xpath(enterDescription)); - Events.sendEnter(webDriver, By.xpath(enterDescription)); - Events.click(webDriver, By.cssSelector("[data-testid='linkButton']")); - Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString()); - Events.click(webDriver, By.cssSelector("[data-testid='saveButton']")); + Events.click(webDriver, tagsPage.addTagCategory()); + Events.sendKeys(webDriver, tagsPage.displayName(), tagCategoryDisplayName); + Events.click(webDriver, tagsPage.descriptionBoldButton()); + Events.sendKeys(webDriver, tagsPage.addDescriptionString(), faker.address().toString()); + Events.click(webDriver, tagsPage.addDescriptionString()); + Events.sendEnter(webDriver, tagsPage.addDescriptionString()); + Events.click(webDriver, tagsPage.descriptionItalicButton()); + Events.sendKeys(webDriver, tagsPage.addDescriptionString(), faker.address().toString()); + Events.click(webDriver, tagsPage.addDescriptionString()); + Events.sendEnter(webDriver, tagsPage.addDescriptionString()); + Events.click(webDriver, tagsPage.descriptionLinkButton()); + Events.sendKeys(webDriver, tagsPage.addDescriptionString(), faker.address().toString()); + Events.click(webDriver, tagsPage.descriptionSaveButton()); } @Test @Order(3) public void editTagCategoryDescription() throws InterruptedException { openTagsPage(); - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + tagCategoryDisplayName + "')]] ")); - Events.click(webDriver, By.cssSelector("[data-testid='edit-description']")); - wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(enterDescription))); - Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString()); - Events.click(webDriver, By.cssSelector("[data-testid='save']")); + Events.click(webDriver, tagsPage.containsText(tagCategoryDisplayName)); + Events.click(webDriver, tagsPage.editTagCategoryDescription()); + Events.click(webDriver, tagsPage.addDescriptionString()); + Events.click(webDriver, tagsPage.editDescriptionSaveButton()); } @Test @Order(4) public void addTag() throws InterruptedException { openTagsPage(); - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + tagCategoryDisplayName + "')]] ")); - // Select the created listed team - Events.click(webDriver, By.cssSelector("[data-testid='add-new-tag-button']")); - wait.until(ExpectedConditions.elementToBeClickable(By.name("name"))); - Events.sendKeys(webDriver, By.name("name"), tagDisplayName); - Events.click(webDriver, By.cssSelector("[data-testid='boldButton']")); - Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString()); - Events.click(webDriver, By.xpath(enterDescription)); - Events.sendEnter(webDriver, By.xpath(enterDescription)); - Events.click(webDriver, By.cssSelector("[data-testid='italicButton']")); - Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString()); - Events.click(webDriver, By.xpath(enterDescription)); - Events.sendEnter(webDriver, By.xpath(enterDescription)); - Events.click(webDriver, By.cssSelector("[data-testid='linkButton']")); - Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString()); - wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("[data-testid='saveButton']"))); - Events.click(webDriver, By.cssSelector("[data-testid='saveButton']")); + Events.click(webDriver, tagsPage.containsText(tagCategoryDisplayName)); + Events.click(webDriver, tagsPage.addTagButton()); + Events.sendKeys(webDriver, tagsPage.displayName(), tagDisplayName); + Events.click(webDriver, tagsPage.descriptionBoldButton()); + Events.sendKeys(webDriver, tagsPage.addDescriptionString(), faker.address().toString()); + Events.click(webDriver, tagsPage.addDescriptionString()); + Events.sendEnter(webDriver, tagsPage.addDescriptionString()); + Events.click(webDriver, tagsPage.descriptionItalicButton()); + Events.sendKeys(webDriver, tagsPage.addDescriptionString(), faker.address().toString()); + Events.click(webDriver, tagsPage.addDescriptionString()); + Events.sendEnter(webDriver, tagsPage.addDescriptionString()); + Events.click(webDriver, tagsPage.descriptionLinkButton()); + Events.sendKeys(webDriver, tagsPage.addDescriptionString(), faker.address().toString()); + Events.click(webDriver, tagsPage.descriptionSaveButton()); } @Test @Order(5) public void changeTagDescription() throws InterruptedException { openTagsPage(); - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + tagCategoryDisplayName + "')]] ")); - // Select the created listed team - actions.moveToElement(webDriver.findElement(By.cssSelector("[data-testid='editTagDescription']"))).perform(); - Events.click(webDriver, By.cssSelector("[data-testid='editTagDescription']")); - wait.until(ExpectedConditions.elementToBeClickable(By.xpath(enterDescription))); - Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString()); - Events.click(webDriver, By.cssSelector("[data-testid='save']")); + Events.click(webDriver, tagsPage.containsText(tagCategoryDisplayName)); + actions.moveToElement(webDriver.findElement(tagsPage.editTagDescription())).perform(); + Events.click(webDriver, tagsPage.editTagDescription()); + Events.sendKeys(webDriver, tagsPage.addDescriptionString(), faker.address().toString()); + Events.click(webDriver, tagsPage.editDescriptionSaveButton()); } @Test @Order(6) public void addAssociatedTag() throws InterruptedException { openTagsPage(); - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + tagCategoryDisplayName + "')]] ")); - // Select the created listed team - actions.moveToElement(webDriver.findElement(By.cssSelector("[data-testid='tags']"))).perform(); - Events.click(webDriver, By.cssSelector("[data-testid='tags']")); - Events.click(webDriver, By.cssSelector("[data-testid='associatedTagName']")); + Events.click(webDriver, tagsPage.containsText(tagCategoryDisplayName)); + actions.moveToElement(webDriver.findElement(tagsPage.addAssociatedTagButton())).perform(); + Events.click(webDriver, tagsPage.addAssociatedTagButton()); + Events.click(webDriver, tagsPage.enterAssociatedTagName()); for (int i = 0; i <= 1; i++) { - Events.sendKeys(webDriver, By.cssSelector("[data-testid='associatedTagName']"), "P"); - Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); + Events.sendKeys(webDriver, tagsPage.enterAssociatedTagName(), "P"); + Events.click(webDriver, tagsPage.tagListItem()); } - Events.click(webDriver, By.cssSelector("[data-testid='saveAssociatedTag']")); + Events.click(webDriver, tagsPage.saveAssociatedTag()); } @Test @Order(7) public void removeAssociatedTag() throws InterruptedException { openTagsPage(); - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + tagCategoryDisplayName + "')]] ")); - // Select the created listed team - actions.moveToElement(webDriver.findElement(By.cssSelector("[data-testid='tags']"))).perform(); - Events.click(webDriver, By.cssSelector("[data-testid='tags']")); - Events.click(webDriver, By.cssSelector("[data-testid='remove']")); - Events.click(webDriver, By.cssSelector("[data-testid='remove']")); - Events.click(webDriver, By.cssSelector("[data-testid='saveAssociatedTag']")); + Events.click(webDriver, tagsPage.containsText(tagCategoryDisplayName)); + actions.moveToElement(webDriver.findElement(tagsPage.addAssociatedTagButton())).perform(); + Events.click(webDriver, tagsPage.addAssociatedTagButton()); + for (int i = 0; i <= 1; i++) { + Events.click(webDriver, tagsPage.removeAssociatedTag()); + } + Events.click(webDriver, tagsPage.saveAssociatedTag()); } @Test @Order(8) public void addTagToTableColumn() 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.cssSelector("[data-testid='sortBy']")); // Sort By - Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); // Last Updated - Events.click(webDriver, By.xpath("(//button[@data-testid='table-link'])[last()]")); + Events.click(webDriver, tagsPage.closeWhatsNew()); + Events.click(webDriver, tagsPage.headerExplore()); + Events.click(webDriver, tagsPage.sortBy()); + Events.click(webDriver, tagsPage.tagListItem()); + Events.click(webDriver, tagsPage.lastTableLink()); Thread.sleep(waitTime); - actions.moveToElement(webDriver.findElement(By.cssSelector("[data-testid='tags']"))).perform(); + actions.moveToElement(webDriver.findElement(tagsPage.addAssociatedTagButton())).perform(); Thread.sleep(waitTime); - Events.click(webDriver, By.cssSelector("[data-testid='tags']")); - Events.click(webDriver, By.cssSelector("[data-testid='associatedTagName']")); - Events.sendKeys( - webDriver, By.cssSelector("[data-testid='associatedTagName']"), tagCategoryDisplayName + "." + tagDisplayName); - Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); - Events.click(webDriver, By.cssSelector("[data-testid='saveAssociatedTag']")); - Events.click(webDriver, By.cssSelector("[data-testid='menu-button'][id='menu-button-Settings']")); // Setting - Events.click(webDriver, By.cssSelector("[data-testid='menu-item-Tags']")); // Setting/Tags - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + tagCategoryDisplayName + "')]] ")); - Events.click(webDriver, By.cssSelector("[data-testid='usage-count']")); - webDriver.navigate().refresh(); + 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, tagsPage.headerSettings()); + Events.click(webDriver, tagsPage.headerSettingsTags()); + Events.click(webDriver, tagsPage.containsText(tagCategoryDisplayName)); + Events.click(webDriver, tagsPage.tagUsageCount()); } @Test @Order(9) public void checkAddedTagToTableColumn() { - Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new - Events.click(webDriver, By.cssSelector("[data-testid='tables']")); // Tables - Events.click( - webDriver, - By.cssSelector("[data-testid='checkbox'][id='" + tagCategoryDisplayName + "." + tagDisplayName + "']")); - Events.click(webDriver, By.xpath("//button[@data-testid='table-link']")); + Events.click(webDriver, tagsPage.closeWhatsNew()); + Events.click(webDriver, tagsPage.tables()); + Events.click(webDriver, tagsPage.tagFilter(tagCategoryDisplayName, tagDisplayName)); + Events.click(webDriver, tagsPage.tableLink()); } @Test @Order(10) public void removeTagFromTableColumn() throws InterruptedException { openTagsPage(); - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + tagCategoryDisplayName + "')]] ")); - Events.click(webDriver, By.cssSelector("[data-testid='usage-count']")); - Events.click(webDriver, By.xpath("//button[@data-testid='table-link']")); - 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='remove']")); - Events.click(webDriver, By.cssSelector("[data-testid='saveAssociatedTag']")); + Events.click(webDriver, tagsPage.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, tagsPage.removeAssociatedTag()); + Events.click(webDriver, tagsPage.saveAssociatedTag()); } @Test @Order(10) public void addTagWithExistingName() throws InterruptedException { openTagsPage(); - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + "PersonalData" + "')]] ")); - Events.click(webDriver, By.cssSelector("[data-testid='add-new-tag-button']")); - wait.until(ExpectedConditions.elementToBeClickable(By.name("name"))); - Events.sendKeys(webDriver, By.name("name"), "Personals"); - Events.click(webDriver, By.cssSelector("[data-testid='saveButton']")); - Events.click(webDriver, By.cssSelector("[data-testid='appbar-item'][id='explore']")); // Explore - Events.click(webDriver, By.cssSelector("[data-testid='table-link']")); - 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']"), "Personals"); - Events.click(webDriver, By.cssSelector("[data-testid='list-item']")); - Events.click(webDriver, By.cssSelector("[data-testid='saveAssociatedTag']")); - Events.click(webDriver, By.cssSelector("[data-testid='menu-button'][id='menu-button-Settings']")); // Setting - Events.click(webDriver, By.cssSelector("[data-testid='menu-item-Tags']")); // Setting/Tags - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + "PersonalData" + "')]] ")); + Events.click(webDriver, tagsPage.containsText("PersonalData")); + Events.click(webDriver, tagsPage.addTagButton()); + Events.sendKeys(webDriver, tagsPage.displayName(), "Personals"); + Events.click(webDriver, tagsPage.descriptionSaveButton()); + Events.click(webDriver, tagsPage.headerExplore()); + 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, tagsPage.headerSettings()); + Events.click(webDriver, tagsPage.headerSettingsTags()); + Events.click(webDriver, tagsPage.containsText("PersonalData")); Thread.sleep(2000); - String usageCount = - webDriver - .findElement(By.xpath("(//div[@data-testid='usage'])[1]/a[@data-testid='usage-count']")) - .getAttribute("innerHTML"); + String usageCount = webDriver.findElement(tagsPage.aTagUsageCountElementIndex(1)).getAttribute("innerHTML"); Assert.assertEquals(usageCount, "0"); } @@ -251,19 +235,13 @@ public class TagsPageTest { @Order(11) public void TagUsageCheck() throws InterruptedException { openTagsPage(); - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + "PersonalData" + "')]] ")); - Events.click(webDriver, By.xpath("(//a[@data-testid='usage-count'])[2]")); + Events.click(webDriver, tagsPage.containsText("PersonalData")); + Events.click(webDriver, tagsPage.usageCountElementIndex(2)); Thread.sleep(2000); - String beforeFilterCount = - webDriver - .findElement(By.xpath("(//button[@data-testid='tab'])[1]//span[@data-testid='filter-count']")) - .getAttribute("innerHTML"); - Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[2]")); - Events.click(webDriver, By.xpath("(//button[@data-testid='tab'])[1]")); - String afterFilterCount = - webDriver - .findElement(By.xpath("(//button[@data-testid='tab'])[1]//span[@data-testid='filter-count']")) - .getAttribute("innerHTML"); + String beforeFilterCount = webDriver.findElement(tagsPage.tagFilterCount(1)).getAttribute("innerHTML"); + Events.click(webDriver, tagsPage.entityTabIndex(2)); + Events.click(webDriver, tagsPage.entityTabIndex(1)); + String afterFilterCount = webDriver.findElement(tagsPage.tagFilterCount(1)).getAttribute("innerHTML"); Assert.assertEquals(afterFilterCount, beforeFilterCount); } @@ -271,20 +249,18 @@ public class TagsPageTest { @Order(12) public void removeTagWithExistingName() throws InterruptedException { openTagsPage(); - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + "PersonalData" + "')]] ")); - Events.click(webDriver, By.xpath("(//a[@data-testid='usage-count'])[2]")); - Events.click(webDriver, By.cssSelector("[data-testid='table-link']")); - Events.click(webDriver, By.xpath("//div[@data-testid='tag-conatiner']//span")); - Events.click(webDriver, By.cssSelector("[data-testid='remove']")); - Events.click(webDriver, By.cssSelector("[data-testid='saveAssociatedTag']")); - Events.click(webDriver, By.cssSelector("[data-testid='menu-button'][id='menu-button-Settings']")); // Setting - Events.click(webDriver, By.cssSelector("[data-testid='menu-item-Tags']")); // Setting/Tags - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + "PersonalData" + "')]] ")); + + Events.click(webDriver, tagsPage.containsText("PersonalData")); + Events.click(webDriver, tagsPage.usageCountElementIndex(2)); + Events.click(webDriver, tagsPage.tableLink()); + Events.click(webDriver, tagsPage.editAssociatedTagButton()); + Events.click(webDriver, tagsPage.removeAssociatedTag()); + Events.click(webDriver, tagsPage.saveAssociatedTag()); + Events.click(webDriver, tagsPage.headerSettings()); + Events.click(webDriver, tagsPage.headerSettingsTags()); + Events.click(webDriver, tagsPage.containsText("PersonalData")); Thread.sleep(2000); - String usageCount = - webDriver - .findElement(By.xpath("(//div[@data-testid='usage'])[2]/span[@data-testid='usage-count']")) - .getAttribute("innerHTML"); + String usageCount = webDriver.findElement(tagsPage.spanTagUsageCountElementIndex(2)).getAttribute("innerHTML"); Assert.assertEquals(usageCount, "Not used"); } @@ -292,17 +268,15 @@ public class TagsPageTest { @Order(13) public void addSelfAssociatedTag() throws Exception { openTagsPage(); - Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + "PersonalData" + "')]] ")); - actions.moveToElement(webDriver.findElement(By.cssSelector("[data-testid='tags']"))).perform(); - Events.click(webDriver, By.cssSelector("[data-testid='tags']")); - Events.click(webDriver, By.cssSelector("[data-testid='associatedTagName']")); + Events.click(webDriver, tagsPage.containsText("PersonalData")); + actions.moveToElement(webDriver.findElement(tagsPage.addAssociatedTagButton())).perform(); + Events.click(webDriver, tagsPage.addAssociatedTagButton()); + Events.click(webDriver, tagsPage.enterAssociatedTagName()); try { - - Events.sendKeys(webDriver, By.cssSelector("[data-testid='associatedTagName']"), "PersonalData.Personal"); - WebElement sameTag = - wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("[data-testid='list-item']"))); + Events.sendKeys(webDriver, tagsPage.enterAssociatedTagName(), "PersonalData.Personal"); + WebElement sameTag = webDriver.findElement(tagsPage.tagListItem()); if (sameTag.isDisplayed()) { - throw new Exception("Can add tag itself as it's associated tag"); + Assert.fail(); } } catch (TimeoutException exception) { LOG.info("Success");