Skip to main content

Checklists — Test Cases

Manual acceptance test cases for the checklist flows. See Checklists concept and the checklist guides for context.


TC-CHK-001 — Feature flag toggles checklist surface area

Verifies: Checklists concept

Preconditions:

  • Logged in as Admin.
  • feature_flag_checklists_enabled is initially off.

Steps:

  1. Confirm the Checklists menu is hidden.
  2. Turn feature_flag_checklists_enabled on.
  3. Reload.

Expected:

  • The Checklists menu appears.
  • Existing checklist data (if any) is preserved and now visible.
  • Reset flag based on the rest of the checklist test cases.

TC-CHK-002 — Create a checklist template with globally unique name

Verifies: Create a Checklist Template

Preconditions:

  • Logged in as Office (with checklists.create).
  • Checklists feature flag is on.

Steps:

  1. Navigate to Checklists in the top navigation, then select the green New Checklist button.
  2. Enter Checklist Name: TC-CHK-002 PM Checklist.
  3. Under Applies To Work Order Types, tick Maintenance only.
  4. Save.
  5. Repeat steps 1–4 with the same name.

Expected:

  • First save succeeds.
  • Second save fails with a uniqueness validation error (names are globally unique across all checklists, not scoped per type or per manufacturer).

TC-CHK-003 — Add, edit, reorder, and delete checklist items

Verifies: Add Checklist Items

Preconditions:

Steps:

  1. Open the checklist.
  2. Add three items in order: Inspect coil, Check refrigerant pressure, Clean filter. Use sort orders 10, 20, 30.
  3. Edit the second item: change its sort order to 5.
  4. Save.
  5. Delete the first item (Inspect coil).

Expected:

  • After step 4, item order is: Check refrigerant pressure, Inspect coil, Clean filter (because 5 < 10 < 30).
  • After step 5, only Check refrigerant pressure and Clean filter remain.
  • Buttons are labeled Add Item when creating and Save Changes when editing.

TC-CHK-004 — Auto-attach picks unit-level checklist over model-level

Verifies: Checklists concept

Preconditions:

  • Checklists feature flag on.
  • Checklist MODEL-MAINT is linked to device model M, type Maintenance.
  • Checklist UNIT-MAINT is linked directly to unit U (which uses model M), type Maintenance.

Steps:

  1. Create a maintenance work order for unit U.
  2. Open the new work order's detail page.

Expected:

  • UNIT-MAINT is auto-attached.
  • MODEL-MAINT is not attached.
  • The auto-attach is logged in the work order's history.

TC-CHK-005 — Auto-attach falls through to model-level when unit-level absent

Verifies: Checklists concept

Preconditions:

  • Checklist MODEL-MAINT is linked to device model M, type Maintenance.
  • No checklist is linked directly to any unit using model M.

Steps:

  1. Create a maintenance work order for a unit using model M.

Expected:

  • MODEL-MAINT is auto-attached.

TC-CHK-006 — Manufacturer scope filters the manual attach dropdown

Verifies: Checklists concept, Assign a Checklist

Preconditions:

  • Manufacturers Mitsubishi and Daikin exist.
  • Checklist MITSU-PM has manufacturer_id set to Mitsubishi.
  • Checklist UNIVERSAL-PM has no manufacturer set.
  • A unit U exists whose device model's manufacturer is Daikin.

Steps:

  1. Open work order for unit U.
  2. Open the manual Attach Checklist dropdown.

Expected:

  • UNIVERSAL-PM is in the dropdown.
  • MITSU-PM is not in the dropdown (filtered out by manufacturer mismatch).
  • Repeat for a Mitsubishi unit — both should appear.

TC-CHK-007 — Edits to a template don't change in-flight checklist instances

Verifies: Checklists concept

Preconditions:

  • Checklist template T has item Check filter.
  • A work order has T attached and the tech has marked Check filter complete.

Steps:

  1. Edit T: rename Check filter to Check air filter.
  2. Save.
  3. Open the work order.

Expected:

  • The work order's checklist still shows Check filter (the original name at attach time).
  • A new work order created after the edit picks up Check air filter.

TC-CHK-008 — Photo-required item refuses completion without a photo

Verifies: Use a Checklist on a Work Order, Checklists concept

Preconditions:

  • A work order is in ongoing and has a checklist attached with one item whose Result Type is Photo and which is marked Required Item.
  • Logged in as the assigned tech.

Steps:

  1. Open the work order.
  2. On the photo-required item's row, select Complete to open the inline form.
  3. Select Mark Complete without attaching any photo via the camera button.

Expected:

  • The page reloads with the flash message "This item requires at least one photo before completion."
  • The item remains uncompleted (no strikethrough, no result badge).
  • After tapping the camera button, attaching at least one photo, and submitting Mark Complete again, the item is marked complete.

TC-CHK-009 — Required item blocks Complete Work Order until done

Verifies: Checklists concept, Use a Checklist on a Work Order

Preconditions:

  • A work order is in ongoing for the assigned technician.
  • The work order has a checklist attached with one Required item that is not yet completed.
  • The technician does not have checklists.bypass_required_items.

Steps:

  1. From the work order, select Complete Work Order (the technician path) or Approve & Complete (the supervisor path).

Expected:

  • The transition is blocked with a flash error referencing the incomplete required item.
  • The work order's status does not change.
  • After the technician (or supervisor) marks the required item complete, the same button succeeds and the status moves to waiting_approval (tech path) or completed (supervisor path).

TC-CHK-010 — Bypass-required permission unblocks the gate, override is logged

Verifies: Checklists concept

Preconditions:

  • Same setup as TC-CHK-009, except the user has checklists.bypass_required_items.

Steps:

  1. From the work order, select the supervisor's Approve & Complete button without completing the required item.

Expected:

  • The transition succeeds.
  • The work order moves to completed.
  • The work order's history records that a bypass was applied (visible in the Status History modal under the History link on the status card).