Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
654e9f0
Update gitignore for project setup
Jul 20, 2026
92fd648
Add Configuration skeleton
pdharwal22 Jul 20, 2026
a14420e
Added basic test case to test the configuration loading
pdharwal22 Jul 21, 2026
576d0e3
Add ConfigManager unit tests
pdharwal22 Jul 21, 2026
b167015
Merge pull request #1 from pdharwal22/feature/config-management
pdharwal22 Jul 21, 2026
8075871
Refactor configuration tests using pytest fixture
pdharwal22 Jul 21, 2026
eb0da70
Merge pull request #2 from pdharwal22/feature/config-management
pdharwal22 Jul 21, 2026
fd4519c
Add pytest markers and test execution strategy
pdharwal22 Jul 23, 2026
e3d1f4b
Merge pull request #3 from pdharwal22/feature/playwright-browser-manager
pdharwal22 Jul 23, 2026
c6d6ccc
Add framework logging utility
pdharwal22 Jul 24, 2026
d590d99
Add Github Actions CI pipeline
pdharwal22 Jul 25, 2026
e06b1c2
deleted extra conftest file
pdharwal22 Jul 25, 2026
959df5f
Add Github Actions CI pipeline
pdharwal22 Jul 25, 2026
825203d
Merge pull request #4 from pdharwal22/feature/playwright-browser-manager
pdharwal22 Jul 25, 2026
b83d615
removed tests.yml file
pdharwal22 Jul 25, 2026
0042aa5
Merge pull request #5 from pdharwal22/feature/playwright-browser-manager
pdharwal22 Jul 25, 2026
18b4382
Fix CI headless browser execution
pdharwal22 Jul 25, 2026
5104fc2
Merge pull request #6 from pdharwal22/feature/playwright-browser-manager
pdharwal22 Jul 25, 2026
3493dd1
"Fix environment configuration for CI execution
pdharwal22 Jul 25, 2026
de6d16a
Merge pull request #7 from pdharwal22/feature/playwright-browser-manager
pdharwal22 Jul 25, 2026
38ee963
Fix browser configuration test for CI environment
pdharwal22 Jul 25, 2026
e4ecaf6
Merge pull request #8 from pdharwal22/feature/playwright-browser-manager
pdharwal22 Jul 25, 2026
910d290
Add data-driven testing for login inventory and checkout
pdharwal22 Jul 26, 2026
3c4c480
Merge pull request #9 from pdharwal22/feature/playwright-browser-manager
pdharwal22 Jul 26, 2026
319405a
Merge branch 'main' into develop
pdharwal22 Jul 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Binary file added .DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ENVIRONMENT=qa
31 changes: 30 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,30 @@
.env
# Virtual Environment
.venv

# Python cache
__pycache__/
*.pyc
*.py[cod]

# Environment Variables
.env

# Reports
reports/
logs/
screenshots/

# Playwright artifacts
test-results/
playwright-report/

# Test Reports
reports/

# Allure
allure-resutls/
allure-report/

# Pytest
.pytest_cache/

