A very hands on πŸ‘ workshop πŸ’» about ES6 and beyond.
Latest commit 7036e24 Feb 20, 2017 @benmvp benmvp committed with Destructure fixes (#42)
* Fix a couple of minor issues with destructure exercise

- "can be used to pull apart objects" sets should use `const` and not `var`
- Fix helpful comment for "can skip indexes in arrays" test (copy pasta mistake)
- Move `getAddress`, `getNumbers` & `getNestedNumbers` up top (and make `const` functions) to make writing tests easier

* Run generate script

* Add documentation on running an individual test file

* Add myself as a contributor
Failed to load latest commit information.
common add expect.toBeValidSyntax and update some tests. Also add @rauschma … Dec 22, 2016
exercises Destructure fixes (#42) Feb 20, 2017
quizzes Add quiz for param destructuring with default values. (#39) Jan 28, 2017
scripts Removing extra comma, syntax error while updating the email for exerc… Jan 23, 2017
.all-contributorsrc Destructure fixes (#42) Feb 20, 2017
.babelrc use pretty-format to log things nicer and reformat/rework some things Jan 20, 2017
.eslintrc fixup quizzes and add solutions Jan 9, 2017
.gitattributes many improvements Dec 22, 2016
.gitignore many improvements Dec 22, 2016
CONTRIBUTING.md add note about contributing quizzes Jan 6, 2017
LICENSE Update LICENSE Dec 23, 2016
README.md Destructure fixes (#42) Feb 20, 2017
package.json add autofill-email script Jan 21, 2017
yarn.lock add autofill-email script Jan 21, 2017



slides-badge chat-badge Build Status Dependencies MIT License All Contributors

PRs Welcome Donate Code of Conduct Watch on GitHub Star on GitHub Tweet


Welcome to this ES6 workshop. Our goal is to help everyone make strides towards learning the newest ES6 syntax, and how to use the latest constructs in JavaScript.

This repo is meant to be used in parallel with a lecture style presentation of the new features.


Special thanks to Aaron Frost and Axel Rauschmayer for creating the original repo from which this is forked.

Your Goal

This repo is full of failing tests. The only way to get them to pass it by using your newly acquired knowledge of ES6 and all of the new features that are part of this latest release. For each test, you will need to write/rewrite to code using the latest ES6 syntax. Once all of your tests pass, you will want to move onto the next section.

By the time that the workshop is over (time permitting), all of your tests will be running and passing.

System Requirements

  • git
  • Node (at least version 6)
  • yarn (at least version 0.17.0)


You will need to start by cloning this repo, then you'll run a simple setup script which will install all the dependencies and validate that you're ready to go. From your terminal, type:

git clone https://github.com/kentcdodds/es6-workshop.git
cd es6-workshop
yarn run setup
yarn run autofill-email YOUR_EMAIL@DOMAIN.COM

Replace YOUR_EMAIL@DOMAIN.COM with your email address

If this finishes without issues, great πŸ‘! However, if you have problems, please file an issue on this repo here.

Note on yarn

If you don't have yarn installed and don't want to use it for some reason, you can use npm as well. Instead of yarn run setup, run node ./scripts/install && npm run validate and enjoy waiting (and hopefully things don't break for you). May be a good idea to still run node ./scripts/verify to verify you have the right version of other things too.

How To Run Tests

Once you have everything installed, you are ready to run some tests. There are two directories with tests in them: exercises and exercises-final. The exercises-final directory is like a cheat sheet. All of the tests contain the required ES6 code to make the tests pass. You will need to edit the tests in the exercises directory, and make the tests pass.

To run the tests, in your terminal run:

yarn test

To run a specific test file, in your terminal run:

yarn test -- exercises/01_block-scoping.test.js

If you want the tests to continue running as you make changes, run:

yarn run test:watch

This will start jest in its interactive watch mode (learn more). If you see a bunch of failures, make sure you're in "only changed" mode by clicking the o key. There should not be any tests run at this point. Your job is to go into each test file in exercises and make the tests pass. As you make changes, jest will run the file's tests. Once you have written the required ES6 code, the tests will pass, and you can move on.

Note: You may prefer to run the test:changed script which will run the tests only once. This will allow you to avoid the "learning crutch" of immediate feedback that you get from the watch mode. But it's up to you!


If you have any questions, let me know.

If you use this workshop, please Pull Request this README with a link to your event.

If you want to edit/update anything in the exercises, please make all changes in the templates directory. We're using split-guide, so the exercises and exercises-final directories are generated.



Thanks goes to these wonderful people (emoji key):

Aaron Frost

πŸ’» πŸ“– πŸ“’ ⚠️

Axel Rauschmayer


Kent C. Dodds

πŸ’» πŸ“– πŸš‡ πŸ‘€ πŸ“’ ⚠️

Jim Cummins

πŸ“– ⚠️



Marius Butuc


Carlos Ortega


Ryan Braganza


Emrah Mehmedov

πŸ’» ⚠️

Arijit Layek


Dhruv Mishra


Bobby White


Ben Ilegbodu

πŸ“– ⚠️

This project follows the all-contributors specification. Contributions of any kind welcome!