Files
zulip/frontend_tests/casper_tests/09-navigation.js
Anders Kaseorg 6ec808b8df js: Add "use strict" directive to CommonJS files.
ES and TypeScript modules are strict by default and don’t need this
directive.  ESLint will remind us to add it to new CommonJS files and
remove it from ES and TypeScript modules.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-07-31 22:09:46 -07:00

133 lines
4.1 KiB
JavaScript

"use strict";
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, "message_feed_container");
then_navigate_to("message_feed_container", "message_feed_container");
then_navigate_to_subscriptions();
then_navigate_to("", "message_feed_container");
then_navigate_to_settings();
then_navigate_to("narrow/is/private", "message_feed_container");
then_navigate_to_subscriptions();
then_navigate_to(verona_narrow, "message_feed_container");
});
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();
});