diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f18199..2b986fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,11 +5,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) ## [Unreleased] +- Add isFocused getter + ## [0.9.2] - 2018-02-05 ### Fixed -- Make sure $root descriptor function is not wrapped in the chaining mechanism - https://github.com/bigtestjs/interactor/pull/60 +- Make sure $root descriptor function is not wrapped in the chaining mechanism - https://github.com/bigtestjs/interactor/pull/60 ## [0.9.1] - 2018-10-23 diff --git a/README.md b/README.md index dcce839..6793f03 100644 --- a/README.md +++ b/README.md @@ -211,6 +211,7 @@ describe('Logging in', () => { - `isVisible(selector)` - `isHidden(selector)` - `isPresent(selector)` +- `isFocused(selector)` - `is(selector, match)` - `hasClass(selector)` diff --git a/src/interactions/index.js b/src/interactions/index.js index 9f4c035..0c11054 100644 --- a/src/interactions/index.js +++ b/src/interactions/index.js @@ -22,6 +22,7 @@ export { default as is } from './is'; export { default as isVisible } from './is-visible'; export { default as isHidden } from './is-hidden'; export { default as isPresent } from './is-present'; +export { default as isFocused } from './is-focused'; // interaction helpers export { computed, action } from './helpers'; diff --git a/src/interactions/is-focused.js b/src/interactions/is-focused.js new file mode 100644 index 0000000..e438e0b --- /dev/null +++ b/src/interactions/is-focused.js @@ -0,0 +1,27 @@ +import { computed } from './helpers'; + +/** + * Property creator for returning `true` or `false` when an element + * should have focus. + * + * ``` html + *
+ * ``` + * + * ``` javascript + * new Interactor('#email').isFocused //=> true when email input focused + * new Interactor('#password').isFocused //=> false when email input focused + * ``` + * + * @function isFocused + * @param {String} [selector] - Nested element query selector + * @returns {Object} Property descriptor + */ +export default function(selector) { + return computed(function() { + return this.$(selector) === document.activeElement; + }); +} diff --git a/tests/fixtures/is-focused-fixture.html b/tests/fixtures/is-focused-fixture.html new file mode 100644 index 0000000..727dcdd --- /dev/null +++ b/tests/fixtures/is-focused-fixture.html @@ -0,0 +1,8 @@ +