Testing
Last updated
Last updated
Tests are intended to be run either on development machines (NODE_ENV=development
) or on a test server such as circleci (NODE_ENV=circleci
). This documentation concentrates on the development testing experience.
We use for unit-testing and for end-to-end (e2e) testing. To run end-to-end tests on your machine you will have to first install Selenium and the Google Chrome Driver manually.
Download the and move it to bin/selenium-server-standalone-2.44.0.jar
On MacOSX Yosemite, you might also need to install Java (yes, I know... don't look at me this way...). You can download it from .
Download the chrome driver from , unzip it and move it to test/lib/chromedriver
Create an opencollective_test
database accessible to user opencollective
; each e2e test will reset its schema as required.
Check out api
, website
and app
Git repositories, preserving their original directory names.
Create .env
files in your api
, website
and app
checkouts:
api/.env
file
website/.env
and app/.env
files
run unit- and e2e-tests: npm test
run unit-tests: npm run test:unit
run e2e-tests: npm run test:e2e
run single unit-test: instrument test describe
or it
with .only
flag
run single e2e-test file: npm run test:e2e path/to/e2e/test.js
, e.g from API directory: npm run test:e2e ../website/test/e2e/public_donation_page.js
. The script will detect whether it is a website
or api
test file and launch the client and its nightwatch test accordingly.
Run the API:
$opencollective-api> PG_DATABASE=opencollective_test npm run dev
Reset the database:
$> curl http://localhost:3060/database/reset
Run the website
$opencollective-website> npm run dev
Open your browser at the URL of the test that is failing, e.g.
open http://localhost:3000/testcollective
If you want to rerun a particular e2e test file, you can run npm run nightwatch $file
(e.g. npm run nightwatch test/e2e/expenses_page.js
)
Run the api with the GITHUB_CLIENT_ID
and GITHUB_CLIENT_SECRET
env variables (you can find them ).
Run the website, go to and go through the flow. Use the login opencollectivetest
and the password that is stored in 1Password.