Files
node/Nodejs-Socketio-Mysql-Demo/node_modules/wd/test/unit/per-method-test.js
2012-05-25 09:03:56 -04:00

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