Skip to main content

Technician — Test Cases

Manual acceptance test cases for the technician/field flows. See the Technician Quickstart for the user-facing instructions and Technician Permissions for the underlying gating.

These test cases assume two users:

  • Tech — a user with the technician role (default permission bundle).
  • Office — a user with the office/supervisor bundle.

Substitute your tenant defaults for phone country code, refrigerant types, and cylinder IDs.


TC-TECH-001 — Tech work order list is scoped to assigned jobs

Verifies: Find Your Assigned Work Orders, Technician Permissions

Preconditions:

  • Logged in as Tech.
  • At least one work order exists assigned to this tech and at least one assigned to a different tech.

Steps:

  1. Navigate to Work Orders.

Expected:

  • The list shows only work orders where technician_id equals the current user's ID.
  • No work order assigned to a different tech appears.
  • No unassigned work order appears (since technician_id is null on those).

TC-TECH-002 — Tech can filter the work order list by date and status

Verifies: Find Your Assigned Work Orders

Preconditions:

  • Logged in as Tech.
  • The tech has work orders due today (pending), tomorrow (pending), and one in paused.

Steps:

  1. Navigate to Work Orders.
  2. Pick today's date in the Due Date filter.
  3. Select Filter.
  4. Pick pending in the Status filter.
  5. Select Filter.

Expected:

  • After step 3, only the work order due today appears.
  • After step 5, only the pending work order due today appears (the paused one is excluded).
  • Filters persist if the page is reloaded within the same session.

TC-TECH-003 — Tech sees Schedule on Home but not the dashboard charts

Verifies: Find Your Assigned Work Orders, Technician Permissions

Preconditions:

  • Logged in as Tech (no work_orders.supervise, no reports.view).

Steps:

  1. Navigate to Home.

Expected:

  • The Schedule card renders and shows only the tech's own work orders.
  • The dashboard charts and Upcoming Tasks sections do not render.
  • Selecting a block in the schedule opens a modal with Open Work Order.

TC-TECH-004 — Tech is redirected to scoped work order list when scanning a QR while logged in

Verifies: Scan a Unit's QR Code in the Field, QR Codes

Preconditions:

  • Logged in as Tech.
  • A unit exists with a printed QR (URL /u/<guid>).
  • The tech has at least one work order assigned to that unit.

Steps:

  1. Scan the QR with the device camera, or open the URL /u/<guid> directly.

Expected:

  • TuffOps redirects to Work Orders with the unit_id filter pre-applied.
  • The list shows the tech's work orders for that unit only.
  • The public unit page (the customer-facing view) does not render.

TC-TECH-005 — Tech without a work order on the scanned unit sees an empty filtered list

Verifies: Scan a Unit's QR Code in the Field

Preconditions:

  • Logged in as Tech.
  • A unit exists with a printed QR.
  • The tech has no work order assigned to that unit.

Steps:

  1. Open the URL /u/<guid>.

Expected:

  • TuffOps redirects to Work Orders with the unit_id filter pre-applied.
  • The list is empty.
  • The empty-state message indicates no work orders match the filter.

TC-TECH-006 — Tech can pause a work order from ongoing

Verifies: Pause and Resume a Work Order, Work Order Lifecycle

Preconditions:

  • Logged in as Tech.
  • A work order is assigned to the tech and is in ongoing status.

Steps:

  1. Open the work order.
  2. Select Pause Work Order in the Status card.
  3. If prompted, allow location access.

Expected:

  • The page reloads.
  • The Status badge is now Paused (dark grey).
  • A new History entry shows paused with the tech's user, the timestamp, and (if location was allowed) GPS coordinates.
  • An alert Work order is now paused appears in the alert feed for users watching it.

TC-TECH-007 — Tech can resume a paused work order with the Start Work Order button

Verifies: Pause and Resume a Work Order

Preconditions:

  • Logged in as Tech.
  • A work order is assigned to the tech and is in paused status.

Steps:

  1. Open the work order.
  2. Select Start Work Order in the Status card.
  3. If prompted, allow location access.

Expected:

  • The page reloads.
  • The Status badge is now Ongoing (blue).
  • A new History entry shows ongoing with timestamp and (if allowed) GPS.
  • The button label is Start Work Order even though the action is "resume" — same transition.

