World’s largest virtual agentic engineering & quality conference

WHENAUG 19-21
WHEREVirtual · Global
Register Now
Agent TestingAI

How to Test a Botpress Chatbot

The Botpress Emulator tests one conversation at a time, not the hundreds of real-user chats your Autonomous Node must survive. Here's how to test one.

Author

Akarshi Aggarwal

Author

Author

Salman Khan

Reviewer

Last Updated on: July 24, 2026

You build a chatbot in Botpress Studio, drop in an Autonomous Node, wire it to a Knowledge Base, and test it in the Emulator. It answers cleanly. You ship it. Then a real user asks the same thing three ways in one message, gets impatient, and the Autonomous Node picks the wrong tool and confidently returns a useless answer.

That gap is structural. The Autonomous Node uses a large language model to decide what the bot says and which tools it runs, so the same input can take different paths on different runs. Botpress makes it fast to build a capable bot, and its open-source core has over 14,000 stars on GitHub, but a fast build does not tell you whether the bot survives a real user.

This guide covers how a Botpress chatbot is actually built, why it passes the Emulator and fails in production, the four dimensions worth testing, and a step-by-step approach, from Botpress's own tools to automated evaluation over the Chat API.

Overview

What Is a Botpress Chatbot?

A bot built in Botpress Studio from flows, nodes, and cards, with an LLM-driven Autonomous Node that decides responses and tool calls, grounded on a Knowledge Base, deployed on Botpress Cloud or self-hosted.

What Does the Platform Give You for Testing?

  • The Emulator runs one manual conversation at a time while you build.
  • The Event Debugger, Logs, and JSON tabs show how the bot understood a message and why it decided what it did.

What Do Those Tools Miss?

They run one conversation at a time on inputs you typed. They do not sweep hundreds of persona-varied, adversarial, real-user conversations against the deployed bot or score it for hallucination, tone, and safety.

How Do You Close That Gap?

Point TestMu AI's Agent Testing platform at the bot's Chat API endpoint. It runs autonomous evaluators across 10 personas, scores every conversation on 9 quality metrics, and returns a Green, Yellow, or Red verdict.

What Is a Botpress Chatbot?

Botpress is a builder for LLM chatbots and agents, available as an open-source core and a hosted Botpress Cloud. You build in Studio as a flow of nodes, but the flagship is the Autonomous Node, which the docs describe as using an LLM to decide what the bot should say and which tools to run. That autonomy is why testing it is harder than testing a scripted flow.

What a real Botpress chatbot is made of:

  • Flows made of nodes and cards, with standard nodes running their cards in sequence and the Autonomous Node deciding actions at runtime.
  • The LLMz engine that directs the Autonomous Node and keeps prompts more agnostic to variance between LLMs.
  • Knowledge Bases the bot grounds on, queried by the Autonomous Node's built-in search tool.
  • A deployment surface, the Chat API on Botpress Cloud or a self-hosted endpoint, that exposes the bot to a web widget or another service.

Because the Autonomous Node chooses its own path, two runs of the same input can route differently. That non-determinism is the point of an LLM-driven bot, and it is exactly what a single fixed input-output assertion cannot capture. For the test types that apply to any bot, our overview of chatbot testing is a useful primer.

Why Do Botpress Chatbots Pass the Emulator but Fail in Production?

The Emulator is a good build-time check. It is also a single conversation, typed by the person who built the bot, close to the path they had in mind. Most production failures live in the inputs nobody typed there.

Failure ModeWhere It Comes FromWhat Breaks with a Real User
Wrong tool or flow routingThe Autonomous Node decides which tool to run from natural-language instructions, and ambiguous phrasing sends it down a branch you never exercised.The bot calls a search tool when it should have called the booking tool, and answers confidently anyway.
Knowledge Base hallucinationThe search tool returns weak or no matches, and the model fills the gap instead of deferring.The bot invents a policy or fact the Knowledge Base never contained, and the user acts on it.
Context loss across turnsState that survived a two-turn Emulator test gets dropped across a longer, topic-switching conversation.The bot re-asks for information the user already gave, or loses the thread mid-task.
Prompt injection through tool useUser input feeds an LLM that can invoke tools, so a crafted message can try to override instructions or trigger unintended tool calls.The bot leaks context or ignores a policy because a message told it to.
Silent drift after a model or LLMz changeUpgrading the LLMz version or swapping the underlying LLM changes routing and phrasing in ways the Emulator never re-checks.Behavior that worked last release degrades, and nothing forces a re-test before deploy.
Test across 3000+ browser and OS environments with TestMu AI

