zulip/templates/zerver/development/dev_tools.html

127 lines
6.1 KiB
HTML
Raw Normal View History

{% extends "zerver/portico.html" %}
{# Login page. #}
{% block portico_content %}
<div class="app flex full-page">
<div id="devtools-page" class="markdown">
<h1>Useful development URLs</h1>
<p>
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!
</p>
<table class="table table-striped table-rounded table-bordered">
<thead>
<tr>
<th>URL</th>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/coverage/index.html">/coverage/index.html</a></td>
<td><code>./tools/test-backend --coverage</code></td>
<td>Backend (Django) test coverage report</td>
</tr>
<tr>
<td><a href="/node-coverage/index.html">/node-coverage/index.html</a></td>
<td><code>./tools/test-js-with-node --coverage</code></td>
<td>Frontend (node) test coverage report</td>
</tr>
<tr>
<td><a href="/docs/index.html">/docs/index.html</a></td>
<td><code>./tools/build-docs</code></td>
<td>Developer documentation (ReadTheDocs) built locally</td>
</tr>
<tr>
<td><a href="/emails">/emails</a></td>
<td><code>./scripts/setup/inline_email_css.py</code><br />
Run the command if you made changes to source.html email templates.
</td>
<td>View outgoing and example emails.</td>
</tr>
<tr>
<td><a href="/stats/realm/analytics/">/stats/realm/analytics/</a></td>
<td><code>./manage.py populate_analytics_db</code><br />
Run the command after changing analytics data population logic.
</td>
<td>View the /stats page with some pre-populated data</td>
</tr>
<tr>
<td><a href="/webpack/5xx.html">/webpack/5xx.html</a></td>
<td><code>./manage.py collectstatic --noinput</code></td>
<td>Error 5xx page served by nginx (used when Django is totally broken)</td>
</tr>
<tr>
<td><a href="/errors/404">/errors/404</a></td>
<td>None needed</td>
<td>Error 404 page served by Django</td>
</tr>
<tr>
<td><a href="/errors/5xx">/errors/5xx</a></td>
<td>None needed</td>
<td>Error 5xx page served by Django</td>
</tr>
<tr>
<td><a href="/accounts/do_confirm/invalid">/accounts/do_confirm/invalid</a></td>
<td>None needed</td>
<td>Invalid confirmation link page</td>
</tr>
<tr>
<td><a href="/devtools/integrations">/devtools/integrations</a></td>
<td>None needed</td>
<td>Test incoming webhook integrations</td>
</tr>
</tbody>
</table>
<h2>Useful management commands</h2>
<p>Development-specific management commands live in <code>zilencer/management/commands</code>. Highlights include:
<ul>
<li><code>./manage.py populate_db</code>: Rebuilds database. Has options to e.g. create 3K users for testing.</li>
<li><code>./manage.py mark_all_messages_unread</code>: Useful for testing reading messages.</li>
<li><code>./manage.py add_new_realm</code>: Add a new realm. Useful for testing onboarding.</li>
<li><code>./manage.py add_new_user</code>: Add a new user. Useful for testing onboarding.</li>
<li><code>./manage.py add_mock_conversation</code>: 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.
</li>
</ul>
</p>
<p>We also have
<a href="https://zulip.readthedocs.io/en/latest/development/authentication.html">documentation on testing LDAP, Google &amp; GitHub authentication</a> in the development environment.
</p>
<h2>Connecting to the local PostgreSQL database</h2>
<ul>
<li>
<code>./manage.py dbshell</code>: Connect to
PostgreSQL database via your terminal.
</li>
<li>
<code>provision</code> creates a <code>~/.pgpass</code> file,
so <code>psql -U zulip -h localhost</code> works too.
</li>
<li>
<p>
To connect using a graphical PostgreSQL client
like <a href="https://www.pgadmin.org/">pgAdmin</a>,
use the following credentials:
</p>
<ul>
<li>Host: 127.0.0.1 (don't use localhost)</li>
<li>Maintenance database: zulip</li>
<li>Username: zulip</li>
<li>password: stored as <code>local_database_password</code> in <code>zulip/zproject/dev-secrets.conf</code></li>
</ul>
</li>
</ul>
</div>
</div>
{% endblock %}