--- id: actionability title: "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 the `TimeoutError` if checks do not pass within the specified `timeout`. Some actions like [`method: Page.click`] support `force` option that disables non-essential actionability checks, for example passing truthy `force` to [`method: Page.click`] method will not check that the target element actually receives click events. | Action | [Attached] | [Visible] | [Stable] | [Receiving Events] | [Enabled] | [Editable] | | :- | :-: | :-: | :-: | :-: | :-: | :-: | | check | Yes | Yes | Yes | Yes | Yes | - | | click | Yes | Yes | Yes | Yes | Yes | - | | dblclick | Yes | Yes | Yes | Yes | Yes | - | | tap | Yes | Yes | Yes | Yes | Yes | - | | uncheck | Yes | Yes | Yes | Yes | Yes | - | | hover | Yes | Yes | Yes | Yes | - | - | | scrollIntoViewIfNeeded | Yes | Yes | Yes | - | - | - | | screenshot | Yes | Yes | Yes | - | - | - | | fill | Yes | Yes | - | - | Yes | Yes | | selectText | Yes | Yes | - | - | - | - | | dispatchEvent | Yes | - | - | - | - | - | | focus | Yes | - | - | - | - | - | | getAttribute | Yes | - | - | - | - | - | | innerText | Yes | - | - | - | - | - | | innerHTML | Yes | - | - | - | - | - | | press | Yes | - | - | - | - | - | | setInputFiles | Yes | - | - | - | - | - | | selectOption | Yes | - | - | - | - | - | | textContent | Yes | - | - | - | - | - | | type | Yes | - | - | - | - | - | You can check the actionability state of the element using one of the following methods: - [`method: ElementHandle.isChecked`] - [`method: ElementHandle.isDisabled`] - [`method: ElementHandle.isEditable`] - [`method: ElementHandle.isEnabled`] - [`method: ElementHandle.isHidden`] - [`method: ElementHandle.isVisible`] - [`method: Page.isChecked`] - [`method: Page.isDisabled`] - [`method: Page.isEditable`] - [`method: Page.isEnabled`] - [`method: Page.isHidden`] - [`method: Page.isVisible`] ### 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 `