mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	zulip_test: Re-export internal functions used by Puppeteer tests.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							60c6ba7c3a
						
					
				
				
					commit
					79ac5c25b5
				
			@@ -118,7 +118,8 @@
 | 
				
			|||||||
            "files": ["frontend_tests/puppeteer_lib/**", "frontend_tests/puppeteer_tests/**"],
 | 
					            "files": ["frontend_tests/puppeteer_lib/**", "frontend_tests/puppeteer_tests/**"],
 | 
				
			||||||
            "globals": {
 | 
					            "globals": {
 | 
				
			||||||
                "$": false,
 | 
					                "$": false,
 | 
				
			||||||
                "current_msg_list": false
 | 
					                "current_msg_list": false,
 | 
				
			||||||
 | 
					                "zulip_test": false
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -38,10 +38,9 @@ class CommonUtils {
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        async expect(page: Page, expected: string): Promise<void> {
 | 
					        async expect(page: Page, expected: string): Promise<void> {
 | 
				
			||||||
            const actual_recipients = await page.evaluate(() => {
 | 
					            const actual_recipients = await page.evaluate(() =>
 | 
				
			||||||
                const compose_state = window.require("./static/js/compose_state");
 | 
					                zulip_test.private_message_recipient(),
 | 
				
			||||||
                return compose_state.private_message_recipient();
 | 
					            );
 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
            assert.equal(actual_recipients, expected);
 | 
					            assert.equal(actual_recipients, expected);
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
@@ -182,20 +181,17 @@ class CommonUtils {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async get_stream_id(page: Page, stream_name: string): Promise<number> {
 | 
					    async get_stream_id(page: Page, stream_name: string): Promise<number> {
 | 
				
			||||||
        return await page.evaluate((stream_name: string) => {
 | 
					        return await page.evaluate(
 | 
				
			||||||
            const stream_data = window.require("./static/js/stream_data");
 | 
					            (stream_name: string) => zulip_test.get_stream_id(stream_name),
 | 
				
			||||||
            return stream_data.get_stream_id(stream_name);
 | 
					            stream_name,
 | 
				
			||||||
        }, stream_name);
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async get_user_id_from_name(page: Page, name: string): Promise<number> {
 | 
					    async get_user_id_from_name(page: Page, name: string): Promise<number> {
 | 
				
			||||||
        if (this.fullname[name] !== undefined) {
 | 
					        if (this.fullname[name] !== undefined) {
 | 
				
			||||||
            name = this.fullname[name];
 | 
					            name = this.fullname[name];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return await page.evaluate((name: string) => {
 | 
					        return await page.evaluate((name: string) => zulip_test.get_user_id_from_name(name), name);
 | 
				
			||||||
            const people = window.require("./static/js/people");
 | 
					 | 
				
			||||||
            return people.get_user_id_from_name(name);
 | 
					 | 
				
			||||||
        }, name);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async get_internal_email_from_name(page: Page, name: string): Promise<string> {
 | 
					    async get_internal_email_from_name(page: Page, name: string): Promise<string> {
 | 
				
			||||||
@@ -203,9 +199,8 @@ class CommonUtils {
 | 
				
			|||||||
            name = this.fullname[name];
 | 
					            name = this.fullname[name];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return await page.evaluate((fullname: string) => {
 | 
					        return await page.evaluate((fullname: string) => {
 | 
				
			||||||
            const people = window.require("./static/js/people");
 | 
					            const user_id = zulip_test.get_user_id_from_name(fullname);
 | 
				
			||||||
            const user_id = people.get_user_id_from_name(fullname);
 | 
					            return zulip_test.get_person_by_user_id(user_id).email;
 | 
				
			||||||
            return people.get_by_user_id(user_id).email;
 | 
					 | 
				
			||||||
        }, name);
 | 
					        }, name);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -293,7 +288,6 @@ class CommonUtils {
 | 
				
			|||||||
                    - does it look to have been
 | 
					                    - does it look to have been
 | 
				
			||||||
                      re-rendered based on server info?
 | 
					                      re-rendered based on server info?
 | 
				
			||||||
            */
 | 
					            */
 | 
				
			||||||
                const rows = window.require("./static/js/rows");
 | 
					 | 
				
			||||||
                const last_msg = current_msg_list.last();
 | 
					                const last_msg = current_msg_list.last();
 | 
				
			||||||
                if (last_msg === undefined) {
 | 
					                if (last_msg === undefined) {
 | 
				
			||||||
                    return false;
 | 
					                    return false;
 | 
				
			||||||
@@ -307,8 +301,8 @@ class CommonUtils {
 | 
				
			|||||||
                    return false;
 | 
					                    return false;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                const row = rows.last_visible();
 | 
					                const row = zulip_test.last_visible_row();
 | 
				
			||||||
                if (rows.id(row) !== last_msg.id) {
 | 
					                if (zulip_test.row_id(row) !== last_msg.id) {
 | 
				
			||||||
                    return false;
 | 
					                    return false;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -373,10 +367,7 @@ class CommonUtils {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Close the compose box after sending the message.
 | 
					        // Close the compose box after sending the message.
 | 
				
			||||||
        await page.evaluate(() => {
 | 
					        await page.evaluate(() => zulip_test.cancel_compose());
 | 
				
			||||||
            const compose_actions = window.require("./static/js/compose_actions");
 | 
					 | 
				
			||||||
            compose_actions.cancel();
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
        // Make sure the compose box is closed.
 | 
					        // Make sure the compose box is closed.
 | 
				
			||||||
        await page.waitForSelector("#compose-textarea", {hidden: true});
 | 
					        await page.waitForSelector("#compose-textarea", {hidden: true});
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,10 +57,7 @@ async function test_reload_hash(page: Page): Promise<void> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const initial_hash = await page.evaluate(() => window.location.hash);
 | 
					    const initial_hash = await page.evaluate(() => window.location.hash);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    await page.evaluate(() => {
 | 
					    await page.evaluate(() => zulip_test.initiate_reload({immediate: true}));
 | 
				
			||||||
        const reload = window.require("./static/js/reload");
 | 
					 | 
				
			||||||
        reload.initiate({immediate: true});
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    await page.waitForSelector("#zfilt", {visible: true});
 | 
					    await page.waitForSelector("#zfilt", {visible: true});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const page_load_time = await page.evaluate(() => page_params.page_load_time);
 | 
					    const page_load_time = await page.evaluate(() => page_params.page_load_time);
 | 
				
			||||||
@@ -75,10 +72,7 @@ async function navigation_tests(page: Page): Promise<void> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    await navigate_to_settings(page);
 | 
					    await navigate_to_settings(page);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const verona_id = await page.evaluate(() => {
 | 
					    const verona_id = await page.evaluate(() => zulip_test.get_stream_id("Verona"));
 | 
				
			||||||
        const stream_data = window.require("./static/js/stream_data");
 | 
					 | 
				
			||||||
        return stream_data.get_stream_id("Verona");
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    const verona_narrow = `narrow/stream/${verona_id}-Verona`;
 | 
					    const verona_narrow = `narrow/stream/${verona_id}-Verona`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    await navigate_to(page, verona_narrow, "message_feed_container");
 | 
					    await navigate_to(page, verona_narrow, "message_feed_container");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,14 +19,12 @@ async function test_mention(page: Page): Promise<void> {
 | 
				
			|||||||
    await common.ensure_enter_does_not_send(page);
 | 
					    await common.ensure_enter_does_not_send(page);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    console.log("Checking for all everyone warning");
 | 
					    console.log("Checking for all everyone warning");
 | 
				
			||||||
    const stream_size = await page.evaluate(() => {
 | 
					    const stream_size = await page.evaluate(() =>
 | 
				
			||||||
        const stream_data = window.require("./static/js/stream_data");
 | 
					        zulip_test.get_subscriber_count(zulip_test.get_sub("Verona").stream_id),
 | 
				
			||||||
        return stream_data.get_subscriber_count(stream_data.get_sub("Verona").stream_id);
 | 
					    );
 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    const threshold = await page.evaluate(() => {
 | 
					    const threshold = await page.evaluate(() => {
 | 
				
			||||||
        const compose = window.require("./static/js/compose");
 | 
					        zulip_test.set_wildcard_mention_large_stream_threshold(5);
 | 
				
			||||||
        compose.set_wildcard_mention_large_stream_threshold(5);
 | 
					        return zulip_test.wildcard_mention_large_stream_threshold;
 | 
				
			||||||
        return compose.wildcard_mention_large_stream_threshold;
 | 
					 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    assert(stream_size > threshold);
 | 
					    assert(stream_size > threshold);
 | 
				
			||||||
    await page.click("#compose-send-button");
 | 
					    await page.click("#compose-send-button");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,6 +39,7 @@ import "../settings_profile_fields";
 | 
				
			|||||||
import "../settings";
 | 
					import "../settings";
 | 
				
			||||||
import "../ui_init";
 | 
					import "../ui_init";
 | 
				
			||||||
import "../desktop_integration";
 | 
					import "../desktop_integration";
 | 
				
			||||||
 | 
					import "../zulip_test";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Import styles
 | 
					// Import styles
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								static/js/global.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								static/js/global.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -25,6 +25,7 @@ declare let ui: any;
 | 
				
			|||||||
declare let unread: any;
 | 
					declare let unread: any;
 | 
				
			||||||
declare let unread_ops: any;
 | 
					declare let unread_ops: any;
 | 
				
			||||||
declare let widgetize: any;
 | 
					declare let widgetize: any;
 | 
				
			||||||
 | 
					declare let zulip_test: any;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface JQuery {
 | 
					interface JQuery {
 | 
				
			||||||
    expectOne(): JQuery;
 | 
					    expectOne(): JQuery;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										14
									
								
								static/js/zulip_test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								static/js/zulip_test.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					// This module, exposed through the zulip_test global variable,
 | 
				
			||||||
 | 
					// re-exports certain internal functions so they can be used by the
 | 
				
			||||||
 | 
					// Puppeteer tests.  It should not be used in the code itself.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export {
 | 
				
			||||||
 | 
					    set_wildcard_mention_large_stream_threshold,
 | 
				
			||||||
 | 
					    wildcard_mention_large_stream_threshold,
 | 
				
			||||||
 | 
					} from "./compose";
 | 
				
			||||||
 | 
					export {private_message_recipient} from "./compose_state";
 | 
				
			||||||
 | 
					export {get_stream_id, get_sub, get_subscriber_count} from "./stream_data";
 | 
				
			||||||
 | 
					export {get_by_user_id as get_person_by_user_id, get_user_id_from_name} from "./people";
 | 
				
			||||||
 | 
					export {last_visible as last_visible_row, id as row_id} from "./rows";
 | 
				
			||||||
 | 
					export {cancel as cancel_compose} from "./compose_actions";
 | 
				
			||||||
 | 
					export {initiate as initiate_reload} from "./reload";
 | 
				
			||||||
@@ -164,6 +164,7 @@ EXEMPT_FILES = {
 | 
				
			|||||||
    "static/js/zcommand.js",
 | 
					    "static/js/zcommand.js",
 | 
				
			||||||
    "static/js/zform.js",
 | 
					    "static/js/zform.js",
 | 
				
			||||||
    "static/js/zulip.js",
 | 
					    "static/js/zulip.js",
 | 
				
			||||||
 | 
					    "static/js/zulip_test.js",
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
parser = argparse.ArgumentParser(USAGE)
 | 
					parser = argparse.ArgumentParser(USAGE)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,6 +37,11 @@ export default (_env: unknown, argv: {mode?: string}): webpack.Configuration[] =
 | 
				
			|||||||
              ),
 | 
					              ),
 | 
				
			||||||
        module: {
 | 
					        module: {
 | 
				
			||||||
            rules: [
 | 
					            rules: [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    test: require.resolve("./static/js/zulip_test"),
 | 
				
			||||||
 | 
					                    loader: "expose-loader",
 | 
				
			||||||
 | 
					                    options: {exposes: "zulip_test"},
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    test: require.resolve("./tools/debug-require"),
 | 
					                    test: require.resolve("./tools/debug-require"),
 | 
				
			||||||
                    loader: "expose-loader",
 | 
					                    loader: "expose-loader",
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user