nemo-objects
v0.1.0
Published
Easily implement and use the Page Object pattern in your nemo based tests
Downloads
10
Maintainers
Readme
Nemo Objects
Easily implement and use the Page Object pattern in your nemo based tests, by using a simple api, mostly inspired by the ember-cli-page-object ember addon, widely used in the ember ecosystem for functional and integration testing.
Installation
npm install --save nemo-objects
Usage
Configuring the nemo plugin
In your nemo configuration, with an absolute path specify where your page objects are.
{
"plugins": {
"nemo-objects": {
"module": "nemo-objects",
"arguments": [
{
"pagesLocation": "/path/to/page-objects"
}
]
}
}
}
Creating a page object
At the specified location, for any given file found a page object will be created at the nemo.objects
namespace. For example, if a file named countryCenter.js
is found, then a page object is created as nemo.object.countryCenter
.
At the countryCenter.js
file, a page-object can be declared as follows:
'use strict';
module.exports = function countryCenterPage(pageObject, nemo) {
const { visitable, collection, text } = pageObject;
return {
visit: visitable(`${nemo.data.url}/country-center`),
countries: collection({
scope: '.country-list',
itemScope: 'ul li',
item: {
countryName: text('span')
}
})
};
};
Which later can be used at your functional tests as:
// all the setup code for your nemo environment
// The `nemo` variable is made available here
describe('At the country center page', () => {
it('All user countries are shown', async () => {
const { countryCenter } = nemo.objects;
await countryCenter.visit();
const countries = await countryCenter.countries();
expect(countries.length).to.be.equal(4, 'the number of countries matches the user settings');
});
});
API
Plugin configuration
options
pagesLocation
- An absolute path indicating where you page objects are
Page objects
Each module located at the specified location should export a function, which receives the following arguments:
pageObject
- Holds the pageObject helper functions to be used along with your page objectsnemo
- The nemo instance
Each module is expected to return an object describing the page object.