# Actionability
Playwright does a range of actionability checks on the elements before performing certain actions. These checks ensure that action behaves as expected, for example Playwright does not click on a disabled button.
Playwright waits until all the relevant actionability checks pass before performing an action. This means that action will fail with `TimeoutError` if checks do not pass within the specified `timeout`.
Some actions like `page.click()` support `{force: true}` option that disable non-essential actionability checks, for example passing `force` to `click()` method will not check that the target element actually receives click events.
| Actions | Performed checks |
| ------ | ------- |
| `check()` `click()` `dblclick()` `uncheck()` | [Visible] [Stable] [Enabled] [Receiving Events] [Attached] |
| `hover()` | [Visible] [Stable] [Receiving Events] [Attached] |
| `fill()` | [Visible] [Enabled] [Editable] [Attached] |
| `dispatchEvent()` `focus()` `press()` `setInputFiles()` `selectOption()` `type()` | [Attached] |
| `scrollIntoViewIfNeeded()` `screenshot()` | [Visible] [Stable] [Attached] |
| `selectText()` | [Visible] [Attached] |
| `getAttribute()` `innerText()` `innerHTML()` `textContent()` | [Attached] |
### Visible
Element is considered visible when it has non-empty bounding box and does not have `visibility:hidden` computed style. Note that elements of zero size or with `display:none` are not considered visible.
### Stable
Element is considered stable when it has maintained the same bounding box for at least two consecutive animation frames.
### Enabled
Element is considered enabled when it is not a `