Skip to content

Releases: unexpectedjs/unexpected-dom

Focus handling

17 May 14:16
Compare
Choose a tag to compare

This release adds improved abilities to work with focus handling.

Highlighting of focused DOMElement

Any diff produced by unexpected-dom will now show you which element currently has focus in your document.
The element in question will have :focus shown inside its opening tag:

image

New Assertions

To have focus

Added a new assertion to have focus, which operates on DOMElement's. to have focus documentation

// Use on dom elements directly 
const anchor = querySelector('a');
expect(anchor, 'to have focus');

// Combine with forwarding assertions
expect(page, 'when queried for first', 'button', 'to have focus');

// Use as nested assertion
expect(formLabel, 'to satisfy', {
  children: [
    expect.it('to satisfy', { name: 'input' }).and('to have focus')
  ]
});

To contain focused element matching

Added new assertion to contain focused element matching, which lets pass a parent node as the subject and a querySelector as an argument. The assertion will execute the selection for you and assert that the selected element is focused. to contain focused element matching documentation

expect(formElement, 'to contain focused element matching', 'input[name="email"]');

This can be very useful for debugging focus position within a known area. Here's an example of the wrong element being focused within the parents scope:

it('should focus the first element of a dropdown', () => {
  body.innerHTML = `<nav><a href="/">Home</a><a href="/blog">Blog</a><a href="/about">About</a></nav>`;

  const nav = body.querySelector('nav');

  nav.children[1].focus();

  expect(nav, 'to contain focused element matching', 'a[href="/"]');
});

The output when the test fails helps you spot the error:

image

Pull requests

Bower compatibility

30 Mar 21:18
Compare
Choose a tag to compare

Changes:

  • Full document diff
  • Javascript syntax highlighting in output diff
  • Improved array diffing
  • Collapse massive diffs to make them manageable
  • Fewer files included in the npm package
  • Added bower support
  • Fewer files included in the bower package
  • Added pre-built UMD-wrapped self contained browser consumable packages unexpected-dom.js and unexpected-dom.min,js for bower releases