Files
opencode/packages/opencode/test/server/AGENTS.md

1.6 KiB

Server Test Guide

Use these patterns for server and HttpApi middleware tests in this directory.

  • Prefer focused middleware tests with tiny fake routes over full API route trees when testing routing, context, proxying, or middleware policy.
  • Use testEffect(...) with NodeHttpServer.layerTest for the primary in-test server and make relative HttpClient requests against it.
  • Use HttpRouter.add(...) probe routes that expose the context under test, such as WorkspaceRouteContext, InstanceRef, or WorkspaceRef.
  • Compose middleware in the same order as production when testing interactions, for example instanceRouterMiddleware.combine(workspaceRouterMiddleware).
  • For secondary upstream servers, build Effect NodeHttpServer.layer(...) into the current test scope with Layer.build(...) so the listener stays alive until the test scope exits.
  • Avoid Bun.serve when testing Effect HTTP middleware. Keep the test in the Effect HTTP stack unless the production path being tested is Bun-specific.
  • For WebSocket paths, use Socket.makeWebSocket(...) from the test client and assert protocol forwarding or frame relay when relevant.
  • Use scoped test layers for flags, database reset, and other global mutable state. Restore flags and reset state in finalizers.
  • Use tmpdirScoped({ git: true }) plus Project.use.fromDirectory(dir) for project-backed requests.
  • If a test needs persisted state without matching runtime state, keep direct database setup inside a narrowly named helper that explains that state.
  • Add comments for non-obvious test topology, especially tests involving both the local test server and a fake upstream server.