Files
devplacepy/tests/e2e/admin/game.py
T
retoorandClaude Sonnet 5 34f76aad65 Code Farm economy rebalance: market saturation, infrastructure/defense/cosmetics, mastery track, secondary leaderboards, admin eras, underdog bonus and weekly contracts
Every purchase/upgrade path (new and pre-existing) is now race-safe against concurrent requests via atomic conditional SQL updates.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 23:55:46 +02:00

65 lines
2.2 KiB
Python

# retoor <retoor@molodetz.nl>
from playwright.sync_api import expect
from tests.conftest import BASE_URL
def end_any_active_era():
from devplacepy.services.game import store
if store.active_era():
store.end_era()
def test_admin_game_redirect_unauth(page, app_server):
page.goto(f"{BASE_URL}/admin/game", wait_until="domcontentloaded")
assert page.url.startswith(f"{BASE_URL}/auth/login")
def test_admin_game_page_loads_dormant(alice):
page, _ = alice
end_any_active_era()
page.goto(f"{BASE_URL}/admin/game", wait_until="domcontentloaded")
assert page.is_visible("text=Code Farm - Eras")
assert page.is_visible("text=No Era is currently running")
assert page.locator("#era-name").is_visible()
def test_admin_game_start_and_end_era(alice):
page, _ = alice
end_any_active_era()
page.goto(f"{BASE_URL}/admin/game", wait_until="domcontentloaded")
page.fill("#era-name", "PlaywrightEra")
page.fill("#era-duration", "14")
page.click("button:has-text('Start Era')")
confirm_btn = page.locator(".dialog-confirm")
confirm_btn.wait_for(state="visible")
confirm_btn.click()
page.wait_for_url("**/admin/game", wait_until="domcontentloaded")
expect(page.locator("text=PlaywrightEra")).to_be_visible()
assert page.locator("button:has-text('End Era')").is_visible()
page.click("button:has-text('End Era')")
confirm_btn = page.locator(".dialog-confirm")
confirm_btn.wait_for(state="visible")
confirm_btn.click()
page.wait_for_url("**/admin/game", wait_until="domcontentloaded")
assert page.is_visible("text=No Era is currently running")
def test_admin_game_start_form_hidden_while_era_active(alice):
page, _ = alice
end_any_active_era()
page.goto(f"{BASE_URL}/admin/game", wait_until="domcontentloaded")
page.fill("#era-name", "FirstEra")
page.click("button:has-text('Start Era')")
confirm_btn = page.locator(".dialog-confirm")
confirm_btn.wait_for(state="visible")
confirm_btn.click()
page.wait_for_url("**/admin/game", wait_until="domcontentloaded")
page.goto(f"{BASE_URL}/admin/game", wait_until="domcontentloaded")
assert page.locator("#era-name").count() == 0
end_any_active_era()