Predicates
Methods
contains
addon/predicates/contains.js:83-97
Returns a boolean representing whether an element or a set of elements contains the specified text.
Parameters
selectorstring CSS selector of the element to checkoptionsObject Additional optionsoptions.scopestring Nests provided scope within parent’s scopeoptions.atnumber Reduce the set of matched elements to the one at the specified indexoptions.resetScopeboolean Override parent’s scopeoptions.multipleboolean Check if all elements matched by selector contain the subtextoptions.testContainerString Context where to search elements in the DOM
Examples
// Lorem <span>ipsum</span>
const page = PageObject.create({
spanContains: PageObject.contains('span')
});
assert.ok(page.spanContains('ipsum'));
// <span>lorem</span>
// <span>ipsum</span>
// <span>dolor</span>
const page = PageObject.create({
spansContain: PageObject.contains('span', { multiple: true })
});
// not all spans contain 'lorem'
assert.notOk(page.spansContain('lorem'));
// <span>super text</span>
// <span>regular text</span>
const page = PageObject.create({
spansContain: PageObject.contains('span', { multiple: true })
});
// all spans contain 'text'
assert.ok(page.spanContains('text'));
// <div><span>lorem</span></div>
// <div class="scope"><span>ipsum</span></div>
// <div><span>dolor</span></div>
const page = PageObject.create({
spanContains: PageObject.contains('span', { scope: '.scope' })
});
assert.notOk(page.spanContains('lorem'));
assert.ok(page.spanContains('ipsum'));
// <div><span>lorem</span></div>
// <div class="scope"><span>ipsum</span></div>
// <div><span>dolor</span></div>
const page = PageObject.create({
scope: '.scope',
spanContains: PageObject.contains('span')
});
assert.notOk(page.spanContains('lorem'));
assert.ok(page.spanContains('ipsum'));
Returns Descriptor
hasClass
addon/predicates/has-class.js:84-96
Validates if an element or a set of elements have a given CSS class.
Parameters
cssClassstring CSS class to be validatedselectorstring CSS selector of the element to checkoptionsObject Additional optionsoptions.scopestring Nests provided scope within parent’s scopeoptions.atnumber Reduce the set of matched elements to the one at the specified indexoptions.resetScopeboolean Override parent’s scopeoptions.multipleboolean Check if all elements matched by selector have the CSS classoptions.testContainerString Context where to search elements in the DOM
Examples
// <em class="lorem"></em><span class="success">Message!</span>
const page = PageObject.create({
messageIsSuccess: PageObject.hasClass('success', 'span')
});
assert.ok(page.messageIsSuccess);
// <span class="success"></span>
// <span class="error"></span>
const page = PageObject.create({
messagesAreSuccessful: PageObject.hasClass('success', 'span', { multiple: true })
});
assert.notOk(page.messagesAreSuccessful);
// <span class="success"></span>
// <span class="success"></span>
const page = PageObject.create({
messagesAreSuccessful: PageObject.hasClass('success', 'span', { multiple: true })
});
assert.ok(page.messagesAreSuccessful);
// <div>
// <span class="lorem"></span>
// </div>
// <div class="scope">
// <span class="ipsum"></span>
// </div>
const page = PageObject.create({
spanHasClass: PageObject.hasClass('ipsum', 'span', { scope: '.scope' })
});
assert.ok(page.spanHasClass);
// <div>
// <span class="lorem"></span>
// </div>
// <div class="scope">
// <span class="ipsum"></span>
// </div>
const page = PageObject.create({
scope: '.scope',
spanHasClass: PageObject.hasClass('ipsum', 'span')
});
assert.ok(page.spanHasClass);
Returns Descriptor
isHidden
addon/predicates/is-hidden.js:89-101
Validates if an element or set of elements are hidden.
Parameters
selectorstring CSS selector of the element to checkoptionsObject Additional optionsoptions.scopestring Nests provided scope within parent’s scopeoptions.atnumber Reduce the set of matched elements to the one at the specified indexoptions.resetScopeboolean Override parent’s scopeoptions.multipleboolean Check if all elements matched by selector are hiddenoptions.testContainerString Context where to search elements in the DOM
Examples
// Lorem <span style="display:none">ipsum</span>
const page = PageObject.create({
spanIsHidden: PageObject.isHidden('span')
});
assert.ok(page.spanIsHidden);
// <span>ipsum</span>
// <span style="display:none">dolor</span>
const page = create({
spansAreHidden: PageObject.isHidden('span', { multiple: true })
});
// not all spans are hidden
assert.notOk(page.spansAreHidden);
// <span style="display:none">dolor</span>
// <span style="display:none">dolor</span>
const page = create({
spansAreHidden: PageObject.isHidden('span', { multiple: true })
});
// all spans are hidden
assert.ok(page.spansAreHidden);
// Lorem <strong>ipsum</strong>
const page = PageObject.create({
spanIsHidden: PageObject.isHidden('span')
});
// returns true when element doesn't exist in DOM
assert.ok(page.spanIsHidden);
// <div><span>lorem</span></div>
// <div class="scope"><span style="display:none">ipsum</span></div>
// <div><span>dolor</span></div>
const page = PageObject.create({
scopedSpanIsHidden: PageObject.isHidden('span', { scope: '.scope' })
});
assert.ok(page.scopedSpanIsHidden);
// <div><span>lorem</span></div>
// <div class="scope"><span style="display:none">ipsum</span></div>
// <div><span>dolor</span></div>
const page = PageObject.create({
scope: '.scope',
scopedSpanIsHidden: PageObject.isHidden('span')
});
assert.ok(page.scopedSpanIsHidden);
Returns Descriptor
isVisible
addon/predicates/is-visible.js:95-111
Validates if an element or set of elements are visible.
Parameters
selectorstring CSS selector of the element to checkoptionsObject Additional optionsoptions.scopestring Nests provided scope within parent’s scopeoptions.atnumber Reduce the set of matched elements to the one at the specified indexoptions.resetScopeboolean Override parent’s scopeoptions.multipleboolean Check if all elements matched by selector are visibleoptions.testContainerString Context where to search elements in the DOM
Examples
// Lorem <span>ipsum</span>
const page = PageObject.create({
spanIsVisible: PageObject.isVisible('span')
});
assert.ok(page.spanIsVisible);
// <span>ipsum</span>
// <span style="display:none">dolor</span>
const page = PageObject.create({
spansAreVisible: PageObject.isVisible('span', { multiple: true })
});
// not all spans are visible
assert.notOk(page.spansAreVisible);
// <span>ipsum</span>
// <span>dolor</span>
const page = PageObject.create({
spansAreVisible: PageObject.isVisible('span', { multiple: true })
});
// all spans are visible
assert.ok(page.spansAreVisible);
// Lorem <strong>ipsum</strong>
const page = PageObject.create({
spanIsVisible: PageObject.isHidden('span')
});
// returns false when element doesn't exist in DOM
assert.notOk(page.spanIsVisible);
// <div>
// <span style="display:none">lorem</span>
// </div>
// <div class="scope">
// <span>ipsum</span>
// </div>
const page = PageObject.create({
spanIsVisible: PageObject.isHidden('span', { scope: '.scope' })
});
assert.ok(page.spanIsVisible);
// <div>
// <span style="display:none">lorem</span>
// </div>
// <div class="scope">
// <span>ipsum</span>
// </div>
const page = PageObject.create({
scope: '.scope',
spanIsVisible: PageObject.isHidden('span')
});
assert.ok(page.spanIsVisible);
Returns Descriptor
notHasClass
addon/predicates/not-has-class.js:86-98
Validates if an element or a set of elements don’t have a given CSS class.
Parameters
cssClassstring CSS class to be validatedselectorstring CSS selector of the element to checkoptionsObject Additional optionsoptions.scopestring Nests provided scope within parent’s scopeoptions.atnumber Reduce the set of matched elements to the one at the specified indexoptions.resetScopeboolean Override parent’s scopeoptions.multipleboolean Check if all elements matched by selector don’t have the CSS classoptions.testContainerString Context where to search elements in the DOM
Examples
// <em class="lorem"></em><span class="success">Message!</span>
const page = PageObject.create({
messageIsSuccess: PageObject.notHasClass('error', 'span')
});
assert.ok(page.messageIsSuccess);
// <span class="success"></span>
// <span class="error"></span>
const page = PageObject.create({
messagesAreSuccessful: PageObject.notHasClass('error', 'span', { multiple: true })
});
// one span has error class
assert.notOk(page.messagesAreSuccessful);
// <span class="success"></span>
// <span class="success"></span>
const page = PageObject.create({
messagesAreSuccessful: PageObject.notHasClass('error', 'span', { multiple: true })
});
// no spans have error class
assert.ok(page.messagesAreSuccessful);
// <div>
// <span class="lorem"></span>
// </div>
// <div class="scope">
// <span class="ipsum"></span>
// </div>
const page = PageObject.create({
spanNotHasClass: PageObject.notHasClass('lorem', 'span', { scope: '.scope' })
});
assert.ok(page.spanNotHasClass);
// <div>
// <span class="lorem"></span>
// </div>
// <div class="scope">
// <span class="ipsum"></span>
// </div>
const page = PageObject.create({
scope: '.scope',
spanNotHasClass: PageObject.notHasClass('lorem', 'span')
});
assert.ok(page.spanNotHasClass);
Returns Descriptor