Demonstration application for the Deform Python HTML form library.
This application is tested on Python versions 3.8, 3.9, 3.10, 3.11, and 3.12, and PyPy3.
Visit https://deformdemo3.pylonsproject.org
Build the Docker image for deformdemo and tag it.
# docker build --tag pylons/deformdemo3:<version> .
docker build --tag pylons/deformdemo3:main .
Run the built image with Docker.
docker run -d -p 8000:8523 pylons/deformdemo3:main
Then in your browser, visit http://localhost:8000
To stop the docker container, find its NAME
and issue the stop
command.
docker ps -a
docker stop <value_from_NAMES_column>
Create a virtual environment.
python3 -m venv /path/to/my/env
Hereafter
/path/to/my/env
will be referred to as$VENV
in the following steps.Clone deformdemo.
git clone git://github.com/Pylons/deformdemo.git
cd
to the newly checked out deformdemo package.cd deformdemo
Run
pip install -e .
using the virtual environment'spython
command.$VENV/bin/pip install -e .
While your working directory is still
deformdemo
, start the demo application.$VENV/bin/pserve demo.ini
Visit http://localhost:8523 in a browser to see the demo.
The deformdemo
application serves as a target for functional testing during Deform's development.
A suite of Selenium tests may be run against a local instance of the demonstration application.
It is wise to run these tests using the following steps before submitting a pull request.
First prepare the functional test environment by installing requirements. We will assume that you put your projects in your user directory, although you can put them anywhere.
cd ~/projects/deformdemo/
The following command will install requirements for development and testing of deformdemo.
It performs editable installs of Colander and Deform into your virtual environment's src
directory, and deformdemo's testing requirements into lib/<python.version>/site-packages
directory.
$VENV/bin/pip install -Ur requirements-dev.txt
Download the latest version of Firefox for your platform.
Open the .dmg
(macOS), and drag the Firefox icon to:
~/projects/deformdemo/
Use cURL or wget. See the Firefox download README.txt for instructions. For example on Linux:
cd ~/projects/deformdemo/ wget -O firefox-latest.tar.bz2 \ "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US"
Decompress the downloaded file.
tar -xjf firefox-latest.tar.bz2
Install the latest release of geckodriver.
# macOS
wget https://github.com/mozilla/geckodriver/releases/download/v0.29.0/geckodriver-v0.29.0-macos.tar.gz
tar -xzf geckodriver-v0.29.0-macos.tar.gz
# Linux (Debian)
wget https://github.com/mozilla/geckodriver/releases/download/v0.29.0/geckodriver-v0.29.0-linux64.tar.gz
tar -xzf geckodriver-v0.29.0-linux64.tar.gz
The functional tests require the installation of the GNU gettext
utilities, specifically msgmerge
and msgfmt
.
Use your package manager to install these requirements.
Use Homebrew.
brew install gettext
brew link gettext --force
If you ever have problems building packages, you can always unlink it.
brew unlink gettext
apt-get install gettext
apt-get install gettext-base
Selenium was already installed via $VENV/bin/pip install -Ur requirements-dev.txt
.
Start the
deformdemo
application as described above in "Running the Demo". Leave the terminal window running this application open, and open a second terminal window to perform the below steps.In the second terminal window, go to the "deformdemo" checkout directory you created above in "Running the Demo".
cd ~/projects/deformdemo
Set an environment variable to add your local checkout of Deform to your
PATH
. It must to be set before running tox or pytest, otherwise Firefox or Chrome will not start and will return an error message such as'geckodriver' executable needs to be in PATH.
export PATH=~/projects/deform:$PATH
Run the tests.
$VENV/bin/pytest
$VENV
is defined as it was in "Running the Demo" above.You will (hopefully) see Firefox pop up and it will begin to display in quick succession the loading of pages. The tests will run for five or ten minutes.
Test success means that the console window on which you ran
pytest
shows a bunch of dots, a test summary, thenOK
. If it shows a traceback,FAILED
, or anything other than a straight line of dots, it means there was an error.Fix any errors by modifying your code or by modifying the tests to expect the changes you've made.
- Copy the
demo.ini
file from this demo package to your renderer's package. - Change the
deform.renderer
key in thedemo.ini
copy to point at your renderer (it's a Python dotted name). - Run
pserve /path/to/your/copy/of/demo.ini
. - Run the Selenium tests as above.