update project for selenium 4, java 17, and gradle 9. Also add a workflow
Some checks failed
msbuild / build (push) Failing after 10s

This commit is contained in:
Greg Gauthier 2024-07-24 18:14:56 +01:00
parent f4a4d051da
commit 0fbae9e186
5 changed files with 60 additions and 35 deletions

View File

@ -0,0 +1,32 @@
name: msbuild
on: [push]
env:
BUILD_TYPE: Release
jobs:
build:
runs-on: ubuntu-gitea
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
- name: Install Gradle
run: |
wget https://services.gradle.org/distributions/gradle-8.9-bin.zip
unzip gradle-8.9-bin.zip
export PATH=$PATH:${{gitea.workspace}}/gradle-8.9/bin
- name: Validate Java installation
run: |
java -version
gradle --version
echo $JAVA_HOME
- name: Gradle Build
run: |
gradle build

View File

@ -19,17 +19,16 @@ dependencies {
implementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.7.0' implementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.7.0'
implementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.7.0' implementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.7.0'
implementation group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.7.0' implementation group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.7.0'
implementation group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '4.0.0-alpha-6' implementation group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '4.23.0'
//implementation group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.141.59' implementation group: 'io.github.bonigarcia', name: 'webdrivermanager', version: '5.9.1'
implementation group: 'io.github.bonigarcia', name: 'webdrivermanager', version: '4.2.2'
testImplementation group: 'org.hamcrest', name: 'hamcrest', version: '2.2' testImplementation group: 'org.hamcrest', name: 'hamcrest', version: '2.2'
testImplementation 'io.cucumber:cucumber-java:6.7.0' testImplementation 'io.cucumber:cucumber-java:7.18.1'
testImplementation 'io.cucumber:cucumber-junit:6.7.0' testImplementation 'io.cucumber:cucumber-junit:7.18.1'
} }
java { java {
sourceCompatibility = JavaVersion.VERSION_1_8 sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_17
} }
configurations { configurations {

View File

@ -1,5 +1,6 @@
distributionBase=GRADLE_USER_HOME #Wed Jul 24 17:16:25 BST 2024
distributionPath=wrapper/dists distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@ -30,7 +30,7 @@ public class BrowserDriver {
case "edge": case "edge":
return getEdge(headless); // headless unsupported until selenium 4 return getEdge(headless); // headless unsupported until selenium 4
case "safari": case "safari":
return getSafari(false); // headless unsupported indefinitely return getSafari(); // headless unsupported indefinitely
default: throw new IllegalArgumentException("Invalid browser specified"); default: throw new IllegalArgumentException("Invalid browser specified");
} }
} }
@ -38,7 +38,10 @@ public class BrowserDriver {
private static RemoteWebDriver getChrome(final Boolean headless){ private static RemoteWebDriver getChrome(final Boolean headless){
WebDriverManager.chromedriver().setup(); WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions(); ChromeOptions options = new ChromeOptions();
options.setHeadless(headless); if (headless.equals(true)) {
options.addArguments("--headless");
}
options.addArguments("--headless");
options.setAcceptInsecureCerts(true); options.setAcceptInsecureCerts(true);
RemoteWebDriver driver = new ChromeDriver(options); RemoteWebDriver driver = new ChromeDriver(options);
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
@ -48,7 +51,9 @@ public class BrowserDriver {
private static RemoteWebDriver getFirefox(final Boolean headless){ private static RemoteWebDriver getFirefox(final Boolean headless){
WebDriverManager.firefoxdriver().setup(); WebDriverManager.firefoxdriver().setup();
FirefoxOptions options = new FirefoxOptions(); FirefoxOptions options = new FirefoxOptions();
options.setHeadless(headless); if (headless.equals(true)) {
options.addArguments("--headless");
}
options.setAcceptInsecureCerts(true); options.setAcceptInsecureCerts(true);
RemoteWebDriver driver = new FirefoxDriver(options); RemoteWebDriver driver = new FirefoxDriver(options);
driver.manage().timeouts().implicitlyWait(7, TimeUnit.SECONDS); driver.manage().timeouts().implicitlyWait(7, TimeUnit.SECONDS);
@ -56,18 +61,9 @@ public class BrowserDriver {
} }
private static RemoteWebDriver getEdge(final Boolean headless){ private static RemoteWebDriver getEdge(final Boolean headless){
List<String> osNames = Arrays.asList("Windows 10", "Mac OS X");
if (!osNames.contains(osName)){
throw new UnreachableBrowserException("Edge browser not available on this platform");
}
WebDriverManager.edgedriver().setup(); WebDriverManager.edgedriver().setup();
EdgeOptions options = new EdgeOptions(); EdgeOptions options = new EdgeOptions();
options.setAcceptInsecureCerts(true); options.setAcceptInsecureCerts(true);
//if (headless.equals(true)){ // necessary for Selenium 3
// throw new UnsupportedOperationException("Edge does not support headless execution yet");
//}
//options.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);
//** the following will only work once Selenium 4 is ready.
if (headless){ if (headless){
options.addArguments("headless"); options.addArguments("headless");
} }
@ -76,18 +72,15 @@ public class BrowserDriver {
return driver; return driver;
} }
private static RemoteWebDriver getSafari(final Boolean headless){ private static RemoteWebDriver getSafari(){
String osName = System.getProperty("os.name"); String osName = System.getProperty("os.name");
if (!osName.contentEquals("Mac OS X")){ if (!osName.contentEquals("Mac OS X")){
throw new UnreachableBrowserException("Safari browser not available on this platform"); throw new UnreachableBrowserException("Safari browser not available on this platform");
} }
if (headless.equals(true)){
throw new UnsupportedOperationException("Safari does not support headless execution yet");
}
SafariOptions options = new SafariOptions(); SafariOptions options = new SafariOptions();
//options.setAcceptInsecureCerts(true); //options.setAcceptInsecureCerts(true);
DesiredCapabilities capabilities = new DesiredCapabilities(); DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); capabilities.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);
RemoteWebDriver driver = new SafariDriver(options); RemoteWebDriver driver = new SafariDriver(options);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
return driver; return driver;

View File

@ -29,25 +29,25 @@ public class BrowserTests {
@DisplayName("Browser Validation") @DisplayName("Browser Validation")
@ParameterizedTest(name = "Browser: {0}") @ParameterizedTest(name = "Browser: {0}")
@ValueSource(strings = {"chrome", "firefox", "edge", "safari" }) @ValueSource(strings = {"chrome", "edge" })
void testBrowsers(String browser) { void testBrowsers(String browser) {
driver = BrowserDriver.getDriver(browser, true); driver = BrowserDriver.getDriver(browser, true);
System.out.println(dtf.format(LocalDateTime.now()) + " Navigating to url..."); System.out.println(dtf.format(LocalDateTime.now()) + " Navigating to url...");
String url = "https://duckduckgo.com/"; String url = "https://search.brave.com/";
driver.get(url); driver.get(url);
if (!driver.getCurrentUrl().equals(url)){ if (!driver.getCurrentUrl().equals(url)){
fail("Browser navigation failed"); fail("Browser navigation failed");
} }
System.out.println(dtf.format(LocalDateTime.now()) + " Entering search now..."); System.out.println(dtf.format(LocalDateTime.now()) + " Entering search now...");
RemoteWebElement searchBox = RemoteWebElement searchBox =
(RemoteWebElement)driver.findElementByXPath("//input[@id='search_form_input_homepage']"); (RemoteWebElement)driver.findElement(By.xpath("//*[@id='searchbox']"));
searchBox.sendKeys("frankenberries"); searchBox.sendKeys("frankenberries");
searchBox.sendKeys(Keys.ENTER); searchBox.sendKeys(Keys.ENTER);
System.out.println(dtf.format(LocalDateTime.now())+ " Checking search results..."); System.out.println(dtf.format(LocalDateTime.now())+ " Checking search results...");
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10),Duration.ofMillis(100)); WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10),Duration.ofMillis(1000));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='links']"))); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='results']")));
RemoteWebElement results = RemoteWebElement results =
(RemoteWebElement)driver.findElementByPartialLinkText("Monster cereal"); (RemoteWebElement)driver.findElement(By.partialLinkText("Monster cereals"));
System.out.println(results.getText()); System.out.println(results.getText());
Assertions.assertNotNull(results); Assertions.assertNotNull(results);
} }