Complete Course
JavaScript for QAs
The language your tests are written in, from the ground up: types, variables, operators, functions, conditionals, loops, iterators, destructuring, and async/await. Every topic is taught in plain JavaScript first, then applied to real test code.
~5 hours of content
Course Content
16 comprehensive lessons covering everything you need to know
Introduction
Introduction
Course Structure
Learn how the course is organized and make the most of the content.
Introduction
Prerequisites
Systems and knowledge required to complete the course. No Docker, and no programming background needed.
Introduction
How you will practice
Your repository starts empty. You write the code, run it with Node.js, commit it, and push it to your own fork.
Lesson
Lesson 1Fork, clone, and run your first file
Fork the empty project, clone it, write your first JavaScript file, run it with Node.js, and push your first commit.
JavaScript building blocks
Lesson
Lesson 2Data types
The primitives (undefined, null, Boolean, Number, String) and the structural types (Array, Object, Function) every test is built out of.
Lesson
Lesson 3Variables
var, let, and const, starting with primitives and then with arrays and objects, where const stops meaning what you expect.
Lesson
Lesson 4Operators
Assignment, maths, and logic, including the == versus === difference that decides whether your assertion is telling the truth.
Lesson
Lesson 5Strings: concatenation and template literals
Joining text with + and with backticks, and writing test names and failure messages that say which case failed.
Lesson
Lesson 6Data transformation
toString, split, reverse, join, replace, replaceAll, slice, trim, toLowerCase, and toUpperCase, applied to text read off a page.
Structure and flow
Lesson
Lesson 7Functions
Declarations, arrow functions, pure versus impure, and higher-order functions, which is what every it() and beforeEach() really is.
Lesson
Lesson 8Modules: export and import
Split your code into files, export what you wrote, and import it somewhere else, which is how helpers and test data get shared.
Lesson
Lesson 9Conditionals
if, else if, else, and the ternary, plus why a conditional inside a test is usually a warning sign.
Lesson
Lesson 10Loops
for, for...of, and while, and the difference between looping inside one test and generating many tests.
Lesson
Lesson 11Array iterators
forEach, map, filter, find, some, and every, and how one array of test data turns into a whole set of tests.
Working with data
Lesson
Lesson 12Destructuring
Pulling values out of arrays and objects by position and by name, the way you unpack an API response body.
Lesson
Lesson 13Rest and spread
The same three dots doing two opposite jobs, and how they build a test payload that differs from the default by one field.
Lesson
Lesson 14JSON
JSON.parse and JSON.stringify, what JSON cannot hold, and why a fixture file loaded once can break the test that runs after it.
Asynchronous JavaScript and paradigms
Lesson
Lesson 15Promises and async/await
What a promise is, what await does, and why an API call without await passes a test that never actually ran.
Lesson
Lesson 16Object-oriented versus functional JavaScript
The same helper written as a class and as plain functions, and why the simpler one is the better default for test code.
Bonus & Conclusion
Bonus
Bonus: JavaScript in the browser console
querySelector, querySelectorAll, and the handful of DevTools console commands that make finding a selector a ten-second job.
Bonus
Bonus: useful libraries for testers
Faker.js for test data and Lodash for the array and object work you would otherwise hand-write, plus when not to reach for them.
Bonus
Bonus: a first look at TypeScript
TypeScript as syntax sugar over the JavaScript you just learned: types on variables, parameters, and return values, and what it catches.
Bonus
Bonus: coding questions in QA interviews
The exercises QA candidates are actually given, all solvable with this course's content, and what the interviewer is really marking.
Conclusion
Congratulations!
You've completed the JavaScript for QAs course!