TC-TECH-008 — Pause is hidden when the work order isn't ongoing

Verifies: Pause and Resume a Work Order

Preconditions:

  • Logged in as Tech.
  • The tech has work orders in pending, paused, and waiting_approval.

Steps:

  1. Open the pending work order.
  2. Open the paused work order.
  3. Open the waiting_approval work order.

Expected:

  • On pending, only Start Work Order is visible — no Pause.
  • On paused, only Start Work Order is visible — no Pause.
  • On waiting_approval, neither Pause nor Start is visible to the tech.

TC-TECH-009 — Items, Files, and Notes cards are hidden until work order is started

Verifies: Work Orders from a Tech's Perspective, Update the Items on a Work Order

Preconditions:

  • Logged in as Tech.
  • A work order is assigned to the tech in pending status.

Steps:

  1. Open the work order.
  2. Note which sections render.
  3. Select Start Work Order in the Status card.
  4. Allow location if prompted.
  5. After the page reloads, note which sections render now.

Expected:

  • In pending, the Items, Files (photos), and Notes cards are not rendered at all.
  • In ongoing, all three cards render below the main work order details.
  • The Add Item button is visible at the top-right of the Items card header.

TC-TECH-010 — Tech can add a non-refrigerant item to an ongoing work order

Verifies: Update the Items on a Work Order

Preconditions:

  • Logged in as Tech.
  • A work order is assigned to the tech in ongoing.
  • The catalog includes a non-refrigerant service item, e.g. Filter replacement.

Steps:

  1. Open the work order.
  2. Select Add Item at the top-right of the Items card.
  3. Search for Filter replacement.
  4. Select the item.
  5. Set quantity to 2.
  6. Select Save at the bottom of the form.

