diff --git a/doc/development.rst b/doc/development.rst
index 4b0c4f79c46e595d702c013a99a6df9fae48fbd5..db207fedade28f6d762027dec99457a6248c6efd 100644
--- a/doc/development.rst
+++ b/doc/development.rst
@@ -119,3 +119,24 @@ How does the webapp operate on the local BEAT prefix? Through the small Python R
 * ``layout/``: Only accepts POST requests - given the toolchain as the request body, generates a layout for the toolchain using Graphviz's ``dot`` layout algorithm and returns it.
 
 .. automodule:: beat.editor
+
+E2E Testing
+-----------
+
+There are selenium tests found in ``conda/js/test/``. These tests are set up to be ran in Firefox in headless mode with the REST server running locally. To run these tests:
+
+* A relatively recent version of Firefox with headless support
+* You need the contents of the tutorial's prefix in your local BEAT prefix (find it at ``https://gitlab.idiap.ch/beat/beat.tutorial.prefix``)
+* A recent version of `the Geckodriver executable <https://github.com/mozilla/geckodriver/releases/>`_ available in your path for Selenium to use
+* The ``beat.editor`` REST server running locally
+
+Just do ``node conda/js/<selenium test>`` to run the test. Please see inside the tests for additional notes.
+
+The tests should always be cleaning up test artifacts in your prefix after the test finishes. If tests do not finish successfully, some of these artifacts may still be present in your prefix and will cause future runs of that test to fail. So, if a test doesn't finish successfully, you will have to delete the test artifacts manually. To make it easier, all BEAT objects created by these tests have the username "selenium" so you know what to delete.
+
+Developing E2E Tests
+********************
+
+The webdriver & all its functionality is `well documented <http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/>`_.
+
+It's recommended to debug tests by not using headless mode and inserting plenty of long pauses via ``driver.sleep()``. You'll need to know the modern ``async``/``await`` pattern as well as be comfortable with CSS selector syntax. See the ``selenium_tutorial_test.js`` test file for working examples of these concepts and how to use selenium's API.