"""IT-Hilfe-Sofort.de — alle 19 Sitemap-Routen.""" import sys from pathlib import Path import pytest sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) project_root = Path(__file__).resolve().parent.parent import app # noqa: E402 @pytest.fixture def client(): """Flask-Test-Client.""" app.app.config["TESTING"] = True with app.app.test_client() as klient: yield klient SEITEN = [ ("/", "Startseite"), ("/impressum", "Impressum"), ("/datenschutz", "Datenschutz"), ("/ueber-uns", "Ueber uns"), ("/kontakt", "Kontakt"), ("/faq", "FAQ"), ("/blog/telematik-vorschriften", "Telematik-Vorschriften"), ("/blog/dsgvo-it-sicherheit", "DSGVO & IT-Sicherheit"), ("/blog/fachkraeftemangel", "Fachkraeftemangel"), ("/blog/foerderung-finanzierung", "Foerderung & Finanzierung"), ("/blog/qualitaet-pruefung", "Qualitaet & Pruefung"), ("/blog/praxis-tipps", "Praxis-Tipps"), ("/leistungen/pflegedienste", "Pflegedienste"), ("/leistungen/pflegeheime", "Pflegeheime"), ("/leistungen/tagespflegen", "Tagespflegen"), ("/it-service/hardware", "Hardware"), ("/it-service/netzwerk", "Netzwerk"), ("/it-service/email-kommunikation", "E-Mail & Kommunikation"), ("/it-service/support-wartung", "Support & Wartung"), ] @pytest.mark.parametrize("pfad,titel", SEITEN) def test_seite_ist_erreichbar(pfad: str, titel: str, client) -> None: """Jede Sitemap-Seite muss mit 200 antworten.""" response = client.get(pfad) assert response.status_code == 200, f"{pfad} ({titel}) gab {response.status_code}" assert b"" in response.data, f"{pfad} hat kein valid HTML" def test_base_template_inhalt(client) -> None: """Das base_template muss Header, Footer und CSS enthalten.""" response = client.get("/") assert b"site-header" in response.data assert b"site-footer" in response.data assert b"IT-Hilfe-Sofort.de" in response.data def test_kontakt_iframe_present(client) -> None: """Das Kontakt-Formular muss das CRM iframe enthalten.""" response = client.get("/kontakt") assert b"crm.companyhub.io" in response.data def test_faq_accordion_present(client) -> None: """FAQ muss Aufklappbare Elemente enthalten.""" response = client.get("/faq") assert b"faq-item" in response.data assert b"summary" in response.data def test_404_fuer_unbekannte_seiten(client) -> None: """Unbekannte URLs muessen 404 liefern.""" response = client.get("/nicht-existiert") assert response.status_code == 404 def test_artikel_dateien_existieren() -> None: """Alle 24 Artikel-Htmls muessen im 'artikel'-Ordner liegen.""" artikel_dir = project_root zaehler = 0 for f in artikel_dir.glob("artikel-*.html"): zaehler += 1 assert zaehler == 24, f"Erwartet 24 Artikel, gefunden {zaehler}"