Complete Course

Algorithms and Programming for QAs

The part of test automation the framework docs never cover: the JavaScript and the algorithms your specs are actually made of. Parse, compare, deduplicate, retry, and generate data with code you can defend in a review.

~5 hours of content

View Lessons

Course Content

15 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 automation background needed.
Introduction
Getting to know the application under test
Meet the customers app, its table, its JSON API, its nested categories tree, and its deliberately flaky endpoint.
Lesson
Lesson 1
Fork, clone, and run the same spec in both runners
Fork the project, install it, start the app, and watch one helper being driven by Cypress and by Playwright.

JavaScript foundations

Lesson
Lesson 2
Variables and declarations
var, let, and const, scope and hoisting, and why const does not mean immutable in a shared fixture.
Lesson
Lesson 3
Values, types, and truthiness
Primitives versus references, == versus ===, null versus undefined, and why everything read out of the DOM is a string.
Lesson
Lesson 4
Functions, scope, and closures
Declarations versus arrow functions, defaults, rest and spread, higher-order and factory functions, closures, and the Mocha this that arrow functions throw away.
Lesson
Lesson 5
Arrays without loops
map, filter, find, some, every, reduce, and flatMap, applied to one task: turning rendered table rows into data you can question.
Lesson
Lesson 6
Objects, immutability, and safe access
Destructuring, spread, optional chaining, nullish coalescing, and the shared fixture that leaks state between specs.

Asynchronous JavaScript

Lesson
Lesson 7
Promises, async/await, and the event loop
From callbacks to promises to async/await, and why Playwright awaits everything while Cypress awaits nothing.
Lesson
Lesson 8
Errors, timeouts, and retries
try/catch, custom errors, guard clauses, and writing a bounded retry with exponential backoff against a flaky endpoint.

Data structures and complexity

Lesson
Lesson 9
Big O without the maths
Count the work instead of measuring it, and answer the only question a test suite asks: how big does n get?
Lesson
Lesson 10
Maps and Sets versus arrays
Map, Set, and object keys, the quadratic includes() inside a loop, and finding the duplicate hiding behind two spellings.
Lesson
Lesson 11
Strings, parsing, and regular expressions
trim, split, replace, template literals, and a regular expression you can still read next month.

Algorithms in your test code

Lesson
Lesson 12
Recursion and nested data
Base case, recursive case, and when a loop is clearer, applied to the nested categories tree the API returns.
Lesson
Lesson 13
Sorting and comparing
Comparator functions, the default sort() surprise, localeCompare, stability, and proving a sorted column is really sorted.
Lesson
Lesson 14
Comparing two datasets
Reconcile what the UI shows with what the API returned, and report the difference by naming the offending row.
Lesson
Lesson 15
Generating test data
Seeded randomness for reproducible failures, unique values that survive a re-run, and combinations without combinatorial explosion.

Bonus & Conclusion

Bonus
Bonus: coding questions in QA interviews
The exercises QA candidates are actually given, how to talk through one out loud, and what the interviewer is really marking.
Conclusion
Congratulations!
You've completed the Algorithms and Programming for QAs course!