makepad/examples/todo/tests/ui.rs
2026-05-04 17:37:21 +02:00

69 lines
2.3 KiB
Rust

use makepad_test::{makepad_test, Selector, TestApp};
#[makepad_test]
fn todo_smoke(app: TestApp) {
app.locator(Selector::id("todo_input")).wait_visible();
app.locator(Selector::all().text_exact("Get AI to control UI"))
.wait_visible();
}
#[makepad_test]
fn todo_add_toggle_delete_and_disambiguate_duplicates(app: TestApp) {
app.locator(Selector::widget_type("CheckBox").nth(0))
.click()
.wait_checked(false);
for _ in 0..2 {
app.locator(Selector::id("todo_input"))
.fill("Write tests")
.wait_value("Write tests");
app.locator(Selector::id("add_button")).click();
}
app.locator(Selector::all().text_exact("Write tests"))
.wait_count(2);
app.locator(Selector::widget_type("CheckBox")).wait_count(3);
app.locator(Selector::widget_type("CheckBox").nth(1))
.click()
.wait_checked(true);
app.locator(Selector::all().text_exact("x").nth(2)).click();
app.locator(Selector::all().text_exact("Write tests"))
.wait_count(1);
app.locator(Selector::widget_type("CheckBox")).wait_count(2);
}
#[makepad_test]
fn todo_clear_completed_removes_only_checked_items(app: TestApp) {
for item in ["Pay invoice", "Email Ada", "Ship demo"] {
app.locator(Selector::id("todo_input"))
.fill(item)
.wait_value(item);
app.locator(Selector::id("add_button")).click();
}
app.locator(Selector::all().text_exact("Pay invoice"))
.wait_visible();
app.locator(Selector::all().text_exact("Email Ada"))
.wait_visible();
app.locator(Selector::all().text_exact("Ship demo"))
.wait_visible();
app.locator(Selector::widget_type("CheckBox").nth(1))
.click()
.wait_checked(true);
app.locator(Selector::widget_type("CheckBox").nth(3))
.click()
.wait_checked(true);
app.locator(Selector::id("clear_done")).click();
app.locator(Selector::all().text_exact("Get AI to control UI"))
.wait_count(0);
app.locator(Selector::all().text_exact("Pay invoice"))
.wait_count(0);
app.locator(Selector::all().text_exact("Email Ada"))
.wait_visible();
app.locator(Selector::all().text_exact("Ship demo"))
.wait_count(0);
app.locator(Selector::widget_type("CheckBox")).wait_count(1);
}