From b9a44a99eca9fc676bc80c684e2fafdd2765405d Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Fri, 7 May 2021 22:00:12 +0200 Subject: [PATCH] stabilized selenium tests --- .../integration/selenium/AccountTest.java | 20 +++++++++++++--- .../selenium/CategorySelectTest.java | 23 +++++++------------ .../NewTransactionFromTemplateTest.java | 14 +++++++---- .../selenium/NewTransactionNormalTest.java | 17 +++++++------- .../selenium/NewTransactionRecurringTest.java | 17 +++++++------- .../selenium/NewTransactionTransferTest.java | 14 ++++++----- 6 files changed, 59 insertions(+), 46 deletions(-) diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java index bec02c23e..53ead8513 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java @@ -162,7 +162,14 @@ public class AccountTest { driver.get(helper.getUrl() + "/transactions"); driver.findElement(By.id("button-new-transaction")).click(); - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]")).click(); + + WebDriverWait wait = new WebDriverWait(driver, 5); + final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]"); + wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); + driver.findElement(locator).click(); + + wait = new WebDriverWait(driver, 5); + wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction")); // assert List<WebElement> items = driver.findElements(By.cssSelector(".account-select-wrapper .custom-select-options .custom-select-item-name")); @@ -181,7 +188,14 @@ public class AccountTest // open new transaction page driver.get(helper.getUrl() + "/transactions"); driver.findElement(By.id("button-new-transaction")).click(); - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]")).click(); + + WebDriverWait wait = new WebDriverWait(driver, 5); + final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]"); + wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); + driver.findElement(locator).click(); + + wait = new WebDriverWait(driver, 5); + wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction")); // fill form driver.findElement(By.id("transaction-name")).sendKeys("My transaction"); @@ -196,7 +210,7 @@ public class AccountTest driver.get(helper.getUrl() + "/transactions"); - WebDriverWait wait = new WebDriverWait(driver, 5); + wait = new WebDriverWait(driver, 5); wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date"))); // assert diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java index f6837022e..6d3c9eee3 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java @@ -88,14 +88,19 @@ public class CategorySelectTest // open transactions page driver.get(helper.getUrl() + "/transactions"); driver.findElement(By.id("button-new-transaction")).click(); + + WebDriverWait wait = new WebDriverWait(driver, 5); + final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]"); + wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); + driver.findElement(locator).click(); + + wait = new WebDriverWait(driver, 5); + wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction")); } @Test public void test_newTransaction_openWithEnter() { - // open new transaction page - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]")).click(); - // navigate to category select with tab traversal driver.findElement(By.tagName("body")).sendKeys(Keys.TAB); WebDriverWait wait = new WebDriverWait(driver, 5); @@ -118,9 +123,6 @@ public class CategorySelectTest @Test public void test_newTransaction_goDownWithKey() { - // open new transaction page - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]")).click(); - // open category select driver.findElement(By.cssSelector(".category-select-wrapper .custom-select-trigger")).click(); WebDriverWait wait = new WebDriverWait(driver, 5); @@ -150,9 +152,6 @@ public class CategorySelectTest @Test public void test_newTransaction_goUpWithKey() { - // open new transaction page - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]")).click(); - // open category select driver.findElement(By.cssSelector(".category-select-wrapper .custom-select-trigger")).click(); WebDriverWait wait = new WebDriverWait(driver, 5); @@ -182,9 +181,6 @@ public class CategorySelectTest @Test public void test_newTransaction_confirmWithEnter() { - // open new transaction page - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]")).click(); - // open category select driver.findElement(By.cssSelector(".category-select-wrapper .custom-select-trigger")).click(); @@ -205,9 +201,6 @@ public class CategorySelectTest @Test public void test_newTransaction_jumpToCategoryByFirstLetter() { - // open new transaction page - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]")).click(); - // open category select driver.findElement(By.cssSelector(".category-select-wrapper .custom-select-trigger")).click(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java index f1c7d8b3f..18a81336e 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java @@ -92,9 +92,12 @@ public class NewTransactionFromTemplateTest @Test public void test_newTransactionFromTemplate_FullTemplate() { - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'From template')]")).click(); - WebDriverWait wait = new WebDriverWait(driver, 5); + final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'From template')]"); + wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); + driver.findElement(locator).click(); + + wait = new WebDriverWait(driver, 5); wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Templates")); driver.findElements(By.cssSelector(".template-item .btn-flat no-padding text-default")); @@ -120,9 +123,12 @@ public class NewTransactionFromTemplateTest @Test public void test_newTransactionFromTemplate_OnlyIncome() { - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'From template')]")).click(); - WebDriverWait wait = new WebDriverWait(driver, 5); + final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'From template')]"); + wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); + driver.findElement(locator).click(); + + wait = new WebDriverWait(driver, 5); wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Templates")); driver.findElements(By.cssSelector(".template-item .btn-flat no-padding text-default")); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java index a25026d8f..f33006b57 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java @@ -89,14 +89,19 @@ public class NewTransactionNormalTest // open transactions page driver.get(helper.getUrl() + "/transactions"); driver.findElement(By.id("button-new-transaction")).click(); + + WebDriverWait wait = new WebDriverWait(driver, 5); + final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]"); + wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); + driver.findElement(locator).click(); + + wait = new WebDriverWait(driver, 5); + wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction")); } @Test public void test_newTransaction_cancel() { - // open new transaction page - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]")).click(); - // click cancel button WebElement cancelButton = driver.findElement(By.id("button-cancel-save-transaction")); ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", cancelButton); @@ -115,9 +120,6 @@ public class NewTransactionNormalTest @Test public void test_newTransaction_income() { - // open new transaction page - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]")).click(); - String name = "My normal transaction"; String amount = "15.00"; String description = "Lorem Ipsum dolor sit amet"; @@ -154,9 +156,6 @@ public class NewTransactionNormalTest @Test public void test_newTransaction_expenditure() { - // open new transaction page - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]")).click(); - String name = "My normal transaction"; String amount = "15.00"; String description = "Lorem Ipsum dolor sit amet"; diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java index 3afac981a..ceae4906c 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java @@ -89,14 +89,19 @@ public class NewTransactionRecurringTest // open transactions page driver.get(helper.getUrl() + "/transactions"); driver.findElement(By.id("button-new-transaction")).click(); + + WebDriverWait wait = new WebDriverWait(driver, 5); + final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Recurring')]"); + wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); + driver.findElement(locator).click(); + + wait = new WebDriverWait(driver, 5); + wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Recurring Transaction")); } @Test public void test_newTransaction_cancel() { - // open new transaction page - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Recurring')]")).click(); - // click cancel button WebElement cancelButton = driver.findElement(By.id("button-cancel-save-transaction")); ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", cancelButton); @@ -115,9 +120,6 @@ public class NewTransactionRecurringTest @Test public void test_newTransaction_income() { - // open new transaction page - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Recurring')]")).click(); - String name = "My recurring transaction"; String amount = "15.00"; String description = "Lorem Ipsum dolor sit amet"; @@ -182,9 +184,6 @@ public class NewTransactionRecurringTest @Test public void test_newTransaction_expenditure() { - // open new transaction page - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Recurring')]")).click(); - String name = "My recurring transaction"; String amount = "15.00"; String description = "Lorem Ipsum dolor sit amet"; diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java index 58859aa60..41502ef56 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java @@ -87,14 +87,19 @@ public class NewTransactionTransferTest // open transactions page driver.get(helper.getUrl() + "/transactions"); driver.findElement(By.id("button-new-transaction")).click(); + + WebDriverWait wait = new WebDriverWait(driver, 5); + final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transfer')]"); + wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); + driver.findElement(locator).click(); + + wait = new WebDriverWait(driver, 5); + wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transfer")); } @Test public void test_newTransaction_cancel() { - // open new transaction page - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transfer')]")).click(); - // click cancel button WebElement cancelButton = driver.findElement(By.id("button-cancel-save-transaction")); ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", cancelButton); @@ -113,9 +118,6 @@ public class NewTransactionTransferTest @Test public void test_newTransaction_transfer() { - // open new transaction page - driver.findElement(By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transfer')]")).click(); - String name = "My transfer transaction"; String amount = "15.00"; String description = "Lorem Ipsum dolor sit amet"; -- GitLab