mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 11:11:10 -05:00
Add comprehensive e2e tests with Playwright
This commit is contained in:
131
tests/e2e/test_parks.py
Normal file
131
tests/e2e/test_parks.py
Normal file
@@ -0,0 +1,131 @@
|
||||
import pytest
|
||||
from playwright.sync_api import expect, Page
|
||||
|
||||
|
||||
def test_parks_list_page(page: Page):
|
||||
# Navigate to parks page
|
||||
page.goto("http://localhost:8000/parks/")
|
||||
|
||||
# Check parks list elements
|
||||
expect(page.get_by_role("heading", name="Theme Parks")).to_be_visible()
|
||||
expect(page.get_by_role("searchbox", name="Search parks")).to_be_visible()
|
||||
|
||||
# Check filter options
|
||||
expect(page.get_by_role("combobox", name="Country")).to_be_visible()
|
||||
expect(page.get_by_role("combobox", name="State/Region")).to_be_visible()
|
||||
|
||||
|
||||
def test_park_search(page: Page):
|
||||
# Navigate to parks page
|
||||
page.goto("http://localhost:8000/parks/")
|
||||
|
||||
# Search for a park
|
||||
search_box = page.get_by_role("searchbox", name="Search parks")
|
||||
search_box.fill("Universal")
|
||||
search_box.press("Enter")
|
||||
|
||||
# Verify search results
|
||||
expect(page.get_by_text("Universal Studios")).to_be_visible()
|
||||
expect(page.get_by_text("Universal's Islands of Adventure")).to_be_visible()
|
||||
|
||||
|
||||
def test_park_filters(page: Page):
|
||||
# Navigate to parks page
|
||||
page.goto("http://localhost:8000/parks/")
|
||||
|
||||
# Select country filter
|
||||
page.get_by_role("combobox", name="Country").select_option("United States")
|
||||
|
||||
# Select state filter
|
||||
page.get_by_role("combobox", name="State/Region").select_option("Florida")
|
||||
|
||||
# Verify filtered results
|
||||
expect(page.get_by_text("Walt Disney World")).to_be_visible()
|
||||
expect(page.get_by_text("Universal Orlando Resort")).to_be_visible()
|
||||
|
||||
|
||||
def test_park_detail_page(page: Page):
|
||||
# Navigate to a specific park page
|
||||
page.goto("http://localhost:8000/parks/walt-disney-world/")
|
||||
|
||||
# Check park details
|
||||
expect(page.get_by_role("heading", name="Walt Disney World")).to_be_visible()
|
||||
expect(page.get_by_text("Location:")).to_be_visible()
|
||||
expect(page.get_by_text("Orlando, Florida")).to_be_visible()
|
||||
|
||||
# Check park sections
|
||||
expect(page.get_by_role("tab", name="Overview")).to_be_visible()
|
||||
expect(page.get_by_role("tab", name="Rides")).to_be_visible()
|
||||
expect(page.get_by_role("tab", name="Reviews")).to_be_visible()
|
||||
expect(page.get_by_role("tab", name="Photos")).to_be_visible()
|
||||
|
||||
|
||||
def test_add_park_review(page: Page):
|
||||
# First login
|
||||
page.goto("http://localhost:8000/accounts/login/")
|
||||
page.get_by_label("Username").fill("testuser")
|
||||
page.get_by_label("Password").fill("testpass123")
|
||||
page.get_by_role("button", name="Sign In").click()
|
||||
|
||||
# Navigate to park page
|
||||
page.goto("http://localhost:8000/parks/walt-disney-world/")
|
||||
|
||||
# Click on Reviews tab
|
||||
page.get_by_role("tab", name="Reviews").click()
|
||||
|
||||
# Click Write Review button
|
||||
page.get_by_role("button", name="Write Review").click()
|
||||
|
||||
# Fill review form
|
||||
page.get_by_label("Rating").select_option("5")
|
||||
page.get_by_label("Title").fill("Amazing Experience")
|
||||
page.get_by_label("Review").fill("Had a fantastic time at the park!")
|
||||
|
||||
# Submit review
|
||||
page.get_by_role("button", name="Submit Review").click()
|
||||
|
||||
# Verify review appears
|
||||
expect(page.get_by_text("Amazing Experience")).to_be_visible()
|
||||
expect(page.get_by_text("Had a fantastic time at the park!")).to_be_visible()
|
||||
|
||||
|
||||
def test_add_park_photo(page: Page):
|
||||
# First login
|
||||
page.goto("http://localhost:8000/accounts/login/")
|
||||
page.get_by_label("Username").fill("testuser")
|
||||
page.get_by_label("Password").fill("testpass123")
|
||||
page.get_by_role("button", name="Sign In").click()
|
||||
|
||||
# Navigate to park page
|
||||
page.goto("http://localhost:8000/parks/walt-disney-world/")
|
||||
|
||||
# Click on Photos tab
|
||||
page.get_by_role("tab", name="Photos").click()
|
||||
|
||||
# Click Add Photo button
|
||||
page.get_by_role("button", name="Add Photo").click()
|
||||
|
||||
# Upload photo
|
||||
page.get_by_label("Photo").set_input_files("tests/fixtures/test_photo.jpg")
|
||||
page.get_by_label("Caption").fill("Beautiful castle at sunset")
|
||||
|
||||
# Submit photo
|
||||
page.get_by_role("button", name="Upload Photo").click()
|
||||
|
||||
# Verify photo appears
|
||||
expect(page.get_by_text("Beautiful castle at sunset")).to_be_visible()
|
||||
|
||||
|
||||
def test_park_map(page: Page):
|
||||
# Navigate to park page
|
||||
page.goto("http://localhost:8000/parks/walt-disney-world/")
|
||||
|
||||
# Check map exists
|
||||
expect(page.locator("#park-map")).to_be_visible()
|
||||
|
||||
# Check map controls
|
||||
expect(page.get_by_role("button", name="Zoom in")).to_be_visible()
|
||||
expect(page.get_by_role("button", name="Zoom out")).to_be_visible()
|
||||
|
||||
# Verify map markers
|
||||
expect(page.locator(".map-marker")).to_have_count.greater_than(0)
|
||||
Reference in New Issue
Block a user