diff --git a/testing-modules/selenium-junit-testng/pom.xml b/testing-modules/selenium-junit-testng/pom.xml
index 56b068870a..cf7c121dc8 100644
--- a/testing-modules/selenium-junit-testng/pom.xml
+++ b/testing-modules/selenium-junit-testng/pom.xml
@@ -35,6 +35,11 @@
ashot
${ashot.version}
+
+ io.github.bonigarcia
+ webdrivermanager
+ ${webdrivermanager.version}
+
@@ -52,8 +57,9 @@
6.10
- 3.4.0
+ 3.141.59
1.5.4
+ 5.3.0
\ No newline at end of file
diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/AutomatedSetupLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/AutomatedSetupLiveTest.java
new file mode 100644
index 0000000000..aef6540900
--- /dev/null
+++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/AutomatedSetupLiveTest.java
@@ -0,0 +1,83 @@
+package com.baeldung.selenium.setup;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.chrome.ChromeDriver;
+import org.openqa.selenium.edge.EdgeDriver;
+import org.openqa.selenium.firefox.FirefoxDriver;
+
+import io.github.bonigarcia.wdm.WebDriverManager;
+
+final class AutomatedSetupLiveTest {
+
+ private static final String TITLE_XPATH = "//a[@href='/']";
+ private static final String URL = "https://www.baeldung.com";
+
+ private WebDriver driver;
+
+ private void setupChromeDriver() {
+ WebDriverManager.chromedriver()
+ .setup();
+ driver = new ChromeDriver();
+ options();
+ }
+
+ private void setupGeckoDriver() {
+ WebDriverManager.firefoxdriver()
+ .setup();
+ driver = new FirefoxDriver();
+ options();
+ }
+
+ private void setupEdgeDriver() {
+ WebDriverManager.edgedriver()
+ .setup();
+ driver = new EdgeDriver();
+ options();
+ }
+
+ private void options() {
+ driver.manage()
+ .window()
+ .maximize();
+ }
+
+ @Test
+ void givenChromeDriver_whenNavigateToBaeldung_thenFindTitleIsSuccessful() {
+ setupChromeDriver();
+ driver.get(URL);
+ final WebElement title = driver.findElement(By.xpath(TITLE_XPATH));
+
+ assertEquals("Baeldung", title.getAttribute("title"));
+ }
+
+ @Test
+ void givenGeckoDriver_whenNavigateToBaeldung_thenFindTitleIsSuccessful() {
+ setupGeckoDriver();
+ driver.get(URL);
+ final WebElement title = driver.findElement(By.xpath(TITLE_XPATH));
+
+ assertEquals("Baeldung", title.getAttribute("title"));
+ }
+
+ @Test
+ void givenEdgeDriver_whenNavigateToBaeldung_thenFindTitleIsSuccessful() {
+ setupEdgeDriver();
+ driver.get(URL);
+ final WebElement title = driver.findElement(By.xpath(TITLE_XPATH));
+
+ assertEquals("Baeldung", title.getAttribute("title"));
+ }
+
+ @AfterEach
+ void teardown() {
+ if (driver != null) {
+ driver.quit();
+ }
+ }
+}
\ No newline at end of file
diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/InvalidSetupLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/InvalidSetupLiveTest.java
new file mode 100644
index 0000000000..09ab823828
--- /dev/null
+++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/InvalidSetupLiveTest.java
@@ -0,0 +1,35 @@
+package com.baeldung.selenium.setup;
+
+import static org.junit.jupiter.api.Assertions.assertThrowsExactly;
+
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.openqa.selenium.chrome.ChromeDriver;
+import org.openqa.selenium.edge.EdgeDriver;
+import org.openqa.selenium.firefox.FirefoxDriver;
+
+final class InvalidSetupLiveTest {
+
+ @BeforeAll
+ static void setup() {
+ // Make sure the properties are cleared before the tests.
+ System.clearProperty("webdriver.chrome.driver");
+ System.clearProperty("webdriver.gecko.driver");
+ System.clearProperty("webdriver.edge.driver");
+ }
+
+ @Test
+ void givenInvalidChromeSetup_whenInit_thenFail() {
+ assertThrowsExactly(IllegalStateException.class, ChromeDriver::new);
+ }
+
+ @Test
+ void givenInvalidFirefoxSetup_whenInit_thenFail() {
+ assertThrowsExactly(IllegalStateException.class, FirefoxDriver::new);
+ }
+
+ @Test
+ void givenInvalidEdgeSetup_whenInit_thenFail() {
+ assertThrowsExactly(IllegalStateException.class, EdgeDriver::new);
+ }
+}
\ No newline at end of file
diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/ManualSetupLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/ManualSetupLiveTest.java
new file mode 100644
index 0000000000..ef0b5675f8
--- /dev/null
+++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/ManualSetupLiveTest.java
@@ -0,0 +1,78 @@
+package com.baeldung.selenium.setup;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.chrome.ChromeDriver;
+import org.openqa.selenium.edge.EdgeDriver;
+import org.openqa.selenium.firefox.FirefoxDriver;
+
+final class ManualSetupLiveTest {
+
+ private static final String TITLE_XPATH = "//a[@href='/']";
+ private static final String URL = "https://www.baeldung.com";
+
+ private WebDriver driver;
+
+ private void setupChromeDriver() {
+ System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
+ driver = new ChromeDriver();
+ options();
+ }
+
+ private void setupGeckoDriver() {
+ System.setProperty("webdriver.gecko.driver", "src/test/resources/geckodriver.exe");
+ driver = new FirefoxDriver();
+ options();
+ }
+
+ private void setupEdgeDriver() {
+ System.setProperty("webdriver.edge.driver", "src/test/resources/msedgedriver.exe");
+ driver = new EdgeDriver();
+ options();
+ }
+
+ private void options() {
+ driver.manage()
+ .window()
+ .maximize();
+ }
+
+ @Test
+ void givenChromeDriver_whenNavigateToBaeldung_thenFindTitleIsSuccessful() {
+ setupChromeDriver();
+ driver.get(URL);
+ final WebElement title = driver.findElement(By.xpath(TITLE_XPATH));
+
+ assertEquals("Baeldung", title.getAttribute("title"));
+ }
+
+ @Test
+ void givenEdgeDriver_whenNavigateToBaeldung_thenFindTitleIsSuccessful() {
+ setupEdgeDriver();
+ driver.get(URL);
+ final WebElement title = driver.findElement(By.xpath(TITLE_XPATH));
+
+ assertEquals("Baeldung", title.getAttribute("title"));
+ }
+
+ @Test
+ void givenGeckoDriver_whenNavigateToBaeldung_thenFindTitleIsSuccessful() {
+ setupGeckoDriver();
+ driver.get(URL);
+ final WebElement title = driver.findElement(By.xpath(TITLE_XPATH));
+
+ assertEquals("Baeldung", title.getAttribute("title"));
+ }
+
+ @AfterEach
+ void teardown() {
+ if (driver != null) {
+ driver.quit();
+ }
+ }
+}