refactor(gui): drop Review page + normalization gate
Home is now the only entry point: the "Run analysis" button on the upload section IS the review step (findings render inline via render_findings_panel). Tool pages no longer gate on a passed normalization — running the analyzer is sufficient context. Removed: - src/gui/pages/0_Review.py - src/gui/components/gate.py (re-export seam) - require_normalization_gate() in src/gui/components/_legacy.py - "review" section enum in tools_registry.py - Data Review entry in app.py navigation - require_normalization_gate() calls + imports in all nine tool pages - tests/gui/test_gate.py (whole file) - TestReviewWorkflow in tests/gui/test_workflows.py - 0_Review entry in tests/gui/test_smoke.py PAGE_SLUGS - stash_upload's normalization_result+normalization_for stashing - stash_upload_without_gate (was the gate's negative-path helper) 2017 tests pass (16 retired with the gate flow). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -109,49 +109,19 @@ def app_factory():
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def stash_upload(app: AppTest, *, name: str, data: bytes) -> str:
|
||||
"""Pre-populate the home-screen upload stash + the gate's normalisation
|
||||
result so a tool page renders past ``require_normalization_gate()``.
|
||||
"""Pre-populate the home-screen upload stash so a tool page renders
|
||||
as if the user had uploaded *name* / *data* on the home screen.
|
||||
|
||||
Returns the SHA-256 hex of *data* (used as the gate key) in case the
|
||||
test wants to assert against it.
|
||||
|
||||
The gate checks::
|
||||
|
||||
- ``home_uploaded_bytes`` is set
|
||||
- ``normalization_for == sha256(home_uploaded_bytes)``
|
||||
- ``normalization_result.passed is True``
|
||||
|
||||
We synthesise a passing result via a tiny stub object that satisfies
|
||||
the gate's only attribute access (``.passed``). Tests that want to
|
||||
exercise gate-blocking behaviour should NOT call this helper — they
|
||||
should stash bytes without the normalisation result.
|
||||
Returns the SHA-256 hex of *data* in case the test wants to assert
|
||||
against it.
|
||||
"""
|
||||
sha = hashlib.sha256(data).hexdigest()
|
||||
app.session_state["home_uploaded_bytes"] = data
|
||||
app.session_state["home_uploaded_name"] = name
|
||||
app.session_state["home_uploaded_size"] = len(data)
|
||||
app.session_state["normalization_for"] = sha
|
||||
app.session_state["normalization_result"] = _PassedGateResult()
|
||||
return sha
|
||||
|
||||
|
||||
class _PassedGateResult:
|
||||
"""Minimal stand-in for the real NormalizationResult shape — the gate
|
||||
only reads ``.passed``. Using a real NormalizationResult here would
|
||||
pull in core.normalize and tie GUI tests to its constructor surface.
|
||||
"""
|
||||
|
||||
passed: bool = True
|
||||
|
||||
|
||||
def stash_upload_without_gate(app: AppTest, *, name: str, data: bytes) -> None:
|
||||
"""Stash the upload bytes but do NOT pre-pass the gate. Used by gate
|
||||
tests that want the warning + Go-to-Review button to appear."""
|
||||
app.session_state["home_uploaded_bytes"] = data
|
||||
app.session_state["home_uploaded_name"] = name
|
||||
app.session_state["home_uploaded_size"] = len(data)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# i18n helpers
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user