{% extends "zerver/portico.html" %} {% block title %}
Below is a list of useful tools and data sets available only in the Zulip development environment that are often useful when contributing to Zulip. Most of these require you to run a command to build/generate the relevant content. This table specifies which command to use to update the data served by each page (since several of these, like test coverage, require a special command to be run to generate the data). Make sure your development server is still running when you visit these!
URL | Command | Description |
---|---|---|
/coverage/index.html | ./tools/test-backend --coverage |
Backend (Django) test coverage report |
/node-coverage/index.html | ./tools/test-js-with-node --coverage |
Frontend (node) test coverage report |
/docs/index.html | ./tools/build-docs |
Developer documentation (ReadTheDocs) built locally |
/emails | View outgoing and example emails. | |
/stats/realm/analytics/ | ./manage.py populate_analytics_db Run the command after changing analytics data population logic. |
View the /stats page with some pre-populated data |
/webpack/5xx.html | None needed | Error 5xx page served by nginx (used when Django is totally broken) |
/errors/404 | None needed | Error 404 page served by Django |
/errors/5xx | None needed | Error 5xx page served by Django |
/accounts/do_confirm/invalid | None needed | Invalid confirmation link page |
/devtools/integrations | None needed | Test incoming webhook integrations |
/devtools/buttons | None needed | Test button styles |
/devtools/banners | None needed | Test banner styles |
/devtools/inputs | None needed | Test input styles |
Development-specific management commands live in zilencer/management/commands
. Highlights include:
./manage.py populate_db
: Rebuilds database. Has options to, for example, create 3K users for testing../manage.py mark_all_messages_unread
: Useful for testing reading messages../manage.py create_realm
: Add a new realm. Useful for testing onboarding../manage.py create_user
: Add a new user. Useful for testing onboarding../manage.py send_zulip_update_announcements
: Send Zulip
update notices drafted in `zerver/lib/zulip_update_announcements.py`../manage.py add_mock_conversation
: Add test messages, streams, images, emoji, etc.
into the dev environment. First edit zilencer/management/commands/add_mock_conversation.py
to add the data you're testing.
We also have documentation on testing LDAP, Google & GitHub authentication in the development environment.
./manage.py dbshell
: Connect to
PostgreSQL database via your terminal.
provision
creates a ~/.pgpass
file,
so psql -U zulip -h localhost
works too.
To connect using a graphical PostgreSQL client like pgAdmin, use the following credentials:
local_database_password
in zulip/zproject/dev-secrets.conf
Running ./tools/run-dev
without any flags will not run the help center at all.
The development server for the help center takes significant resources to run and we don't
want to increase the minimum requirements to run Zulip for development.
This mode is useful when you are editing a help center file, and want to visualize the changes quickly in the help center documentation.
./tools/run-dev --only-help-center
will run a dev server at
/help
that supports hot reload. Note that, with this flag, search will not work
in the help center docs. In this mode, the Zulip web app and other related services will not run.
Since the dev server consumes a significant amount of memory, this is the recommended way to run
the dev server for the help center.
If you have a machine with resources significantly more than minimum requirements to run Zulip in
development, you can choose to run the dev server alongside Zulip using
./tools/run-dev --help-center-dev-server
.
The dev server makes a bunch of request to base Zulip URL instead of scoping it to the astro/starlight
base url. For this reason, in this mode, we run the dev server on it's own port and redirect help center
requests to the appropriate port (9995 by default).
Please run ./tools/build-help-center
to generate a static build of the help center.
./tools/run-dev --help-center-static-build
will host the generated build on
/help
. Note that you need to generate a build and pass the flag mentioned for the search
to work.