{"id":31970333,"url":"https://github.com/maxxjabr/qa-automation-portfolio","last_synced_at":"2026-04-13T20:32:32.444Z","repository":{"id":310678569,"uuid":"1037616203","full_name":"maxxjabr/qa-automation-portfolio","owner":"maxxjabr","description":"4-week Python QA automation portfolio using Playwright, Pytest, and Selenium","archived":false,"fork":false,"pushed_at":"2025-12-24T10:35:32.000Z","size":21298,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-26T00:50:11.399Z","etag":null,"topics":["playwright","portfolio","pytest","qa-automation","selenium","selenium-python","selenium-webdriver"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxxjabr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-13T21:13:00.000Z","updated_at":"2025-12-24T10:35:36.000Z","dependencies_parsed_at":"2025-09-11T19:12:01.232Z","dependency_job_id":"f7ed5f49-1a22-445d-af60-c430dd26d251","html_url":"https://github.com/maxxjabr/qa-automation-portfolio","commit_stats":null,"previous_names":["maxxjabr/qa-automation-portfolio"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/maxxjabr/qa-automation-portfolio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxxjabr%2Fqa-automation-portfolio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxxjabr%2Fqa-automation-portfolio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxxjabr%2Fqa-automation-portfolio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxxjabr%2Fqa-automation-portfolio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxxjabr","download_url":"https://codeload.github.com/maxxjabr/qa-automation-portfolio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxxjabr%2Fqa-automation-portfolio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31770720,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T20:17:16.280Z","status":"ssl_error","status_checked_at":"2026-04-13T20:17:08.216Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["playwright","portfolio","pytest","qa-automation","selenium","selenium-python","selenium-webdriver"],"created_at":"2025-10-14T19:13:56.768Z","updated_at":"2026-04-13T20:32:32.413Z","avatar_url":"https://github.com/maxxjabr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QA Automation Portfolio\n\nThis repository showcases a 4-week QA automation portfolio project using modern Python testing frameworks. The goal is to demonstrate competency with **test planning**, **test structure**, **Selenium**, **Playwright**, and the **Page Object Model (POM)** while simulating a real-world QA workflow.\n\n---\n\n## Weekly Breakdown\n\n| Week | Focus | Tech |\n|------|-------|------|\n| Week 1 | Test automation on static site | Selenium + Pytest |\n| Week 2 | Page Object Model, login + inventory tests | Playwright + Pytest |\n| Week 3 | Cart flow, user roles, error handling | Playwright + Pytest |\nWeek 4 | Realistic final project with dynamic content | Playwright + Pytest |\n\n---\n\n## Tools Used\n\n- Python 3.x\n- Selenium\n- Playwright\n- Pytest\n- Page Object Model (POM)\n- GitHub\n\n---\n\n## Setup Instructions\n\n### 1. Clone the Repository\n```bash\ngit clone https://github.com/maxxjabr/qa-automation-portfolio.git\ncd qa-automation-portfolio\n```\n\n### 2. Create and Activate Virtual Environment\n```bash\npython3 -m venv venv\nsource venv/bin/activate        # On Windows: venv\\Scripts\\activate\n```\n\n### 3. Install Dependencies\n```bash\npip install -r requirements.txt\nplaywright install              # For Playwright tests\n```\n\n## Running Tests\n\n### Week 1: Quotes to Scrape (Selenium)\n```bash\npytest test_quotes_site/\n```\n\n### Weeks 2 \u0026 3: Shopping Site (Playwright)\n```bash\npytest test_shopping_site/\n```\nSet ```headless=False``` in ```conftest.py``` if you want to see the browser during testing.\n\n### Week 4: Final Project (Playwright)\n```bash\npytest test_final_project/\n```\n\n## Week-by-Week Details\n\n### Week 1: Quotes to Scrape\nAutomated basic UI tests on https://quotes.toscrape.com using Selenium + Pytest.\n#### Tests Included:\n- Title presence\n- Login visibility\n- Pagination functionality\n\n### Week 2: Shopping Site (SauceDemo)\nAutomated login and inventory page validations on https://saucedemo.com using Playwright + Pytest + POM.\n#### Tests Included:\n- Valid user login\n- Product visibility\n- Inventory page assertions\n\n### Week 3: Reporting \u0026 GitHub Polish\n- Integrated `pytest-html` for automatic HTML reports\n- Configured `conftest.py` to capture screenshots on test failures\n- Added one flaky test to demonstrate failure reporting\n- Configured Playwright screenshots on failure\n- Added `pytest.ini` and cleaned up repo structure\n\n### Week 4: Final Project - SauceDemo Test Suite\nBuilt a comprehensive end-to-end test suite on https://saucedemo.com using Playwright, covering realistic e-commerce behaviors. Emphasized code clarity, maintainability, and meaningful automation use cases.\n#### Tests Included:\n- `test_successful_login`: Verifies valid login credentials and correct redirect behavior\n- `test_add_and_remove_from_cart`: Adds and removes an item from the cart and validates item count\n- `test_sort_by_price_low_to_high`: Selects \"Price (low to high)\" from sort dropdown and validates sort behavior\n- `test_dynamic_render`: Confirms cart badge dynamically updates after adding item (JS-rendered behavior)\n#### Features:\n- Page Object Model across all flows (Login, Inventory, Cart)\n- Clear test suite organization under `test_final_project/`\n- Failure screenshots and HTML report generation (`report.html`)\n- Parametrized and dynamic element handling where appropriate\n\n## Contact\nCreated by [Mahmoud Jabir](https://github.com/maxxjabr)\nConnect with me on [LinkedIn](https://www.linkedin.com/in/max-jabir/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxxjabr%2Fqa-automation-portfolio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxxjabr%2Fqa-automation-portfolio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxxjabr%2Fqa-automation-portfolio/lists"}