Merge pull request #5506 from spalger/implement/testSubjSelector

Implement test subj selector
This commit is contained in:
Spencer 2015-12-07 13:48:53 -07:00
commit a44adcc3e8
3 changed files with 11 additions and 19 deletions

View file

@ -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",

View file

@ -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;

View file

@ -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));
}
};