Actionability
// 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
Auto-waiting
A framework feature that pauses an action until the target element is actionable (visible, enabled, stable). Eliminates most need for explicit sleeps and reduces flake.
Locator
A description of how to find an element on a page — by id, CSS, XPath, role, or test attribute. Modern frameworks prefer role and test-id locators because they're resilient to DOM changes.
Flaky Test
A test that passes and fails intermittently without any code changes, often caused by timing issues, shared state, async race conditions, or external dependencies. The single largest source of CI noise.