This is a list of deprecations introduced in 1.x cycle:

Is property

ID: ember-cli-page-object.is-property

Until: 2.0.0

In scope of gradual reducing of jQuery APIs exposed directly to the user, we no longer recommend to use is property, and plan to remove it in v2 of page objects.

The most common use cases for is( are covered with a property helper. Please use it instead.

Bad:

import { create, is } from 'ember-cli-page-object';

const page = create({
  scope: 'input',

  isChecked: is(':checked'),

  isDisabled: is(':disabled')
});

Good:

import { create, property } from 'ember-cli-page-object';

const page = create({
  scope: 'input',

  isChecked: property('checked'),

  isDisabled: property('disabled')
})

In case there is no built-in replacement for is in ember-cli-page-object, you can write your custom getter property, to achieve behavior you need.

Set context

ID: ember-cli-page-object.set-context

Until: 2.0.0

With “@ember@test-helpers@1.0.0” or higher you don’t need to set page object context anymore, it would be handled for you:

Bad:

  page.setContext(this);
  page.removeContext(this);

  const page = create({
    context: this
  });

Good: Make sure you are using the most recent version of “@ember/test-helpers” and remove setting of context from your test suite.

Comma-separated Selectors

ID: ember-cli-page-object.comma-separated-selectors

Until: 2.0.0

Comma separated selectors are not supported in ember-cli-page-object.

Bad:

<h1>A big title</h1>
<h2>A smaller title</h2>
import { create, text } from "ember-cli-page-object";

var page = create({
  title: text("h1, h2")
});

Good:

<h1 data-test-title>A big title</h1>
<h2 data-test-title>A smaller title</h2>
import { create, text } from "ember-cli-page-object";

var page = create({
  title: text("[data-test-title]")
})

Import from test-support

ID: ember-cli-page-object.import-from-test-support

Until: 2.0.0

Importing page object helpers from tests/ folder is deprecated. Please import from ember-cli-page-object instead.

Bad:

import { create, text } from "my-app/tests/page-object";

var page = create({
  title: text("h1")
});

Good:

import { create, text } from "ember-cli-page-object";

var page = create({
  title: text("h1")
});

Old collection API

ID: ember-cli-page-object.old-collection-api

Until: 2.0.0

Usage of item and itemScope are now deprecated. Use the new simplified collections API instead:

<table>
  <caption>List of users</caption>
  <tbody>
    <tr>
      <td>Mary<td>
      <td>Watson</td>
    </tr>
    <tr>
      <td>John<td>
      <td>Doe</td>
    </tr>
  </tbody>
</table>

Bad:

const page = create({

  users: collection({
    itemScope: 'table tr',

    item: {
      firstName: text('td', { at: 0 }),
      lastName: text('td', { at: 1 })
    },

    caption: text('caption')
  });
});

// test
assert.equal(page.users().count, 2);
assert.equal(page.users(1).firstName, 'John');

Good:

const page = create({
  users: collection('table tr', {
    firstName: text('td', { at: 0 }),
    lastName: text('td', { at: 1 })
  }),

  usersCaption: text('caption')
});

assert.equal(page.users.length, 2);
assert.equal(page.users.objectAt(1).firstName, 'John');

Page Render

ID: ember-cli-page-object.page-render

Until: 2.0.0

Using page.render('') to render a component is deprecated. Please use render directly from your test framework instead:

import { moduleForComponent, test } from 'ember-qunit';

import hbs from 'htmlbars-inline-precompile';
import { create } from 'ember-cli-page-object';

moduleForComponent('calculating-device', 'Deprecation | page.render()', {
  integration: true,

  beforeEach() {
    this.page = create({context: this});
  }
});

test('renders component', function(assert) {
  // BAD
  this.page.render(hbs``);
  
  // GOOD
  this.render(hbs``);
});