diff --git a/src/com/qualityworkscg/pages/Page.java b/src/com/qualityworkscg/pages/Page.java index 91a98a6..0a2c868 100644 --- a/src/com/qualityworkscg/pages/Page.java +++ b/src/com/qualityworkscg/pages/Page.java @@ -1,24 +1,76 @@ package com.qualityworkscg.pages; +import java.util.concurrent.TimeUnit; + +import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Assert; public class Page { protected WebDriver driver; + WebDriverWait wait; + + + public static final String SERVICES_LOCATOR = "a[title='Services']"; + public static final String MOBILE_AUTOMATION_LOCATOR = "a[title='Mobile & Web Test Automation']"; + public static final String DEVOPS_CONSULTANCY_LOCATOR = "a[title='DevOps Consultancy']"; + public static final String SOFTWARE_DEVELOPMENT_LOCATOR ="a[title='Software Development Consultancy']"; + public static final String AGILE_COACHING_LOCATOR = "a[title='Agile Coaching']"; + + public static final String BASE_URL = "http://www.qualityworkscg.com/"; - public Page(WebDriver driver) { + public Page (WebDriver driver) { this.driver = driver; + wait = new WebDriverWait (driver, 10); } - public void navigate(String url) { + public void navigate (String url) { driver.navigate().to(url); - } + } - public String getTitle() { + public String getTitle () { return driver.getTitle(); } + + //Function to click the Services dropdown + public void clickServices () { + WebElement pageElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(SERVICES_LOCATOR))); + pageElement.click(); + } + + //Function to click the Mobile Automation dropdown + public void clickMobileAutomation () { + WebElement pageElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(MOBILE_AUTOMATION_LOCATOR))); + pageElement.click(); + wait.until(ExpectedConditions.urlMatches(BASE_URL + "automation/")); + } + + //Function to click the DevOps Consultancy dropdown + public void clickDevOpsConsultancy () { + WebElement pageElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(DEVOPS_CONSULTANCY_LOCATOR))); + pageElement.click(); + wait.until(ExpectedConditions.urlMatches(BASE_URL + "devops/")); + } + + //Function to click the Software Development dropdown + public void clickSoftwareDevelopment () { + WebElement pageElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(SOFTWARE_DEVELOPMENT_LOCATOR))); + pageElement.click(); + wait.until(ExpectedConditions.urlMatches(BASE_URL + "software-development-consultancy/")); + } + + //Function to click the Agile Coaching dropdown + public void clickAgileCoaching () { + WebElement pageElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(AGILE_COACHING_LOCATOR))); + pageElement.click(); + wait.until(ExpectedConditions.urlMatches(BASE_URL + "agile-coaching/")); + } - public void tearDown() { + public void tearDown () { try { this.driver.quit(); } catch(Exception e) { diff --git a/src/com/qualityworkscg/tests/AbstractTest.java b/src/com/qualityworkscg/tests/AbstractTest.java index 8a70d59..3bcdccb 100644 --- a/src/com/qualityworkscg/tests/AbstractTest.java +++ b/src/com/qualityworkscg/tests/AbstractTest.java @@ -28,4 +28,4 @@ public void setup(String url) { public void afterTest() { page.tearDown(); } -} +} \ No newline at end of file diff --git a/src/com/qualityworkscg/tests/ServicesTest.java b/src/com/qualityworkscg/tests/ServicesTest.java new file mode 100644 index 0000000..64590c4 --- /dev/null +++ b/src/com/qualityworkscg/tests/ServicesTest.java @@ -0,0 +1,40 @@ +package com.qualityworkscg.tests; + +import org.testng.Assert; +import org.testng.annotations.Test; + +public class ServicesTest extends AbstractTest{ + + @Test + //Function to verify that the Mobile Automation drop down navigates to the correct page. + public void verifyNavigationMobileAutomation () { + page.clickServices(); + page.clickMobileAutomation(); + Assert.assertEquals(page.getTitle(), "QualityWorks Consulting Group | Mobile and Web Automation", "Testing if title is QualityWorks Consulting Group | Mobile and Web Automation"); + } + + @Test + //Function to verify that the DevOps Consultancy drop down navigates to the correct page. + public void verifyNavigationDevOpsConsultancy () { + page.clickServices(); + page.clickDevOpsConsultancy(); + Assert.assertEquals(page.getTitle(), "QualityWorks Consulting Group | DevOps Consultancy", "Testing if title is QualityWorks Consulting Group | Mobile and Web Automation"); + } + + @Test + //Function to verify that the Software Development drop down navigates to the correct page. + public void verifyNavigationSoftwareDevelopment () { + page.clickServices(); + page.clickSoftwareDevelopment(); + Assert.assertEquals(page.getTitle(), "QualityWorks Consulting Group | Software Development Consultancy", "Testing if title is QualityWorks Consulting Group | Mobile and Web Automation"); + } + + @Test + //Function to verify that the Agile Coaching drop down navigates to the correct page. + public void verifyNavigationAgileCoaching () { + page.clickServices(); + page.clickAgileCoaching(); + Assert.assertEquals(page.getTitle(), "QualityWorks Consulting Group | Agile Coaching and Training", "Testing if title is QualityWorks Consulting Group | Mobile and Web Automation"); + } + +} diff --git a/testng.xml b/testng.xml index cea05a3..a1f0388 100644 --- a/testng.xml +++ b/testng.xml @@ -5,6 +5,7 @@ +