# Verifies MCPX connects to the Cursor CLI agent via MCP and the dashboard reflects the connection.
name: "Cursor CLI Agent Smoke Test"
image: us-central1-docker.pkg.dev/prj-common-442813/mcpx/mcpx:v0.2.17-66354a7
configMount: config
env: {}
dependentContainers: []
aiAgent:
type: cursor-cli
launchArgs:
- "--background"
verboseOutput: false
steps:
- name: "Time MCP Server Call"
kind: backend
toolName: time__get_current_time
payload:
timezone: "UTC"
expected:
mode: regex
value: "\"timezone\"\\s*:\\s*\"UTC\""
- name: Load Control-Plane UI
kind: browser
toolName: browser_navigate
payload:
url: http://localhost:5173
expected:
mode: regex
value: "Ran Playwright code"
- name: Wait for AI Agent node
kind: browser
toolName: browser_wait_for
payload:
text: "AI Agent"
time: 60
expected:
mode: contains
value: "Waited for AI Agent"
- name: Verify Cursor identifier present
kind: browser
toolName: browser_evaluate
payload:
function: |
() => new Promise((resolve) => {
const deadline = Date.now() + 20000;
const poll = () => {
const labels = Array.from(document.querySelectorAll('[id^="agent-"] p, [data-agent], [role="listitem"], span, div'))
.map((el) => (el.textContent || '').trim().toLowerCase())
.filter(Boolean);
if (labels.some((label) => label.includes('cursor'))) {
return resolve('found-cursor');
}
if (Date.now() > deadline) {
const sample = (document.body.innerText || '').slice(0, 200).toLowerCase();
return resolve(`labels:${labels.join(',')}|text:${sample}`);
}
setTimeout(poll, 250);
};
poll();
})
expected:
mode: contains
value: "found-cursor"