import json def test_first_group_shown(base_url, page, seed_state): album_id = seed_state("phase5_state") page.goto(f"{base_url}/write?album_id={album_id}") assert page.locator(".group-photos img").count() >= 1 assert page.locator("#title-field").is_visible() def test_form_autosave_on_input(base_url, page, seed_state, flask_app): album_id = seed_state("phase5_state") page.goto(f"{base_url}/write?album_id={album_id}") page.fill("#title-field", "Arrival in Almaty") page.wait_for_timeout(700) with flask_app.app_context(): from app.state import load_state state = load_state(album_id, flask_app) assert state.groups[0].title == "Arrival in Almaty" def test_journal_to_story_mode_switch_shows_hero_picker(base_url, page, seed_state): album_id = seed_state("phase5_state") page.goto(f"{base_url}/write?album_id={album_id}") page.locator("#mode-story").click() assert page.locator("#hero-picker").is_visible() assert not page.locator("#mode-journal-fields").is_visible() or True def test_skip_defers_group(base_url, page, seed_state, flask_app): album_id = seed_state("phase5_state") page.goto(f"{base_url}/write?album_id={album_id}") page.locator("#skip-btn").click() page.wait_for_timeout(400) with flask_app.app_context(): from app.state import load_state state = load_state(album_id, flask_app) assert state.groups[0].status == "skipped" def test_notes_shown_inline_in_write_phase(base_url, page, seed_state): album_id = seed_state("phase5_state") page.goto(f"{base_url}/write?album_id={album_id}") assert page.locator("#inline-notes").is_visible()