- Install Node Version Manager (NVM)
Then follow the instructions to update your
brew install nvm
~/.bash_profile
. - Open a new terminal
- Install the latest version of Node.js, currently
18.1.0
.nvm install 18
- Fork this repository
- Rename your fork to
acebook-<team name>
- Clone your fork to your local machine
- Install Node.js dependencies
npm install
- Install an ESLint plugin for your editor. For example: linter-eslint for Atom.
- Install MongoDB
Note: If you see a message that says
brew tap mongodb/brew brew install [email protected]
If you need to have [email protected] first in your PATH, run:
, follow the instruction. Restart your terminal after this. - Start MongoDB
brew services start [email protected]
- Start the server
npm start
- Browse to http://localhost:3000
The server must be running locally with test configuration for the integration tests to pass.
npm run start:test
This starts the server on port 3030
and uses the acebook_test
MongoDB database,
so that integration tests do not interact with the development server.
- Run all tests
npm test
- Run a check
npm run lint # linter only npm run test:unit # unit tests only npm run test:integration # integration (Cypress) tests only npm run test:e2e # selenium tests only npm run test:all # all tests
Selenium test suite is located in test/selenium.test.js.
DATABASE WARNING:
Test database acebook_test is cleared after tests completed.
Please run the test with caution and comment out the code that drops database after test if you want to preserve your test data.
HOW TO USE:
-
Step 1: Start test server
npm run start:test
-
Step 2: Run standalone selenium tests - These tests required to run sequentially due to possible browser conflicts.
npm run test:e2e -- --runInBand
-
If you want to run whole test suite:
npm run test:all
Selenium tests written in Jest using selenium-webdriver and uses firefox and chrome browser.
-
Chrome:
npm install chromedriver
-
Firefox:
npm install geckodriver --save-dev
-
Selenium-webdriver:
npm install --save-dev selenium-webdriver
Note: You also need to install Firefox desktop version on your computer.
- Script structure of package.json
"scripts": { "lint": "eslint .", "start": "nodemon ./bin/www", "start:test": "PORT=3030 MONGODB_URL='mongodb://0.0.0.0/acebook_test' npm start", "test:unit": "jest --testMatch '**/spec/models/**/*.[jt]s?(x)'", "test:e2e": "jest --testMatch '**/test/**/*.[jt]s?(x)'", "test:integration": "cypress run", "test": "npm run lint && npm run test:unit && npm run test:integration", "test:all": "npm run test && npm run test:e2e" }
Some people occasionally experience MongoDB connection errors when running the tests or trying to use the application. Here are some tips which might help resolve such issues.
- Check that MongoDB is installed using
mongo --version
- Check that it's running using
brew services list
If you have issues that are not resolved by these tips, please reach out to a coach and, once the issue is resolved, we can add a new tip!