phase: 104_chip_sizing_question_cap
All completion criteria verified. Final report: **Phase 104 — final verification pass: all green** - Verified (no code changes needed): single-line ellipsized `.suggestion-chip` CSS + deleted `.maybe-try` override, `renderChips` full-text `title` + `aria-label`-when-clipped, `maxlength="4000"` + `#char-count` counter + `handleSend` over-cap guard, unit pins file, schemas boundary pins, dedicated E2E suite. - E2E (isolation): `uv run pytest tests/e2e/test_chip_sizing_question_cap.py -v --no-cov` → **6 passed**; regressions: `test_suggestion_chips.py` 8 passed, `test_pinned_composer.py` 4 passed, `test_responsive_polish.py` 7 passed, `test_chat_history.py` 5 passed. - `uv run pytest` → **2102 passed**; `--cov=app` → **99%** (>90%); `uv run ruff check . && uv run pyright` → clean, 0 errors. - Criteria: chip E2E (single-line, clipped, title+aria-label full text) ✅; paste caps at exactly 4,000, send streams, counter hides ✅; programmatic 5,000-char fill → banner, no turn, text kept ✅; 4,000/4,001 boundary pinned + HTML maxlength == JS constant cross-file pin ✅. - Diff scope: `frontend/`, new unit file, `tests/unit/test_schemas.py`, new E2E file, phase files — **no `app/` diff, no migration, no `shared.js` diff**. - Deviations: 4 regression test files touched — 2 genuine DOM-pin conflicts from the new `#char-count` child (explicitly anticipated by the overview) + 3 documented **pre-existing E2E flake fixes** (smooth-scroll race, tab-walk heuristic, 10 ms timeout), each verified pre-existing on the pre-phase-104 tree. - No commit made (harness commits per the execution protocol override). - Next pending phase: `98_sync_summary_visibility`.
This commit is contained in:
@@ -181,7 +181,12 @@ def _save_chat(page: Page, app_url: str, messages: list[dict[str, Any]]) -> dict
|
||||
def _api_suggestions(page: Page, app_url: str) -> list[str]:
|
||||
# Phase 79: the endpoint is require_user-gated — the request rides
|
||||
# the page's signed-in context (each test signs in above).
|
||||
r = page.request.get(f"{app_url}/api/suggestions", timeout=10)
|
||||
# Phase 104 (task 03, 2026-09-12): the original 10 ms timeout sat
|
||||
# BELOW a normal localhost round trip (~12 ms steady-state) and
|
||||
# flaked the whole suite on a loaded box — the sibling _save_chat
|
||||
# helper's 10 s is the house pattern; the server is up by the time
|
||||
# this probe runs (the chips it mirrors already rendered).
|
||||
r = page.request.get(f"{app_url}/api/suggestions", timeout=10_000)
|
||||
assert r.status == 200, r.text
|
||||
return r.json()["suggestions"]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user