[
  {
    "id": "TC001",
    "title": "Staff agent can sign in and reach the dashboard",
    "description": "This verifies that a staff agent can authenticate with valid credentials and land on the authenticated dashboard.",
    "category": "Admin Login",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "assertion",
        "description": "Verify the dashboard is displayed"
      },
      {
        "type": "assertion",
        "description": "Verify key ticket and channel metrics are visible"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC002",
    "title": "Agent can review and reply to an open ticket",
    "description": "This verifies that a staff agent can open an active ticket, read the thread, and send a text reply successfully.",
    "category": "Ticket List and Filtering",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open an open ticket"
      },
      {
        "type": "action",
        "description": "Enter a text reply in the message field"
      },
      {
        "type": "action",
        "description": "Send the reply"
      },
      {
        "type": "assertion",
        "description": "Verify the reply appears in the conversation thread"
      },
      {
        "type": "assertion",
        "description": "Verify the ticket remains accessible for continued handling"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC003",
    "title": "View the ticket thread and send a text reply",
    "description": "A staff agent can open a ticket, review the conversation thread, send a text response, and see the new message appear in the thread.",
    "category": "Ticket Detail and Reply",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /tickets"
      },
      {
        "type": "action",
        "description": "Open a ticket from the list"
      },
      {
        "type": "action",
        "description": "Type a text reply into the message input"
      },
      {
        "type": "action",
        "description": "Send the reply"
      },
      {
        "type": "assertion",
        "description": "Verify the reply appears in the conversation thread"
      },
      {
        "type": "assertion",
        "description": "Verify the ticket thread remains visible"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC004",
    "title": "Update ticket priority, due date, and escalation before closing",
    "description": "A staff agent can change ticket properties, close the ticket, and see the ticket status update accordingly.",
    "category": "Ticket Detail and Reply",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /tickets"
      },
      {
        "type": "action",
        "description": "Open a ticket from the list"
      },
      {
        "type": "action",
        "description": "Change the ticket priority"
      },
      {
        "type": "action",
        "description": "Set a due date"
      },
      {
        "type": "action",
        "description": "Toggle the escalation status"
      },
      {
        "type": "action",
        "description": "Close the ticket"
      },
      {
        "type": "assertion",
        "description": "Verify the ticket status is updated to closed"
      },
      {
        "type": "assertion",
        "description": "Verify the updated ticket properties are visible"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC005",
    "title": "Send a media message in a ticket thread",
    "description": "A staff agent can attach media to a ticket reply and see the media message appear in the conversation thread.",
    "category": "Ticket Detail and Reply",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /tickets"
      },
      {
        "type": "action",
        "description": "Open a ticket from the list"
      },
      {
        "type": "action",
        "description": "Attach a media file to the reply composer"
      },
      {
        "type": "action",
        "description": "Send the message"
      },
      {
        "type": "assertion",
        "description": "Verify the media message appears in the conversation thread"
      },
      {
        "type": "assertion",
        "description": "Verify the ticket conversation remains accessible"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC006",
    "title": "Create a WhatsApp channel and verify the QR pairing step",
    "description": "An admin can start adding a WhatsApp channel and reach the QR pairing screen needed for linking.",
    "category": "Channel Management",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /channels"
      },
      {
        "type": "action",
        "description": "Start adding a WhatsApp channel"
      },
      {
        "type": "action",
        "description": "Enter a channel name"
      },
      {
        "type": "action",
        "description": "Enter a phone number"
      },
      {
        "type": "action",
        "description": "Create the channel"
      },
      {
        "type": "assertion",
        "description": "Verify a QR pairing step is displayed"
      },
      {
        "type": "assertion",
        "description": "Verify the new channel is pending connection"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC007",
    "title": "Agent can filter the ticket list and open a matching ticket",
    "description": "This verifies that a staff agent can narrow tickets by filters and search, then open a relevant ticket from the list.",
    "category": "Ticket List and Filtering",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open the ticket list"
      },
      {
        "type": "action",
        "description": "Apply a status filter"
      },
      {
        "type": "action",
        "description": "Apply a priority filter"
      },
      {
        "type": "action",
        "description": "Search for a ticket"
      },
      {
        "type": "action",
        "description": "Open a matching ticket from the list"
      },
      {
        "type": "assertion",
        "description": "Verify the ticket detail view is displayed"
      },
      {
        "type": "assertion",
        "description": "Verify the selected ticket conversation thread is visible"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC008",
    "title": "Prevent replying to a closed ticket",
    "description": "A staff agent cannot send a reply on a closed ticket and sees validation that blocks the action.",
    "category": "Ticket Detail and Reply",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /tickets"
      },
      {
        "type": "action",
        "description": "Open a closed ticket from the list"
      },
      {
        "type": "action",
        "description": "Type a text reply into the message input"
      },
      {
        "type": "action",
        "description": "Send the reply"
      },
      {
        "type": "assertion",
        "description": "Verify a validation error is visible for replying to a closed ticket"
      },
      {
        "type": "assertion",
        "description": "Verify the reply is not added to the thread"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC009",
    "title": "Create a company from the company list",
    "description": "Verifies that an admin can create a new company and see it appear in the company list.",
    "category": "Company Management",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /companies"
      },
      {
        "type": "action",
        "description": "Fill in the company name field with a new company name"
      },
      {
        "type": "action",
        "description": "Create the company"
      },
      {
        "type": "assertion",
        "description": "Verify the new company appears in the company list"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC010",
    "title": "Dashboard shows the core support metrics after login",
    "description": "This verifies that an authenticated user can view the main KPI overview and recent ticket activity on the dashboard.",
    "category": "Dashboard Overview",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "assertion",
        "description": "Verify the dashboard KPI overview is visible"
      },
      {
        "type": "assertion",
        "description": "Verify recent tickets are visible"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC011",
    "title": "Browse channel list and verify channel statuses",
    "description": "An admin can open the channels page and review the available channels and their connection statuses.",
    "category": "Channel Management",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /channels"
      },
      {
        "type": "assertion",
        "description": "Verify the channel list is displayed"
      },
      {
        "type": "assertion",
        "description": "Verify channel status information is visible"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC012",
    "title": "Save a new password in settings",
    "description": "This test verifies that a signed-in user can change their password from settings and see the update succeed.",
    "category": "Settings and Profile",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Click the settings page link"
      },
      {
        "type": "action",
        "description": "Fill in the current password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Fill in the new password field with a valid new password"
      },
      {
        "type": "action",
        "description": "Fill in the password confirmation field with the same new password"
      },
      {
        "type": "action",
        "description": "Submit the password change form"
      },
      {
        "type": "assertion",
        "description": "Verify a success confirmation is visible"
      },
      {
        "type": "assertion",
        "description": "Verify the password change section shows the update succeeded"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC013",
    "title": "Agent can open a ticket directly from the ticket list",
    "description": "This verifies that a staff agent can use the ticket list to reach a ticket detail view in one browsing flow.",
    "category": "Ticket List and Filtering",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open the ticket list"
      },
      {
        "type": "action",
        "description": "Open a ticket from the list"
      },
      {
        "type": "assertion",
        "description": "Verify the ticket detail view is displayed"
      },
      {
        "type": "assertion",
        "description": "Verify the ticket conversation thread is visible"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC014",
    "title": "Create a portal user for a company",
    "description": "Verifies that an admin can create a new portal user under a company and see it listed.",
    "category": "Company Management",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /companies"
      },
      {
        "type": "action",
        "description": "Open a company from the company list"
      },
      {
        "type": "action",
        "description": "Fill in the portal user email field with a new email address"
      },
      {
        "type": "action",
        "description": "Fill in the portal user password field with a valid password"
      },
      {
        "type": "action",
        "description": "Fill in the portal user display name field with a new display name"
      },
      {
        "type": "action",
        "description": "Create the portal user"
      },
      {
        "type": "assertion",
        "description": "Verify the new portal user is listed for the company"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC015",
    "title": "Create an email channel",
    "description": "An admin can create a new email channel and see it added to the channel list.",
    "category": "Channel Management",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /channels"
      },
      {
        "type": "action",
        "description": "Start adding an email channel"
      },
      {
        "type": "action",
        "description": "Enter a channel name"
      },
      {
        "type": "action",
        "description": "Create the channel"
      },
      {
        "type": "assertion",
        "description": "Verify the new email channel is displayed in the list"
      },
      {
        "type": "assertion",
        "description": "Verify the channel is available for configuration"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC016",
    "title": "Recent ticket from the dashboard opens its details",
    "description": "This verifies that a user can jump from a recent ticket on the dashboard into the ticket detail view.",
    "category": "Dashboard Overview",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open a recent ticket from the dashboard"
      },
      {
        "type": "assertion",
        "description": "Verify the ticket detail view is displayed"
      },
      {
        "type": "assertion",
        "description": "Verify the ticket conversation thread is visible"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC017",
    "title": "Search contacts by name, phone, or email",
    "description": "Verifies that a staff user can search the contact list and see matching contacts update in the grid.",
    "category": "Contact Management",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /contacts"
      },
      {
        "type": "action",
        "description": "Fill in the contact search field with a contact identifier"
      },
      {
        "type": "assertion",
        "description": "Verify matching contacts are displayed in the contact grid"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC018",
    "title": "Create a new staff user",
    "description": "This test verifies that an admin can create a new user and see it appear in the user list.",
    "category": "User Management (Admin)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Click the admin users page link"
      },
      {
        "type": "action",
        "description": "Open the create user form"
      },
      {
        "type": "action",
        "description": "Fill in the email field with a unique valid staff email"
      },
      {
        "type": "action",
        "description": "Fill in the password field with a valid password"
      },
      {
        "type": "action",
        "description": "Select the staff role"
      },
      {
        "type": "action",
        "description": "Submit the user creation form"
      },
      {
        "type": "assertion",
        "description": "Verify the new user appears in the list"
      },
      {
        "type": "assertion",
        "description": "Verify the user is shown with the selected role"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC019",
    "title": "Update channel settings and ticket-closing message",
    "description": "An admin can edit a channel’s settings, save them, and see the updated configuration persist.",
    "category": "Channel Settings",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /channels"
      },
      {
        "type": "action",
        "description": "Open a channel detail page"
      },
      {
        "type": "action",
        "description": "Edit the channel name"
      },
      {
        "type": "action",
        "description": "Update the alert settings"
      },
      {
        "type": "action",
        "description": "Update the onboarding configuration"
      },
      {
        "type": "action",
        "description": "Update the AI configuration"
      },
      {
        "type": "action",
        "description": "Toggle the ticket-closing message setting"
      },
      {
        "type": "action",
        "description": "Save the settings"
      },
      {
        "type": "assertion",
        "description": "Verify the updated channel configuration is visible"
      },
      {
        "type": "assertion",
        "description": "Verify the ticket-closing message setting is persisted"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC020",
    "title": "Edit a company name",
    "description": "Verifies that an admin can update a company name and see the saved change in the company detail view.",
    "category": "Company Management",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /companies"
      },
      {
        "type": "action",
        "description": "Open a company from the company list"
      },
      {
        "type": "action",
        "description": "Change the company name"
      },
      {
        "type": "action",
        "description": "Save the company changes"
      },
      {
        "type": "assertion",
        "description": "Verify the updated company name is displayed"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC021",
    "title": "Open a contact detail from the contact list",
    "description": "Verifies that a staff user can open a contact from the list and reach the contact detail view.",
    "category": "Contact Management",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /contacts"
      },
      {
        "type": "action",
        "description": "Open a contact from the contact grid"
      },
      {
        "type": "assertion",
        "description": "Verify the contact detail view is displayed"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC022",
    "title": "Agent can update ticket priority and due date",
    "description": "This verifies that a staff agent can adjust ticket metadata while working in the ticket detail view.",
    "category": "Ticket List and Filtering",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open an open ticket"
      },
      {
        "type": "action",
        "description": "Change the ticket priority"
      },
      {
        "type": "action",
        "description": "Set a valid due date"
      },
      {
        "type": "assertion",
        "description": "Verify the updated ticket priority is visible"
      },
      {
        "type": "assertion",
        "description": "Verify the due date is visible"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC023",
    "title": "Reconnect a disconnected channel",
    "description": "An admin can reconnect a disconnected channel and see its status update after reconnection.",
    "category": "Channel Management",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /channels"
      },
      {
        "type": "action",
        "description": "Select a disconnected channel"
      },
      {
        "type": "action",
        "description": "Reconnect the channel"
      },
      {
        "type": "assertion",
        "description": "Verify the channel status updates after reconnection"
      },
      {
        "type": "assertion",
        "description": "Verify the channel remains in the list"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC024",
    "title": "Link a contact to a company",
    "description": "Verifies that a staff user can assign a company to a contact and see the company association update.",
    "category": "Contact Management",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /contacts"
      },
      {
        "type": "action",
        "description": "Open a contact from the contact grid"
      },
      {
        "type": "action",
        "description": "Select a company for the contact"
      },
      {
        "type": "action",
        "description": "Save the contact changes"
      },
      {
        "type": "assertion",
        "description": "Verify the contact shows a linked company"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC025",
    "title": "Create a new AI agent with knowledge scope",
    "description": "This test verifies that an admin can create an AI agent with provider, model, persona, and knowledge scope settings.",
    "category": "AI Agents (Admin)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Click the admin AI agents page link"
      },
      {
        "type": "action",
        "description": "Open the create agent form"
      },
      {
        "type": "action",
        "description": "Fill in the agent display name field with a unique name"
      },
      {
        "type": "action",
        "description": "Select a provider"
      },
      {
        "type": "action",
        "description": "Fill in the provider API key field with a valid key value"
      },
      {
        "type": "action",
        "description": "Select a model"
      },
      {
        "type": "action",
        "description": "Fill in the persona field with a short support persona"
      },
      {
        "type": "action",
        "description": "Select one or more knowledge modules"
      },
      {
        "type": "action",
        "description": "Submit the agent creation form"
      },
      {
        "type": "assertion",
        "description": "Verify the new agent appears in the list"
      },
      {
        "type": "assertion",
        "description": "Verify the selected knowledge scope is shown for the agent"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC026",
    "title": "Change an existing user's role",
    "description": "This test verifies that an admin can update a user's role and see the change reflected in the user list.",
    "category": "User Management (Admin)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Click the admin users page link"
      },
      {
        "type": "action",
        "description": "Open an existing user entry"
      },
      {
        "type": "action",
        "description": "Change the user role"
      },
      {
        "type": "action",
        "description": "Save the user changes"
      },
      {
        "type": "assertion",
        "description": "Verify the updated role is shown for the user"
      },
      {
        "type": "assertion",
        "description": "Verify the user remains visible in the list"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC027",
    "title": "Agent can search contacts and open a contact profile",
    "description": "This verifies that a staff agent can find a contact by search and open the contact detail page.",
    "category": "Ticket List and Filtering",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open the contacts page"
      },
      {
        "type": "action",
        "description": "Search for a contact by name or phone"
      },
      {
        "type": "action",
        "description": "Open a contact from the results"
      },
      {
        "type": "assertion",
        "description": "Verify the contact detail view is displayed"
      },
      {
        "type": "assertion",
        "description": "Verify the contact information is visible"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC028",
    "title": "Review a contact's ticket history and open a related ticket",
    "description": "Verifies that a staff user can inspect a contact's related tickets and jump into one of them.",
    "category": "Contact Management",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /contacts"
      },
      {
        "type": "action",
        "description": "Open a contact from the contact grid"
      },
      {
        "type": "action",
        "description": "Review the contact's ticket history"
      },
      {
        "type": "action",
        "description": "Open one of the listed tickets"
      },
      {
        "type": "assertion",
        "description": "Verify the ticket detail view is displayed"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC029",
    "title": "Configure company AI scope and default agent",
    "description": "Verifies that an admin can update a company's AI scope settings and save a default AI agent selection.",
    "category": "Company Management",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /companies"
      },
      {
        "type": "action",
        "description": "Open a company from the company list"
      },
      {
        "type": "action",
        "description": "Toggle AI autoreply for the company"
      },
      {
        "type": "action",
        "description": "Select knowledge modules for the company"
      },
      {
        "type": "action",
        "description": "Choose a default AI agent"
      },
      {
        "type": "action",
        "description": "Save the company changes"
      },
      {
        "type": "assertion",
        "description": "Verify the company AI configuration is displayed as saved"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC030",
    "title": "Delete a channel from the channel list",
    "description": "An admin can delete a channel and see it removed from the channel list.",
    "category": "Channel Management",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /channels"
      },
      {
        "type": "action",
        "description": "Select a channel"
      },
      {
        "type": "action",
        "description": "Delete the channel"
      },
      {
        "type": "assertion",
        "description": "Verify the deleted channel is no longer displayed"
      },
      {
        "type": "assertion",
        "description": "Verify the channel list updates"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC031",
    "title": "Edit an existing AI agent configuration",
    "description": "This test verifies that an admin can update an existing AI agent and see the revised configuration saved.",
    "category": "AI Agents (Admin)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Click the admin AI agents page link"
      },
      {
        "type": "action",
        "description": "Open an existing agent"
      },
      {
        "type": "action",
        "description": "Change the agent persona"
      },
      {
        "type": "action",
        "description": "Save the agent changes"
      },
      {
        "type": "assertion",
        "description": "Verify the updated agent configuration is shown"
      },
      {
        "type": "assertion",
        "description": "Verify the agent remains in the list"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC032",
    "title": "Create a knowledge module",
    "description": "Verifies that a staff user can create a knowledge module and see it appear in the module list.",
    "category": "Knowledge Base",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /knowledge-base"
      },
      {
        "type": "action",
        "description": "Click the control to create a new knowledge module"
      },
      {
        "type": "action",
        "description": "Fill in the module title field with a new title"
      },
      {
        "type": "action",
        "description": "Fill in the module slug field with a new slug"
      },
      {
        "type": "action",
        "description": "Fill in the module group label field with a new group label"
      },
      {
        "type": "action",
        "description": "Fill in the module body field with new markdown content"
      },
      {
        "type": "action",
        "description": "Save the knowledge module"
      },
      {
        "type": "assertion",
        "description": "Verify the new knowledge module appears in the list"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC033",
    "title": "Switch between light and dark theme",
    "description": "This test verifies that a signed-in user can toggle the theme in settings and see the preference change immediately.",
    "category": "Settings and Profile",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Click the settings page link"
      },
      {
        "type": "action",
        "description": "Toggle the theme preference"
      },
      {
        "type": "assertion",
        "description": "Verify the theme appearance changes"
      },
      {
        "type": "assertion",
        "description": "Verify the selected theme preference is shown"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC034",
    "title": "Edit a knowledge module",
    "description": "Verifies that a staff user can update an existing knowledge module and see the saved content reflected.",
    "category": "Knowledge Base",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /knowledge-base"
      },
      {
        "type": "action",
        "description": "Open an existing knowledge module"
      },
      {
        "type": "action",
        "description": "Change the module content"
      },
      {
        "type": "action",
        "description": "Save the knowledge module"
      },
      {
        "type": "assertion",
        "description": "Verify the updated knowledge module content is displayed"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC035",
    "title": "Save OpenAI configuration in settings",
    "description": "This test verifies that an admin can enter OpenAI settings in profile settings and see the configuration persist.",
    "category": "Settings and Profile",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Click the settings page link"
      },
      {
        "type": "action",
        "description": "Fill in the OpenAI API key field with a valid key value"
      },
      {
        "type": "action",
        "description": "Fill in the OpenAI base URL field with a valid base URL"
      },
      {
        "type": "action",
        "description": "Submit the settings form"
      },
      {
        "type": "assertion",
        "description": "Verify a success confirmation is visible"
      },
      {
        "type": "assertion",
        "description": "Verify the OpenAI configuration is shown as saved"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC036",
    "title": "Deactivate an existing user",
    "description": "This test verifies that an admin can deactivate a user and see the user marked inactive.",
    "category": "User Management (Admin)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Click the admin users page link"
      },
      {
        "type": "action",
        "description": "Open an existing user entry"
      },
      {
        "type": "action",
        "description": "Turn off the active status"
      },
      {
        "type": "action",
        "description": "Save the user changes"
      },
      {
        "type": "assertion",
        "description": "Verify the user is marked inactive"
      },
      {
        "type": "assertion",
        "description": "Verify the updated status is visible in the list"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC037",
    "title": "Delete a knowledge module",
    "description": "Verifies that a staff user can delete a knowledge module and no longer see it in the list.",
    "category": "Knowledge Base",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Navigate to /knowledge-base"
      },
      {
        "type": "action",
        "description": "Open an existing knowledge module"
      },
      {
        "type": "action",
        "description": "Delete the knowledge module"
      },
      {
        "type": "assertion",
        "description": "Verify the knowledge module is removed from the list"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC038",
    "title": "Invalid credentials are rejected during sign in",
    "description": "This verifies that signing in with invalid credentials shows an error and does not grant access.",
    "category": "Admin Login",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with invalid@example.com"
      },
      {
        "type": "action",
        "description": "Fill in the password field with invalid-password"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "assertion",
        "description": "Verify a login error message is visible"
      },
      {
        "type": "assertion",
        "description": "Verify the dashboard is not displayed"
      }
    ],
    "priority": "Low"
  },
  {
    "id": "TC039",
    "title": "Access the signup completion page and set a password",
    "description": "A public user can open the signup completion page from a verification link and finish account setup by setting a password.",
    "category": "Signup Flow",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /signup/complete"
      },
      {
        "type": "action",
        "description": "Fill in a valid password in the password field"
      },
      {
        "type": "action",
        "description": "Confirm the password in the confirmation field"
      },
      {
        "type": "action",
        "description": "Submit the signup completion form"
      },
      {
        "type": "assertion",
        "description": "Verify the account setup completion state is displayed"
      },
      {
        "type": "assertion",
        "description": "Verify access to the dashboard is available"
      }
    ],
    "priority": "Low"
  },
  {
    "id": "TC040",
    "title": "Delete an AI agent",
    "description": "This test verifies that an admin can delete an AI agent and see it removed from the list.",
    "category": "AI Agents (Admin)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Click the admin AI agents page link"
      },
      {
        "type": "action",
        "description": "Open an existing agent"
      },
      {
        "type": "action",
        "description": "Delete the agent"
      },
      {
        "type": "assertion",
        "description": "Verify the agent is no longer shown in the list"
      },
      {
        "type": "assertion",
        "description": "Verify the list reflects the removal"
      }
    ],
    "priority": "Low"
  },
  {
    "id": "TC041",
    "title": "Open the signup entry point from login",
    "description": "A public user can reach the signup chat flow from the login screen.",
    "category": "Signup Flow",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Open the signup option"
      },
      {
        "type": "assertion",
        "description": "Verify the signup chat flow is displayed"
      }
    ],
    "priority": "Low"
  },
  {
    "id": "TC042",
    "title": "Review audit logs and move through pages",
    "description": "An admin can open the audit log viewer, inspect entries, and move between pages while seeing results remain available.",
    "category": "Audit Logs (Admin)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open the audit logs page"
      },
      {
        "type": "assertion",
        "description": "Verify audit log entries are displayed"
      },
      {
        "type": "action",
        "description": "Move to the next page of audit logs"
      },
      {
        "type": "assertion",
        "description": "Verify a paginated audit log list is still displayed"
      }
    ],
    "priority": "Low"
  },
  {
    "id": "TC043",
    "title": "Complete signup with password confirmation mismatch",
    "description": "A public user sees password validation when the confirmation does not match during signup completion.",
    "category": "Signup Flow",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /signup/complete"
      },
      {
        "type": "action",
        "description": "Fill in a valid password in the password field"
      },
      {
        "type": "action",
        "description": "Confirm the password with a different value in the confirmation field"
      },
      {
        "type": "action",
        "description": "Submit the signup completion form"
      },
      {
        "type": "assertion",
        "description": "Verify a password validation error is visible"
      }
    ],
    "priority": "Low"
  },
  {
    "id": "TC044",
    "title": "Filter audit logs by action type",
    "description": "An admin can narrow the audit trail to a specific action type and see the list update accordingly.",
    "category": "Audit Logs (Admin)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open the audit logs page"
      },
      {
        "type": "action",
        "description": "Filter the audit log list by an action type"
      },
      {
        "type": "assertion",
        "description": "Verify filtered audit log entries are displayed"
      }
    ],
    "priority": "Low"
  },
  {
    "id": "TC045",
    "title": "Filter audit logs by entity type",
    "description": "An admin can narrow the audit trail to a specific entity type and see matching entries.",
    "category": "Audit Logs (Admin)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open the audit logs page"
      },
      {
        "type": "action",
        "description": "Filter the audit log list by an entity type"
      },
      {
        "type": "assertion",
        "description": "Verify filtered audit log entries are displayed"
      }
    ],
    "priority": "Low"
  },
  {
    "id": "TC046",
    "title": "Filter audit logs by date range",
    "description": "An admin can apply a date range filter and see the audit log list constrained to that period.",
    "category": "Audit Logs (Admin)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open the audit logs page"
      },
      {
        "type": "action",
        "description": "Set a valid date range filter for the audit log list"
      },
      {
        "type": "assertion",
        "description": "Verify audit log entries for the selected period are displayed"
      }
    ],
    "priority": "Low"
  },
  {
    "id": "TC047",
    "title": "Search audit logs after combining filters",
    "description": "An admin can combine audit filters and still see a valid result set when the filters overlap.",
    "category": "Audit Logs (Admin)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open the audit logs page"
      },
      {
        "type": "action",
        "description": "Apply an action type filter"
      },
      {
        "type": "action",
        "description": "Apply an entity type filter"
      },
      {
        "type": "assertion",
        "description": "Verify filtered audit log entries are displayed"
      }
    ],
    "priority": "Low"
  },
  {
    "id": "TC048",
    "title": "Admin can choose a WhatsApp provider when adding a channel",
    "description": "The Add WhatsApp channel dialog offers Baileys / QR and Africa's Talking, with Baileys selected by default.",
    "category": "Channels (WhatsApp providers)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open the Channels page"
      },
      {
        "type": "action",
        "description": "Click Add Channel and choose WhatsApp"
      },
      {
        "type": "assertion",
        "description": "Verify a Provider choice with 'Baileys / QR' and \"Africa's Talking\" options is displayed"
      },
      {
        "type": "assertion",
        "description": "Verify 'Baileys / QR' is selected by default and the submit button reads 'Create & Scan QR'"
      },
      {
        "type": "action",
        "description": "Select \"Africa's Talking\""
      },
      {
        "type": "assertion",
        "description": "Verify the submit button no longer offers QR scanning and the hint mentions pasting a webhook URL into the Africa's Talking dashboard"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC049",
    "title": "Africa's Talking channel shows its webhook URL to an admin",
    "description": "Creating an Africa's Talking channel skips the QR dialog and opens the channel detail with the copyable inbound webhook URL. Precondition: the API has non-empty AFRICASTALKING_USERNAME and AFRICASTALKING_API_KEY (channel creation refuses to proceed without both). Dummy non-empty values are sufficient for a mocked/local creation test because creation only validates presence and does not call Africa's Talking; real credentials are needed only for live sending.",
    "category": "Channels (WhatsApp providers)",
    "steps": [
      {
        "type": "action",
        "description": "Ensure the API is started with non-empty AFRICASTALKING_USERNAME and AFRICASTALKING_API_KEY (dummy values are fine for a mocked/local run)"
      },
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open the Channels page"
      },
      {
        "type": "action",
        "description": "Click Add Channel, enter a name and a phone number, and select \"Africa's Talking\""
      },
      {
        "type": "action",
        "description": "Submit the dialog"
      },
      {
        "type": "assertion",
        "description": "Verify no QR code dialog is shown and the channel detail page opens"
      },
      {
        "type": "assertion",
        "description": "Verify the \"Africa's Talking inbound webhook\" card shows a URL containing /api/v1/inbound/whatsapp/africas-talking/"
      },
      {
        "type": "assertion",
        "description": "Verify a 'Copy URL' button is available"
      }
    ],
    "priority": "High"
  },
  {
    "id": "TC050",
    "title": "Channel cards show provider and capability badges",
    "description": "Baileys and Africa's Talking WhatsApp channels display their provider and API-driven capability badges on the Channels page and channel detail.",
    "category": "Channels (WhatsApp providers)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open the Channels page"
      },
      {
        "type": "assertion",
        "description": "Verify each WhatsApp channel card shows a provider badge of 'Baileys' or \"Africa's Talking\""
      },
      {
        "type": "assertion",
        "description": "Verify an Africa's Talking card shows 'Direct text' and 'Media' badges plus muted 'No groups', 'No QR' and 'No reconnect' badges"
      },
      {
        "type": "assertion",
        "description": "Verify a Baileys card shows 'Groups', 'QR pairing' and 'Reconnect' badges"
      },
      {
        "type": "action",
        "description": "Open an Africa's Talking channel detail page"
      },
      {
        "type": "assertion",
        "description": "Verify the provider badge and the capability badges are also displayed on the detail header"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC051",
    "title": "Reconnect is unavailable on a disconnected Africa's Talking channel",
    "description": "A disconnected Africa's Talking channel has no session to reconnect, so the Reconnect action is replaced by a configuration hint; Baileys channels keep Reconnect.",
    "category": "Channels (WhatsApp providers)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open the Channels page"
      },
      {
        "type": "action",
        "description": "Locate a disconnected Africa's Talking channel card"
      },
      {
        "type": "assertion",
        "description": "Verify the status reads 'CHECK CONFIGURATION' rather than 'NEEDS REAUTH'"
      },
      {
        "type": "assertion",
        "description": "Verify no 'Reconnect' button is shown and a 'Review its configuration' link to the channel detail is displayed"
      },
      {
        "type": "action",
        "description": "Locate a disconnected Baileys channel card"
      },
      {
        "type": "assertion",
        "description": "Verify a 'Reconnect' button is shown"
      }
    ],
    "priority": "Medium"
  },
  {
    "id": "TC052",
    "title": "WhatsApp group ticket creation is unavailable on Africa's Talking channels",
    "description": "Group tickets are Baileys-only; selecting an Africa's Talking channel in the New ticket modal disables the WhatsApp group option.",
    "category": "Channels (WhatsApp providers)",
    "steps": [
      {
        "type": "action",
        "description": "Navigate to /login"
      },
      {
        "type": "action",
        "description": "Fill in the email field with {{LOGIN_USER}}"
      },
      {
        "type": "action",
        "description": "Fill in the password field with {{LOGIN_PASSWORD}}"
      },
      {
        "type": "action",
        "description": "Submit the login form"
      },
      {
        "type": "action",
        "description": "Open the Tickets page and click New ticket"
      },
      {
        "type": "action",
        "description": "Select an Africa's Talking WhatsApp channel"
      },
      {
        "type": "assertion",
        "description": "Verify the 'WhatsApp group' toggle is disabled and the text 'Groups require a Baileys channel' is displayed"
      },
      {
        "type": "assertion",
        "description": "Verify the 'Direct' mode is selected"
      },
      {
        "type": "assertion",
        "description": "Verify a direct ticket can still be composed on the Africa's Talking channel"
      }
    ],
    "priority": "Medium"
  }
]
