Skip to content

Add actionability gate (visible + stable + enabled + not-occluded)#347

Merged
JE-Chen merged 1 commit into
devfrom
feat/actionability-batch
Jun 22, 2026
Merged

Add actionability gate (visible + stable + enabled + not-occluded)#347
JE-Chen merged 1 commit into
devfrom
feat/actionability-batch

Conversation

@JE-Chen

@JE-Chen JE-Chen commented Jun 22, 2026

Copy link
Copy Markdown
Member

Playwright/Cypress/WebdriverIO run an actionability check before every click — present + stopped moving + enabled + not covered. AutoControl had none: self_heal_click locates and clicks immediately, wait_until_screen_stable watches only the whole frame.

  • wait_actionable (AC_wait_actionable): composes the four checks into one gate, returning an ActionabilityReport (per-check booleans, target point, waited_s, and reason = the first failing check).
  • act_when_ready: waits then calls action(center_point), raising AutoControlActionException on timeout.
  • Every signal is an injectable callable (bbox_provider / region_sampler for pixel-stability / enabled_probe / hit_tester) plus an injectable clock/sleep via GateConfig, so the gate is fully deterministic and headless-testable (fake clock advances only on sleep). The executor command binds the gate to a template image located each poll + region pixel-stability.
  • Wired through all 5 layers + headless test + EN/Zh docs + WHATS_NEW. Qt-free.

@JE-Chen
JE-Chen merged commit def2953 into dev Jun 22, 2026
15 checks passed
@JE-Chen
JE-Chen deleted the feat/actionability-batch branch June 22, 2026 22:44
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant