@mmieluch/nightwatch-helpers

0.0.10 • Public • Published

nightwatch-helpers

Testing helpers for the Nightwatch.js framework

Usage

NPM

npm install --save-dev @mmieluch/nightwatch-helpers

Yarn

yarn add --dev @mmieluch/nightwatch-helpers

In the Nightwatch config:

custom_commands_path: [
  'node_modules/@mmieluch/nightwatch-helpers/dist/commands',
],

Assertions

checked({string} selector, {string} [message = null])

Assert a radio button is checked.

count({string} selector, {number} expected, {string} [message = null])

Assert the number of elements found by document.querySelectorAll(selector) is equal to expected.

disabled({string} selector, {string} [message = null])

Assert that the element is in disabled state.

enabled({string} selector, {string} [message = null])

Assert that the element is in enabled state.

unchecked({string} selector, {string} [message = null])

Assert a radio button is not checked.

Commands

getBoundingClientRect({string} selector, {function} callback)

Allows for quick accessing element's DOMRect object.

Usage:

browser.getBoundingClientRect('#foo', result => {
  browser.assert.equals(100, result.value.top)
})

For me it comes especially handy when trying to compare vertical alignment of two elements:

browser.perform(done => {
  let fooBottom = 0
  let barTop = 0
  
  browser.getBoundingClientRect('#foo', result => {
    fooBottom = result.value.bottom
  })
  
  browser.getAttribute('#bar', 'offsetTop', result => {
    barTop = parseInt(result.value)
  })
  
  browser.assert.strictEquals(fooBottom, barTop)
})

scrollTo({string} selector, {number} offset)

Uses window.scroll to position an element in the view port. Use offset argument to adjust the position. Useful when you want to take a screenshot and WebDriver's mouse move just wont work.

takeScreenshot({string} prefix)

Uses your config from the Nightwatch config file. Works only if screenshots are enabled in Nightwatch configuration, eg.:

test_settings: {
  default: {
    screenshots: {
      enabled: true,
      path: '/Users/mmieluch/Code/important-project/screenshots',
    },
  },
},

The takeScreenshot command will take a screenshot and put it in a subtree constructed of module name and step name respectively.

Let's assume your current test file is located under /Users/mmieluch/Code/important-project/tests/e2e/todos/index.js and you're running a test case named "User can add a todo". The command will put the screenshot under /Users/mmieluch/Code/important-project/screenshots/todos/index/user-can-add-a-todo/1495110229891.png.

The 1495110229891 bit is the current timestamp. You can add a prefix to the timestamp bit, calling the command like so:

browser.takeScreenshot('my-prefix')

which will result in a filename like this: my-prefix-1495110229891.png.

Package Sidebar

Install

npm i @mmieluch/nightwatch-helpers

Weekly Downloads

2

Version

0.0.10

License

MIT

Unpacked Size

114 kB

Total Files

33

Last publish

Collaborators

  • mmieluch