[package] name = "llimphi-test" version.workspace = true edition.workspace = true license.workspace = true authors.workspace = true publish.workspace = true description = "llimphi-test — arnés de golden-image headless y determinista para Llimphi. Renderiza un `View` a una textura por el adapter de SOFTWARE (llvmpipe/lavapipe, mismo píxel host-a-host y en CI) y lo diffea contra un golden con tolerancia perceptual. Convierte 'renderiza y mira' (caro en tokens, subjetivo) en `assert_golden!` (barato, objetivo). Certifica cambios visuales por texto (DiffStats) según CLAUDE.md §8." [dependencies] llimphi-hal = { path = "../llimphi-hal", version = "0.1.0" } llimphi-raster = { path = "../llimphi-raster", version = "0.1.0" } llimphi-compositor = { path = "../llimphi-compositor", version = "0.1.0" } llimphi-text = { path = "../llimphi-text", version = "0.1.0" } llimphi-layout = { path = "../llimphi-layout", version = "0.1.0" } pollster = { workspace = true } image = { workspace = true } [dev-dependencies] llimphi-theme = { path = "../llimphi-theme", version = "0.1.0" } # Widgets reales para el test de semántica accesible (`tests/semantica_widgets.rs`). # Ningún widget dev-depende de `llimphi-test`, así que no hay ciclo. llimphi-ui = { workspace = true } llimphi-widget-tabs = { path = "../widgets/tabs", version = "0.1.0" } llimphi-widget-tree = { path = "../widgets/tree", version = "0.1.0" } llimphi-widget-list = { path = "../widgets/list", version = "0.1.0" } llimphi-widget-progress = { path = "../widgets/progress", version = "0.1.0" } llimphi-widget-transport = { path = "../widgets/transport", version = "0.1.0" } llimphi-widget-calendar = { path = "../widgets/calendar", version = "0.1.0" } llimphi-widget-splitter = { path = "../widgets/splitter", version = "0.1.0" } llimphi-widget-toolbar = { path = "../widgets/toolbar", version = "0.1.0" } # El atlas de glifos: el otro camino a texto, el que se compara contra vello en # `tests/texto_gpu_directo.rs`. llimphi-glifos = { path = "../llimphi-glifos", version = "0.1.0" } # Sólo para armar una `peniko::ImageBrush` sintética en `boundary_gradiente_imagen`. llimphi-image = { path = "../llimphi-image", version = "0.1.0" } llimphi-widget-detail-table = { path = "../widgets/detail-table", version = "0.1.0" } llimphi-widget-scroll = { path = "../widgets/scroll", version = "0.1.0" } llimphi-widget-datetime-picker = { path = "../widgets/datetime-picker", version = "0.1.0" } llimphi-widget-form = { path = "../widgets/form", version = "0.1.0" } llimphi-widget-accordion = { path = "../widgets/accordion", version = "0.1.0" } llimphi-widget-stepper = { path = "../widgets/stepper", version = "0.1.0" } llimphi-widget-table = { path = "../widgets/table", version = "0.1.0" } llimphi-widget-field = { path = "../widgets/field", version = "0.1.0" } llimphi-widget-spinner = { path = "../widgets/spinner", version = "0.1.0" } # El botón Rive: el único widget cuyo dibujo lo produce un clip Lottie # (`foreign-lottie`) y no código de pintado propio. Ver `rive_button_pinta.rs`. llimphi-widget-rive-button = { path = "../widgets/rive-button", version = "0.1.0" } # El puente a Lottie, para preguntarle si lo que "degrada con gracia" además # se ve (`lottie_degrada_pero_pinta.rs`). llimphi-lottie = { path = "../llimphi-lottie", version = "0.1.0" } chrono = { workspace = true }