Stanki Guild

Guide · Jira

Testing a Definition of Done gate: does a required item really block Done?

Checklist Flow for Jira 3.1.1 is the production version (1 November 2026). Last updated 1 November 2026. On the Atlassian Marketplace.

By Bartosz Stankiewicz, founder, Stanki Guild.

A checklist that blocks Done has exactly one job. If a required item is open, the work item doesn't move. If everything required is ticked, it does. Get the first half wrong and the gate is decoration. Get the second half wrong and people start asking an admin to switch it off, which is worse.

It sounds too simple to test seriously. It isn't, because the list changes while people use it. Items get added, deleted, moved, marked N/A, given a status instead of a tick. Someone hits "check all", someone else unticks one. Headers sit between items. Somewhere in that mix a gate can say "fine" when it isn't.

The test

#

Every night a server builds random checklists, up to seven entries: items, section headers, some required, some not. Then it does 30 random things to each one, using the same functions the app calls: tick, untick, mark N/A, set a status, check all, uncheck all, add, delete, move, reorder.

After every step it checks:

  • the list of items that block Done matches a count we do by hand in the test, outside the app's code (required items if there are any, otherwise all items; done means ticked, N/A or a done status)
  • when at least one item is required, an optional item never blocks
  • headers never change the answer
  • an item is never ticked and N/A at the same time
  • the progress numbers on the work item match the item states
  • "check all" always opens the gate
  • moving or reordering items never changes the answer

A million checklists, about nine minutes, a new random seed every night.

Breaking it on purpose

#

We made the gate ignore the "required" flag and look at every item. The test failed. We made ticking an item forget to clear its N/A mark. The test failed. If it hadn't, we'd have known the checks were too loose to mean anything.

It hasn't found a bug in the gate yet. I'd rather write that sentence than the other one, but it also means the test is young.

What it doesn't cover

#

Linked conditions (an item that is done when another Jira field or linked issue says so) need real Jira data, so the random test skips them. The screens aren't tested here either. The suite runs against the next release; the installed version runs its regular tests every night.

Do you block Done on every item, or only on a few required ones?

#