What Should You Test in a Botpress Chatbot?

Whether the bot is a support assistant, a lead qualifier, or an internal helpdesk, the same four dimensions decide whether it is ready for real users. Each needs a different kind of scenario, not just another Emulator run.

DimensionWhat It ChecksExample on a Botpress Bot
Task SuccessWhether the bot completed the job, including the tool calls the Autonomous Node made to get there.The right tool fires with correct arguments, and the reply reflects the tool's actual result.
Conversation QualityCoherence across turns, context retention, and recovery when the user changes direction.The bot holds a constraint from turn one and applies it to a follow-up several turns later.
SafetyNo invented facts from the Knowledge Base, no PII leakage, and refusals where policy requires them.The bot refuses to act on instructions injected into a message and never fabricates a value for a tool call.
ResilienceBehavior under adversarial input, ambiguous phrasing, and tool or API failures.The bot degrades gracefully when a tool times out, instead of hallucinating a result to fill the gap.

How Do You Test a Botpress Chatbot, Step by Step?

Testing happens in three layers: what you check by hand in Studio, how you drive the deployed bot over the Chat API, and how you score that bot against the messy real-user traffic the first layer never simulates.

1. Start With the Emulator and Event Debugger

The Emulator lets you chat with the bot while building. The Event Debugger, opened with a keyboard shortcut, shows how the bot understood a message and why it made a decision, and the Logs and JSON tabs expose the raw event payload, NLU results, and decision data for a single exchange.

This is the right place to confirm a specific path works and to debug why a specific turn went wrong. Its blind spot is volume and variety: Emulator conversations are not saved, run one at a time, and only cover the inputs you typed, not the angry user or the injection payload you did not think to try.

2. Drive the Deployed Bot Over the Chat API

To test at scale, reach the deployed bot the way a channel does. Enable the Chat integration to get a webhook ID, then talk to the bot at chat.botpress.cloud/webhook_id with an x-user-key JWT. The flow is asynchronous: create a conversation, send the user message with createMessage, then read the reply from listMessages, where a text reply sits in messages[].payload.text.

# Send a user message over the Botpress Chat API, then read the reply
curl -X POST "https://chat.botpress.cloud/$WEBHOOK_ID/messages" \
  -H "x-user-key: $USER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"conversationId": "$CONV_ID", "payload": {"type": "text", "text": "reset my password"}}'

# The reply is asynchronous: list messages and read payload.text
curl "https://chat.botpress.cloud/$WEBHOOK_ID/conversations/$CONV_ID/messages" \
  -H "x-user-key: $USER_KEY"
# { "messages": [ { "payload": { "type": "text", "text": "Sure, let's reset it..." } } ] }

Because the reply is asynchronous, front the Chat API with a thin synchronous endpoint that sends a message, waits for the bot's reply, and returns payload.text. Self-hosted bots can use the synchronous Converse API instead. Either way, you now have a message-in, text-out endpoint the third layer can hammer.

3. Score the Deployed Bot at Scale, Automatically

This is where TestMu AI's Agent Testing plugs in, at the endpoint the bot already serves. Instead of Emulator runs you typed, autonomous evaluators hold full multi-turn conversations with the deployed bot the way real users would, across 10 pre-built personas including confused, impatient, angry, and off-script users, and score every conversation on the same 9 quality metrics each time.

Connecting a Botpress bot takes only its endpoint plus a prompt describing what it should and should not do. The platform generates 60 to 100 or more scenarios from that prompt automatically, spread across happy-path flows, edge cases, and adversarial input, so coverage stops depending on which failure cases you thought to try in the Emulator.

Testing a Botpress Chatbot With TestMu AI's Agent Testing

Connecting Agent Testing to a Botpress bot does not require an SDK or a change to the flow. It calls the bot's synchronous endpoint directly, adapting to its request shape with a body template and a response path, then layers three inputs on top before generating a full scenario set.

# Point the evaluator at a synchronous Botpress chat endpoint
testmu-a2a test \
  --agent https://your-botpress-proxy/chat \
  --header "x-user-key: $USER_KEY" \
  --body-template '{"payload": {"type": "text", "text": "{{message}}"}}' \
  --response-path "payload.text" \
  --spec "Support bot that answers account questions and calls the reset-password tool" \
  --count 30
  • Upload the same PRD, tool spec, or Knowledge Base the bot was built from, and the platform parses it for behavioral requirements and scenario seeds.
  • Paste in the Autonomous Node's instructions, so the evaluation baseline matches what the bot is actually told to do.
  • Add focus areas that weight scenario generation toward what matters most this run, such as tool-selection accuracy and refusal behavior.

