We use the following testing tools:
- RSpec for testing the backend
- Capybara with selenium-webdriver for view testing
- chromedriver-helper for standard JS testing
- guard-rspec for automated testing
- Jest for testing in the front-end
- preact-render-spy for testing Preact components.
- SimpleCov for tracking overall test coverage
Each pull request should come with tests related to the newly written feature or bug fix. Ideally, we should test both the front end and back end.
If you'd like to help us improve our test coverage, we recommend checking out our total coverage and writing tests for selected files based on SimpleCov's (more below) test coverage results.
If you're new to writing tests in general or with Rails, we recommend reading about testing with Rails, RSpec, and Capybara first.
- Run
bundle exec rspec spec
orbin/rspec spec
. You can run RSpec on the whole project or a single file. - After rspec is complete, open
index.html
within the coverage folder to view code coverages.
You can also run bin/rspecov
to run bin/rspec spec
We are using CodeClimate to track code quality and code coverage. Codeclimate will grade the quality of the code of every PR but not the entirety of the project. If you feel that the current linting rule is unreasonable, feel free to submit a separate PR to change it. Fix any errors that CodeClimate provides and strive to leave code better than you found it.
Travis will upload Simplecov data to CodeClimate. We are still in the early stage of using it so it may not provide an accurate measurement our of codebase.
If your changes are minor (i.e. updating README, fixing a typo), you can skip CI by adding [ci skip]
to your commit message.
We are using Travis for CI and CD. Travis will run a build (in isolated environment for testing) for every push to this repository. Keep in mind that a passing-build does not necessarily mean the project won't run into any issues. Strive to write good tests for any chunk of code you wish to contribute. Travis will deploy a pull request to production after CI passes. Our test suite is not perfect and sometimes a re-rerun is needed.