puppeteer_tests: Move to web/e2e-tests.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2023-02-22 14:04:11 -08:00
parent cea1119423
commit 377b8b22c0
27 changed files with 36 additions and 36 deletions

View File

@ -131,7 +131,7 @@
}
},
{
"files": ["frontend_tests/puppeteer_lib/**", "frontend_tests/puppeteer_tests/**"],
"files": ["web/e2e-tests/**"],
"globals": {
"zulip_test": false
}
@ -202,7 +202,7 @@
}
},
{
"files": ["frontend_tests/**", "web/tests/**"],
"files": ["web/e2e-tests/**", "web/tests/**"],
"globals": {
"CSS": false,
"document": false,

View File

@ -79,7 +79,7 @@ templating systems.
- `web/tests/` Node Frontend unit tests.
- `frontend_tests/puppeteer_tests/` Puppeteer frontend integration tests.
- `web/e2e-tests/` Puppeteer frontend integration tests.
- `tools/test-*` Developer-facing test runner scripts.

View File

@ -19,9 +19,9 @@ See `tools/test-js-with-puppeteer --help` for useful options,
especially running specific subsets of the tests to save time when
debugging.
The test files live in `frontend_tests/puppeteer_tests` and make use
The test files live in `web/e2e-tests` and make use
of various useful helper functions defined in
`frontend_tests/puppeteer_lib/common.ts`.
`web/e2e-tests/lib/common.ts`.
## How Puppeteer tests work
@ -123,7 +123,7 @@ These tools/features are often useful when debugging:
See also [Puppeteer upstream's debugging
tips](https://github.com/puppeteer/puppeteer#debugging-tips); some
tips may require temporary patches to functions like `run_test` or
`ensure_browser` in `frontend_tests/puppeteer_lib/common.ts`.
`ensure_browser` in `web/e2e-tests/lib/common.ts`.
## Writing Puppeteer tests

View File

@ -60,7 +60,7 @@ organization in Zulip). The following files are involved in the process:
**Frontend testing**
- `frontend_tests/puppeteer_tests/admin.ts`: end-to-end tests for the organization
- `web/e2e-tests/admin.test.ts`: end-to-end tests for the organization
admin settings pages.
- `web/tests/dispatch.test.js`
@ -144,7 +144,7 @@ or JavaScript/TypeScript/Python code that generates user-facing strings, be sure
**Testing:** There are two types of frontend tests: node-based unit
tests and blackbox end-to-end tests. The blackbox tests are run in a
headless Chromium browser using Puppeteer and are located in
`frontend_tests/puppeteer_tests/`. The unit tests use Node's `assert`
`web/e2e-tests/`. The unit tests use Node's `assert`
module are located in `web/tests/`. For more
information on writing and running tests, see the
[testing documentation](../testing/testing.md).

View File

@ -26,7 +26,7 @@ if (options.messageId === undefined) {
process.exit(1);
}
// TODO: Refactor to share code with frontend_tests/puppeteer_tests/realm-creation.ts
// TODO: Refactor to share code with web/e2e-tests/realm-creation.test.ts
async function run() {
const browser = await puppeteer.launch({
args: [

View File

@ -11,4 +11,3 @@ puppet/zulip_ops
zproject/dev_settings.py
zproject/test_settings.py
zerver/tests
frontend_tests

View File

@ -27,10 +27,10 @@ os.environ.pop("https_proxy", "")
usage = """test-js-with-puppeteer [options]
test-js-with-puppeteer # Run all test files
test-js-with-puppeteer navigation.ts # Run a single test file
test-js-with-puppeteer navi # Run a single test file navigation.ts
test-js-with-puppeteer login.ts compose.ts # Run a few test files
test-js-with-puppeteer login compose # Run a few test files, login.ts and compose.ts here"""
test-js-with-puppeteer navigation.test.ts # Run a single test file
test-js-with-puppeteer navi # Run a single test file navigation.test.ts
test-js-with-puppeteer login.test.ts compose.test.ts # Run a few test files
test-js-with-puppeteer login compose # Run a few test files, login.test.ts and compose.test.ts here"""
sys.path.insert(0, ZULIP_PATH)
@ -92,7 +92,7 @@ def run_single_test(test_file: str, test_number: int, total_tests: int) -> int:
def run_tests(files: Iterable[str], external_host: str, loop: int = 1) -> None:
test_dir = os.path.join(ZULIP_PATH, "frontend_tests/puppeteer_tests")
test_dir = os.path.join(ZULIP_PATH, "web/e2e-tests")
test_files = find_js_test_files(test_dir, files)
total_tests = len(test_files)

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {ElementHandle, Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function submit_notifications_stream_settings(page: Page): Promise<void> {
await page.waitForSelector('#org-notifications .save-button[data-status="unsaved"]', {

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function check_compose_form_empty(page: Page): Promise<void> {
await common.check_compose_state(page, {

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function copy_messages(
page: Page,

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
// This will be the row of the the custom profile field we add.
const profile_field_row = "#admin_profile_fields_table tr:nth-last-child(1)";

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function click_delete_and_return_last_msg_id(page: Page): Promise<string> {
const msg = (await page.$$("#zhome .message_row")).at(-1);

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function wait_for_drafts_to_disappear(page: Page): Promise<void> {
await page.waitForSelector("#draft_overlay.show", {hidden: true});

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function trigger_edit_last_message(page: Page): Promise<void> {
const msg = (await page.$$("#zhome .message_row")).at(-1);

View File

@ -8,9 +8,9 @@ import puppeteer from "puppeteer";
import StackFrame from "stackframe";
import StackTraceGPS from "stacktrace-gps";
import {test_credentials} from "../../var/puppeteer/test_credentials";
import {test_credentials} from "../../../var/puppeteer/test_credentials";
const root_dir = path.resolve(__dirname, "../../");
const root_dir = path.resolve(__dirname, "../../..");
const puppeteer_dir = path.join(root_dir, "var/puppeteer");
type Message = Record<string, string | boolean> & {recipient?: string; content: string};

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function test_mention(page: Page): Promise<void> {
await common.log_in(page);

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function get_stream_li(page: Page, stream_name: string): Promise<string> {
const stream_id = await common.get_stream_id(page, stream_name);

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function navigate_using_left_sidebar(page: Page, click_target: string): Promise<void> {
console.log("Visiting #" + click_target);

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
const email = "alice@test.example.com";
const subdomain = "testsubdomain";

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function test_add_linkifier(page: Page): Promise<void> {
await page.waitForSelector(".admin-linkifier-form", {visible: true});

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
type Playground = {
playground_name: string;

View File

@ -3,7 +3,8 @@ import {strict as assert} from "assert";
import type {ElementHandle, Page} from "puppeteer";
import {test_credentials} from "../../var/puppeteer/test_credentials";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
const OUTGOING_WEBHOOK_BOT_TYPE = "3";
const GENERIC_BOT_TYPE = "1";

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
const message = "test star";

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function user_row_selector(page: Page, name: string): Promise<string> {
const user_id = await common.get_user_id_from_name(page, name);

View File

@ -1,6 +1,6 @@
import type {ElementHandle, Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function test_subscription_button(page: Page): Promise<void> {
const stream_selector = "[data-stream-name='Venice']";

View File

@ -2,7 +2,7 @@ import {strict as assert} from "assert";
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function navigate_to_user_list(page: Page): Promise<void> {
const menu_selector = "#settings-dropdown";

View File

@ -1,6 +1,6 @@
import type {Page} from "puppeteer";
import * as common from "../puppeteer_lib/common";
import * as common from "./lib/common";
async function open_set_user_status_modal(page: Page): Promise<void> {
const menu_icon_selector = ".user_sidebar_entry:first-child .user-list-sidebar-menu-icon";