test: fix v3 branding drift, add reconcile CLI + registry coverage
GUI/lang-pack tests were asserting against pre-v3 strings ("Data
Cleaning Mastery", "Maestría en limpieza…") that the brand refresh
replaced with "UNALOGIX DataTools" + "Clean. Normalize. Transform."
Updated assertions to the current copy and switched the findings
panel tests to the redesigned flat-list layout (per-finding "Open
Tool →" buttons instead of per-tool expanders).
New coverage:
- tests/test_cli_reconcile.py (13) — preview/apply, tolerance flags,
sign inversion, key flags, error paths, Excel input.
- tests/test_tools_registry.py (27) — unique tool_ids, page_slug →
real file, valid sections/tiers, localized accessor fallbacks,
explicit pins for PDF Extractor + Reconciler entries.
- tests/test_reconcile.py — one-side-empty, key-pass tagging,
additional validation cases, input-DataFrame immutability.
- tests/gui/test_smoke.py — PAGE_SLUGS now includes 10_PDF_Extractor
and 11_Reconciler in both en/es.
- tests/gui/test_workflows.py — TestPdfExtractorWorkflow and
TestReconcilerWorkflow render checks.
Net: 2317 passed → 2418 passed, 0 failures.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -34,6 +34,8 @@ PAGE_SLUGS = [
|
||||
"7_Multi_File_Merger",
|
||||
"8_Validator_Reporter",
|
||||
"9_Pipeline_Runner",
|
||||
"10_PDF_Extractor",
|
||||
"11_Reconciler",
|
||||
"99_Close",
|
||||
]
|
||||
|
||||
@@ -61,17 +63,28 @@ EXPECTED_SUBSTRINGS: dict[str, dict[str, str]] = {
|
||||
"7_Multi_File_Merger": {"en": "Combine Files", "es": "Combinar archivos"},
|
||||
"8_Validator_Reporter": {"en": "Quality Check", "es": "Verificación de calidad"},
|
||||
"9_Pipeline_Runner": {"en": "Automated", "es": "Flujos automatizados"},
|
||||
# The PDF Extractor and Reconciler pages are English-only today
|
||||
# (translations tracked as a follow-up). The smoke test value is
|
||||
# still that the page *renders at all* in 'es'; the substring is
|
||||
# the same English hero text under both languages.
|
||||
"10_PDF_Extractor": {"en": "PDF to CSV", "es": "PDF to CSV"},
|
||||
"11_Reconciler": {"en": "Reconcile", "es": "Reconcile"},
|
||||
"99_Close": {"en": "Shutting down", "es": "Cerrando"},
|
||||
}
|
||||
|
||||
|
||||
class TestHomePageRenders:
|
||||
"""The home page is the only one with full EN/ES coverage in v1.6.
|
||||
Pin it independently so its translation is non-regressable."""
|
||||
"""Pin the home hero in both languages.
|
||||
|
||||
Since the v3 brand refresh the title is the literal wordmark
|
||||
("UNALOGIX DataTools") in both packs; the localized tagline is
|
||||
what shifts between en and es. We assert against the tagline
|
||||
string, which lives in ``home.caption`` of each pack.
|
||||
"""
|
||||
|
||||
@pytest.mark.parametrize("lang,expected", [
|
||||
("en", "DataTools — Data Cleaning Mastery"),
|
||||
("es", "DataTools — Maestría en limpieza de datos"),
|
||||
("en", "Clean. Normalize. Transform."),
|
||||
("es", "Limpia. Normaliza. Transforma."),
|
||||
])
|
||||
def test_home_renders_in_language(self, home_app, lang, expected):
|
||||
with_language(home_app, lang)
|
||||
@@ -81,11 +94,15 @@ class TestHomePageRenders:
|
||||
)
|
||||
assert expected in collected_text(home_app)
|
||||
|
||||
def test_home_renders_footer_in_es(self, home_app):
|
||||
def test_home_renders_privacy_pill_in_es(self, home_app):
|
||||
# The footer caption is rendered via a component-iframe so
|
||||
# ``collected_text`` can't see it. The privacy pill on the
|
||||
# home header IS visible to AppTest and carries the same
|
||||
# locality story, so we pin that instead.
|
||||
with_language(home_app, "es")
|
||||
home_app.run()
|
||||
text = collected_text(home_app)
|
||||
assert "Tus datos nunca salen" in text or "Se ejecuta localmente" in text
|
||||
assert "Se ejecuta 100% en local" in text
|
||||
|
||||
class TestEveryPageRenders:
|
||||
"""Parametrize over (page, language). Failure tells you exactly which
|
||||
|
||||
Reference in New Issue
Block a user