mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +00:00
This commit helps reduce clutter on the navigation sidebar. Creates new directories and moves relevant files into them. Modifies index.rst, symlinks, and image paths accordingly. This commit also enables expandable/collapsible navigation items, renames files in docs/development and docs/production, modifies /tools/test-documentation so that it overrides a theme setting, Also updates links to other docs, file paths in the codebase that point to developer documents, and files that should be excluded from lint tests. Note that this commit does not update direct links to zulip.readthedocs.io in the codebase; those will be resolved in an upcoming follow-up commit (it'll be easier to verify all the links once this is merged and ReadTheDocs is updated). Fixes #5265.
117 lines
4.0 KiB
Python
Executable File
117 lines
4.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import argparse
|
|
import subprocess
|
|
import sys
|
|
import os
|
|
import glob
|
|
|
|
#
|
|
# In order to use remote casperjs debugging, pass the --remote-debug flag
|
|
# This will start a remote debugging session listening on port 7777
|
|
#
|
|
# See https://wiki.zulip.net/wiki/Testing_the_app for more information
|
|
# on how to use remote debugging
|
|
#
|
|
|
|
ZULIP_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
os.environ["CASPER_TESTS"] = "1"
|
|
os.environ["PHANTOMJS_EXECUTABLE"] = os.path.join(ZULIP_PATH, "node_modules/.bin/phantomjs")
|
|
os.environ["http_proxy"] = ""
|
|
os.environ["https_proxy"] = ""
|
|
|
|
usage = """test-js-with-casper [options]
|
|
test-js-with-casper # Run all test files
|
|
test-js-with-casper 09-navigation.js # Run a single test file
|
|
test-js-with-casper 09 # Run a single test file 09-navigation.js
|
|
test-js-with-casper 01-login.js 03-narrow.js # Run a few test files
|
|
test-js-with-casper 01 03 # Run a few test files, 01-login.js and 03-narrow.js here"""
|
|
parser = argparse.ArgumentParser(usage)
|
|
|
|
parser.add_argument('--skip-flaky-tests', dest='skip_flaky',
|
|
action="store_true",
|
|
default=False, help='Skip flaky tests')
|
|
parser.add_argument('--force', dest='force',
|
|
action="store_true",
|
|
default=False, help='Run tests despite possible problems.')
|
|
parser.add_argument('--remote-debug',
|
|
help='Whether or not to enable remote debugging on port 7777',
|
|
action="store_true",
|
|
default=False)
|
|
parser.add_argument('tests', nargs=argparse.REMAINDER,
|
|
help='Specific tests to run; by default, runs all tests')
|
|
options = parser.parse_args()
|
|
|
|
sys.path.insert(0, ZULIP_PATH)
|
|
|
|
# check for the venv
|
|
from tools.lib import sanity_check
|
|
sanity_check.check_venv(__file__)
|
|
|
|
from tools.lib.test_script import get_provisioning_status
|
|
from tools.lib.test_server import test_server_running
|
|
|
|
from typing import Iterable
|
|
|
|
if not options.force:
|
|
ok, msg = get_provisioning_status()
|
|
if not ok:
|
|
print(msg)
|
|
print('If you really know what you are doing, use --force to run anyway.')
|
|
sys.exit(1)
|
|
|
|
os.chdir(ZULIP_PATH)
|
|
|
|
subprocess.check_call('tools/setup/generate-test-credentials')
|
|
|
|
subprocess.check_call(['mkdir', '-p', 'var/casper'])
|
|
|
|
subprocess.check_call(['rm', '-f'] + glob.glob('var/casper/casper-failure*.png'))
|
|
|
|
LOG_FILE = 'var/casper/server.log'
|
|
|
|
def run_tests(files: Iterable[str], external_host: str) -> None:
|
|
test_dir = os.path.join(ZULIP_PATH, 'frontend_tests/casper_tests')
|
|
test_files = []
|
|
for file in files:
|
|
for file_name in os.listdir(test_dir):
|
|
if file_name.startswith(file):
|
|
file = file_name
|
|
break
|
|
if not os.path.exists(file):
|
|
file = os.path.join(test_dir, file)
|
|
test_files.append(os.path.abspath(file))
|
|
|
|
if not test_files:
|
|
test_files = sorted(glob.glob(os.path.join(test_dir, '*.js')))
|
|
|
|
# 10-admin.js is too flaky!
|
|
if options.skip_flaky:
|
|
test_files = [fn for fn in test_files if '10-admin' not in fn]
|
|
|
|
remote_debug = ""
|
|
if options.remote_debug:
|
|
remote_debug = "--remote-debugger-port=7777 --remote-debugger-autorun=yes"
|
|
|
|
with test_server_running(options.force, external_host, log_file=LOG_FILE, dots=True):
|
|
ret = 1
|
|
for test_file in test_files:
|
|
cmd = "node_modules/.bin/casperjs %s test %s" % (remote_debug, test_file)
|
|
print("\n\nRunning %s" % (cmd,))
|
|
ret = subprocess.call(cmd, shell=True)
|
|
if ret != 0:
|
|
break
|
|
if ret != 0:
|
|
print("""
|
|
Oops, the frontend tests failed. Tips for debugging:
|
|
* Check the frontend test server logs at %s
|
|
* Check the screenshots of failed tests at var/casper/casper-failure*.png
|
|
* Try remote debugging the test web browser as described in docs/testing/testing-with-casper.md
|
|
""" % (LOG_FILE,), file=sys.stderr)
|
|
|
|
sys.exit(ret)
|
|
|
|
external_host = "zulipdev.com:9981"
|
|
run_tests(options.tests, external_host)
|
|
sys.exit(0)
|