Let’s Code: Test-Driven JavaScript

Recent Advanced Episodes

Updates Monday and Wednesday

Multi-Browser Assertions

Wed, 7 Dec ’16

We have a multi-browser smoke test: two browsers pop up, the cursor moves in one window, it appears in the other, and everything shuts down. Now we need our assertions. How can we confirm that the cursor appeared in the second browser? It takes a bit of coordination, but we figure it out in the end.

Two Browsers

Mon, 5 Dec ’16

Before we can have a real-world test of networking across multiple browsers, we need to get multiple browsers to appear. We return to our Selenium-based smoke tests and update them for Selenium version 3, then work on testing multiple simultaneous browsers. Getting them both to pop up isn’t a problem... but getting rid of them afterwards is.

Into the Smoke

Wed, 30 Nov ’16

In our new chapter, we’ll look at using Selenium to test real-time networking across multiple interacting browsers. We start out by reviewing the situation so far and the challenges ahead. If you’re new to the series, this is a great place to start.

Introductory Episodes

Full Series Now Available!

Hat and Gown

Fri, 12 Feb ’16

Our series is complete! Where do you go from here? With the conclusion of this series, if you’ve done the exercises, you’re ready to act as a junior developer on a professional team. Now we talk about what it takes to graduate to the next stage of your career and provide some specific guidance about what to do to get there.

Test Doubles

Fri, 5 Feb ’16

One of the most common testing techniques you’ll see in the wild is the use of test doubles, also known as “mocking.” We take a close look at this advanced technique. It’s seductive and easily abused. We rebuild one of our tests using mocks so you can understand the concept... and see what to avoid.

Cohesion

Fri, 29 Jan ’16

Our application is done. It works. I’m not entirely happy with the design of our latest code, though. It lacks cohesion. In this episode, we wrap up our tab application with a look at three fundamental design forces: the DRY Principle, Decoupling, and Cohesion. We use what we learn to improve the cohesion of our application’s startup code.

An in-depth screencast aboutTest-Driven JavaScript

You've taught me a lot this past year and havebeen better than a teacher, a true mentor.

Jason Weden

I’m completely new to TDD and this is by farthe most comprehensive TDD for JS... your videos area breath of fresh air!

I’m delighted with LCJ. It’s interesting and informative, and thecandid way you think aloud makes it personal and engaging.You’ve done a terrific job.

Crispin Bennett

JavaScript Needs Test-Driven Development

If you’ve programmed in JavaScript, you know that it’s an… interesting… language. Don’t get me wrong: I love JavaScript. I love its first-class functions, the intensive VM competition among browser makers, and how it makes the web come alive. It definitely has its good parts.

It also has some not-so-good parts. Whether it’s browser DOMs, automatic semicolon insertion, or an object model with a split personality, everyone’s had some part of JavaScript bite them in the butt at some point. That’s why using test-driven development is so important.

What is Test-Driven Development?

Test-driven development (TDD) is a technique for ensuring that your code does what you think it does. It’s particularly relevant for JavaScript, with its cross-browser incompatibilities and hidden gotchas. With TDD, you express your intentions twice: once as a test, and once as production code. If the two approaches don’t match, your tests fail, and you’ve caught a bug.

TDD is a great way of catching the majority of programming errors. It’s not perfect, of course—in particular, it can’t tell you when your assumptions are wrong—but it’s very good at catching the kinds of bugs JavaScript is prone to.

Who am I?

I’m James Shore. I’ve been building applications using test-driven development and other Agile techniques for over 15 years. I’m a recipient of the Agile Alliance’s Gordon Pask Award for Contributions to Agile Practice and I wrote a book called The Art of Agile Development.

What You Get

This screencast series focuses on rigorous, professional web development. That means test-driven development, of course, and also techniques such as build automation, continuous integration, refactoring, and evolutionary design. We test against multiple browsers and platforms, including iOS, and we use Node.js on the server.

All videos are DRM-free, available for streaming or download, and all source code is included.

The Videos

The series consists of four main channels. The “Recorded Live” channel focuses on real-world development, warts and all. It’s meant for experienced programmers.

If you’re a new developer, the “How To” channel is for you. It’s meant for beginners who have recently learned to program and are ready to start their professional career.

The “Lessons Learned” channel provides concise reviews of key topics, such as continuous integration, test-driven development, and build automation. It’s great for review and reference.

Release Schedule

New videos are published every week. A new “Recorded Live” episode is released every Monday and Wednesday. Specials (“Lessons Learned,” “The Lab,” and “How To” episodes) are released when they’re ready.

“Recorded Live” and “How To” episodes are about 15 minutes long. “Lessons Learned” videos are typically about 15-30 minutes long, and episodes of “The Lab” tend to be about an hour.

I have learned so much more than I expected.I really enjoy your approach to screencasting andwish the series wouldn’t end some day.

The JavaScript Screencast for ProfessionalsAutomation, test-driven development, refactoring, and much more!