Actionability

Web Automationintermediate

// Definition

A modern framework's set of pre-action checks ensuring an element is truly ready before interacting — visible, stable (not animating), enabled, not covered by another element, and able to receive events. Cypress and Playwright run these automatically before a click/type, retrying until they pass or time out. It's the mechanism behind reliable auto-waiting.

// Why it matters

Actionability is why modern tools are less flaky — the framework refuses to click an element that isn't genuinely interactable, instead of firing into the void like older tools. QA cares because understanding these checks explains both why a test waits (good) and why it sometimes times out on a technically-present-but-not-actionable element (the real bug).

// How to test

// The framework runs actionability checks before this click:
// visible? stable? enabled? not covered? receives events? → retries until yes
cy.get('[data-cy=confirm]').click()
// A timeout here often means a REAL bug: element covered by an overlay,
// disabled longer than expected, or perpetually animating.

// Common mistakes

  • {force: true} to bypass actionability — hides a real "element not interactable" bug
  • Blaming flakiness when a timeout is actually a legit "covered by modal" finding
  • Adding sleeps instead of letting actionability checks do their job

// Related terms