mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-27 09:36:19 -05:00
smoke test
This commit is contained in:
parent
30f743e185
commit
2226207ecd
2 changed files with 85 additions and 0 deletions
5
lib/tasks/smoke_test.rake
Normal file
5
lib/tasks/smoke_test.rake
Normal file
|
@ -0,0 +1,5 @@
|
|||
desc "run phantomjs based smoke tests on current build"
|
||||
task "smoke:test" => :environment do
|
||||
results = `phantomjs #{Rails.root}/spec/phantom_js/smoke_test.js #{Discourse.base_url}`
|
||||
puts results
|
||||
end
|
80
spec/phantom_js/smoke_test.js
Normal file
80
spec/phantom_js/smoke_test.js
Normal file
|
@ -0,0 +1,80 @@
|
|||
console.log('Starting Smoke Test');
|
||||
var system = require('system');
|
||||
|
||||
if(system.args.length !== 2) {
|
||||
console.log("expecting phantomjs {smoke_test.js} {base_url}");
|
||||
phantom.exit(1);
|
||||
}
|
||||
|
||||
var page = require('webpage').create();
|
||||
|
||||
page.waitFor = function(desc, fn, t) {
|
||||
var check,start,promise;
|
||||
|
||||
console.log("RUNNING: " + desc);
|
||||
|
||||
start = +new Date();
|
||||
promise = {};
|
||||
check = function() {
|
||||
var r;
|
||||
|
||||
try {
|
||||
r = page.evaluate(fn);
|
||||
}
|
||||
catch(err) {
|
||||
// next time
|
||||
}
|
||||
|
||||
if(r) {
|
||||
promise.success = true;
|
||||
console.log("PASSED: " + desc);
|
||||
} else {
|
||||
var diff = (+new Date()) - start;
|
||||
if(diff > t) {
|
||||
promise.failure = true;
|
||||
console.log("FAILED: " + desc);
|
||||
} else {
|
||||
setTimeout(check, 50);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
check();
|
||||
return promise;
|
||||
};
|
||||
|
||||
function afterAll(promises, fn){
|
||||
var i;
|
||||
var test = function(){
|
||||
var good = true;
|
||||
var allDone = true;
|
||||
|
||||
for(i=0;i<promises.length;i++){
|
||||
good = good && promises[i].success;
|
||||
allDone = allDone && (promises[i].success || promises[i].failure);
|
||||
}
|
||||
|
||||
if(allDone){
|
||||
fn(good);
|
||||
} else {
|
||||
setTimeout(test, 50);
|
||||
}
|
||||
};
|
||||
test();
|
||||
}
|
||||
|
||||
page.open(system.args[1], function (status) {
|
||||
|
||||
console.log("Opened " + system.args[1]);
|
||||
|
||||
var gotTopics = page.waitFor("more than one topic shows up" , function(){
|
||||
return ($('#topic-list tbody tr').length > 0);
|
||||
}, 5000);
|
||||
|
||||
afterAll([gotTopics], function(success){
|
||||
if(success) {
|
||||
console.log("ALL PASSED");
|
||||
}
|
||||
phantom.exit();
|
||||
});
|
||||
});
|
Loading…
Reference in a new issue