sample-testable-projects
v1.0.0
Published
master branch: [![Build Status](https://travis-ci.org/freeCodeCamp/testable-projects-fcc.svg?branch=master)](https://travis-ci.org/freeCodeCamp/testable-projects-fcc)
Downloads
4
Readme
testable-projects-fcc
A CDN loaded test-suite for testing the freecodecamp.com Certification waypoint projects.
What is this, you ask?
- This repo is a part of the FreeCodeCamp.com curriculum expansion, and represents our front end testable projects, err... project.
- Our goal is to make every waypoint project, which each correspond to different sections of the curriculum, fully testable using a TDD-like methodology - such that our campers will have predefined test cases, which start out failing, and that they must make pass.
- This codebase is the test suite, and individual sets of test cases for each of these projects.
- We are serving the tests via CDN (see below), which can easily be imported into any of our projects, whether they are developed locally, on CodePen (as our example projects are), or anywhere else.
- You can see examples of these projects here: http://codepen.io/collection/npZPmR
Bundle CDN
https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js
Testing this project
Warning that this gets a little meta. This project provides a feature that will test camper project code.
As such, this project should be seen as more of a feature, than as automated testing. The feature mostly includes automated testing for the students to run, but it does have a UI, and the tests do not run against our code.
So how do we make sure this feature, used by millions of campers, actually works in production? The confusing answer is that we need to test this feature, which means testing the Camper tests.
We do this by running the Camper project tests (everything in the src
directory) over the example projects. Since the example projects are supposed
to be working examples, if the tests do not pass for the example projects, we
need to either fix the tests, or fix the example project that fails.
In most projects you wouldn't test the tests, but in this case, the CodePen Camper Project Tests are a production feature potentially used by millions of campers, so it is important we don't break that feature.
This is important to understand so I'll repeat it in different words: the tests
in the src
directory of this project are not typical tests used to check our
own code before deploying. Quite the opposite, they are a production feature
that is used by students in a live setting to check their own code.
As such, it is very important that we don't break those tests.
In order to keep things from being confusing, we refer to everything in the
src
directory as the "CodePen Project Tests" or the "Camper Project Tests" or
"Testable Projects Tests". Those tests are the feature we are shipping.
Opposite of the above, all of the code that lives in the test
directory is
the typical tests used to check our own code before deploying. We simply call
this code the "automated testing". It tests the feature we are shipping.
The automated testing can (and should) be performed locally by you before creating a PR. The tests also run automatically on Travis CI every time you create a PR. A PR that has not passed the Travis CI tests should not be merged.
For all the details about automatically testing this project, please see the CONTRIBUTING guide.
Credits
This repo did not originally live here. There are several important contributors who contributed code before this project took its current form. So credit where credit is due, to those contributors, and to the other key contributors for this project:
- First and foremost is @Weezlo, thanks for getting us started! And to @no-stack-dub-sack, @tchaffee & @tbushman for seeing it through the rest of the way! Also @Christian-Paul & @paycoguy for coming up with reliable ways to test D3, and @bonham000 for helping us to get this all bundled up nicely in one sweet little package.
- All tests developed by @Weezlo & @no-stack-dub-sack except for the D3 projects developed by @Christian-Paul & @paycoguy, with countless refinements to all projects by @tbushman & @tchaffee.