zulip_test: Re-export internal functions used by Puppeteer tests.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2021-03-01 14:33:52 -08:00
committed by Tim Abbott
parent 60c6ba7c3a
commit 79ac5c25b5
9 changed files with 44 additions and 38 deletions

View File

@@ -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
} }
}, },
{ {

View File

@@ -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});
} }

View File

@@ -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");

View File

@@ -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");

View File

@@ -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

View File

@@ -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
View 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";

View File

@@ -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)

View File

@@ -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",