mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 14:03:30 +00:00 
			
		
		
		
	With webpack, variables declared in each file are already file-local (Global variables need to be explicitly exported), so these IIFEs are no longer needed. Signed-off-by: Anders Kaseorg <andersk@mit.edu>
		
			
				
	
	
		
			128 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			128 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();
 | 
						|
});
 |