mirror of
https://github.com/zulip/zulip.git
synced 2025-10-24 16:43:57 +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