> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jelou.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Test your workflows

> Test your workflows directly from the Brain Studio canvas with a panel that shows the conversation, executed nodes, and the detail of each step.

The Tester is the panel that opens from the canvas to test a workflow before publishing it. You can send messages as if you were an end user, see every node that executes, and inspect input, output, and state at any step of the flow. It shares the same visual interface as the [production Debugger](/en/guides/getting-started/ejecuciones-workflow), so learning one is learning the other.

<Frame caption="Tester open over the canvas">
  <img src="https://mintcdn.com/jelouai/wRDmKJuKtAf5P_aE/assets/images/brain/tester-overview-en.png?fit=max&auto=format&n=wRDmKJuKtAf5P_aE&q=85&s=f610b3e16f1f993866bef7bbd9ea8df2" alt="Tester panel with the conversation on the left and the canvas behind" width="1440" height="900" data-path="assets/images/brain/tester-overview-en.png" />
</Frame>

## Open the Tester

In the canvas top bar, click **Test**. A side panel will open with the workflow header, the conversation area, and a field to type messages.

<Note>
  If the workflow has never been executed, the first message you send starts a new session. Each session counts as one execution (see [Workflow Executions](/en/guides/getting-started/ejecuciones-workflow)).
</Note>

## Messages view and Execution view

The panel has a toggle at the bottom with two modes:

| Mode          | What it shows                                                                                                                  |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Messages**  | Only the conversation between the bot and the simulated user. Useful to validate the conversational flow without distractions. |
| **Execution** | Conversation + indicators for every workflow node that executed (icon, name, and status). Useful to debug internal logic.      |

<Frame caption="Toggle between Messages and Execution">
  <img src="https://mintcdn.com/jelouai/wRDmKJuKtAf5P_aE/assets/images/brain/tester-view-toggle-en.png?fit=max&auto=format&n=wRDmKJuKtAf5P_aE&q=85&s=10348c13283a0060ba68f7459f5428c8" alt="ViewModeToggle at the bottom of the panel" width="228" height="36" data-path="assets/images/brain/tester-view-toggle-en.png" />
</Frame>

## Node indicators

In Execution view, every workflow node that runs during the test appears as a small card interleaved with the messages. The card shows:

* **Canvas icon** of the node (Start, HTTP, Code, AI Agent, Conditional, Tool, etc.)
* **Node name** as configured in the canvas
* **Status** (green for success, red for error)

When several nodes execute in sequence within the same execution, they are grouped into a single card with a footer (`N nodes · Xms total`). If the workflow calls a sub-skill, the inner sub-skill nodes appear as a separate group to mark the execution boundary.

<Frame caption="Grouped node indicators">
  <img src="https://mintcdn.com/jelouai/wRDmKJuKtAf5P_aE/assets/images/brain/tester-node-indicators-en.png?fit=max&auto=format&n=wRDmKJuKtAf5P_aE&q=85&s=5f05f0910c7411cc8b65172a56d3a71e" alt="Node cards grouped with icon, name, and status" width="446" height="622" data-path="assets/images/brain/tester-node-indicators-en.png" />
</Frame>

## Node detail panel

Clicking on any indicator opens a resizable side panel with the full execution information for that node:

<AccordionGroup>
  <Accordion title="Input">
    The exact payload that entered the node.
  </Accordion>

  <Accordion title="Output">
    What the node returned (response, generated message, conditional result, etc.).
  </Accordion>

  <Accordion title="Initial state / Final state">
    Snapshot of `$memory` and `$context` before and after the node executed.
  </Accordion>

  <Accordion title="Errors">
    If the node failed, message and stack trace.
  </Accordion>
</AccordionGroup>

### Copy the path of a value

Click any key inside the JSON of `Initial state` or `Final state` to copy the full path in bracket notation to the clipboard. For example, clicking the `url` key inside `finalState.tool` copies `finalState.tool.url`. A "Copied ✓" tooltip confirms the action.

<Tip>
  The copied path pastes directly into any variable expression field (`{{finalState.tool.url}}`) or bug report without having to rebuild it manually.
</Tip>

## Detail panel actions

Above the input/output, the panel has contextual buttons:

<Steps>
  <Step title="Go to node">
    Centers the canvas behind the Tester on the corresponding node. Only appears for nodes in the active workflow. For internal sub-skill nodes, the button is hidden because the node does not live in this canvas.
  </Step>

  <Step title="Debug Tool">
    Only appears for Tool-type nodes. Opens the Tool's internal execution with the full list of inner nodes that ran, including their own input/output/errors.
  </Step>
</Steps>

## Interactive bubbles

Bubbles that are interactive in production (buttons, lists, CTAs) are now clickable inside the Tester. You don't have to manually type the response to advance the flow: click the button as the end user would.