Expected:

  • A success flash message appears.
  • The page reloads with the new item row in the Items card with quantity 2.
  • No refrigerant icon appears on the row (item isn't a regulated refrigerant).
  • No charge event is created (verified by reviewing Charge Events as Office — empty entry for this work order).

TC-TECH-011 — Tech can edit an item's quantity and save

Verifies: Update the Items on a Work Order

Preconditions:

  • Logged in as Tech.
  • A work order is ongoing with at least one item already added.

Steps:

  1. Open the work order.
  2. Change the quantity on an existing item from 1 to 3.
  3. Select Save.

Expected:

  • Success flash message.
  • The item now shows quantity 3 after reload.

TC-TECH-012 — Tech can remove an item with no posted charge event

Verifies: Update the Items on a Work Order

Preconditions:

  • Logged in as Tech.
  • A work order is ongoing with a non-refrigerant item.

Steps:

  1. Open the work order.
  2. Select the trash icon at the right of the item row.
  3. Select Save.

Expected:

  • The item is removed from the Items card after reload.
  • A success flash message appears.

TC-TECH-013 — Tech does not see pricing columns on the items card

Verifies: Work Orders from a Tech's Perspective, Technician Permissions

Preconditions:

  • Logged in as Tech (without work_orders.pricing).
  • A work order is ongoing with at least one item with a non-zero price in the catalog.

Steps:

  1. Open the work order.
  2. Inspect the Items card.

Expected:

  • Item names and quantities are visible.
  • No Unit Price, Subtotal, or any dollar-amount column is rendered.
  • The card header does not show a running total.

TC-TECH-014 — Tech can add a photo to an ongoing work order

Verifies: Add Photos and Notes to a Work Order

Preconditions:

  • Logged in as Tech.
  • A work order is ongoing.
  • A test image file (under 50 MB, JPEG or PNG) is available.

Steps:

  1. Open the work order.
  2. In the Files card, select the upload control.
  3. Select the test image.

Expected:

  • The photo uploads.
  • A thumbnail appears in the Files card with the filename and a remove icon.
  • Tapping the thumbnail opens a full-size lightbox.

TC-TECH-015 — Photo upload rejects files over 50 MB

Verifies: Add Photos and Notes to a Work Order

Preconditions:

  • Logged in as Tech.
  • A work order is ongoing.
  • A test image file over 50 MB is available.

Steps:

  1. Open the work order.
  2. In the Files card, select the upload control.
  3. Select the over-50 MB file.

Expected:

  • The upload fails with an error indicating the file is too large.
  • No thumbnail is added to the Files card.

TC-TECH-016 — Tech can add a note up to 1000 characters

Verifies: Add Photos and Notes to a Work Order

Preconditions:

  • Logged in as Tech.
  • A work order is ongoing.

Steps:

  1. Open the work order.
  2. In the Notes card, type 1000 characters into the note field.
  3. Select the save action for the note.

Expected:

  • The note saves successfully.
  • The note appears at the top of the notes list with the tech's name and timestamp.
  • The character count display (if shown) reads 1000 / 1000.

TC-TECH-017 — Note over 1000 characters is rejected

Verifies: Add Photos and Notes to a Work Order

Preconditions:

  • Logged in as Tech.
  • A work order is ongoing.

Steps:

  1. Open the work order.
  2. Try to enter 1001 characters into the note field.
  3. Select the save action.

Expected:

  • Either the input prevents typing beyond 1000 characters, or the save fails with a validation error.
  • No new note appears in the list.

TC-TECH-018 — Adding a refrigerant item without a cert posts the charge event in non-compliant state (Block mode)

Verifies: Record a Refrigerant Charge Event, Compliance Overrides

Preconditions:

  • Logged in as Tech with no active EPA certification on file.
  • The cert gating mode is set to Block in Settings → Compliance.
  • A work order is ongoing on a unit that uses a regulated refrigerant.

Steps:

  1. Open the work order.
  2. Add Item -> select a regulated refrigerant (e.g. R-410A).
  3. Set quantity to 2.
  4. Pick top_off as the event type.
  5. Pick the tech as the technician (cert dropdown is empty).
  6. Select Save.

Expected:

  • The save succeeds (the row posts).
  • A red banner appears explaining that cert gating fired (no active cert).
  • A row appears in Charge Events for this work order, flagged as non-compliant in the audit log.
  • A new row appears in compliance_override_requests queued for an approver with compliance.approve_override.
  • The work order's status widget shows the incomplete strict refrigerant count warning.

TC-TECH-019 — Adding a refrigerant item with valid cert in good standing posts a compliant charge event

Verifies: Record a Refrigerant Charge Event

Preconditions:

  • Logged in as Tech with an active, unexpired EPA cert that covers the refrigerant.
  • All gating modes (cert, top_off, recovery_equipment) are set to Block or Warn.
  • The unit has no open leak-repair episode.
  • A work order is ongoing.

Steps:

  1. Open the work order.
  2. Add Item -> select the regulated refrigerant.
  3. Set quantity, pick top_off event type, pick the tech, pick the cert.
  4. Select Save.

Expected:

  • The save succeeds with no banner.
  • A new row appears in Charge Events for this work order, flagged compliant.
  • The row's status chip on the form is green.
  • No override request is created.
  • The status widget does not show an incomplete strict refrigerant count.

TC-TECH-020 — Recovery event requires registered cylinder

Verifies: Record a Refrigerant Charge Event, Register Recovery Equipment

Preconditions:

  • Logged in as Tech with active EPA cert.
  • The recovery-equipment gating mode is Block.
  • A work order is ongoing.
  • The tech has access to at least one registered recovery cylinder, plus knowledge of an unregistered cylinder ID.

Steps:

  1. Open the work order.
  2. Add Item -> regulated refrigerant.
  3. Pick removal_recovery as event type.
  4. Pick to_cylinder as the destination kind.
  5. In the cylinder dropdown, observe which IDs are listed.
  6. Pick a registered cylinder, set quantity, save.

Expected:

  • Only registered cylinders appear in the dropdown.
  • The unregistered cylinder cannot be picked.
  • The save succeeds with the registered cylinder; charge event is compliant.

TC-TECH-021 — Top-off on unit with open leak-repair episode fires top-off gate (Block mode)

Verifies: Record a Refrigerant Charge Event, Compliance — Leak Repairs

Preconditions:

  • Logged in as Tech with active EPA cert.
  • Top-off gating mode is Block.
  • A unit has an open leak-repair episode with no recorded repair start and no committed retire/retrofit plan.
  • A work order is ongoing on that unit.

Steps:

  1. Open the work order.
  2. Add Item -> regulated refrigerant.
  3. Pick top_off, set quantity, pick cert, save.

Expected:

  • The save succeeds (the row posts).
  • A red banner appears explaining the top-off gate fired (open leak-repair episode).
  • The new charge event row appears in Charge Events, flagged non-compliant.
  • A new override request is queued for a supervisor.

TC-TECH-022 — Tech is blocked from approving their own override request (four-eyes)

Verifies: Compliance Overrides, Technician Permissions

Preconditions:

  • An override request was created by the tech (TC-TECH-018 or TC-TECH-021).
  • The tech has been temporarily granted compliance.approve_override for this test.

Steps:

  1. As the tech, navigate to the override request page.
  2. Try to approve or reject.

Expected:

  • The "Four-eyes blocked" alert is displayed.
  • The Approve and Reject buttons are not actionable for this user.
  • An attempt to POST the decision returns HTTP 403 or a validation error blocking the action.

TC-TECH-023 — Items, Files, and Notes are read-only after submit

Verifies: Work Orders from a Tech's Perspective, Submit a Work Order for Approval

Preconditions:

  • Logged in as Tech.
  • A work order is in waiting_approval after the tech submitted it.

Steps:

  1. Open the work order.
  2. Try to add an item.
  3. Try to upload a photo.
  4. Try to add a note.

Expected:

  • The Add Item button is not visible.
  • The photo upload control is not visible.
  • The note input is not visible.
  • Existing items, photos, and notes render in read-only form.

TC-TECH-024 — Tech cannot open a work order assigned to a different tech

Verifies: Technician Permissions

Preconditions:

  • Logged in as Tech.
  • Another tech has a work order with a known ID.

Steps:

  1. Try to open the URL for the other tech's work order directly.

Expected:

  • The response is HTTP 403 or a redirect to the work order index with an "access denied" flash.
  • The work order edit form does not render.

TC-TECH-025 — Tech does not see Approve, Reject, or Mark as Billed buttons

Verifies: Technician Permissions, Work Order Lifecycle

Preconditions:

  • Logged in as Tech.
  • A work order assigned to the tech is in waiting_approval.

Steps:

  1. Open the work order.
  2. Inspect the Status card buttons.

Expected:

  • No Approve & Complete, Start Work Order (the supervisor's reject-back-to-ongoing path), or Mark as Billed buttons are visible.
  • The compliance-/pricing-related supervisor controls are also not visible.
  • Only navigation away (back to the list) is available.

TC-TECH-026 — GPS denied still allows status transition without coordinates

Verifies: Mobile and Field Context, Pause and Resume a Work Order

Preconditions:

  • Logged in as Tech on a browser where the location permission is denied for the site.
  • A work order is ongoing.

Steps:

  1. Open the work order.
  2. Select Pause Work Order.
  3. When the prompt is denied (or already denied), wait for the transition to complete.

Expected:

  • The status moves to paused.
  • The new History entry has the timestamp and user, but no GPS coordinates.
  • No error message blocks the user.

TC-TECH-027 — Compliance "View episode" link returns 403 for tech without compliance.view

Verifies: Technician Permissions, Work Orders from a Tech's Perspective

Preconditions:

  • Logged in as Tech (no compliance.view).
  • A work order is ongoing and is linked to a leak-repair episode (the form shows a "Linked EPA leak-repair episode" pill).

Steps:

  1. Open the work order.
  2. Select the View episode pill.

Expected:

  • The response is HTTP 403.
  • The leak-repair episode page does not render.
  • The tech can use the back button to return to the work order without losing form state.

Smoke pass for technician flows

If you only have time for a 5-minute verification of the technician path before a release:

  • TC-TECH-001 — list scoping works.
  • TC-TECH-006 — pause works with GPS.
  • TC-TECH-009 — pending-start gate hides cards.
  • TC-TECH-010 — add an item.
  • TC-TECH-019 — happy-path refrigerant charge event.

If those pass, the field flow is alive. Anything beyond is a deeper sweep.