mirror of
https://github.com/sstent/node.git
synced 2026-01-27 07:33:13 +00:00
1350 lines
48 KiB
JavaScript
1350 lines
48 KiB
JavaScript
// Generated by CoffeeScript 1.3.2
|
|
(function() {
|
|
var CoffeeScript, app, async, elementByCss, evalShouldEqual, executeCoffee, express, runTestWith, safeEvalShouldEqual, should, textShouldEqual, valueShouldEqual, wd;
|
|
|
|
wd = require('../../lib/main');
|
|
|
|
should = require('should');
|
|
|
|
express = require('express');
|
|
|
|
CoffeeScript = require('coffee-script');
|
|
|
|
async = require('async');
|
|
|
|
evalShouldEqual = function(browser, formula, expected) {
|
|
return function(done) {
|
|
return browser["eval"](formula, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal(expected);
|
|
return done(null);
|
|
});
|
|
};
|
|
};
|
|
|
|
safeEvalShouldEqual = function(browser, formula, expected) {
|
|
return function(done) {
|
|
return browser.safeEval(formula, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal(expected);
|
|
return done(null);
|
|
});
|
|
};
|
|
};
|
|
|
|
executeCoffee = function(browser, script) {
|
|
var scriptAsJs;
|
|
scriptAsJs = CoffeeScript.compile(script, {
|
|
bare: 'on'
|
|
});
|
|
return function(done) {
|
|
return browser.execute(scriptAsJs, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
};
|
|
};
|
|
|
|
elementByCss = function(browser, env, css, name) {
|
|
return function(done) {
|
|
return browser.elementByCss(css, function(err, res) {
|
|
should.not.exist(err);
|
|
env[name] = res;
|
|
return done(null);
|
|
});
|
|
};
|
|
};
|
|
|
|
textShouldEqual = function(browser, element, expected, done) {
|
|
return browser.text(element, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal(expected);
|
|
return done(null);
|
|
});
|
|
};
|
|
|
|
valueShouldEqual = function(browser, element, expected, done) {
|
|
return browser.getValue(element, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal(expected);
|
|
return done(null);
|
|
});
|
|
};
|
|
|
|
runTestWith = function(remoteWdConfig, desired) {
|
|
var browser, elementFunctionTests;
|
|
browser = null;
|
|
elementFunctionTests = function() {
|
|
var funcSuffix, tests, _fn, _i, _len, _ref;
|
|
tests = {};
|
|
tests.element = function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser.element("name", "elementByName", function(err, res) {
|
|
should.not.exist(err);
|
|
should.exist(res);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.element("name", "elementByName2", function(err, res) {
|
|
should.exist(err);
|
|
err.status.should.equal(7);
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
};
|
|
tests.elementOrNull = function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser.elementOrNull("name", "elementByName", function(err, res) {
|
|
should.not.exist(err);
|
|
should.exist(res);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.elementOrNull("name", "elementByName2", function(err, res) {
|
|
should.not.exist(err);
|
|
(res === null).should.be["true"];
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
};
|
|
tests.elementIfExists = function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser.elementIfExists("name", "elementByName", function(err, res) {
|
|
should.not.exist(err);
|
|
should.exist(res);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.elementIfExists("name", "elementByName2", function(err, res) {
|
|
should.not.exist(err);
|
|
(res === void 0).should.be["true"];
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
};
|
|
tests.hasElement = function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser.hasElement("name", "elementByName", function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.be["true"];
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.hasElement("name", "elementByName2", function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.be["false"];
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
};
|
|
tests.elements = function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser.elements("name", "elementsByName", function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.have.length(3);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.elements("name", "elementsByName2", function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.eql([]);
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
};
|
|
_ref = ['ByClassName', 'ByCssSelector', 'ById', 'ByName', 'ByLinkText', 'ByPartialLinkText', 'ByTagName', 'ByXPath', 'ByCss'];
|
|
_fn = function() {
|
|
var elementFuncName, elementsFuncName, hasElementFuncName, searchSeveralText, searchSeveralText2, searchText, searchText2;
|
|
elementFuncName = 'element' + funcSuffix;
|
|
hasElementFuncName = 'hasElement' + funcSuffix;
|
|
elementsFuncName = 'elements' + funcSuffix;
|
|
searchText = elementFuncName;
|
|
if (searchText.match(/ByLinkText/)) {
|
|
searchText = "click " + searchText;
|
|
}
|
|
if (searchText.match(/ByCss/)) {
|
|
searchText = "#" + searchText;
|
|
}
|
|
if (searchText.match(/ByXPath/)) {
|
|
searchText = "//div[@id='elementByXPath']/input";
|
|
}
|
|
if (searchText.match(/ByTagName/)) {
|
|
searchText = "span";
|
|
}
|
|
searchText2 = elementFuncName + '2';
|
|
if (searchText.match(/ByXPath/)) {
|
|
searchText2 = "//div[@id='elementByXPath2']/input";
|
|
}
|
|
if (searchText.match(/ByTagName/)) {
|
|
searchText2 = "span2";
|
|
}
|
|
searchSeveralText = searchText.replace('element', 'elements');
|
|
searchSeveralText2 = searchText2.replace('element', 'elements');
|
|
tests[elementFuncName] = function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser[elementFuncName](searchText, function(err, res) {
|
|
should.not.exist(err);
|
|
should.exist(res);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser[elementFuncName](searchText2, function(err, res) {
|
|
should.exist(err);
|
|
err.status.should.equal(7);
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
};
|
|
tests[elementFuncName + 'OrNull'] = function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser[elementFuncName + 'OrNull'](searchText, function(err, res) {
|
|
should.not.exist(err);
|
|
should.exist(res);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser[elementFuncName + 'OrNull'](searchText2, function(err, res) {
|
|
should.not.exist(err);
|
|
(res === null).should.be["true"];
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
};
|
|
tests[elementFuncName + 'IfExists'] = function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser[elementFuncName + 'IfExists'](searchText, function(err, res) {
|
|
should.not.exist(err);
|
|
should.exist(res);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser[elementFuncName + 'IfExists'](searchText2, function(err, res) {
|
|
should.not.exist(err);
|
|
(res === void 0).should.be["true"];
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
};
|
|
tests[hasElementFuncName] = function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser[hasElementFuncName](searchText, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.be["true"];
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser[hasElementFuncName](searchText2, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.be["false"];
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
};
|
|
return tests[elementsFuncName] = function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser[elementsFuncName](searchSeveralText, function(err, res) {
|
|
should.not.exist(err);
|
|
if (!(elementsFuncName.match(/ByTagName/))) {
|
|
res.should.have.length(3);
|
|
} else {
|
|
(res.length > 1).should.be["true"];
|
|
}
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser[elementsFuncName](searchSeveralText2, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.eql([]);
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
};
|
|
};
|
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
funcSuffix = _ref[_i];
|
|
_fn();
|
|
}
|
|
return tests;
|
|
};
|
|
return {
|
|
"wd.remote": function(test) {
|
|
browser = wd.remote(remoteWdConfig);
|
|
browser.on("status", function(info) {
|
|
return console.log("\u001b[36m%s\u001b[0m", info);
|
|
});
|
|
browser.on("command", function(meth, path) {
|
|
return console.log(" > \u001b[33m%s\u001b[0m: %s", meth, path);
|
|
});
|
|
return test.done();
|
|
},
|
|
"status": function(test) {
|
|
return browser.status(function(err, status) {
|
|
should.not.exist(err);
|
|
should.exist(status);
|
|
return test.done();
|
|
});
|
|
},
|
|
"sessions": function(test) {
|
|
return browser.sessions(function(err, sessions) {
|
|
should.not.exist(err);
|
|
should.exist(sessions);
|
|
return test.done();
|
|
});
|
|
},
|
|
"init": function(test) {
|
|
return browser.init(desired, function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"sessionCapabilities": function(test) {
|
|
return browser.sessionCapabilities(function(err, capabilities) {
|
|
should.not.exist(err);
|
|
should.exist(capabilities);
|
|
should.exist(capabilities.browserName);
|
|
should.exist(capabilities.platform);
|
|
return test.done();
|
|
});
|
|
},
|
|
"altSessionCapabilities": function(test) {
|
|
return browser.altSessionCapabilities(function(err, capabilities) {
|
|
should.not.exist(err);
|
|
should.exist(capabilities);
|
|
should.exist(capabilities.browserName);
|
|
should.exist(capabilities.platform);
|
|
return test.done();
|
|
});
|
|
},
|
|
"setPageLoadTimeout": function(test) {
|
|
return browser.setPageLoadTimeout(500, function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"get": function(test) {
|
|
return browser.get("http://127.0.0.1:8181/test-page.html", function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"refresh": function(test) {
|
|
return browser.refresh(function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"back / forward": function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser.get("http://127.0.0.1:8181/test-page.html?p=2", function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.url(function(err, url) {
|
|
should.not.exist(err);
|
|
url.should.include("?p=2");
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.back(function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.url(function(err, url) {
|
|
should.not.exist(err);
|
|
url.should.not.include("?p=2");
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.forward(function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.url(function(err, url) {
|
|
should.not.exist(err);
|
|
url.should.include("?p=2");
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.get("http://127.0.0.1:8181/test-page.html", function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"eval": function(test) {
|
|
return async.series([evalShouldEqual(browser, "1+2", 3), evalShouldEqual(browser, "document.title", "TEST PAGE"), evalShouldEqual(browser, "$('#eval').length", 1), evalShouldEqual(browser, "$('#eval li').length", 2)], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"safeEval": function(test) {
|
|
return async.series([
|
|
safeEvalShouldEqual(browser, "1+2", 3), safeEvalShouldEqual(browser, "document.title", "TEST PAGE"), safeEvalShouldEqual(browser, "$('#eval').length", 1), safeEvalShouldEqual(browser, "$('#eval li').length", 2), function(done) {
|
|
return browser.safeEval('wrong formula +', function(err, res) {
|
|
should.exist(err);
|
|
(err instanceof Error).should.be["true"];
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"execute (no args)": function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser.execute("window.wd_sync_execute_test = 'It worked!'", function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, evalShouldEqual(browser, "window.wd_sync_execute_test", 'It worked!')
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"execute (with args)": function(test) {
|
|
var jsScript;
|
|
jsScript = 'var a = arguments[0], b = arguments[1];\nwindow.wd_sync_execute_test = \'It worked! \' + (a+b)';
|
|
return async.series([
|
|
function(done) {
|
|
return browser.execute(jsScript, [6, 4], function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, evalShouldEqual(browser, "window.wd_sync_execute_test", 'It worked! 10')
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"safeExecute (no args)": function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser.safeExecute("window.wd_sync_execute_test = 'It worked!'", function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, evalShouldEqual(browser, "window.wd_sync_execute_test", 'It worked!'), function(done) {
|
|
return browser.safeExecute("invalid-code> here", function(err) {
|
|
should.exist(err);
|
|
(err instanceof Error).should.be["true"];
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"safeExecute (with args)": function(test) {
|
|
var jsScript;
|
|
jsScript = 'var a = arguments[0], b = arguments[1];\nwindow.wd_sync_execute_test = \'It worked! \' + (a+b)';
|
|
return async.series([
|
|
function(done) {
|
|
return browser.safeExecute(jsScript, [6, 4], function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, evalShouldEqual(browser, "window.wd_sync_execute_test", 'It worked! 10'), function(done) {
|
|
return browser.safeExecute("invalid-code> here", [6, 4], function(err) {
|
|
should.exist(err);
|
|
(err instanceof Error).should.be["true"];
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"executeAsync (no args)": function(test) {
|
|
var scriptAsCoffee, scriptAsJs;
|
|
scriptAsCoffee = "[args...,done] = arguments\ndone \"OK\" ";
|
|
scriptAsJs = CoffeeScript.compile(scriptAsCoffee, {
|
|
bare: 'on'
|
|
});
|
|
return browser.executeAsync(scriptAsJs, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal("OK");
|
|
return test.done();
|
|
});
|
|
},
|
|
"executeAsync (with args)": function(test) {
|
|
var scriptAsCoffee, scriptAsJs;
|
|
scriptAsCoffee = "[a,b,done] = arguments\ndone(\"OK \" + (a+b)) ";
|
|
scriptAsJs = CoffeeScript.compile(scriptAsCoffee, {
|
|
bare: 'on'
|
|
});
|
|
return browser.executeAsync(scriptAsJs, [10, 5], function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal("OK 15");
|
|
return test.done();
|
|
});
|
|
},
|
|
"safeExecuteAsync (no args)": function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
var scriptAsCoffee, scriptAsJs;
|
|
scriptAsCoffee = "[args...,done] = arguments\ndone \"OK\" ";
|
|
scriptAsJs = CoffeeScript.compile(scriptAsCoffee, {
|
|
bare: 'on'
|
|
});
|
|
return browser.safeExecuteAsync(scriptAsJs, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal("OK");
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.safeExecuteAsync("123 invalid<script", function(err, res) {
|
|
should.exist(err);
|
|
(err instanceof Error).should.be["true"];
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"safeExecuteAsync (with args)": function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
var scriptAsCoffee, scriptAsJs;
|
|
scriptAsCoffee = "[a,b,done] = arguments\ndone(\"OK \" + (a+b)) ";
|
|
scriptAsJs = CoffeeScript.compile(scriptAsCoffee, {
|
|
bare: 'on'
|
|
});
|
|
return browser.safeExecuteAsync(scriptAsJs, [10, 5], function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal("OK 15");
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.safeExecuteAsync("123 invalid<script", [10, 5], function(err, res) {
|
|
should.exist(err);
|
|
(err instanceof Error).should.be["true"];
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"setWaitTimeout / setImplicitWaitTimeout": function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser.setWaitTimeout(0, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, executeCoffee(browser, "setTimeout ->\n $('#setWaitTimeout').html '<div class=\"child\">a child</div>'\n, 1000"), function(done) {
|
|
return browser.elementByCss("#setWaitTimeout .child", function(err, res) {
|
|
should.exist(err);
|
|
err.status.should.equal(7);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.setImplicitWaitTimeout(2000, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.elementByCss("#setWaitTimeout .child", function(err, res) {
|
|
should.not.exist(err);
|
|
should.exist(res);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.setImplicitWaitTimeout(0, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"setAsyncScriptTimeout": function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser.setAsyncScriptTimeout(2000, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
var scriptAsCoffee, scriptAsJs;
|
|
scriptAsCoffee = "[args...,done] = arguments\nsetTimeout ->\n done \"OK\"\n, 1000";
|
|
scriptAsJs = CoffeeScript.compile(scriptAsCoffee, {
|
|
bare: 'on'
|
|
});
|
|
return browser.executeAsync(scriptAsJs, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal("OK");
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"element function tests": elementFunctionTests(),
|
|
"getAttribute": function(test) {
|
|
return browser.elementById("getAttribute", function(err, testDiv) {
|
|
should.not.exist(err);
|
|
should.exist(testDiv);
|
|
return async.series([
|
|
function(done) {
|
|
return browser.getAttribute(testDiv, "weather", function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal("sunny");
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.getAttribute(testDiv, "timezone", function(err, res) {
|
|
should.not.exist(err);
|
|
should.not.exist(res);
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
});
|
|
},
|
|
"getValue (input)": function(test) {
|
|
return browser.elementByCss("#getValue input", function(err, inputField) {
|
|
should.not.exist(err);
|
|
should.exist(inputField);
|
|
return browser.getValue(inputField, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal("Hello getValueTest!");
|
|
return test.done();
|
|
});
|
|
});
|
|
},
|
|
"getValue (textarea)": function(test) {
|
|
return browser.elementByCss("#getValue textarea", function(err, inputField) {
|
|
should.not.exist(err);
|
|
should.exist(inputField);
|
|
return browser.getValue(inputField, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal("Hello getValueTest2!");
|
|
return test.done();
|
|
});
|
|
});
|
|
},
|
|
"clickElement": function(test) {
|
|
return browser.elementByCss("#clickElement a", function(err, anchor) {
|
|
should.not.exist(err);
|
|
should.exist(anchor);
|
|
return async.series([
|
|
executeCoffee(browser, 'jQuery ->\n a = $(\'#clickElement a\')\n a.click ->\n a.html \'clicked\' '), function(done) {
|
|
return textShouldEqual(browser, anchor, "not clicked", done);
|
|
}, function(done) {
|
|
return browser.clickElement(anchor, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return textShouldEqual(browser, anchor, "clicked", done);
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
});
|
|
},
|
|
"moveTo": function(test) {
|
|
var env;
|
|
env = {};
|
|
return async.series([
|
|
elementByCss(browser, env, "#moveTo .a1", 'a1'), elementByCss(browser, env, "#moveTo .a2", 'a2'), elementByCss(browser, env, "#moveTo .current", 'current'), function(done) {
|
|
return textShouldEqual(browser, env.current, '', done);
|
|
}, executeCoffee(browser, 'jQuery ->\n a1 = $(\'#moveTo .a1\')\n a2 = $(\'#moveTo .a2\')\n current = $(\'#moveTo .current\')\n a1.hover ->\n current.html \'a1\'\n a2.hover ->\n current.html \'a2\''), function(done) {
|
|
return textShouldEqual(browser, env.current, '', done);
|
|
}, function(done) {
|
|
return browser.moveTo(env.a1, 5, 5, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return textShouldEqual(browser, env.current, 'a1', done);
|
|
}, function(done) {
|
|
return browser.moveTo(env.a2, void 0, void 0, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return textShouldEqual(browser, env.current, 'a2', done);
|
|
}, function(done) {
|
|
return browser.moveTo(env.a1, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return textShouldEqual(browser, env.current, 'a1', done);
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"buttonDown / buttonUp": function(test) {
|
|
var env;
|
|
env = {};
|
|
return async.series([
|
|
elementByCss(browser, env, "#mouseButton a", 'a'), elementByCss(browser, env, "#mouseButton div", 'resDiv'), executeCoffee(browser, 'jQuery ->\n a = $(\'#mouseButton a\')\n resDiv = $(\'#mouseButton div\')\n a.mousedown ->\n resDiv.html \'button down\'\n a.mouseup ->\n resDiv.html \'button up\''), function(done) {
|
|
return textShouldEqual(browser, env.resDiv, '', done);
|
|
}, function(done) {
|
|
return browser.moveTo(env.a, void 0, void 0, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.buttonDown(function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return textShouldEqual(browser, env.resDiv, 'button down', done);
|
|
}, function(done) {
|
|
return browser.buttonUp(function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return textShouldEqual(browser, env.resDiv, 'button up', done);
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"click": function(test) {
|
|
return browser.elementByCss("#click a", function(err, anchor) {
|
|
should.not.exist(err);
|
|
should.exist(anchor);
|
|
return async.series([
|
|
executeCoffee(browser, 'jQuery ->\n window.numOfClick = 0\n a = $(\'#click a\')\n a.click ->\n window.numOfClick = window.numOfClick + 1\n a.html "clicked #{window.numOfClick}" '), function(done) {
|
|
return textShouldEqual(browser, anchor, "not clicked", done);
|
|
}, function(done) {
|
|
return browser.moveTo(anchor, void 0, void 0, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.click(0, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return textShouldEqual(browser, anchor, "clicked 1", done);
|
|
}, function(done) {
|
|
return browser.moveTo(anchor, void 0, void 0, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.click(function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return textShouldEqual(browser, anchor, "clicked 2", done);
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
});
|
|
},
|
|
"doubleclick": function(test) {
|
|
return browser.elementByCss("#doubleclick a", function(err, anchor) {
|
|
should.not.exist(err);
|
|
should.exist(anchor);
|
|
return async.series([
|
|
executeCoffee(browser, 'jQuery ->\n a = $(\'#doubleclick a\')\n a.click ->\n a.html \'doubleclicked\' '), function(done) {
|
|
return textShouldEqual(browser, anchor, "not clicked", done);
|
|
}, function(done) {
|
|
return browser.moveTo(anchor, void 0, void 0, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.doubleclick(0, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return textShouldEqual(browser, anchor, "doubleclicked", done);
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
});
|
|
},
|
|
"type": function(test) {
|
|
var altKey, nullKey;
|
|
altKey = wd.SPECIAL_KEYS['Alt'];
|
|
nullKey = wd.SPECIAL_KEYS['NULL'];
|
|
return browser.elementByCss("#type input", function(err, inputField) {
|
|
should.not.exist(err);
|
|
should.exist(inputField);
|
|
return async.series([
|
|
function(done) {
|
|
return valueShouldEqual(browser, inputField, "", done);
|
|
}, function(done) {
|
|
return browser.type(inputField, "Hello", function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return valueShouldEqual(browser, inputField, "Hello", done);
|
|
}, function(done) {
|
|
return browser.type(inputField, [altKey, nullKey, " World"], function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return valueShouldEqual(browser, inputField, "Hello World", done);
|
|
}, function(done) {
|
|
return browser.type(inputField, "\n", function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return valueShouldEqual(browser, inputField, "Hello World", done);
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
});
|
|
},
|
|
"keys": function(test) {
|
|
var altKey, nullKey;
|
|
altKey = wd.SPECIAL_KEYS['Alt'];
|
|
nullKey = wd.SPECIAL_KEYS['NULL'];
|
|
return browser.elementByCss("#keys input", function(err, inputField) {
|
|
should.not.exist(err);
|
|
should.exist(inputField);
|
|
return async.series([
|
|
function(done) {
|
|
return valueShouldEqual(browser, inputField, "", done);
|
|
}, function(done) {
|
|
return browser.clickElement(inputField, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.keys("Hello", function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return valueShouldEqual(browser, inputField, "Hello", done);
|
|
}, function(done) {
|
|
return browser.keys([altKey, nullKey, " World"], function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return valueShouldEqual(browser, inputField, "Hello World", done);
|
|
}, function(done) {
|
|
return browser.keys("\n", function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return valueShouldEqual(browser, inputField, "Hello World", done);
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
});
|
|
},
|
|
"clear": function(test) {
|
|
return browser.elementByCss("#clear input", function(err, inputField) {
|
|
should.not.exist(err);
|
|
should.exist(inputField);
|
|
return async.series([
|
|
function(done) {
|
|
return valueShouldEqual(browser, inputField, "not cleared", done);
|
|
}, function(done) {
|
|
return browser.clear(inputField, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return valueShouldEqual(browser, inputField, "", done);
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
});
|
|
},
|
|
"title": function(test) {
|
|
return browser.title(function(err, title) {
|
|
should.not.exist(err);
|
|
title.should.equal("TEST PAGE");
|
|
return test.done();
|
|
});
|
|
},
|
|
"text (passing element)": function(test) {
|
|
return browser.elementByCss("#text", function(err, textDiv) {
|
|
should.not.exist(err);
|
|
should.exist(textDiv);
|
|
return browser.text(textDiv, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.include("text content");
|
|
res.should.not.include("div");
|
|
return test.done();
|
|
});
|
|
});
|
|
},
|
|
"text (passing undefined)": function(test) {
|
|
return browser.text(void 0, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.include("text content");
|
|
res.should.include("sunny");
|
|
res.should.include("click elementsByLinkText");
|
|
res.should.not.include("div");
|
|
return test.done();
|
|
});
|
|
},
|
|
"text (passing body)": function(test) {
|
|
return browser.text('body', function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.include("text content");
|
|
res.should.include("sunny");
|
|
res.should.include("click elementsByLinkText");
|
|
res.should.not.include("div");
|
|
return test.done();
|
|
});
|
|
},
|
|
"text (passing null)": function(test) {
|
|
return browser.text(null, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.include("text content");
|
|
res.should.include("sunny");
|
|
res.should.include("click elementsByLinkText");
|
|
res.should.not.include("div");
|
|
return test.done();
|
|
});
|
|
},
|
|
"textPresent": function(test) {
|
|
return browser.elementByCss("#textPresent", function(err, textDiv) {
|
|
should.not.exist(err);
|
|
should.exist(textDiv);
|
|
return async.series([
|
|
function(done) {
|
|
return browser.textPresent('sunny', textDiv, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.be["true"];
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.textPresent('raining', textDiv, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.be["false"];
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
});
|
|
},
|
|
"acceptAlert": function(test) {
|
|
return browser.elementByCss("#acceptAlert a", function(err, a) {
|
|
should.not.exist(err);
|
|
should.exist(a);
|
|
return async.series([
|
|
executeCoffee(browser, "jQuery -> \n a = $('#acceptAlert a')\n a.click ->\n alert \"coffee is running out\""), function(done) {
|
|
return browser.clickElement(a, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.acceptAlert(function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
});
|
|
},
|
|
"dismissAlert": function(test) {
|
|
return browser.elementByCss("#dismissAlert a", function(err, a) {
|
|
var capabilities;
|
|
should.not.exist(err);
|
|
should.exist(a);
|
|
capabilities = null;
|
|
return async.series([
|
|
function(done) {
|
|
return browser.sessionCapabilities(function(err, res) {
|
|
should.not.exist(err);
|
|
capabilities = res;
|
|
return done(null);
|
|
});
|
|
}, executeCoffee(browser, "jQuery -> \n a = $('#dismissAlert a')\n a.click ->\n alert \"coffee is running out\""), function(done) {
|
|
return browser.clickElement(a, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
if (!(capabilities.platform === 'MAC' && capabilities.browserName === 'chrome')) {
|
|
return browser.dismissAlert(function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
} else {
|
|
return browser.acceptAlert(function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
});
|
|
},
|
|
"active": function(test) {
|
|
var env;
|
|
env = {};
|
|
return async.series([
|
|
elementByCss(browser, env, "#active .i1", 'i1'), elementByCss(browser, env, "#active .i2", 'i2'), function(done) {
|
|
return browser.clickElement(env.i1, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.active(function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal(env.i1);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.clickElement(env.i2, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.active(function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.equal(env.i2);
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"url": function(test) {
|
|
return browser.url(function(err, res) {
|
|
res.should.include("test-page.html");
|
|
res.should.include("http://");
|
|
return test.done();
|
|
});
|
|
},
|
|
"allCookies / setCookies / deleteAllCookies / deleteCookie": function(test) {
|
|
return async.series([
|
|
function(done) {
|
|
return browser.deleteAllCookies(function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.allCookies(function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.eql([]);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.setCookie({
|
|
name: 'fruit1',
|
|
value: 'apple'
|
|
}, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.allCookies(function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.have.length(1);
|
|
(res.filter(function(c) {
|
|
return c.name === 'fruit1' && c.value === 'apple';
|
|
})).should.have.length(1);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.setCookie({
|
|
name: 'fruit2',
|
|
value: 'pear'
|
|
}, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.allCookies(function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.have.length(2);
|
|
(res.filter(function(c) {
|
|
return c.name === 'fruit2' && c.value === 'pear';
|
|
})).should.have.length(1);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.setCookie({
|
|
name: 'fruit3',
|
|
value: 'orange'
|
|
}, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.allCookies(function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.have.length(3);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.deleteCookie('fruit2', function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.allCookies(function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.have.length(2);
|
|
(res.filter(function(c) {
|
|
return c.name === 'fruit2' && c.value === 'pear';
|
|
})).should.have.length(0);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.deleteAllCookies(function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.allCookies(function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.eql([]);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.setCookie({
|
|
name: 'fruit3',
|
|
value: 'orange',
|
|
secure: true
|
|
}, function(err) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"waitForCondition": function(test) {
|
|
var exprCond;
|
|
exprCond = "$('#waitForCondition .child').length > 0";
|
|
return async.series([
|
|
executeCoffee(browser, "setTimeout ->\n $('#waitForCondition').html '<div class=\"child\">a waitForCondition child</div>'\n, 1500"), function(done) {
|
|
return browser.elementByCss("#waitForCondition .child", function(err, res) {
|
|
should.exist(err);
|
|
err.status.should.equal(7);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.waitForCondition(exprCond, 2000, 200, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.be["true"];
|
|
return done(err);
|
|
});
|
|
}, function(done) {
|
|
return browser.waitForCondition(exprCond, 2000, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.be["true"];
|
|
return done(err);
|
|
});
|
|
}, function(done) {
|
|
return browser.waitForCondition(exprCond, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.be["true"];
|
|
return done(err);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"waitForConditionInBrowser": function(test) {
|
|
var exprCond;
|
|
exprCond = "$('#waitForConditionInBrowser .child').length > 0";
|
|
return async.series([
|
|
executeCoffee(browser, "setTimeout ->\n $('#waitForConditionInBrowser').html '<div class=\"child\">a waitForCondition child</div>'\n, 1500"), function(done) {
|
|
return browser.elementByCss("#waitForConditionInBrowser .child", function(err, res) {
|
|
should.exist(err);
|
|
err.status.should.equal(7);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.setAsyncScriptTimeout(5000, function(err, res) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}, function(done) {
|
|
return browser.waitForConditionInBrowser(exprCond, 2000, 200, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.be["true"];
|
|
return done(err);
|
|
});
|
|
}, function(done) {
|
|
return browser.waitForConditionInBrowser(exprCond, 2000, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.be["true"];
|
|
return done(err);
|
|
});
|
|
}, function(done) {
|
|
return browser.waitForConditionInBrowser(exprCond, function(err, res) {
|
|
should.not.exist(err);
|
|
res.should.be["true"];
|
|
return done(err);
|
|
});
|
|
}, function(done) {
|
|
return browser.setAsyncScriptTimeout(0, function(err, res) {
|
|
should.not.exist(err);
|
|
return done(null);
|
|
});
|
|
}
|
|
], function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"err.inspect": function(test) {
|
|
return browser.safeExecute("invalid-code> here", function(err) {
|
|
should.exist(err);
|
|
(err instanceof Error).should.be["true"];
|
|
err.inspect().should.include('"screen": "[hidden]"');
|
|
return test.done();
|
|
});
|
|
},
|
|
"close": function(test) {
|
|
return browser.close(function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
},
|
|
"quit": function(test) {
|
|
return browser.quit(function(err) {
|
|
should.not.exist(err);
|
|
return test.done();
|
|
});
|
|
}
|
|
};
|
|
};
|
|
|
|
app = null;
|
|
|
|
exports.wd = {
|
|
"per method test": {
|
|
'starting express': function(test) {
|
|
app = express.createServer();
|
|
app.use(express["static"](__dirname + '/assets'));
|
|
app.listen(8181);
|
|
return test.done();
|
|
},
|
|
chrome: runTestWith({}, {
|
|
browserName: 'chrome'
|
|
}),
|
|
firefox: runTestWith({}, {
|
|
browserName: 'firefox'
|
|
}),
|
|
'stopping express': function(test) {
|
|
app.close();
|
|
return test.done();
|
|
}
|
|
}
|
|
};
|
|
|
|
}).call(this);
|