Skip to content

tests/e2e_full.sh uses routes that don't exist on the Elixir router (14 feature failures) #151

@hyperpolymath

Description

@hyperpolymath

Context

Surfaced by PR #150 (fix(aspect+e2e)). Once the Elixir-install fix in #150 got the E2E server actually starting (it had been dying at preflight on main since 2026-05-20), 17 feature-level failures became visible. 3 of those are MCP failures fixed in #150 (deno needed --allow-read). The remaining 14 are a structural mismatch between tests/e2e_full.sh and elixir/lib/boj_rest/router.ex.

The mismatch

router.ex exposes 6 routes:

Method Path
GET /.well-known/boj-node-pubkey
GET /health
GET /menu
GET /cartridges
GET /cartridge/:name
POST /cartridge/:name/invoke
POST /cartridge/:name/sse

The test calls:

Test (file:line) Calls Exists?
step 6a POST /cartridges/feedback-mcp/load ❌ no /load route
step 6b–6h POST /cartridges/feedback-mcp/invoke ❌ plural /cartridges/...
step 7 POST /order ❌ no /order route

Both routes that exist plurally on the test side (/cartridges/.../invoke) are singular in the router (/cartridge/:name/invoke), and there's no /load step at all in the server (cartridges auto-load via BojRest.Catalog).

The 14 failures

  • feedback-mcp load
  • feedback register (open_channel)
  • feedback submit (positive)
  • feedback submit (negative)
  • feedback summary
  • feedback export
  • feedback status
  • feedback list_channels
  • order ticket returns result
  • … and 5 related variants

Two ways to close

  • (A) Update tests to use existing routes — drop the /load step (auto-loaded), singularise /cartridges/.../invoke/cartridge/:name/invoke, remove or replace the /order test. Smaller diff; lower risk; preserves current server API.
  • (B) Add the missing routesPOST /cartridges/:name/load (no-op or warmup), POST /cartridges/:name/invoke (alias), POST /order (whatever order semantics the test exercises). Bigger diff; needs an ADR; preserves the test as the spec.

I'd recommend (A): the router is the source of truth; the test was probably ported from an earlier API that drifted.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions