From 71a42b69c410da18a39694640e1ab9a3ed1f15cf Mon Sep 17 00:00:00 2001 From: ok Date: Fri, 7 Nov 2025 12:30:29 -0600 Subject: [PATCH 1/3] refactoring for FreestyleProjectConfigurationSCMTest - removed old waits --- .../FreestyleProjectConfigurationSCMTest.java | 30 +++++++------------ 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/src/test/java/school/redrover/FreestyleProjectConfigurationSCMTest.java b/src/test/java/school/redrover/FreestyleProjectConfigurationSCMTest.java index e90075776..d12236557 100644 --- a/src/test/java/school/redrover/FreestyleProjectConfigurationSCMTest.java +++ b/src/test/java/school/redrover/FreestyleProjectConfigurationSCMTest.java @@ -4,42 +4,36 @@ import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.Assert; import org.testng.annotations.Test; import school.redrover.common.BaseTest; -import java.time.Duration; public class FreestyleProjectConfigurationSCMTest extends BaseTest { - private WebDriverWait wait; - private static final String SCM_TITLE_EXPECTED = "Source Code Management"; + final String scmTitleExpected = "Source Code Management"; final String freestyleProjectName = "FreestyleProject2025"; private void createFreestyleProject(String freestyleProjectName) { - wait = new WebDriverWait(getDriver(), Duration.ofSeconds(5)); - wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("a[href='/view/all/newJob']"))).click(); + getWait5().until(ExpectedConditions.elementToBeClickable(By.cssSelector("a[href='/view/all/newJob']"))).click(); getDriver().findElement(By.id("name")).sendKeys(freestyleProjectName); getDriver().findElement(By.xpath("//span[text()='Freestyle project']")).click(); - wait.until(ExpectedConditions.elementToBeClickable(By.id("ok-button"))).click(); - wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("general"))); + getWait5().until(ExpectedConditions.elementToBeClickable(By.id("ok-button"))).click(); + getWait5().until(ExpectedConditions.visibilityOfElementLocated(By.id("general"))); } @Test public void testAccessSCMInNewJob() { - // 02.003.01 createFreestyleProject(freestyleProjectName); WebElement scmTitle = getDriver().findElement(By.xpath("//div[@id='source-code-management']")); - wait.until(ExpectedConditions.visibilityOf(scmTitle)); + getWait5().until(ExpectedConditions.visibilityOf(scmTitle)); - Assert.assertEquals(scmTitle.getText(), SCM_TITLE_EXPECTED); + Assert.assertEquals(scmTitle.getText(), scmTitleExpected); } @Test public void testSCMSectionElements() { - // 02.003.05 createFreestyleProject(freestyleProjectName); WebElement scmDescription = getDriver().findElement(By.xpath("//div[normalize-space()='Connect and manage " + @@ -63,38 +57,34 @@ public void testSCMSectionElements() { @Test public void testAccessSCMInExistingJob() { - // 02.003.02 createFreestyleProject(freestyleProjectName); - wait = new WebDriverWait(getDriver(), Duration.ofSeconds(5)); - wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[@class='jenkins-mobile-hide']"))).click(); + getWait5().until(ExpectedConditions.elementToBeClickable(By.xpath("//span[@class='jenkins-mobile-hide']"))).click(); getDriver().findElement(By.xpath("//a[@href='job/%s/']".formatted(freestyleProjectName))).click(); getDriver().findElement(By.xpath("//a[@href='/job/%s/configure']".formatted(freestyleProjectName))).click(); WebElement scmTitle = getDriver().findElement(By.xpath("//div[@id='source-code-management']")); - Assert.assertEquals(scmTitle.getText(), SCM_TITLE_EXPECTED); + Assert.assertEquals(scmTitle.getText(), scmTitleExpected); } @Test public void testNavigationToSCMViaMenu() { - // 02.003.03 createFreestyleProject(freestyleProjectName); getDriver().findElement(By.xpath("//button[@data-section-id='source-code-management']")).click(); WebElement scmTitle = getDriver().findElement(By.xpath("//div[@id='source-code-management']")); - Assert.assertEquals(scmTitle.getText(), SCM_TITLE_EXPECTED); + Assert.assertEquals(scmTitle.getText(), scmTitleExpected); } @Test public void testNavigationToSCMByScrollingDown() { - // 02.003.04 createFreestyleProject(freestyleProjectName); WebElement scmTitle = getDriver().findElement(By.xpath("//div[@id='source-code-management']")); ((JavascriptExecutor) getDriver()).executeScript("arguments[0].scrollIntoView(true);", scmTitle); - Assert.assertEquals(scmTitle.getText(), SCM_TITLE_EXPECTED); + Assert.assertEquals(scmTitle.getText(), scmTitleExpected); } } From 4f44f6f9ed9df46d407642e04d15ad96e65bb7dc Mon Sep 17 00:00:00 2001 From: ok Date: Thu, 15 Jan 2026 20:57:39 -0600 Subject: [PATCH 2/3] RF CreateViewPage, EditViewPage to Page Factory --- .../java/school/redrover/DashboardTest.java | 6 ++-- .../school/redrover/page/CreateViewPage.java | 18 ++++++----- .../school/redrover/page/EditViewPage.java | 31 ++++++++++--------- 3 files changed, 30 insertions(+), 25 deletions(-) diff --git a/src/test/java/school/redrover/DashboardTest.java b/src/test/java/school/redrover/DashboardTest.java index e1de5e573..a03569406 100644 --- a/src/test/java/school/redrover/DashboardTest.java +++ b/src/test/java/school/redrover/DashboardTest.java @@ -171,7 +171,7 @@ public void testAddColumnsInListViewOnDashboard() { .sendViewName(listViewName) .selectListViewRadioAndCreate() .selectJobCheckbox(PIPELINE_NAME) - .clickAddColumnDropDownButton(); + .clickAddColumnButton(); EditViewPage editViewPage = new EditViewPage(getDriver()); List actualColumnList = editViewPage @@ -181,7 +181,7 @@ public void testAddColumnsInListViewOnDashboard() { Assert.assertNotEquals(actualColumnList.size(), 0); Assert.assertEquals(actualColumnList, expectedColumnList); - editViewPage.clickSubmitButton(); + editViewPage.clickSaveButton(); int actualCountDisplayedColumns = homePage.getCountOfDisplayedColumnsOnDashboard(); Assert.assertEquals(actualCountDisplayedColumns, actualColumnList.size()); } @@ -204,7 +204,7 @@ public void testRemoveColumnsInListView() { Assert.assertFalse(actualColumnListAfterDelete.contains(columnName)); - new EditViewPage(getDriver()).clickSubmitButton(); + new EditViewPage(getDriver()).clickSaveButton(); int actualCountDisplayedColumns = homePage.getCountOfDisplayedColumnsOnDashboard(); Assert.assertEquals(actualCountDisplayedColumns, initialCountDisplayedColumns - 1); diff --git a/src/test/java/school/redrover/page/CreateViewPage.java b/src/test/java/school/redrover/page/CreateViewPage.java index 5492d7ffc..0ada37b0a 100644 --- a/src/test/java/school/redrover/page/CreateViewPage.java +++ b/src/test/java/school/redrover/page/CreateViewPage.java @@ -1,6 +1,5 @@ package school.redrover.page; -import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; @@ -22,7 +21,13 @@ public class CreateViewPage extends BasePage { private WebElement header; @FindBy(id = "ok") - private WebElement okButton; + private WebElement createButton; + + @FindBy(xpath = "//div[@class='jenkins-radio']//label") + private List typeViewList; + + @FindBy(xpath = "//label[text() = 'List View']") + private WebElement listViewRadioButton; public CreateViewPage(WebDriver driver) { super(driver); @@ -53,22 +58,21 @@ public CreateViewPage clickMyViewName(){ } public HomePage clickCreateButtonForNewView() { - okButton.click(); + createButton.click(); return new HomePage(getDriver()).waitUntilPageLoadJS(); } public List getTypeViewList(){ - return getDriver().findElements(By.xpath("//div[@class='jenkins-radio']//label")) + return typeViewList .stream() .map(WebElement::getText) .toList(); } public EditViewPage selectListViewRadioAndCreate(){ - getDriver().findElement(By.xpath("//label[text() = 'List View']")).click(); - - okButton.click(); + listViewRadioButton.click(); + createButton.click(); return new EditViewPage(getDriver()).waitUntilPageLoadJS(); } diff --git a/src/test/java/school/redrover/page/EditViewPage.java b/src/test/java/school/redrover/page/EditViewPage.java index 4961819d8..646a1c174 100644 --- a/src/test/java/school/redrover/page/EditViewPage.java +++ b/src/test/java/school/redrover/page/EditViewPage.java @@ -4,7 +4,6 @@ import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; -import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.testng.Assert; @@ -18,6 +17,15 @@ public class EditViewPage extends BasePage { @FindBy(xpath = "//button[@class='jenkins-dropdown__item ']") private List columnListForAdd; + @FindBy(xpath = "//button[text()='Add column']") + private WebElement addColumnButton; + + @FindBy(xpath = "//div[@class='repeated-chunk__header']") + private List columnHeaders; + + @FindBy(xpath = "//button[@name='Submit']") + private WebElement saveButton; + public EditViewPage(WebDriver driver) { super(driver); @@ -33,25 +41,19 @@ public EditViewPage waitUntilPageLoad() { return null; } - public EditViewPage clickAddColumnDropDownButton() { + public EditViewPage clickAddColumnButton() { ((JavascriptExecutor) getDriver()).executeScript("arguments[0].scrollIntoView({block: 'center'});", - getWait10().until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//button[text()='Add column']")))); + getWait10().until(ExpectedConditions.visibilityOf(addColumnButton))); - new Actions(getDriver()) - .moveToElement(getWait2().until(ExpectedConditions.elementToBeClickable(By - .xpath("//button[text()='Add column']")))) - .click() - .perform(); + addColumnButton.click(); return this; } public List getCurrentColumnList() { - getWait10().until(ExpectedConditions.visibilityOfElementLocated(By - .xpath("//div[@class=contains(text(),'Columns')]"))); + getWait10().until(ExpectedConditions.visibilityOfAllElements(columnHeaders)); - return getWait10().until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By - .xpath("//div[@class='repeated-chunk__header']"))) + return columnHeaders .stream() .map(WebElement::getText) .map(String::trim) @@ -81,9 +83,8 @@ public EditViewPage selectJobCheckbox(String jobName) { return this; } - public void clickSubmitButton() { - getWait5().until(ExpectedConditions.elementToBeClickable(By - .xpath("//button[@name='Submit']"))).click(); + public void clickSaveButton() { + getWait5().until(ExpectedConditions.elementToBeClickable(saveButton)).click(); } public EditViewPage clickDeleteButton(String columnName) { From d2479219beb965612b4e59bbda102256c2ec46c0 Mon Sep 17 00:00:00 2001 From: ok Date: Thu, 15 Jan 2026 22:35:35 -0600 Subject: [PATCH 3/3] small update --- src/test/java/school/redrover/page/EditViewPage.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/school/redrover/page/EditViewPage.java b/src/test/java/school/redrover/page/EditViewPage.java index 646a1c174..057529a8b 100644 --- a/src/test/java/school/redrover/page/EditViewPage.java +++ b/src/test/java/school/redrover/page/EditViewPage.java @@ -51,9 +51,7 @@ public EditViewPage clickAddColumnButton() { } public List getCurrentColumnList() { - getWait10().until(ExpectedConditions.visibilityOfAllElements(columnHeaders)); - - return columnHeaders + return getWait10().until(ExpectedConditions.visibilityOfAllElements(columnHeaders)) .stream() .map(WebElement::getText) .map(String::trim)