Skip to content

Commit 2c8cea6

Browse files
authored
Merge pull request #2 from elvisboghiu/update_gh_actions
updated gh_actions
2 parents 39e17c6 + c1afc2b commit 2c8cea6

File tree

5 files changed

+25
-13
lines changed

5 files changed

+25
-13
lines changed

.github/workflows/tests.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99

1010
jobs:
1111
test:
12-
runs-on: ubuntu-latest
12+
runs-on: ubuntu-22.04
1313

1414
steps:
1515
- name: Checkout code
@@ -30,11 +30,13 @@ jobs:
3030

3131
- name: Run tests
3232
run: |
33-
pytest --html=reports/report.html --self-contained-html -v
33+
python -m pytest --html=reports/report.html --self-contained-html -v
3434
continue-on-error: true
35+
env:
36+
PYTHONPATH: ${{ github.workspace }}
3537

3638
- name: Upload test results
37-
uses: actions/upload-artifact@v3
39+
uses: actions/upload-artifact@v4
3840
if: always()
3941
with:
4042
name: test-results

tests/conftest.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
"""
44
import pytest
55
from playwright.sync_api import Page, expect
6-
from utils.config import STANDARD_USER, STANDARD_PASSWORD
6+
from utils.config import BASE_URL, STANDARD_USER, STANDARD_PASSWORD
77
from pages.login_page import LoginPage
88
from pages.inventory_page import InventoryPage
99

10+
BASE_URL_NO_SLASH = BASE_URL.rstrip("/")
11+
1012

1113
@pytest.fixture(scope="session")
1214
def browser_context_args(browser_context_args):
@@ -35,7 +37,7 @@ def logged_in_page(login_page: LoginPage) -> Page:
3537
"""
3638
login_page.login(STANDARD_USER, STANDARD_PASSWORD)
3739
# Wait for navigation to inventory page
38-
expect(login_page.page).to_have_url("https://www.saucedemo.com/inventory.html")
40+
expect(login_page.page).to_have_url(f"{BASE_URL_NO_SLASH}/inventory.html")
3941
# Wait for inventory page to be fully loaded
4042
inventory_page = InventoryPage(login_page.page)
4143
inventory_page.is_loaded()

tests/test_cart.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@
66
from playwright.sync_api import expect
77
from pages.inventory_page import InventoryPage
88
from pages.cart_page import CartPage
9+
from utils.config import BASE_URL
910
from utils.helpers import load_test_data
1011

12+
BASE_URL_NO_SLASH = BASE_URL.rstrip("/")
13+
1114

1215
@pytest.mark.cart
1316
class TestCart:
@@ -164,4 +167,4 @@ def test_proceed_to_checkout_from_cart(self, inventory_page: InventoryPage):
164167
cart_page.proceed_to_checkout()
165168

166169
# Verify navigation to checkout page
167-
expect(inventory_page.page).to_have_url("https://www.saucedemo.com/checkout-step-one.html")
170+
expect(inventory_page.page).to_have_url(f"{BASE_URL_NO_SLASH}/checkout-step-one.html")

tests/test_checkout.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@
77
from pages.inventory_page import InventoryPage
88
from pages.cart_page import CartPage
99
from pages.checkout_page import CheckoutPage
10+
from utils.config import BASE_URL
1011
from utils.helpers import load_test_data
1112

13+
BASE_URL_NO_SLASH = BASE_URL.rstrip("/")
14+
1215

1316
@pytest.mark.checkout
1417
class TestCheckout:
@@ -40,13 +43,13 @@ def test_complete_checkout_flow(self, inventory_page: InventoryPage):
4043
checkout_page.continue_to_overview()
4144

4245
# Verify overview page
43-
expect(inventory_page.page).to_have_url("https://www.saucedemo.com/checkout-step-two.html")
46+
expect(inventory_page.page).to_have_url(f"{BASE_URL_NO_SLASH}/checkout-step-two.html")
4447

4548
# Complete order
4649
checkout_page.finish_order()
4750

4851
# Verify order completion
49-
expect(inventory_page.page).to_have_url("https://www.saucedemo.com/checkout-complete.html")
52+
expect(inventory_page.page).to_have_url(f"{BASE_URL_NO_SLASH}/checkout-complete.html")
5053
assert checkout_page.is_checkout_complete(), "Checkout should be complete"
5154

5255
confirmation_message = checkout_page.get_confirmation_message()
@@ -85,7 +88,7 @@ def test_checkout_missing_first_name(self, inventory_page: InventoryPage):
8588
f"Expected error for missing first name. Got: {error_message}"
8689

8790
# Verify still on checkout page
88-
expect(inventory_page.page).to_have_url("https://www.saucedemo.com/checkout-step-one.html")
91+
expect(inventory_page.page).to_have_url(f"{BASE_URL_NO_SLASH}/checkout-step-one.html")
8992

9093
def test_checkout_missing_last_name(self, inventory_page: InventoryPage):
9194
"""Test checkout form validation - missing last name."""
@@ -154,7 +157,7 @@ def test_cancel_checkout(self, inventory_page: InventoryPage):
154157
checkout_page.cancel_checkout()
155158

156159
# Verify return to cart
157-
expect(inventory_page.page).to_have_url("https://www.saucedemo.com/cart.html")
160+
expect(inventory_page.page).to_have_url(f"{BASE_URL_NO_SLASH}/cart.html")
158161
cart_page = CartPage(inventory_page.page)
159162
assert cart_page.is_loaded(), "Should be back on cart page"
160163

@@ -184,7 +187,7 @@ def test_logout_from_inventory_after_checkout(self, inventory_page: InventoryPag
184187
inventory_page.logout()
185188

186189
# Verify redirect to login page
187-
expect(inventory_page.page).to_have_url("https://www.saucedemo.com/")
190+
expect(inventory_page.page).to_have_url(f"{BASE_URL_NO_SLASH}/")
188191

189192
def test_checkout_with_multiple_items(self, inventory_page: InventoryPage):
190193
"""Test checkout process with multiple items in cart."""

tests/test_login.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
from playwright.sync_api import Page, expect
77
from pages.login_page import LoginPage
88
from pages.inventory_page import InventoryPage
9-
from utils.config import STANDARD_USER, STANDARD_PASSWORD, LOCKED_OUT_USER
9+
from utils.config import BASE_URL, STANDARD_USER, STANDARD_PASSWORD, LOCKED_OUT_USER
1010
from utils.helpers import get_user_credentials
1111

12+
BASE_URL_NO_SLASH = BASE_URL.rstrip("/")
13+
1214

1315
@pytest.mark.login
1416
class TestLogin:
@@ -21,7 +23,7 @@ def test_valid_login(self, login_page: LoginPage):
2123

2224
# Verify redirect to inventory page
2325
inventory_page = InventoryPage(login_page.page)
24-
expect(login_page.page).to_have_url("https://www.saucedemo.com/inventory.html")
26+
expect(login_page.page).to_have_url(f"{BASE_URL_NO_SLASH}/inventory.html")
2527
assert inventory_page.is_loaded(), "Inventory page should be loaded after successful login"
2628

2729
def test_invalid_username(self, login_page: LoginPage):

0 commit comments

Comments
 (0)