mirror of https://github.com/zulip/zulip.git
131 lines
3.9 KiB
JavaScript
131 lines
3.9 KiB
JavaScript
var common = require("../casper_lib/common.js");
|
|
|
|
// Test basic tab navigation.
|
|
|
|
common.start_and_log_in();
|
|
|
|
casper.then(function () {
|
|
casper.test.info("Testing navigation");
|
|
});
|
|
|
|
function wait_for_tab(tab) {
|
|
casper.waitForSelector("#" + tab + ".tab-pane.active", function () {
|
|
casper.test.assertExists("#" + tab + ".tab-pane.active", tab + " page is active");
|
|
});
|
|
}
|
|
|
|
function then_navigate_to(click_target, tab) {
|
|
casper.then(function () {
|
|
casper.test.info("Visiting #" + click_target);
|
|
casper.click("a[href='#" + click_target + "']");
|
|
wait_for_tab(tab);
|
|
});
|
|
}
|
|
|
|
function then_navigate_to_settings() {
|
|
casper.then(function () {
|
|
casper.test.info("Navigate to settings");
|
|
var menu_selector = "#settings-dropdown";
|
|
casper.waitUntilVisible(menu_selector, function () {
|
|
casper.click(menu_selector);
|
|
casper.waitUntilVisible('a[href^="#settings"]', function () {
|
|
casper.click('a[href^="#settings"]');
|
|
casper.waitUntilVisible("#settings_page", function () {
|
|
casper.test.assertExists("#settings_page", "Settings page is active");
|
|
casper.click("#settings_page .exit");
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
function then_navigate_to_subscriptions() {
|
|
casper.then(function () {
|
|
casper.test.info("Navigate to subscriptions");
|
|
|
|
var menu_selector = "#settings-dropdown";
|
|
casper.waitUntilVisible(menu_selector, function () {
|
|
casper.click(menu_selector);
|
|
casper.click('a[href^="#streams"]');
|
|
casper.waitUntilVisible("#subscription_overlay", function () {
|
|
casper.test.assertExists("#subscriptions_table", "#subscriptions page is active");
|
|
casper.click("#subscription_overlay .exit");
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
// Take a navigation tour of the app.
|
|
// Entries are (click target, tab that should be active after clicking).
|
|
then_navigate_to_settings();
|
|
|
|
var verona_narrow;
|
|
casper.then(function () {
|
|
var verona_id = casper.evaluate(function () {
|
|
return stream_data.get_stream_id("Verona");
|
|
});
|
|
verona_narrow = "narrow/stream/" + verona_id + "-Verona";
|
|
casper.test.info(verona_narrow);
|
|
|
|
then_navigate_to(verona_narrow, "home");
|
|
then_navigate_to("home", "home");
|
|
then_navigate_to_subscriptions();
|
|
then_navigate_to("", "home");
|
|
then_navigate_to_settings();
|
|
then_navigate_to("narrow/is/private", "home");
|
|
then_navigate_to_subscriptions();
|
|
then_navigate_to(verona_narrow, "home");
|
|
});
|
|
|
|
var initial_page_load_time;
|
|
var hash;
|
|
var orig_hash;
|
|
|
|
// Verify reload.js's server-initiated browser reload hash
|
|
// save/restore logic works.
|
|
casper.then(function () {
|
|
initial_page_load_time = casper.evaluate(function () {
|
|
return page_params.page_load_time;
|
|
});
|
|
casper.test.info(initial_page_load_time);
|
|
orig_hash = casper.evaluate(function () {
|
|
return window.location.hash;
|
|
});
|
|
casper.evaluate(function () {
|
|
reload.initiate({immediate: true});
|
|
});
|
|
});
|
|
|
|
casper.then(function () {
|
|
// Confirm that's we've actually reloaded using the page load timestamp.
|
|
casper.waitFor(
|
|
function () {
|
|
return casper.evaluate(function (input) {
|
|
return page_params.page_load_time > input;
|
|
}, initial_page_load_time);
|
|
},
|
|
function () {
|
|
// Verify the hash was preserved
|
|
hash = casper.evaluate(function () {
|
|
return window.location.hash;
|
|
});
|
|
}
|
|
);
|
|
});
|
|
|
|
casper.then(function () {
|
|
casper.waitUntilVisible("#zfilt", function () {
|
|
// Verify that we're narrowed to the target stream
|
|
casper.test.assertEquals(orig_hash, hash);
|
|
casper.test.assertVisible("#zfilt");
|
|
casper.test.assertNotVisible("#zhome");
|
|
});
|
|
});
|
|
|
|
common.then_log_out();
|
|
|
|
// Run the above queued actions.
|
|
casper.run(function () {
|
|
casper.test.done();
|
|
});
|