| Bubble type       | How to simulate                                                                                                                                                |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Quick replies** | Pill-style buttons under the message. Click sends the `payload.targetId` and advances to the destination node.                                                 |
| **List options**  | Cards with title and optional description. Click resolves the option against `node.configuration.messages[0].options` and advances through the correct branch. |
| **CTA URL**       | Button with an external-link icon. Click opens the URL in a new browser tab. Does not advance the flow (same as on WhatsApp).                                  |
| **Carousel**      | Horizontal cards with image, title, and description. The URL button opens the link in a new tab.                                                               |

<Frame caption="List bubble with clickable options">
  <img src="https://mintcdn.com/jelouai/wRDmKJuKtAf5P_aE/assets/images/brain/tester-interactive-list-en.png?fit=max&auto=format&n=wRDmKJuKtAf5P_aE&q=85&s=30a1273a8e6ce5a9bc4c0b93692b7652" alt="Numbered list with three options rendered as cards" width="291" height="230" data-path="assets/images/brain/tester-interactive-list-en.png" />
</Frame>

## Limitations

* **Partial node compatibility**: some nodes are not fully supported by the Tester and may behave differently than they would in production. When the Tester detects one of these nodes in your flow, it shows a warning with the option **Test on WhatsApp** for a complete test.
  <Frame caption="Warning for incompatible nodes in the Tester">
    <img src="https://mintcdn.com/jelouai/Lrfxiyx0IxnbhjnM/assets/images/brain/tester-incompatible-nodes-en.png?fit=max&auto=format&n=Lrfxiyx0IxnbhjnM&q=85&s=4e7cb9291dedf2cf4cd5d5dff083c747" alt="Tester warning indicating partial compatibility and suggesting testing on WhatsApp" width="2704" height="1286" data-path="assets/images/brain/tester-incompatible-nodes-en.png" />
  </Frame>
* **Inner sub-skill nodes**: the **Go to node** button does not apply to nodes that live on a different canvas than the active one. To inspect them, open the sub-skill separately or use **Debug Tool** if the container is a Tool.
* **Tests don't affect production**: the Tester session is independent of real traffic. Conversations, variables, and memory you generate here are not logged in the [production Debugger](/en/guides/getting-started/ejecuciones-workflow) and don't count as real user conversations (they do count as executions for billing).
* **One session at a time**: if you close the Tester without finishing a conversation, the session is discarded. The next time you click **Test**, a new one starts.

## Use cases

<AccordionGroup>
  <Accordion title="Debug an API failing in production">
    A telco team builds a flow that validates invoices via API. The API responds inconsistently and the flow breaks in production. They run the test in the Tester, click the failing HTTP node, see the full request and response, and copy the path of the problematic field to report it to the backend team, all without leaving the builder.
  </Accordion>

  <Accordion title="Validate Conditional logic">
    A retail QA team validates subscription billing flows before each release. One Conditional branch always causes problems because the matching logic depends on strings with accents. They run the test, see exactly which term matched in the Conditional node panel, and fix it without escalating to engineering.
  </Accordion>

  <Accordion title="Validate an AI Agent response">
    A product manager configures an AI Agent that asks for name and email and saves them into `$memory.datosUsuarios`. From the Tester they confirm the Final state has the correct structure (`{ nombre, correo }`), copy the path `finalState.datosUsuarios.correo`, and use it in the next text node without rebuilding it manually.
  </Accordion>

  <Accordion title="Test a sub-skill from the parent flow">
    A parent workflow calls an identity-validation sub-skill. In the Tester they see the sub-skill rendered as a separate group of indicators. They click the Tool node inside the sub-skill and use **Debug Tool** to inspect the Tool's internal execution without opening the sub-skill in another tab.
  </Accordion>

  <Accordion title="Simulate a conversation with buttons">
    A builder constructs a flow with a Buttons node offering three options. Instead of typing "1", "2", or "3" manually as before, they click the button directly inside the Tester and the flow advances to the correct destination node, just like the end user will on WhatsApp.
  </Accordion>
</AccordionGroup>

## Related articles

<CardGroup cols={2}>
  <Card title="Your first workflow" icon="flag" href="/en/guides/getting-started/tu-primer-workflow">
    Build your first workflow step by step and test it from the Tester.
  </Card>

  <Card title="Workflow executions" icon="play" href="/en/guides/getting-started/ejecuciones-workflow">
    How executions are counted and their impact on billing.
  </Card>

  <Card title="Share a test link" icon="share" href="/en/guides/getting-started/compartir-link-pruebas">
    Generate a public link or private WhatsApp session so your team can test the workflow.
  </Card>

  <Card title="Publish versions" icon="rocket" href="/en/guides/getting-started/publicar-versiones">
    When the flow is ready in the Tester, publish a version for production.
  </Card>
</CardGroup>
