
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import io.github.bonigarcia.wdm.WebDriverManager;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static org.assertj.core.api.Assertions.assertThat;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;


class HelloWorldChromeJupiterTest {

     private static final Logger log = LoggerFactory.getLogger(HelloWorldChromeJupiterTest.class);

    private WebDriver driver;

    @BeforeAll
    static void setupClass() {
        WebDriverManager.chromedriver().setup();
    }

    @BeforeEach
    void setup() {
        driver = new ChromeDriver();
    }

    @Test
    void test() {
        // Exercise
        String sutUrl = "https://bonigarcia.dev/selenium-webdriver-java/";
        driver.get(sutUrl);
        String title = driver.getTitle();
        log.debug("The title of {} is {}", sutUrl, title);

        // Verify
        assertThat(title).isEqualTo("Hands-On Selenium WebDriver with Java"); 
    }

    @Test
    void testNavigateToSlowCalculator() {
        //open main page
        String sutUrl = "https://bonigarcia.dev/selenium-webdriver-java/";
        driver.get(sutUrl);
        log.info("Opened page: {}", sutUrl);

        //verify main page title
        String title = driver.getTitle();
        assertThat(title).isEqualTo("Hands-On Selenium WebDriver with Java");

        //step 2: Find and click the “Slow calculator” link
        WebElement slowCalcLink = driver.findElement(By.linkText("Slow calculator"));
        slowCalcLink.click();
        log.info("Clicked on 'Slow calculator' link");

        //assert that we are on the correct page
        String currentUrl = driver.getCurrentUrl();
        log.info("Current URL after clicking: {}", currentUrl);

        assertThat(currentUrl)
            .contains("slow-calculator"); // verifies navigation worked
    }

    @AfterEach
    void teardown() {
        driver.quit(); 
    }

}