Skip to content

test(ui): add iced_test interaction harness #215

Description

@thewrz

Why

HonkHonk currently relies on manual “launch the app and click” checks for important Iced interactions. That leaves deterministic update/view regressions uncovered in ordinary cargo test, including the sort flow from #211 and staged settings search from #213.

Scope

Add a compositor-free Layer A GUI interaction harness using the official MIT-licensed iced_test 0.14 crate as a dev dependency, matched to Iced 0.14.

  • Construct real HonkHonk state and exercise the real view() and update() through iced_test::Simulator.
  • Provide focused helpers for selector-based click, tap_key, typewrite, and find operations.
  • Cover the sort chip flow: open options, select Name, dismiss, and verify the per-view persisted config preference.
  • Cover staged settings search: filter categories, select a result, verify matching-row highlight behavior, clear the query, and verify the public restore behavior.
  • Keep the tests compositor-free and runnable through ordinary cargo test.
  • Do not add pixel snapshots unless a demonstrably stable layout requires one.
  • Keep cargo fmt --check, cargo clippy -- -D warnings, cargo test, and cargo deny check green.

Limits

This layer validates Iced update/view logic and widget-tree behavior only. It does not exercise winit, wgpu, the Wayland compositor, ksni tray integration, desktop portals, or PipeWire audio.

New dependency justification

iced_test is the official test crate shipped alongside Iced and supplies Simulator/widget selectors that would be costly and brittle to recreate. Version 0.14.0 matches the application’s Iced 0.14 line. License: MIT. cargo deny check must remain green.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ciCI and workflow changesenhancementNew feature or requestuiIced GUI, theme, widgets

    Type

    No type

    Projects

    • Status
      Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions