b5c90a1e81
Add group.py route, phase4.html template, and supporting state changes. Photos are shown as a flat stream; clicking divider zones inserts entry-break boundaries that split photos into labelled groups. Labels persist via group_labels dict. Done materialises groups into state.groups and advances to write phase. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
import json
|
|
|
|
|
|
def test_photos_shown_as_stream(base_url, page, seed_state):
|
|
album_id = seed_state("phase4_state")
|
|
page.goto(f"{base_url}/group?album_id={album_id}")
|
|
assert page.locator(".stream-photo").count() == 2
|
|
|
|
|
|
def test_insert_divider_creates_group_boundary(base_url, page, seed_state, flask_app):
|
|
album_id = seed_state("phase4_state")
|
|
page.goto(f"{base_url}/group?album_id={album_id}")
|
|
page.locator(".divider-zone").first.hover()
|
|
page.locator(".insert-divider-btn").first.click()
|
|
page.wait_for_timeout(300)
|
|
assert page.locator(".group-block").count() == 2
|
|
|
|
|
|
def test_remove_divider_merges_groups(base_url, page, seed_state):
|
|
album_id = seed_state("phase4_state")
|
|
page.goto(f"{base_url}/group?album_id={album_id}")
|
|
page.locator(".divider-zone").first.hover()
|
|
page.locator(".insert-divider-btn").first.click()
|
|
page.wait_for_timeout(200)
|
|
page.locator(".remove-divider-btn").first.click()
|
|
page.wait_for_timeout(200)
|
|
assert page.locator(".group-block").count() == 1
|
|
|
|
|
|
def test_label_edit_persists(base_url, page, seed_state, flask_app):
|
|
album_id = seed_state("phase4_state")
|
|
page.goto(f"{base_url}/group?album_id={album_id}")
|
|
page.locator(".divider-zone").first.hover()
|
|
page.locator(".insert-divider-btn").first.click()
|
|
page.wait_for_timeout(200)
|
|
page.locator(".group-label").first.fill("Morning walk")
|
|
page.locator(".group-label").first.press("Enter")
|
|
page.wait_for_timeout(300)
|
|
page.reload()
|
|
assert "Morning walk" in page.locator(".group-label").first.input_value()
|
|
|
|
|
|
def test_done_advances_to_write(base_url, page, seed_state):
|
|
album_id = seed_state("phase4_state")
|
|
page.goto(f"{base_url}/group?album_id={album_id}")
|
|
page.locator("#done-btn").click()
|
|
page.wait_for_url("**/write**")
|