e1ebe6d694
Systematischer Bildvergleich der companion-app gegen das HA-Panel (companion-app/AGENTS.md Kapitel 1-11): Farbtoken/Radien aus dem falschen Stylesheet gelesen (iOS-Overlay statt Basis-CSS, betraf fast jede Kachel/Farbe/Radius app-weit), vier app-weite @audi-dash/ui-Bugs (Switch/Seg/Feld rot statt neutral bzw. falsche Feldbreite), Reifen-Seite strukturell neu gebaut (beide Radsätze gleichzeitig statt Umschalter, editierbare Felder, Anzugsmoment-/km-Korrektur), Standort-Feature komplett neu (fehlte bisher ganz), sowie diverse Struktur-/Typografie-/Datenlücken in MeinAudi/Service/Versicherung/Sicherheit/Fahrten/Tanken/Statistik/Batterie/Einstellungen. Manifest auf 2026.8.30.2 angehoben, OTA-Bündel neu gebaut und in audi_ha_test verifiziert (sauberer Neustart, keine Tracebacks). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
74 lines
2.4 KiB
TypeScript
74 lines
2.4 KiB
TypeScript
/**
|
|
* Abnahmekriterien aus Phase 5 des Umsetzungsplans: Die App muss beide
|
|
* Layouts beherrschen und die Zurück-Navigation über die ZURUECK-Tabelle
|
|
* korrekt auflösen.
|
|
*/
|
|
|
|
import { fireEvent, render, screen } from "@testing-library/react"
|
|
import { beforeEach, describe, expect, it, vi } from "vitest"
|
|
|
|
import { Shell } from "./Shell"
|
|
import { bereichVon } from "./navigation"
|
|
import { bildschirmbreiteSetzen } from "./tests/aufbau"
|
|
|
|
function rahmen(routeName: Parameters<typeof bereichVon>[0], geheZu = vi.fn()) {
|
|
render(
|
|
<Shell route={{ name: routeName }} geheZu={geheZu} tabBeschriftung>
|
|
<p>Inhalt</p>
|
|
</Shell>,
|
|
)
|
|
return geheZu
|
|
}
|
|
|
|
describe("Shell", () => {
|
|
beforeEach(() => {
|
|
bildschirmbreiteSetzen(390)
|
|
})
|
|
|
|
it("zeigt auf schmalen Bildschirmen die Tab-Leiste unten", () => {
|
|
const { container } = render(
|
|
<Shell route={{ name: "home" }} geheZu={vi.fn()} tabBeschriftung>
|
|
<p>Inhalt</p>
|
|
</Shell>,
|
|
)
|
|
expect(container.querySelector(".ads-tabbar")).not.toBeNull()
|
|
expect(container.querySelector(".dm-seitenleiste")).toBeNull()
|
|
})
|
|
|
|
it("zeigt auf breiten Bildschirmen die Seitenleiste statt der Tab-Leiste", () => {
|
|
bildschirmbreiteSetzen(1280)
|
|
const { container } = render(
|
|
<Shell route={{ name: "home" }} geheZu={vi.fn()} tabBeschriftung>
|
|
<p>Inhalt</p>
|
|
</Shell>,
|
|
)
|
|
expect(container.querySelector(".dm-seitenleiste")).not.toBeNull()
|
|
expect(container.querySelector(".ads-tabbar")).toBeNull()
|
|
})
|
|
|
|
it("führt der Zurück-Pfeil zur übergeordneten Seite", () => {
|
|
const geheZu = rahmen("beitrag")
|
|
fireEvent.click(screen.getByLabelText("Zurück"))
|
|
// beitrag -> vers laut ZURUECK-Tabelle
|
|
expect(geheZu).toHaveBeenCalledWith("vers")
|
|
})
|
|
|
|
it("blendet den Zurück-Pfeil auf Hauptbereichen aus", () => {
|
|
rahmen("trips")
|
|
expect(screen.queryByLabelText("Zurück")).toBeNull()
|
|
})
|
|
|
|
it("hebt den Hauptbereich hervor, zu dem eine Unterseite gehört", () => {
|
|
// schutz -> vertragsdetails -> vers -> audi
|
|
expect(bereichVon("schutz")).toBe("audi")
|
|
expect(bereichVon("fill")).toBe("fuel")
|
|
expect(bereichVon("trip")).toBe("trips")
|
|
})
|
|
|
|
it("erreicht die Einstellungen über die Ringe, nicht über die Tab-Leiste", () => {
|
|
const geheZu = rahmen("home")
|
|
fireEvent.click(screen.getByLabelText("Einstellungen"))
|
|
expect(geheZu).toHaveBeenCalledWith("einst")
|
|
})
|
|
})
|