from tests.conftest import BASE_URL def test_leaderboard_page_loads(alice): page, _ = alice page.goto(f"{BASE_URL}/leaderboard", wait_until="domcontentloaded") assert page.locator(".leaderboard-header h1").is_visible() assert page.is_visible("text=Ranked by total stars") def test_leaderboard_nav_link(alice): page, _ = alice page.goto(f"{BASE_URL}/feed", wait_until="domcontentloaded") assert page.is_visible("a.topnav-link:has-text('Leaderboard')") def test_leaderboard_no_pagination(alice): page, _ = alice page.goto(f"{BASE_URL}/leaderboard", wait_until="domcontentloaded") assert page.locator(".pagination").count() == 0 def test_profile_rank_stat(alice): page, user = alice page.goto(f"{BASE_URL}/profile/{user['username']}", wait_until="domcontentloaded") assert page.is_visible("text=Rank") def test_leaderboard_ranks_after_upvote(app_server, browser, seeded_db): from tests.conftest import login_user ctx_a = browser.new_context(viewport={"width": 1400, "height": 900}) ctx_b = browser.new_context(viewport={"width": 1400, "height": 900}) pa = ctx_a.new_page() pb = ctx_b.new_page() pa.set_default_timeout(15000) pb.set_default_timeout(15000) login_user(pa, seeded_db["alice"]) login_user(pb, seeded_db["bob"]) pb.goto(f"{BASE_URL}/feed", wait_until="domcontentloaded") pb.locator(".feed-fab").first.wait_for(state="visible", timeout=10000) pb.locator(".feed-fab").first.click() pb.fill("#post-content", "Post for leaderboard ranking test") pb.locator("#create-post-modal button.btn-primary:has-text('Post')").click() pb.wait_for_url("**/posts/*", timeout=10000, wait_until="domcontentloaded") post_url = pb.url pa.goto(post_url, wait_until="domcontentloaded") pa.wait_for_timeout(1000) vote_btn = pa.locator("button.post-action-btn").filter(has_text="+").first vote_btn.wait_for(state="visible", timeout=10000) vote_btn.click() pa.wait_for_timeout(1500) pa.goto(f"{BASE_URL}/leaderboard", wait_until="domcontentloaded") body = pa.locator("body").text_content() assert "Internal Server Error" not in body, f"Got 500 on leaderboard: {body[:300]}" assert pa.is_visible("a.leaderboard-name:has-text('bob_test')") ctx_a.close() ctx_b.close()