Nothing checks for the failure itself. Writing that oracle is still done by hand.
“The total shows NaN after I add an expense.”
Given the report and the screen’s XML, an LLM picks the element the failure lives in. It runs three times, and must agree with itself.
It selects the element by its text or description, then writes UIAutomator assertions that the failure is absent, again agreed across runs and compiled.
expected not "NaN"
total = "12.50"