107 lines
2.5 KiB
Markdown
107 lines
2.5 KiB
Markdown
# How to work on coding challenges
|
|
|
|
### Changing on GitHub
|
|
|
|
Each challenge is stored in its own markdown file. That makes it easy to edit challenges right from within GitHub.
|
|
|
|
You can make a change without having anything running on your local system.
|
|
|
|
After you find the file you want to modify within the GitHub interface, click the pencil icon to start editing the file. This will automatically create a fork of the project, if you don't have one already.
|
|
|
|
You can also clone the project and edit locally on your computer. For help with that, read the main [contributing guide](/CONTRIBUTING.md).
|
|
|
|
### Challenge Template
|
|
|
|
Below is a template of what the challenge markdown files look like.
|
|
|
|
**Notes:**
|
|
|
|
1. In the below sections, examples of `{ext}` are:
|
|
* `html` - HTML/CSS
|
|
* `js` - JavaScript
|
|
* `jsx` - JSX
|
|
|
|
2. For the `Tests` section below, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression possibly using Chai asserts.
|
|
|
|
````md
|
|
---
|
|
id: Unique identifier (alphanumerical, MongoDB_id)
|
|
title: Challenge Title
|
|
challengeType: 0
|
|
videoUrl: 'url of video explanation'
|
|
---
|
|
|
|
## Description
|
|
<section id='description'>
|
|
A Description of the challenge and what is required to pass
|
|
</section>
|
|
|
|
## Instructions
|
|
<section id='instructions'>
|
|
Instructions about what exactly needs to be done.
|
|
</section>
|
|
|
|
## Tests
|
|
<section id='tests'>
|
|
|
|
``` yml
|
|
tests:
|
|
- text: Should return "foo"
|
|
testString: 'A stringified function possibly using Chai asserts'
|
|
```
|
|
|
|
</section>
|
|
|
|
## Challenge Seed
|
|
<section id='challengeSeed'>
|
|
|
|
<div id='{ext}-seed'>
|
|
|
|
```{ext}
|
|
Code displayed in the editor by default.
|
|
|
|
This is a required section for the challenge.
|
|
```
|
|
|
|
</div>
|
|
|
|
### Before Test
|
|
<div id='{ext}-setup'>
|
|
|
|
```{ext}
|
|
Optional Test setup code.
|
|
```
|
|
|
|
</div>
|
|
|
|
### After Test
|
|
<div id='{ext}-teardown'>
|
|
|
|
```{ext}
|
|
Optional Test tear down code.
|
|
```
|
|
|
|
</div>
|
|
|
|
</section>
|
|
|
|
## Solution
|
|
<section id='solution'>
|
|
|
|
```{ext}
|
|
// solution required
|
|
```
|
|
|
|
</section>
|
|
````
|
|
|
|
### Useful Links
|
|
|
|
Creating and Editing Challenges:
|
|
|
|
1. [Challenge Style Guide](style-guide-for-curriculum-challenges.md) - how to create and format challenges
|
|
|
|
2. [Challenge types](https://github.com/freeCodeCamp/learn/blob/a5cb25704168aa37f59a582f0bb5a19b7bd89b46/utils/challengeTypes.js) - what the numeric challenge type values mean (enum).
|
|
|
|
3. [Contributing to FreeCodeCamp - Writing ES6 Challenge Tests ](https://www.youtube.com/watch?v=iOdD84OSfAE#t=2h49m55s) - a video following [Ethan Arrowood](https://twitter.com/ArrowoodTech) as he contributes to the old version of the curriculum
|