7 changes: 7 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"python.testing.pytestArgs": [
"."
],
"python.testing.unittestEnabled": false,
"python.testing.pytestEnabled": true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
INFO pages.login_page:login_page.py:63 Attempting login with username: standard_user
INFO pages.login_page:login_page.py:67 Login action completed for username standard_user
INFO pages.inventory_page:inventory_page.py:26 Inventory page loaded: True
INFO pages.inventory_page:inventory_page.py:37 Adding product to cart: Sauce Labs Backpack
INFO pages.inventory_page:inventory_page.py:41 Product added to cart: Sauce Labs Backpack
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
2026-07-26 11:45:09,642 | INFO | pages.login_page | Attempting login with username: standard_user
2026-07-26 11:45:11,869 | INFO | pages.login_page | Login action completed for username standard_user
2026-07-26 11:45:11,881 | INFO | pages.inventory_page | Inventory page loaded: True
2026-07-26 11:45:11,881 | INFO | pages.inventory_page | Adding product to cart: Sauce Labs Backpack
2026-07-26 11:45:12,612 | INFO | pages.inventory_page | Product added to cart: Sauce Labs Backpack
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "5fba6048-890d-4ad8-a060-83e5eb0106f6", "befores": [{"name": "customer_data", "status": "passed", "start": 1785046535974, "stop": 1785046535974}], "afters": [{"name": "customer_data::<lambda>", "start": 1785046545561}], "start": 1785046535974, "stop": 1785046545561}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "a0323270-1bd9-4ea0-9871-cd09dc61ed37", "children": ["55b69fcb-b0dd-4d1c-90cc-617c12dfd925"], "befores": [{"name": "page", "status": "passed", "start": 1785046550881, "stop": 1785046550957}], "afters": [{"name": "page::1", "status": "passed", "start": 1785046556044, "stop": 1785046556047}, {"name": "page::<lambda>", "start": 1785046556048}], "start": 1785046550881, "stop": 1785046556048}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "test_invalid_configuration_key_raises_error", "status": "passed", "start": 1785046571383, "stop": 1785046571383, "uuid": "01701ce7-fb05-4767-992e-9246c52fd29d", "historyId": "ffab144bb11fc6dcdb64f5461f7a40a4", "testCaseId": "ffab144bb11fc6dcdb64f5461f7a40a4", "fullName": "tests.unit.test_config_manager#test_invalid_configuration_key_raises_error", "labels": [{"name": "parentSuite", "value": "tests.unit"}, {"name": "suite", "value": "test_config_manager"}, {"name": "host", "value": "Prateeks-MacBook-Pro.local"}, {"name": "thread", "value": "24861-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.unit.test_config_manager"}], "titlePath": ["tests", "unit", "test_config_manager.py"]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "bbed0093-6c7e-4a71-9b6d-ea781044fc9e", "befores": [{"name": "product_data", "status": "passed", "start": 1785046550994, "stop": 1785046550994}], "afters": [{"name": "product_data::<lambda>", "start": 1785046561229}], "start": 1785046550994, "stop": 1785046561229}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "Verify checkout flow - Sauce Labs Bike Light - customer_02", "status": "passed", "description": "Verify that a user can successfully complete the checkout flow using different products and customer information.", "steps": [{"name": "Navigate to SauceDemo application", "status": "passed", "start": 1785046541456, "stop": 1785046542705}, {"name": "Retrieve valid user credentials", "status": "passed", "start": 1785046542705, "stop": 1785046542705}, {"name": "Login with user: valid_standard_user", "status": "passed", "start": 1785046542705, "stop": 1785046544947}, {"name": "Verify inventory page is loaded", "status": "passed", "start": 1785046544947, "stop": 1785046544951}, {"name": "Retrieve product name: Sauce Labs Bike Light", "status": "passed", "start": 1785046544951, "stop": 1785046544951}, {"name": "Add Sauce Labs Bike Light to cart", "status": "passed", "start": 1785046544951, "stop": 1785046545670}, {"name": "Open shopping cart", "status": "passed", "start": 1785046545670, "stop": 1785046546414}, {"name": "Verify cart page is loaded", "status": "passed", "start": 1785046546414, "stop": 1785046546414}, {"name": "Verify Sauce Labs Bike Light is present in cart", "status": "passed", "start": 1785046546414, "stop": 1785046546424}, {"name": "Proceed to checkout", "status": "passed", "start": 1785046546424, "stop": 1785046547189}, {"name": "Verify checkout information page is loaded", "status": "passed", "start": 1785046547189, "stop": 1785046547189}, {"name": "Enter customer information for customer_02", "status": "passed", "start": 1785046547189, "stop": 1785046549324}, {"name": "Continue to checkout overview", "status": "passed", "start": 1785046549324, "stop": 1785046550098}, {"name": "Verify checkout overview page is loaded", "status": "passed", "start": 1785046550098, "stop": 1785046550098}, {"name": "Verify Sauce Labs Bike Light is present in order", "status": "passed", "start": 1785046550099, "stop": 1785046550120}, {"name": "Complete the order", "status": "passed", "start": 1785046550120, "stop": 1785046550881}, {"name": "Verify order confirmation message", "status": "passed", "start": 1785046550881, "stop": 1785046550884}], "attachments": [{"name": "log", "source": "f131fa65-7f98-4793-8a37-aaa2bce234c7-attachment.txt", "type": "text/plain"}, {"name": "stderr", "source": "bf6ee23d-8e90-44e2-8d3c-e41d1cd423d4-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "product_data", "value": "{'name': 'Sauce Labs Bike Light'}"}, {"name": "customer_data", "value": "{'test_id': 'customer_02', 'first_name': 'John', 'last_name': 'Doe', 'postal_code': '10001'}"}], "start": 1785046541456, "stop": 1785046550885, "uuid": "5c426436-4bd8-47eb-8bf8-41e7dce11af1", "historyId": "be2eed149bc93a3552dc8378e8c38fe5", "testCaseId": "6327861429a6ad237647b2479feceb98", "fullName": "tests.e2e.test_checkout#test_complete_checkout_flow", "labels": [{"name": "epic", "value": "SauceDemo Application"}, {"name": "severity", "value": "critical"}, {"name": "story", "value": "Complete Product Checkout"}, {"name": "feature", "value": "Checkout"}, {"name": "tag", "value": "e2e"}, {"name": "tag", "value": "regression"}, {"name": "tag", "value": "smoke"}, {"name": "parentSuite", "value": "tests.e2e"}, {"name": "suite", "value": "test_checkout"}, {"name": "host", "value": "Prateeks-MacBook-Pro.local"}, {"name": "thread", "value": "24861-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.e2e.test_checkout"}], "titlePath": ["tests", "e2e", "test_checkout.py"]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "861b6403-baab-45a7-a94c-bb9bfeda7e5d", "children": ["fe8a7034-c964-4f6f-bbcc-d629e9fd399b"], "befores": [{"name": "context", "status": "passed", "start": 1785046623966, "stop": 1785046623980}], "afters": [{"name": "context::1", "status": "passed", "start": 1785046629209, "stop": 1785046629214}, {"name": "context::<lambda>", "start": 1785046629214}], "start": 1785046623966, "stop": 1785046629214}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "b2a7490b-87e7-44ea-8955-052791b6d726", "children": ["b4f4a2f5-bf6e-44d2-b8b0-0297c5a84f76"], "befores": [{"name": "page", "status": "passed", "start": 1785046575238, "stop": 1785046575310}], "afters": [{"name": "page::1", "status": "passed", "start": 1785046578914, "stop": 1785046578922}, {"name": "page::<lambda>", "start": 1785046578922}], "start": 1785046575238, "stop": 1785046578922}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
2026-07-26 11:47:10,822 | INFO | pages.login_page | Attempting login with username: standard_user
2026-07-26 11:47:13,009 | INFO | pages.login_page | Login action completed for username standard_user
2026-07-26 11:47:13,020 | INFO | pages.inventory_page | Inventory page loaded: True
2026-07-26 11:47:13,020 | INFO | pages.inventory_page | Adding product to cart: Sauce Labs Backpack
2026-07-26 11:47:13,744 | INFO | pages.inventory_page | Product added to cart: Sauce Labs Backpack
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "fa021e00-635d-4186-8940-52a1ba150b15", "children": ["5a7d2265-bb99-408b-9ffd-9a42d5ddc311"], "befores": [{"name": "page", "status": "passed", "start": 1785046556076, "stop": 1785046556143}], "afters": [{"name": "page::1", "status": "passed", "start": 1785046561001, "stop": 1785046561007}, {"name": "page::<lambda>", "start": 1785046561007}], "start": 1785046556076, "stop": 1785046561007}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "test_browser_configuration", "status": "passed", "start": 1785046678254, "stop": 1785046678254, "uuid": "862d641e-2e12-4162-9022-f13ffac6e216", "historyId": "a4ac93025171fc690a5a66c1c3f513ab", "testCaseId": "a4ac93025171fc690a5a66c1c3f513ab", "fullName": "tests.unit.test_config_manager#test_browser_configuration", "labels": [{"name": "tag", "value": "unit"}, {"name": "parentSuite", "value": "tests.unit"}, {"name": "suite", "value": "test_config_manager"}, {"name": "host", "value": "Prateeks-MacBook-Pro.local"}, {"name": "thread", "value": "25038-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.unit.test_config_manager"}], "titlePath": ["tests", "unit", "test_config_manager.py"]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "test_report_configuration", "status": "passed", "start": 1785046571173, "stop": 1785046571173, "uuid": "3908cf82-bf59-4a87-8bfe-25ced46d66c8", "historyId": "41e63037d2613349090a216040cde46e", "testCaseId": "41e63037d2613349090a216040cde46e", "fullName": "tests.unit.test_config_manager#test_report_configuration", "labels": [{"name": "parentSuite", "value": "tests.unit"}, {"name": "suite", "value": "test_config_manager"}, {"name": "host", "value": "Prateeks-MacBook-Pro.local"}, {"name": "thread", "value": "24861-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.unit.test_config_manager"}], "titlePath": ["tests", "unit", "test_config_manager.py"]}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
2026-07-26 11:46:08,575 | INFO | pages.login_page | Attempting login with username: invalid_user
2026-07-26 11:46:10,768 | INFO | pages.login_page | Login action completed for username invalid_user
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "047a3b8a-8ee5-46ef-9cf6-6cf91fd30f95", "children": ["862d641e-2e12-4162-9022-f13ffac6e216"], "befores": [{"name": "context", "status": "passed", "start": 1785046678224, "stop": 1785046678228}], "afters": [{"name": "context::1", "status": "passed", "start": 1785046678256, "stop": 1785046678258}, {"name": "context::<lambda>", "start": 1785046678258}], "start": 1785046678224, "stop": 1785046678258}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Active environment: ci
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "7920e7e5-4959-41e7-8087-52dd97b3728e", "children": ["bf9c4c05-9138-4d59-ab12-782895346ac8"], "befores": [{"name": "page", "status": "passed", "start": 1785046664027, "stop": 1785046664055}], "afters": [{"name": "page::1", "status": "passed", "start": 1785046668695, "stop": 1785046668698}, {"name": "page::<lambda>", "start": 1785046668698}], "start": 1785046664027, "stop": 1785046668698}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "b0174a02-93a2-4dca-a5dd-527a6cc13cd5", "children": ["3066e1cd-8d5e-4fdb-b327-8dfcd432565c"], "befores": [{"name": "page", "status": "passed", "start": 1785046570912, "stop": 1785046570979}], "afters": [{"name": "page::1", "status": "passed", "start": 1785046570980, "stop": 1785046570984}, {"name": "page::<lambda>", "start": 1785046570984}], "start": 1785046570912, "stop": 1785046570984}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "bbeb7935-6d9e-41bf-a77b-6f1f8696428f", "children": ["f412bdd1-455f-4d18-b998-508aa34153e2"], "befores": [{"name": "context", "status": "passed", "start": 1785046678327, "stop": 1785046678331}], "afters": [{"name": "context::1", "status": "passed", "start": 1785046678359, "stop": 1785046678360}, {"name": "context::<lambda>", "start": 1785046678360}], "start": 1785046678327, "stop": 1785046678360}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "33e0aa9c-b1cf-4e8a-a200-5b616076ab70", "children": ["a21733f1-46a9-4386-84e5-51882bea3fc2", "d2771ee5-ebfb-4c91-b9bf-e1f2fd9898fa"], "befores": [{"name": "test_data", "status": "passed", "start": 1784972657470, "stop": 1784972657470}], "afters": [{"name": "test_data::<lambda>", "start": 1784972666774}], "start": 1784972657470, "stop": 1784972666774}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "20c82e9c-6921-4122-9e9e-8b584c03b214", "children": ["fe8a7034-c964-4f6f-bbcc-d629e9fd399b"], "befores": [{"name": "page", "status": "passed", "start": 1785046623980, "stop": 1785046624022}], "afters": [{"name": "page::1", "status": "passed", "start": 1785046629204, "stop": 1785046629208}, {"name": "page::<lambda>", "start": 1785046629208}], "start": 1785046623980, "stop": 1785046629208}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "6dd74313-4518-4fbf-8958-65a38877ec28", "children": ["1074506d-17b2-43e1-bf42-23dc3240eb14"], "befores": [{"name": "page", "status": "passed", "start": 1785046510925, "stop": 1785046510996}], "afters": [{"name": "page::1", "status": "passed", "start": 1785046531403, "stop": 1785046531407}, {"name": "page::<lambda>", "start": 1785046531407}], "start": 1785046510925, "stop": 1785046531407}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "1cf545e1-d5b4-4a52-bcdf-6e6c27ed28bf", "children": ["fa8ddc56-d8d7-455f-af79-65d39d887c72"], "befores": [{"name": "context", "status": "passed", "start": 1785046678293, "stop": 1785046678297}], "afters": [{"name": "context::1", "status": "passed", "start": 1785046678324, "stop": 1785046678326}, {"name": "context::<lambda>", "start": 1785046678326}], "start": 1785046678293, "stop": 1785046678326}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "2d2c7f70-6690-4bf3-a219-91a262457411", "children": ["799572c8-7c98-486f-8b0f-1619ecce312a", "a21733f1-46a9-4386-84e5-51882bea3fc2", "d2771ee5-ebfb-4c91-b9bf-e1f2fd9898fa", "7eb30509-d9b5-44e4-9fc6-15a1286f53c4", "39b5b3aa-ae1b-4e88-b2db-15bd7a6d31a1", "a83e51ed-203f-4d44-8e52-6437b6a1d5b3", "b3785c7a-0c91-4f3d-98e4-88788e780814", "fc36974f-f71e-44d1-8334-955ea164560e"], "befores": [{"name": "pytestconfig", "status": "passed", "start": 1784972654828, "stop": 1784972654828}], "afters": [{"name": "pytestconfig::<lambda>", "start": 1784972666825}], "start": 1784972654828, "stop": 1784972666825}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "c6a6eeba-9310-4791-b3f6-2303990ef7cf", "children": ["aa5fb6e8-5c70-4242-afd1-78de14bddaf7"], "befores": [{"name": "capture_failure_artifacts", "status": "passed", "start": 1785046571283, "stop": 1785046571283}], "afters": [{"name": "capture_failure_artifacts::1", "status": "passed", "start": 1785046571283, "stop": 1785046571284}, {"name": "capture_failure_artifacts::<lambda>", "start": 1785046571284}], "start": 1785046571283, "stop": 1785046571284}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "d1e3d5be-ebce-4db2-b2ef-36f1c6bb3eb9", "children": ["f6e3505e-7dd3-4cfc-8a90-14eac04d4dcf"], "befores": [{"name": "context", "status": "passed", "start": 1785046570995, "stop": 1785046571000}], "afters": [{"name": "context::1", "status": "passed", "start": 1785046571080, "stop": 1785046571091}, {"name": "context::<lambda>", "start": 1785046571091}], "start": 1785046570995, "stop": 1785046571091}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
INFO pages.login_page:login_page.py:63 Attempting login with username: locked_out_user
INFO pages.login_page:login_page.py:67 Login action completed for username locked_out_user
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "6880f066-64b1-4677-a5a9-c394a763b727", "children": ["db8c0ef2-f2c6-495f-93ef-c86d16fcd74a"], "befores": [{"name": "capture_failure_artifacts", "status": "passed", "start": 1785046508411, "stop": 1785046508411}], "afters": [{"name": "capture_failure_artifacts::1", "status": "passed", "start": 1785046517891, "stop": 1785046517891}, {"name": "capture_failure_artifacts::<lambda>", "start": 1785046517891}], "start": 1785046508411, "stop": 1785046517891}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "8cc064c8-702d-44ae-b542-8686d5e91b4a", "children": ["83945fcc-d8fc-4b0f-9a54-8e43b052fd9c", "bae7f386-b0b4-4d9c-ba4b-61a7555cb2a8", "0d3a97b2-2d02-4265-9ebd-2e0e6dfc5eb2"], "befores": [{"name": "playwright", "status": "passed", "start": 1784972654828, "stop": 1784972654953}], "afters": [{"name": "playwright::1", "status": "passed", "start": 1784972671061, "stop": 1784972671068}, {"name": "playwright::<lambda>", "start": 1784972671068}], "start": 1784972654828, "stop": 1784972671068}
Loading
Loading