You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.7 KiB

casper.get_list_items = function () {
return this.evaluate(function () {
return $.makeArray($('.item_link').map(function () {
return {
link: $(this).attr('href'),
label: $(this).find('.item_name').text()
};
}));
});
};
casper.test_items = function (origin, prefix, visited) {
visited = visited || {};
casper.then(function () {
var items = casper.get_list_items();
var tree_link = RegExp('^' + (prefix + 'tree/').replace(/\//g, '\\/'));
casper.each(items, function (self, item) {
if (item.link.match(tree_link)) {
var followed_url = item.link;
if (!visited[followed_url]) {
visited[followed_url] = true;
casper.thenOpen(origin + followed_url, function () {
this.waitFor(this.page_loaded);
casper.wait_for_dashboard();
// getCurrentUrl is with host, and url-decoded,
// but item.link is without host, and url-encoded
var expected = origin + decodeURIComponent(item.link);
this.test.assertEquals(this.getCurrentUrl(), expected, 'Testing dashboard link: ' + expected);
casper.test_items(origin, prefix, visited);
this.back();
});
}
}
});
});
};
casper.dashboard_test(function () {
var baseUrl = this.get_notebook_server();
m = /(https?:\/\/[^\/]+)(.*)/.exec(baseUrl);
origin = m[1];
prefix = m[2];
casper.test_items(origin, prefix);
});