Skip to main content
JavaScript & the browser·Module C8 · Lesson 5
TaskAdd describe(name, fn) that nests its tests under "<parent> > <name>". Inside describe('cart', () => {}) register 'totals zero when empty' (assert([].reduce((s,x)=>s+x,0)===0)) and 'sums non-empty' (assert([1,2,3].reduce((s,x)=>s+x,0)===6)). runAll() should print both with the 'cart > ' prefix.

Grouping with describe()

125 XP9 min
Theory

Nested test groups

describe(name, fn) groups related tests. The runner shows their names with the parent prefix, so failures are organized.

let currentSuite = "";
function describe(name, fn) {
  const prev = currentSuite;
  currentSuite = prev ? prev + " > " + name : name;
  fn();
  currentSuite = prev;
}

function test(name, fn) {
  tests.push({ name: currentSuite ? currentSuite + " > " + name : name, fn });
}

Now you can:

describe("cart", () => {
  test("totals zero when empty", () => { ... });
  test("applies discount", () => { ... });
});

Output:

PASS cart > totals zero when empty
PASS cart > applies discount

Nested describes

describe can call describe. The current-suite variable is restored when each block returns, so siblings don't see each other's prefix.

🔒

Sign up to start coding

Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial — card required, cancel anytime.

Sign up — free trial →

First 15 lessons in each track are free. No card needed for those.

PreviousNext lesson →

Get one Python or web tip a day — by email

Short, hand-written, no spam. Unsubscribe in one click.