Compare commits

...

10 Commits

Author SHA1 Message Date
427980f503 alright, I give up. I'm using playwright from now on. Enough is enough
Some checks failed
msbuild / build (push) Failing after 1m56s
2024-07-24 19:05:28 +01:00
bdf9c79b49 msedge
Some checks failed
msbuild / build (push) Failing after 1m4s
2024-07-24 19:02:58 +01:00
56009863c1 stuff and things
Some checks failed
msbuild / build (push) Failing after 1m8s
2024-07-24 18:59:26 +01:00
8fa358eed0 add build scan
Some checks failed
msbuild / build (push) Failing after 1m53s
2024-07-24 18:53:18 +01:00
6c1efa5202 limit the tests to edge, since that seems to work
Some checks failed
msbuild / build (push) Failing after 1m45s
2024-07-24 18:48:05 +01:00
2eaa3eb182 add versions for chrome
Some checks failed
msbuild / build (push) Failing after 2m2s
2024-07-24 18:25:45 +01:00
13e730c156 add verification and pathing for chrome
Some checks failed
msbuild / build (push) Failing after 58s
2024-07-24 18:22:37 +01:00
377c3eb6a4 add the chrome installation steps
Some checks failed
msbuild / build (push) Failing after 58s
2024-07-24 18:21:03 +01:00
546d5cd94a where am I supposed to set the path?
Some checks failed
msbuild / build (push) Failing after 52s
2024-07-24 18:16:56 +01:00
0fbae9e186 update project for selenium 4, java 17, and gradle 9. Also add a workflow
Some checks failed
msbuild / build (push) Failing after 10s
2024-07-24 18:14:56 +01:00
5 changed files with 89 additions and 35 deletions

View File

@ -0,0 +1,61 @@
name: msbuild
on: [push]
env:
BUILD_TYPE: Release
jobs:
build:
runs-on: ubuntu-gitea
env:
CHROMEDRIVER_VERSION: 113.0.5672.63
CHROME_VERSION: 113.0.5672.0
EDGEDRIVER_VERSION: 126.0.2592.102
steps:
- name: Clone the repo
uses: actions/checkout@v4
- name: Install java 17
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: |
export PATH=$PATH:${{gitea.workspace}}/gradle-8.9/bin
java -version
gradle --version
echo $JAVA_HOME
- name: Prep the host environment for MS Edge
run: |
apt update -y
apt upgrade -y
- name: Install Edge and EdgeDriver for Linux
if: runner.os == 'Linux'
run: |
wget https://msedgedriver.azureedge.net/${EDGEDRIVER_VERSION}/edgedriver_linux64.zip
unzip edgedriver_linux64.zip
mv msedgedriver drivers
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list'
sudo rm microsoft.gpg
apt update
apt install -y microsoft-edge-stable
- name: Gradle Build
run: |
export PATH=$PATH:${{gitea.workspace}}/drivers
export PATH=$PATH:${{gitea.workspace}}/gradle-8.9/bin
gradle build --scan

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-engine', 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: '3.141.59'
implementation group: 'io.github.bonigarcia', name: 'webdrivermanager', version: '4.2.2'
implementation group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '4.23.0'
implementation group: 'io.github.bonigarcia', name: 'webdrivermanager', version: '5.9.1'
testImplementation group: 'org.hamcrest', name: 'hamcrest', version: '2.2'
testImplementation 'io.cucumber:cucumber-java:6.7.0'
testImplementation 'io.cucumber:cucumber-junit:6.7.0'
testImplementation 'io.cucumber:cucumber-java:7.18.1'
testImplementation 'io.cucumber:cucumber-junit:7.18.1'
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
configurations {

View File

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

View File

@ -30,7 +30,7 @@ public class BrowserDriver {
case "edge":
return getEdge(headless); // headless unsupported until selenium 4
case "safari":
return getSafari(false); // headless unsupported indefinitely
return getSafari(); // headless unsupported indefinitely
default: throw new IllegalArgumentException("Invalid browser specified");
}
}
@ -38,7 +38,10 @@ public class BrowserDriver {
private static RemoteWebDriver getChrome(final Boolean headless){
WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
options.setHeadless(headless);
if (headless.equals(true)) {
options.addArguments("--headless");
}
options.addArguments("--headless");
options.setAcceptInsecureCerts(true);
RemoteWebDriver driver = new ChromeDriver(options);
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
@ -48,7 +51,9 @@ public class BrowserDriver {
private static RemoteWebDriver getFirefox(final Boolean headless){
WebDriverManager.firefoxdriver().setup();
FirefoxOptions options = new FirefoxOptions();
options.setHeadless(headless);
if (headless.equals(true)) {
options.addArguments("--headless");
}
options.setAcceptInsecureCerts(true);
RemoteWebDriver driver = new FirefoxDriver(options);
driver.manage().timeouts().implicitlyWait(7, TimeUnit.SECONDS);
@ -56,18 +61,9 @@ public class BrowserDriver {
}
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();
EdgeOptions options = new EdgeOptions();
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){
options.addArguments("headless");
}
@ -76,18 +72,15 @@ public class BrowserDriver {
return driver;
}
private static RemoteWebDriver getSafari(final Boolean headless){
private static RemoteWebDriver getSafari(){
String osName = System.getProperty("os.name");
if (!osName.contentEquals("Mac OS X")){
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();
//options.setAcceptInsecureCerts(true);
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capabilities.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);
RemoteWebDriver driver = new SafariDriver(options);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
return driver;

View File

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