ComposeProof MCP / Equal AI / Agentic Workflow
The agent tests UI regressions.
A live ComposeProof session driving the production Equal AI app — drive the snooze flow, then assert the change from the live ViewModel. No human eyeballing a screenshot.
01 / Baseline
Capture the golden. The agent records what "correct" looks like.
Verdict
BASELINE ON
AI Assistant is On — toggle green. The agent reads Activity, theme, and dimensions, then stores the reference frame.
02 / Act
Drive the snooze flow — the agent taps, the app responds.
03 / Choose
Pick a duration. The agent selects by element text, not coordinates.
04 / Drift
The state changes. On → Off, with a scheduled return.
Verdict
STATE FLIPPED
Banner reads AI Assistant is Off · back at 1:41 pm , toggle grey. A system notification confirms the schedule.
05 / Assert
The catch — assert from the live ViewModel, not the pixels.
Verdict
ASSERT PASS
The live semantics tree confirms the Off node, and snoozeState reads Snoozed straight from ConversationsV2ViewModel . If a build broke snooze, this fails — a human eye wouldn't.
06 / Restore
Leave it as you found it. Toggle back, re-verify.
Verdict
RESTORED
Back to AI Assistant is On ; snoozeState = Active , assistantStatus = ACTIVE . Test leaves no trace.
07 / Tool Calls
The snooze regression test, in order.
01 cp_inspect_current_screen Establish state — Activity, theme, dimensions.
MainActivity · dark · en-IN
02 cp_take_device_screenshot Capture the baseline — assistant On.
baseline on
03 cp_device_interact tap Tap the toggle — open the snooze sheet.
dialog open
04 cp_device_interact tap_element Pick "1 hr" by text, confirm "OK".
snooze set
05 cp_inspect_ui_tree Assert the "Off" node in the semantics tree.
state flipped · off
06 cp_inspect_viewmodel_state Read snoozeState straight from the ViewModel.
assert pass
07 cp_device_interact Toggle back on — restore + re-verify.
restored
08 / Why It's Different
It reads the ViewModel, not the pixels.
Signal Baseline After snooze
banner text AI Assistant is On AI Assistant is Off
assistantStatus ACTIVE SNOOZED
snoozeState Active Snoozed
_showSnoozeDialog false false
scheduled return — 1:41 pm today
Verdict golden PASS — flip confirmed