Welcome to my end-to-end QA automation suite! This project demonstrates robust testing across web UI, REST APIs, and SQL queries using both Python and JavaScript frameworks. It’s designed for scalability, clarity, and cross-domain coverage—from browser automation to backend validation.
✅ Functional UI Testing with Selenium (Python)
✅ UI and API Testing with Cypress (JavaScript)
✅ REST API Validation using requests
✅ SQL Query Testing with SQLite
✅ Modular Test Runner for Python tests
✅ Screenshot capture on failure (Python + Cypress)
✅ Clear console logging for debugging
✅ Cross-domain coverage: login flows, search functionality, API status, and DB logic
qa-automation-suite/
├── run_tests.py # Unified Python test runner
├── selenium_tests/ # Selenium UI tests
│ └── test_login.py # Valid login flow
├── python_org_tests/ # UI tests for python.org
│ └── test_python_search.py # Search functionality test
├── api_tests/ # Python API tests
│ └── test_example_api.py # Sample API status check
├── sql_tests/ # SQL query tests
│ └── test_sql_sample.py # Dummy SQLite query test
├── cypress/
│ ├── e2e/
│ │ ├── sample-ui.cy.js # Cypress UI test for docs.cypress.io
│ │ └── sample-api.cy.js # Cypress API test for randomuser.me
│ ├── screenshots/ # Cypress screenshots on failure
│ └── cypress.config.js # Cypress configuration
├── screenshots/ # Python screenshots on failure
├── assets/, drivers/, reports/ # Supporting files
pip install -r requirements.txt
python run_tests.pyRun a specific test:
python selenium_tests/test_login.pynpm install
npx cypress run # Headless mode
npx cypress open # GUI modetest_login.py: Validates login flow using Selenium WebDriver and ChromeDrivertest_python_search.py: Automates a search on python.org and verifies results
test_example_api.py: Sends GET request to a sample REST endpoint and asserts status code and response structure
test_sql_sample.py: Executes a dummy SQL query using SQLite and validates result structure
sample-ui.cy.js: Loads docs.cypress.io and verifies presence ofnav,main, andfooterelementssample-api.cy.js: Sends GET request to randomuser.me and asserts that the response contains aresultsarray with one user
- Python failures: saved to
screenshots/ - Cypress failures: saved to
cypress/screenshots/
- Python 3.10+: Selenium, unittest, requests, SQLite
- JavaScript (Node.js): Cypress
- Add negative login test cases
- Integrate GitHub Actions for CI
- Generate HTML reports with
pytest-html - Add test data parameterization
- Expand Cypress coverage to include form validation and error handling