Test your iced applications in headless mode.
Basic Usage
Let's assume we want to test the classical counter interface.
First, we will want to create a [Simulator] of our interface:
#
#
use simulator;
let mut counter = Counter ;
let mut ui = simulator;
Now we can simulate a user interacting with our interface. Let's use [Simulator::click] to click
the counter buttons:
#
#
# use simulator;
#
# let mut counter = Counter ;
# let mut ui = simulator;
#
let _ = ui.click;
let _ = ui.click;
let _ = ui.click;
[Simulator::click] takes a type implementing the [Selector] trait. A [Selector] describes a way to query the widgets of an interface.
In this case, we leverage the [Selector] implementation of &str, which selects a widget by the text it contains.
We can now process any messages produced by these interactions and then assert that the final value of our counter is
indeed 1!
#
#
# use simulator;
#
# let mut counter = Counter ;
# let mut ui = simulator;
#
# let _ = ui.click;
# let _ = ui.click;
# let _ = ui.click;
#
for message in ui.into_messages
assert_eq!;
We can even rebuild the interface to make sure the counter displays the proper value with [Simulator::find]:
#
#
# use simulator;
#
# let mut counter = Counter ;
let mut ui = simulator;
assert!;
And that's it! That's the gist of testing iced applications!
[Simulator] contains additional operations you can use to simulate more interactions—like tap_key or
typewrite—and even perform snapshot testing!