Skip to content

feat(appkit): auto-start app under test for agent evals (stack 6/6)#482

Open
MarioCadenas wants to merge 1 commit into
pr/agent-evals-5-docsfrom
pr/agent-evals-6-webserver
Open

feat(appkit): auto-start app under test for agent evals (stack 6/6)#482
MarioCadenas wants to merge 1 commit into
pr/agent-evals-5-docsfrom
pr/agent-evals-6-webserver

Conversation

@MarioCadenas

Copy link
Copy Markdown
Collaborator

Stack 6/6 · targets pr/agent-evals-5-docs (review after #481).

Playwright-style auto-start for the app under test, so appkit agent eval no longer requires a manually-started server.

  • Root evals.config.ts (project root, via defineEvalConfig) carries run-wide settings — baseUrl and webServer { command, url?, timeoutMs?, reuseExisting? } — plus defaults for maxConcurrency/timeoutMs. loadRootEvalConfig/findRootEvalConfig exposed from @databricks/appkit/beta. The per-agent evals.config.ts keeps its narrow role (additive — nothing removed).
  • CLI lifecycle: resolves baseUrl/concurrency/timeout as flag > root config > default; before running, reuses a server already answering at url (default) or spawns command, polls until any HTTP response or timeout, then SIGTERMs the process group in a finally. A reused server is left running.
  • --url default 30008000 (the port these apps actually serve on).

Design was grilled to resolve scope (root config, spawn in CLI not the library, readiness = any HTTP response, reuse-existing default true). Verified end-to-end against dev-playground: cold start boots + tears down; warm start reuses and leaves the dev server up.

Add a Playwright-style `webServer` so `appkit agent eval` can boot the app
itself instead of requiring a server to be running.

- Root `evals.config.ts` (project root, via defineEvalConfig) carries run-wide
  settings: `baseUrl` + `webServer { command, url?, timeoutMs?, reuseExisting? }`.
  appkit exposes `loadRootEvalConfig` / `findRootEvalConfig`; the per-agent
  config keeps its narrow maxConcurrency/timeoutMs role.
- CLI resolves baseUrl/concurrency/timeout as flag > root config > default, and
  before running: reuses a server already answering at `url` (default) or spawns
  `command`, polls until any HTTP response or timeout, then SIGTERMs the process
  group in a finally. A reused server is left untouched.
- `--url` default changed 3000 → 8000 (the port these apps actually use).

Verified end-to-end against dev-playground: cold start boots + tears down; warm
start reuses and leaves the dev server running.

Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
@MarioCadenas
MarioCadenas requested a review from a team as a code owner July 17, 2026 20:06
@MarioCadenas
MarioCadenas requested review from pkosiec and removed request for a team July 17, 2026 20:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant