Comment on page
Testing
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 Mocha for unit-testing and Nightwatch 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 selenium-server-standalone-2.44.0.jar 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 this page.
Download the chrome driver from https://sites.google.com/a/chromium.org/chromedriver/downloads, 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.$> createdb opencollective_test
$> psql opencollective_test -c "GRANT ALL PRIVILEGES ON DATABASE opencollective_test to opencollective"
Check out
api
, website
and app
Git repositories, preserving their original directory names.$> git clone https://github.com/OpenCollective/api.git
$> git clone https://github.com/OpenCollective/website.git
$> git clone https://github.com/OpenCollective/app.git
Create
.env
files in your api
, website
and app
checkouts:api/.env
fileNODE_ENV=development
WEBSITE_DIR=/path/to/your/opencollective/website
APP_DIR=/path/to/your/opencollective/app
website/.env
and app/.env
filesNODE_ENV=development
API_DIR=/path/to/your/opencollective/api
GITHUB_CLIENT_ID=xxxx [replace with your Github app id]
GITHUB_CLIENT_SECRET=xxx [replace with your Github app client secret]
- 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
orit
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 awebsite
orapi
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
andGITHUB_CLIENT_SECRET
env variables (you can find them here). - Run the website, go to http://localhost:3000/opensource/apply and go through the flow. Use the login
opencollectivetest
and the password that is stored in 1Password.
Last modified 3yr ago