Automated testing solution for ToDo web applications using Python and Selenium WebDriver
This Selenium automation project tests all critical functionality of a ToDo web application, including task management, priority setting, and theme switching. The script follows industry best practices for reliable and maintainable test automation.
Automates Chrome browser with dynamic driver management using ChromeDriverManager
Comprehensive testing of user interface elements and interactions
Tests complete form workflows including input validation
Validates application state after each interaction
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from webdriver_manager.chrome import ChromeDriverManager
import time
# Initialize WebDriver
options = Options()
options.add_argument("--start-maximized")
driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install()),
options=options
)
# Test Case 1: Open application
driver.get("https://todocodehavens.netlify.app/")
time.sleep(3)
# Test Case 2: Toggle theme
driver.find_element(
By.XPATH, "//button[normalize-space()='Switch to Light Mode']"
).click()
time.sleep(2)
# Test Case 3: Add task
driver.find_element(
By.XPATH, "//input[@placeholder='Task name...']"
).send_keys("game")
driver.find_element(
By.XPATH, "//input[@name='dueDate']"
).send_keys("11-11-2026")
priority_dropdown = Select(driver.find_element(By.NAME, "priority"))
priority_dropdown.select_by_visible_text("High")
driver.find_element(
By.XPATH, "//button[normalize-space()='Add']"
).click()
time.sleep(3)
# Test Case 4: Delete task
driver.find_element(
By.XPATH, "//button[normalize-space()='Delete']"
).click()
time.sleep(5)
# Clean up
driver.quit()
Set up Chrome WebDriver with maximized window using ChromeDriverManager
Open the ToDo application URL and wait for page load
Verify light/dark mode toggle functionality
Test complete task lifecycle (create, view, delete)
Close browser and end test session