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
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 1Fork, 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 2Variables and declarations
var, let, and const, scope and hoisting, and why const does not mean immutable in a shared fixture.
Lesson
Lesson 3Values, types, and truthiness
Primitives versus references, == versus ===, null versus undefined, and why everything read out of the DOM is a string.
Lesson
Lesson 4Functions, 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 5Arrays 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 6Objects, immutability, and safe access
Destructuring, spread, optional chaining, nullish coalescing, and the shared fixture that leaks state between specs.
Asynchronous JavaScript
Lesson
Lesson 7Promises, async/await, and the event loop
From callbacks to promises to async/await, and why Playwright awaits everything while Cypress awaits nothing.
Lesson
Lesson 8Errors, 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 9Big 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 10Maps 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 11Strings, 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 12Recursion and nested data
Base case, recursive case, and when a loop is clearer, applied to the nested categories tree the API returns.
Lesson
Lesson 13Sorting and comparing
Comparator functions, the default sort() surprise, localeCompare, stability, and proving a sorted column is really sorted.
Lesson
Lesson 14Comparing two datasets
Reconcile what the UI shows with what the API returned, and report the difference by naming the offending row.
Lesson
Lesson 15Generating 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!