Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | import { assign, every } from '../helpers'; import { getExecutionContext } from '../execution_context'; /** * Validates if an element or set of elements are visible. * * @example * * // Lorem <span>ipsum</span> * * import { create, isVisible } from 'ember-cli-page-object'; * * const page = create({ * spanIsVisible: isVisible('span') * }); * * assert.ok(page.spanIsVisible); * * @example * * // <span>ipsum</span> * // <span style="display:none">dolor</span> * * import { create, isVisible } from 'ember-cli-page-object'; * * const page = create({ * spansAreVisible: isVisible('span', { multiple: true }) * }); * * // not all spans are visible * assert.notOk(page.spansAreVisible); * * @example * * // <span>ipsum</span> * // <span>dolor</span> * * import { create, isVisible } from 'ember-cli-page-object'; * * const page = create({ * spansAreVisible: isVisible('span', { multiple: true }) * }); * * // all spans are visible * assert.ok(page.spansAreVisible); * * @example * * // Lorem <strong>ipsum</strong> * * import { create, isVisible } from 'ember-cli-page-object'; * * const page = create({ * spanIsVisible: isVisible('span') * }); * * // returns false when element doesn't exist in DOM * assert.notOk(page.spanIsVisible); * * @example * * // <div> * // <span style="display:none">lorem</span> * // </div> * // <div class="scope"> * // <span>ipsum</span> * // </div> * * import { create, isVisible } from 'ember-cli-page-object'; * * const page = create({ * spanIsVisible: isVisible('span', { scope: '.scope' }) * }); * * assert.ok(page.spanIsVisible); * * @example * * // <div> * // <span style="display:none">lorem</span> * // </div> * // <div class="scope"> * // <span>ipsum</span> * // </div> * * import { create, isVisible } from 'ember-cli-page-object'; * * const page = create({ * scope: '.scope', * spanIsVisible: isVisible('span') * }); * * assert.ok(page.spanIsVisible); * * @public * * @param {string} selector - CSS selector of the element to check * @param {Object} options - Additional options * @param {string} options.scope - Nests provided scope within parent's scope * @param {number} options.at - Reduce the set of matched elements to the one at the specified index * @param {boolean} options.resetScope - Override parent's scope * @param {boolean} options.multiple - Check if all elements matched by selector are visible * @param {string} options.testContainer - Context where to search elements in the DOM * @return {Descriptor} * * @throws Will throw an error if multiple elements are matched by selector and multiple option is not set */ export function isVisible(selector, userOptions = {}) { return { isDescriptor: true, get(key) { let executionContext = getExecutionContext(this); let options = assign({ pageObjectKey: key }, userOptions); return executionContext.run((context) => { let elements = context.find(selector, options); if (elements.length === 0) { return false; } return every(elements, function(element) { return element.is(':visible'); }); }); } }; } |