This repository contains a custom-built Selenium automation testing framework developed using Python, PyTest, and the Page Object Model (POM).
The framework is designed to automate functional and regression testing for web applications in a scalable, maintainable, and CI/CD-ready manner.
I built this framework to understand real-world QA Automation practices, including test design, reporting, CI integration, and containerized execution.
The framework follows industry-standard automation principles and includes the following key components:
PyTest is used as the core test execution engine. It provides:
- Simple and readable test syntax
- Powerful fixture mechanism
- Test discovery and tagging
- Easy integration with CI tools
Selenium is used to automate browser interactions such as:
- Page navigation
- Form input
- Button clicks
- UI validations
To improve maintainability, the framework follows the Page Object Model design pattern:
- Page locators and actions are separated from test logic
- UI changes require minimal updates
- Tests remain clean and readable
All environment-specific values (browser, URL, credentials, timeouts) are stored in a config.ini file.
This allows test execution without changing the code.
- HTML test reports are generated after execution
- Logs are captured for debugging failed scenarios
- Screenshots are automatically saved on failures
- Modular and reusable structure
- Easy to extend for new test cases
- Supports CI/CD pipelines
- Dockerized execution
- Suitable for real enterprise QA projects
├── config.ini # Test configuration settings ├── Dockerfile # Docker setup for containerized execution ├── Jenkinsfile # Jenkins CI pipeline ├── logs/ │ └── test_log.log # Execution logs ├── POM/ │ ├── init.py │ ├── locators/ │ │ └── swag_labs_locators.py │ ├── notifications/ │ │ └── swag_labs_messages.py │ └── pages/ │ ├── base_page.py │ ├── swag_labs_pages.py ├── pytest.ini # PyTest configuration ├── reports/ │ ├── assets/ # Screenshots and report assets │ └── report.html # HTML execution report ├── requirements.txt # Project dependencies ├── tests/ │ ├── conftest.py # PyTest fixtures │ ├── test_setup.py │ └── test_swag_labs.py # Sample test cases └── utils/ ├── data/ ├── helper/ └── screenshots/
python -m venv venv
source venv/bin/activate
2️⃣ Install Dependencies
pip install -r requirements.txt
3️⃣ Update Configuration
Modify values inside config.ini (browser, base URL, etc.).
4️⃣ Execute Tests
pytest
5️⃣ View Report
After execution, open:
reports/report.html
🔄 Jenkins CI Pipeline
A Jenkins pipeline is included to support continuous testing.
Pipeline Flow:
Pulls code from GitHub
Builds Docker image
Executes tests inside container
Generates reports
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'docker build -t selenium-test-framework .'
}
}
stage('Test') {
steps {
sh 'docker run selenium-test-framework pytest'
}
}
stage('Report') {
steps {
sh 'docker cp $(docker ps -q -n=1):/app/reports ./reports'
}
}
}
}
🐳 Docker Support
The framework supports Docker-based execution for environment consistency.
Build Image
docker build -t selenium-test-framework .
Run Tests
docker run selenium-test-framework pytest
Docker ensures the same test behavior across local, CI, and production environments.
🤝 Contributions
This project is open for learning and improvement.
Feel free to fork the repository and submit pull requests for enhancements.
📜 License
This project is licensed under the MIT License.
---
## 🔥 WHY THIS README WORKS FOR MSCI / SDET
✔ Sounds **hands-on and original**
✔ Shows **automation maturity**
✔ Mentions **CI/CD + Docker + POM**
✔ Easy to explain in interviews
If you want next:
- ✨ **Short README version (ATS-friendly)**
- 🧠 **Interview explanation for each section**
- 🧾 **API Automation README also**
Just tell me 👍