From there, autonomous evaluators run the generated scenarios against the endpoint and score each on the 9 quality metrics. A tool call is checked against what it actually should have done, not just whether it returned a response, and every run rolls up into a Green, Yellow, or Red verdict, the same model our overview of AI agent testing walks through in depth.

Note

Note: Point TestMu AI's Agent Testing at your Botpress endpoint and get a Green, Yellow, or Red production-readiness verdict before your first real user does. Start testing free

Which Metrics Matter for a Botpress Chatbot?

A clean Emulator run tells you one path worked. It does not tell you whether the answer was honest, complete, or safe on inputs you did not try. Agent Testing scores each conversation on 9 quality metrics that apply to any chat bot, tuned for the ways an LLM-driven, tool-using bot goes wrong.

  • Hallucination detection catches invented facts and, for agents, invented tool arguments the model filled in rather than grounded.
  • Context awareness checks whether the bot's state actually held across a long conversation, not just a two-turn Emulator test.
  • Completeness and root-cause understanding check whether the bot solved the real problem or a related one that looked close.
  • Tone consistency and bias detection check for the same response quality regardless of how the user phrased the request.

Every score also carries a confidence level, High, Medium, or Low, based on how many scenarios actually ran, so a Green built on ten scenarios is never mistaken for a Green built on three hundred. That distinction is what separates a demo that passed from a bot that is ready.

How Do You Red-Team a Botpress Chatbot?

The four dimensions cover a user trying to get help. Red-teaming covers a user, or a poisoned document, trying to break the bot on purpose: override its instructions, exfiltrate data through a tool, or coax out PII. Botpress bots are exposed here because the Autonomous Node feeds user input into an LLM that can invoke tools and APIs. The testmu-a2a-cli runs adversarial probes against the endpoint, scoring categories including prompt injection, jailbreak, data exfiltration, and PII leakage at basic, intermediate, or advanced intensity.

testmu-a2a redteam \
  --agent https://your-botpress-proxy/chat \
  --header "x-user-key: $USER_KEY" \
  --intensity advanced \
  --spec "Botpress support bot with account and reset-password tools"

# Target specific attack categories only
testmu-a2a redteam \
  --agent https://your-botpress-proxy/chat \
  --categories prompt-injection,jailbreak,pii-leakage

The output is a letter grade, A+ to F, per category rather than one pass or fail, because a bot can resist a direct jailbreak and still follow instructions injected through a retrieved document. For any bot whose Autonomous Node calls tools that mutate data, that per-category grade is the gap between a vulnerability you found and one an attacker finds.

Austin Siewert

Austin Siewert

Co-Founder, Steadfast Systems

Discovered @TestMu AI yesterday. Best browser testing tool I've found for my use case. Great pricing model for the limited testing I do 👏

2M+ Devs and QAs rely on TestMu AI

Deliver immersive digital experiences with Next-Generation Mobile Apps and Cross Browser Testing Cloud

How Do You Run Botpress Chatbot Tests in CI/CD?

A flow edit, a new tool, a Knowledge Base update, or an LLMz change ships the moment you deploy. The testmu-a2a-cli adds the endpoint-level sweep to your pipeline: it installs with pip, authenticates from CI secrets instead of an interactive login, and writes JUnit XML that GitHub Actions, GitLab CI, and Jenkins read natively.

# .github/workflows/botpress-chatbot-tests.yml
name: Botpress Chatbot Tests
on: [push]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.11'
      - name: Install TestMu A2A CLI
        run: pip install testmu-a2a-cli
      - name: Run Botpress chatbot regression suite
        env:
          TESTMU_USERNAME: ${{ secrets.TESTMU_USERNAME }}
          TESTMU_ACCESS_KEY: ${{ secrets.TESTMU_ACCESS_KEY }}
          USER_KEY: ${{ secrets.BOTPRESS_USER_KEY }}
        run: |
          testmu-a2a test \
            --agent ${{ vars.BOTPRESS_ENDPOINT }} \
            --header "x-user-key: $USER_KEY" \
            --body-template '{"payload":{"type":"text","text":"{{message}}"}}' \
            --response-path "payload.text" \
            --spec "Botpress support bot with account and reset-password tools" \
            --format junit --output results.xml
      - name: Publish results
        uses: dorny/test-reporter@v1
        if: always()
        with:
          name: Botpress Chatbot Test Results
          path: results.xml
          reporter: java-junit

