Skip to content

marius-test/selenium_automation_framework

Repository files navigation

selenium_automation_framework

Target website: https://www.saucedemo.com/

This project implements a scalable, maintainable Selenium automation framework using Python, Pytest, and the Page Object Model (POM) design pattern.

The goal is to automate and verify all major functionalities of the Saucedemo e-commerce site with clean test structure, detailed reporting, logging, and CI/CD integration. It provides hands-on experience developing advanced test framework features.

The framework is structured for clarity, reusability, and modular growth, allowing easy expansion as new features or test requirements are introduced.

👉 For exploratory Selenium automation testing across a wide range of web functionalities, see my companion project: selenium_automation_testing


Framework Features

  • Page Object Model (POM) for test scalability and maintainability
  • Pytest with fixtures for flexible test execution and setup/teardown
  • Driver factory for browser setup abstraction
  • Allure and pytest-html reports for rich and customizable test reporting
  • Test configuration management via CLI options or config files
  • Headless/visible browser modes and future multi-browser support
  • CI/CD using GitHub Actions and optional Docker containerization
  • Screenshot on test failure planned for better debugging

Project Structure

  • .vscode: IDE settings and configurations
  • debug: debugging scripts (debug_script.py, debug_test.py)
  • docs: plain text commands, instructions, and setup notes
  • logs: log files generated during test execution
  • pages: Page Object Model classes representing UI pages
  • reports: generated HTML or Allure test reports
  • runners: PowerShell scripts (.ps1) to run tests easily
  • screenshots: screenshots saved on test failures
  • tests: test cases and test suites (e.g., test_login.py)
  • utils: utility modules, helpers, and custom wait functions
  • venv: Python virtual environment for the project
  • config.py: configuration file with constants and test data like URLs, usernames, and passwords
  • conftest.py: pytest fixtures and hooks
  • pytest.ini: pytest configuration file
  • requirements.txt: Python package dependencies

Tools and Libraries

  • Python - main programming language
  • Pytest - test execution framework
  • pytest-html - lightweight HTML report generator for pytest
  • Selenium WebDriver - browser automation
  • webdriver-manager - automatic browser driver downloads
  • Allure - rich test reporting and visualization tool
  • Docker - for isolated, consistent test environments
  • Visual Studio Code - main IDE
  • PyCharm - secondary IDE
  • GitHub - version control system
  • GitHub Actions - continuous integration pipeline

Notes

This project is part of my ongoing QA automation journey. It reflects real-world framework practices like modular design, layered architecture, clear separation of concerns, and external integrations.

It's being built step-by-step, documenting and automating everything from the ground up, including virtual environment setup, logging, data handling, and reporting.


Status

🚧 This project is currently in progress, with regular improvements as features are implemented and test coverage increases. 🚧