Skip to content

CI: run E2E test for thread message → agent execution → response #57

Description

@rowan-stein

User request

Add E2E to CI in llm-proxy. It should trigger tests that do end-to-end agent execution starting from a thread message and waiting for the response.

Specification (research)

  • llm-proxy already has an E2E GitHub Actions workflow (.github/workflows/e2e.yml) that checks out agynio/e2e and runs devspace run ci-e2e.
  • The requested ‘thread message → agent executes → wait for response’ behavior spans multiple services (threads, agents, agents-orchestrator, runner, llm, llm-proxy), so the deterministic E2E test should live in agynio/e2e (go-core suite) and be invoked from llm-proxy’s E2E workflow.

Test scenario (minimal + deterministic)

Create:

  1. user identity
  2. API token
  3. organization
  4. LLM provider using deterministic endpoint https://testllm.dev/v1/org/agynio/suite/agn/responses and protocol RESPONSES
  5. model with remote name simple-hello
  6. agent using that model, with env LLM_API_TOKEN=<created api token>
  7. thread with participants [user, agent]

Then:

  • send a user thread message with body hi
  • poll ThreadsService.GetMessages until a message exists with:
    • sender_id == agentID
    • created_at >= sentUserMessage.created_at
    • body exactly Hi! How are you?

Cleanup:

  • archive thread
  • delete agent
  • cleanup workloads matching agent/thread labels

Timeouts:

  • overall test ~6m, poll interval 2s, max wait 5m.

CI wiring

  • Update llm-proxy .github/workflows/e2e.yml to run both:
    • existing TestLLMProxyGatewayCreatedModel
    • new TestAgentRespondsToThreadMessageViaLLMProxy
  • Implement via E2E_GO_TEST_RUN='TestLLMProxyGatewayCreatedModel|TestAgentRespondsToThreadMessageViaLLMProxy' (or equivalent list supported by the harness).

Acceptance criteria

  • Workflow triggers and runs the new test.
  • Test validates the full message→agent→response loop deterministically without commercial LLM credentials.
  • CI artifacts/diagnostics are uploaded on failure (existing behavior).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions