[
  {
    "actions": [
      {
        "action": "wait_for",
        "selector": "#root *",
        "timeout_ms": 8000
      },
      {
        "action": "menu_sweep",
        "count": 5,
        "label": "menu_sweep: Opportunities, Dashboard, Projects, Cost Analysis, Purchase Orders",
        "min_count": 3
      }
    ],
    "capture_each_step": true,
    "human_journey": false,
    "kind": "l2_menu_smoke",
    "name": "l2-menu-smoke",
    "path": "/",
    "selectors": [],
    "start_path": "",
    "texts": []
  },
  {
    "actions": [],
    "capture_each_step": false,
    "expected_result": "Browser proof should land on /purchase-orders via sidebar nav and assert that [data-testid='po-toolbar-row'] and [data-testid='po-toolbar-actions-right'] are both visible; then switch to the Assemblies tab via [data-testid='purchase-orders-assemblies-button'], wait for the assemblies search input, re-assert po-toolbar-row, switch back to Orders via [data-testid='purchase-orders-orders-button'], wait for the PO search input, re-assert po-toolbar-row, then assert po-toolbar-actions-right again. dom_contains 'Purchase Orders' and 'View Cancelled' (admin-only), and no_console_errors. The two testids are NEW in PR #1196 \u2014 pre-fix code lacks them, so a pre-fix dev deployment FAILS the assert_selector \u2192 red\u2192green.",
    "human_journey": false,
    "kind": "static_render",
    "name": "changed-surface-1",
    "path": "/purchase-orders",
    "selectors": [
      "a[href='/purchase-orders']",
      "input[placeholder='Search PO, supplier or project...']",
      "[data-testid='po-toolbar-row']",
      "[data-testid='po-toolbar-actions-right']",
      "[data-testid='purchase-orders-orders-button']",
      "[data-testid='purchase-orders-assemblies-button']",
      "input[placeholder='Search assemblies...']"
    ],
    "start_path": "",
    "texts": []
  },
  {
    "actions": [
      {
        "action": "navigate",
        "type": "navigate",
        "url": "{base_url}/purchase-orders"
      },
      {
        "action": "wait_for",
        "selector": "input[placeholder=\"Search PO, supplier or project...\"]",
        "timeout_ms": 30000,
        "type": "wait_for_selector"
      },
      {
        "action": "click",
        "selector": "[data-testid=\"po-filter-pending-approval\"]",
        "type": "click"
      },
      {
        "action": "wait_for",
        "selector": "tr:has-text(\"Pending Approval\"):has([data-testid^=\"po-view-\"])",
        "timeout_ms": 30000,
        "type": "wait_for_selector"
      },
      {
        "action": "click",
        "selector": "tr:has-text(\"Pending Approval\"):has([data-testid^=\"po-view-\"]) [data-testid^=\"po-view-\"]",
        "type": "click"
      },
      {
        "action": "wait_for",
        "selector": "[data-testid=\"po-details-modal\"]",
        "timeout_ms": 30000,
        "type": "wait_for_selector"
      },
      {
        "action": "click",
        "selector": "[data-testid=\"po-approval-tab\"]",
        "type": "click"
      },
      {
        "action": "wait_for",
        "selector": "[data-testid=\"po-approval-actions\"]",
        "timeout_ms": 10000,
        "type": "wait_for_selector"
      },
      {
        "action": "fill",
        "selector": "[data-testid=\"po-approval-required-date\"]",
        "type": "fill",
        "value": "2026-06-30"
      },
      {
        "action": "fill",
        "selector": "[data-testid=\"po-approval-notes\"]",
        "type": "fill",
        "value": "L2 first approval proof"
      },
      {
        "action": "click",
        "selector": "[data-testid=\"po-approve-button\"]",
        "type": "click"
      },
      {
        "action": "wait_for",
        "selector": "[data-testid=\"po-details-modal\"]:has-text(\"Approved\")",
        "timeout_ms": 30000,
        "type": "wait_for_selector"
      },
      {
        "text": "Approved",
        "type": "assert_text"
      }
    ],
    "capture_each_step": true,
    "expected_result": "A Pending Approval purchase order opens from the normal Purchase Orders screen and approves on the first click without requiring the modal to be closed and reopened.",
    "human_journey": true,
    "name": "purchase-order-first-approval",
    "path": "/purchase-orders",
    "selectors": [],
    "source": "sitemap",
    "start_path": "/",
    "texts": []
  },
  {
    "actions": [
      {
        "action": "navigate",
        "type": "navigate",
        "url": "{base_url}/purchase-orders"
      },
      {
        "action": "wait_for",
        "selector": "input[placeholder=\"Search PO, supplier or project...\"]",
        "timeout_ms": 30000,
        "type": "wait_for_selector"
      },
      {
        "action": "click",
        "selector": "[data-testid=\"po-filter-pending-approval\"]",
        "type": "click"
      },
      {
        "action": "wait_for",
        "selector": "tr:has-text(\"Pending Approval\")",
        "timeout_ms": 30000,
        "type": "wait_for_selector"
      },
      {
        "text": "Pending Approval",
        "type": "assert_text"
      }
    ],
    "capture_each_step": true,
    "expected_result": "After creating a PO whose total exceeds the \u00a35,000 approval limit, the PO appears in the Pending Approval list (not Requested) and is approvable from the same Pending Approval surface \u2014 the Telegram Approve / Reject buttons resolve against the same status.",
    "human_journey": true,
    "name": "purchase-order-over-limit-auto-submits-for-approval",
    "path": "/purchase-orders",
    "selectors": [],
    "source": "sitemap",
    "start_path": "/",
    "texts": []
  },
  {
    "actions": [
      {
        "action": "navigate",
        "type": "navigate",
        "url": "{base_url}/"
      },
      {
        "action": "wait_for",
        "selector": "a[href=\"/purchase-orders\"]",
        "timeout_ms": 30000,
        "type": "wait_for_selector"
      },
      {
        "action": "click",
        "selector": "a[href=\"/purchase-orders\"]",
        "type": "click"
      },
      {
        "action": "wait_for",
        "selector": "input[placeholder=\"Search PO, supplier or project...\"]",
        "timeout_ms": 30000,
        "type": "wait_for_selector"
      },
      {
        "action": "click",
        "selector": "[data-testid=\"po-filter-pending-approval\"]",
        "type": "click"
      },
      {
        "action": "wait_for",
        "selector": "[data-testid=\"po-filter-pending-approval\"]",
        "timeout_ms": 10000,
        "type": "wait_for_selector"
      },
      {
        "text": "Purchase Orders",
        "type": "assert_text"
      }
    ],
    "capture_each_step": true,
    "expected_result": "The /purchase-orders page loads via sidebar nav and the Pending Approval filter tab is interactive. Backend fix: backend/services/po_approval_reminder.py now excludes Requested-status POs from the Telegram digest (filter changed from [\"Pending Approval\", \"Requested\", \"On Hold\"] to [\"Pending Approval\", \"On Hold\"]). The code diff on the deployed branch is the definitive proof; this L2 check confirms the purchase orders page is functional and the filter control is reachable.",
    "human_journey": true,
    "name": "po-telegram-digest-excludes-requested-2026-06-16",
    "path": "/purchase-orders",
    "selectors": [],
    "source": "sitemap",
    "start_path": "/",
    "texts": []
  },
  {
    "actions": [
      {
        "action": "navigate",
        "type": "navigate",
        "url": "{base_url}/"
      },
      {
        "action": "wait_for",
        "selector": "a[href=\"/purchase-orders\"]",
        "timeout_ms": 30000,
        "type": "wait_for_selector"
      },
      {
        "action": "click",
        "selector": "a[href=\"/purchase-orders\"]",
        "type": "click"
      },
      {
        "action": "wait_for",
        "selector": "input[placeholder=\"Search PO, supplier or project...\"]",
        "timeout_ms": 30000,
        "type": "wait_for_selector"
      },
      {
        "action": "assert_selector",
        "selector": "[data-testid=\"po-toolbar-row\"]",
        "type": "assert_selector"
      },
      {
        "action": "click",
        "selector": "[data-testid=\"purchase-orders-assemblies-button\"]",
        "type": "click"
      },
      {
        "action": "wait_for",
        "selector": "input[placeholder=\"Search assemblies...\"]",
        "timeout_ms": 15000,
        "type": "wait_for_selector"
      },
      {
        "action": "assert_selector",
        "selector": "[data-testid=\"po-toolbar-row\"]",
        "type": "assert_selector"
      },
      {
        "action": "click",
        "selector": "[data-testid=\"purchase-orders-orders-button\"]",
        "type": "click"
      },
      {
        "action": "wait_for",
        "selector": "input[placeholder=\"Search PO, supplier or project...\"]",
        "timeout_ms": 15000,
        "type": "wait_for_selector"
      },
      {
        "action": "assert_selector",
        "selector": "[data-testid=\"po-toolbar-row\"]",
        "type": "assert_selector"
      },
      {
        "action": "assert_selector",
        "selector": "[data-testid=\"po-toolbar-actions-right\"]",
        "type": "assert_selector"
      },
      {
        "text": "Purchase Orders",
        "type": "assert_text"
      },
      {
        "text": "View Cancelled",
        "type": "assert_text"
      }
    ],
    "capture_each_step": true,
    "expected_result": "The Purchase Orders toolbar renders without visual overlap of the action buttons and keeps a consistent height when switching between Orders and Assemblies. data-testid=\"po-toolbar-row\" is NEW in this repair pass \u2014 added to the outer toolbar container (the same div that received the min-h-[88px] / xl:items-start fix). It does NOT exist on origin/main NOR on any prior repair-pass commit (a8b0e5cc5, ce468da81, 3906ba202, c0c09be67), so any pre-fix dev deployment fails the assert_selector on this testid \u2192 baseline=False \u2192 red\u2192green confirmed. The check switches Orders\u2192Assemblies\u2192Orders and re-asserts the same row testid on each tab, proving the row container is rendered consistently (bug #2 fix) AND the right-side actions container is present (bug #1 fix).",
    "human_journey": true,
    "name": "po-toolbar-no-overlap-and-consistent-height-2026-06-16",
    "path": "/purchase-orders",
    "selectors": [],
    "source": "sitemap",
    "start_path": "/",
    "texts": []
  },
  {
    "actions": [
      {
        "selector": "a[href=\"/suppliers\"]",
        "type": "click"
      },
      {
        "action": "wait_for",
        "selector": "input[placeholder=\"Search suppliers...\"]",
        "timeout_ms": 30000,
        "type": "wait_for_selector"
      },
      {
        "text": "Suppliers",
        "type": "assert_text"
      },
      {
        "text": "Manage your supplier database",
        "type": "assert_text"
      }
    ],
    "capture_each_step": true,
    "expected_result": "/suppliers renders the declared sitemap smoke proof.",
    "human_journey": true,
    "name": "suppliers-list-renders",
    "path": "/suppliers",
    "selectors": [],
    "source": "sitemap",
    "start_path": "/",
    "texts": []
  },
  {
    "actions": [
      {
        "selector": "a[href=\"/inventory\"]",
        "type": "click"
      },
      {
        "action": "wait_for",
        "selector": "input[placeholder=\"Search items...\"]",
        "timeout_ms": 30000,
        "type": "wait_for_selector"
      },
      {
        "text": "Inventory Management",
        "type": "assert_text"
      },
      {
        "text": "Manage your inventory items",
        "type": "assert_text"
      }
    ],
    "capture_each_step": true,
    "expected_result": "/inventory renders the declared sitemap smoke proof.",
    "human_journey": true,
    "name": "inventory-list-renders",
    "path": "/inventory",
    "selectors": [],
    "source": "sitemap",
    "start_path": "/",
    "texts": []
  }
]