Gate on exit code: 0 for all scenarios passed, 1 for any failure. Run the full evaluation for flow, tool, or model changes, and a smaller smoke set for a change that does not touch bot behavior. The discipline is the same one covered in our guide to AI agent regression testing.

What Won't Automated Testing Catch?

A Green verdict means the bot passed on the scenarios you ran, with the personas you tested, on the metrics you configured. Here is what it does not cover:

  • A low-confidence Green is not a cleared launch. It means too few scenarios ran to trust the score yet, so run more, especially on hallucination and injection resistance, before you ship.
  • Channel-specific rendering is not covered. A web widget, WhatsApp, and Slack each render cards differently, so smoke-test the actual channel you deploy on.
  • Non-determinism means one clean run is not proof. Run the scenario set enough times to see the distribution of paths the Autonomous Node actually takes.
  • Highly specialized domains need custom rules. The default 9 metrics cover general quality well, but a bot giving medical, legal, or financial guidance needs custom validation criteria on top.
  • A stale spec gives you a stale verdict. If the bot's instructions changed and the prompt describing correct behavior did not, some regressions slip through.

None of this is a reason to skip testing. It is a reason to keep testing after launch, not just before it.

Conclusion

Take the Botpress chatbot you already have passing in the Emulator. Point it at a harder question than you typed there: what happens when a user is angry, phrases the request three ways at once, asks something the Knowledge Base never covered, or feeds it a message that tells the bot to ignore its instructions. The Emulator and Event Debugger catch the single-path bugs. TestMu AI's Agent Testing catches the rest, running the deployed bot through hundreds of personas and adversarial probes and handing back a go-live verdict before a real user finds the gap first.

Point the evaluator at your endpoint, check the setup docs, and run your first evaluation before the next flow or model change ships.

Author

...

Akarshi Aggarwal

Blogs: 27

  • Linkedin

Akarshi Aggarwal is a community contributor with 2+ years of experience in marketing and growth. She specializes in automation testing and frameworks like Cypress, Playwright, Selenium, and Appium. Akarshi has written numerous technical articles, contributing valuable insights into automation testing practices. She actively engages with the tech community, sharing expertise on test automation and quality engineering. On LinkedIn, she is followed by over 7,000 QA professionals, software testers, DevOps engineers, developers, and tech enthusiasts.

Reviewer

...

Salman Khan

Reviewer

  • Linkedin

Salman is a Test Automation Evangelist and Community Contributor at TestMu AI, with over 6 years of hands-on experience in software testing and automation. He has completed his Master of Technology in Computer Science and Engineering, demonstrating strong technical expertise in software development, testing, AI agents and LLMs. He is certified in KaneAI, Automation Testing, Selenium, Cypress, Playwright, and Appium, with deep experience in CI/CD pipelines, cross-browser testing, AI in testing, and mobile automation. Salman works closely with engineering teams to convert complex testing concepts into actionable, developer-first content. Salman has authored 120+ technical tutorials, guides, and documentation on test automation, web development, and related domains, making him a strong voice in the QA and testing community.

Open in ChatGPT Icon

Open in ChatGPT

Open in Claude Icon

Open in Claude

Open in Perplexity Icon

Open in Perplexity

Open in Grok Icon

Open in Grok

Open in Gemini AI Icon

Open in Gemini AI

Copied to Clipboard!
...

3000+ Browsers. One Platform.

See exactly how your site performs everywhere.

Try it free
...

Write Tests in Plain English with KaneAI

Create, debug, and evolve tests using natural language.

Try for free
...
TestMu Conf 2026

World's largest virtual agentic engineering & quality conference

...

AUG 19-21, 2026

REGISTER NOW

Botpress Chatbot Testing FAQs

Did you find this page helpful?

More Related Blogs

TestMu AI forEnterprise

Get access to solutions built on Enterprise
grade security, privacy, & compliance

  • Advanced access controls
  • Advanced data retention rules
  • Advanced Local Testing
  • Premium Support options
  • Early access to beta features
  • Private Slack Channel
  • Unlimited Manual Accessibility DevTools Tests