By default, ember-cli-page-object uses global ember test helpers such as click, fillIn, find, etc. While it works great, this approach has one downside: global ember test helpers require jQuery to be bundled within your Ember global.

As a result, if you want to drop a dependency on jQuery in your app or addon, you won’t be able to use the standard Ember test helpers.

In order to solve this problem, ember-cli-page-object provides an integration with ember-native-dom-helpers.

In general, native-events mode doesn’t require you to rewrite your existing page object declarations. However, you should take into account that with native-events mode enabled, your test suite triggers real DOM events instead of jQuery alternatives.

Usage

You can enable native-events mode by simply adding this snippet into your test-helper.js:

// tests/test-helper.js
import { useNativeEvents } from 'ember-cli-page-object/extend';
...

useNativeEvents();

Migration from jQuery events to native DOM events

If you want to use native-events mode in your test suite, you have to ensure that your app is ready to handle native DOM events rather than jQuery events.

Consider a component event handler like this:

export default Component.extend({
  doubleClick() {
    set(this, "doubleClicked", true);
    return true;
  }
})

native-events mode won’t work out of the box with a handler like this. The native double-click won’t have any effect on the component because Ember’s event dispatcher handles events via jQuery.

In order to fix this, you should replace the default event dispatcher with ember-native-dom-event-dispatcher:

npm i --save-dev ember-native-dom-event-dispatcher