yratanov/ember-page-object-asserts

View on GitHub
README.md

Summary

Maintainability
Test Coverage
ember-page-object-asserts
==============================================================================

[![TravisCI Build Status][travis-badge]][travis-badge-url]
[![codecov](https://codecov.io/gh/yratanov/ember-page-object-asserts/branch/master/graph/badge.svg)](https://codecov.io/gh/yratanov/ember-page-object-asserts)
[![Maintainability](https://api.codeclimate.com/v1/badges/2b8436017d28227f08ce/maintainability)](https://codeclimate.com/github/yratanov/ember-page-object-asserts/maintainability)
[![Dependabot enabled](https://img.shields.io/badge/dependabot-enabled-blue.svg?logo=dependabot)](https://dependabot.com/)

[travis-badge]: https://travis-ci.com/yratanov/ember-page-object-asserts.svg?branch=master
[travis-badge-url]: https://travis-ci.org/yratanov/ember-page-object-asserts

Adds QUnit asserts for [ember-cli-page-object](https://github.com/san650/ember-cli-page-object) to make test errors more user-friendly and make code shorter.


Why?
------------------------------------------------------------------------------

User-friendly messages and simpler syntax:

```js
const page = create({
  link: {
    scope: 'a',
    href: attribute('href'),
    isHighlighted: hasClass('highlighted'),
  },
});

assert.po(page.element).text.is("test"); //message 'page.element: text is "text"'
assert.po(page.link).href.is('google.com'); //message 'page.link: href is "google.com"'
assert.po(page.link).href.includes('google.com'); //message 'page.link: href includes "google.com"'
assert.po(page.link).isHighlighted(); //message 'page.link: is highlighted'
assert.po(page.input).isPresent();  //message 'page.input: is present'
``` 


Compatibility
------------------------------------------------------------------------------

* Ember.js v2.18 or above
* Ember CLI v2.13 or above
* Node.js v8 or above


Installation
------------------------------------------------------------------------------

```
ember install ember-page-object-asserts
```


Usage
------------------------------------------------------------------------------

Import new assert in your `tests/test-helper.js` file:
```js
import { addPoAssert } from 'ember-page-object-asserts';

addPoAssert();

setApplication(Application.create(config.APP));
```


#### Built-in asserts

##### is/isNot

```js
assert.po(page.element).text.is("test");
assert.po(page.element).text.isNot("test");
assert.po(page.input).value.is('test');
```

##### includes/doesNotInclude

```js
assert.po(page.element).text.includes("test");
assert.po(page.element).text.doesNotInclude("test");
```

##### isPresent/isHidden

```js
assert.po(page.input).isPresent();
assert.po(page.input).isHidden();
```

##### Collections

```js
const page = create({
  list: collection('li')
});

assert.po(page.list).length.is(3);
```

##### Properties as asserts

```js
const page = create({
  link: {
    isHighlighted: hasClass('highlighted'),
  },
});

assert.po(page.list).isHighlighted();
assert.po(page.list).isHighlighted(false);
```



Contributing
------------------------------------------------------------------------------

See the [Contributing](CONTRIBUTING.md) guide for details.


License
------------------------------------------------------------------------------

This project is licensed under the [MIT License](LICENSE.md).