Merge pull request #5506 from spalger/implement/testSubjSelector
Implement test subj selector
This commit is contained in:
commit
a44adcc3e8
|
@ -132,6 +132,7 @@
|
|||
"whatwg-fetch": "0.9.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@spalger/test-subj-selector": "0.2.1",
|
||||
"Nonsense": "0.1.2",
|
||||
"angular-mocks": "1.4.7",
|
||||
"auto-release-sinon": "1.0.3",
|
||||
|
|
24
src/ui/public/jquery/findTestSubject.js
vendored
24
src/ui/public/jquery/findTestSubject.js
vendored
|
@ -1,3 +1,5 @@
|
|||
var testSubjSelector = require('@spalger/test-subj-selector');
|
||||
|
||||
module.exports = function bindToJquery($) {
|
||||
|
||||
/**
|
||||
|
@ -41,28 +43,12 @@ module.exports = function bindToJquery($) {
|
|||
*/
|
||||
$.fn.findTestSubject = findTestSubject;
|
||||
|
||||
function findTestSubject(/* ...subjectSelectors */) {
|
||||
var subjectSelectors = [].slice.apply(arguments);
|
||||
function findTestSubject(...subjectSelectors) {
|
||||
var $els = $();
|
||||
var $context = this;
|
||||
|
||||
subjectSelectors.forEach(function (subjectSelector) {
|
||||
var cssSelectors = [];
|
||||
var terms = subjectSelector
|
||||
.replace(/\s*&\s*/g, '&') // remove all whitespace around joins
|
||||
.split(/\s+/);
|
||||
|
||||
function termToCssSelector(term) {
|
||||
return term ? '[data-test-subj~="' + term + '"]' : '';
|
||||
}
|
||||
|
||||
while (terms.length) {
|
||||
var term = terms.shift();
|
||||
// split each term by joins/& and map to css selectors
|
||||
cssSelectors.push(term.split('&').map(termToCssSelector).join(''));
|
||||
}
|
||||
|
||||
$els = $els.add($context.find(cssSelectors.join(' ')));
|
||||
subjectSelectors.forEach(function (selector) {
|
||||
$els = $els.add($context.find(testSubjSelector(selector)));
|
||||
});
|
||||
|
||||
return $els;
|
||||
|
|
|
@ -3,6 +3,7 @@ define(function (require) {
|
|||
var config = require('intern').config;
|
||||
var Promise = require('bluebird');
|
||||
var moment = require('moment');
|
||||
var testSubjSelector = require('intern/dojo/node!@spalger/test-subj-selector');
|
||||
var getUrl = require('intern/dojo/node!../../utils/getUrl');
|
||||
var fs = require('intern/dojo/node!fs');
|
||||
var path = require('intern/dojo/node!path');
|
||||
|
@ -199,6 +200,10 @@ define(function (require) {
|
|||
.catch(function (err) {
|
||||
self.log('SCREENSHOT FAILED: ' + err);
|
||||
});
|
||||
},
|
||||
|
||||
findTestSubject: function (selector) {
|
||||
return this.remote.findByCssSelector(testSubjSelector(selector));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue