Revamping tags selenium tests (#2508)

* revemping tags selenium tests

* addressing style check

* completed tags page revamp

* addressing style-check

* removing extra code

* addressing style-check
This commit is contained in:
parthp2107 2022-02-01 13:27:49 +05:30 committed by GitHub
parent b82854c56e
commit f077a025a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 306 additions and 147 deletions

View File

@ -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;
}
}

View File

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