Test reporting in CI in Selenium Python - Build an Automation Script
import pytest from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC @ pytest.fixture def driver(): driver = webdriver.Chrome() driver.implicitly_wait(5) # short implicit wait yield driver driver.quit() def test_login_success(driver): driver.get('https://example.com/login') username_input = driver.find_element(By.ID, 'username') password_input = driver.find_element(By.ID, 'password') login_button = driver.find_element(By.ID, 'loginBtn') username_input.send_keys('testuser') password_input.send_keys('Test@1234') login_button.click() # Wait until URL changes to dashboard WebDriverWait(driver, 10).until(EC.url_to_be('https://example.com/dashboard')) assert driver.current_url == 'https://example.com/dashboard', f"Expected URL to be dashboard but got {driver.current_url}" # Wait for welcome message welcome_msg = WebDriverWait(driver, 10).until( EC.visibility_of_element_located((By.ID, 'welcomeMsg')) ) assert welcome_msg.text == 'Welcome, testuser!', f"Expected welcome message text to be 'Welcome, testuser!' but got '{welcome_msg.text}'" # To run and generate JUnit XML report for CI: # pytest test_login.py --junitxml=report.xml
This test script uses pytest and selenium to automate the login test.
The driver fixture sets up and tears down the Chrome WebDriver cleanly.
The test opens the login page, enters the username and password, and clicks the login button.
It uses WebDriverWait to wait explicitly for the URL to change to the dashboard URL, avoiding unreliable fixed waits.
Then it waits for the welcome message element to appear and asserts its text matches the expected greeting.
Assertions verify the URL and welcome message text to confirm successful login.
For CI integration, running pytest with --junitxml=report.xml generates a test report in XML format that CI tools can read.
This approach follows best practices: explicit waits, clear locators, fixture usage, and proper reporting.
Now add data-driven testing with 3 different username and password combinations to verify login success or failure.