Skip to content

Wire e2e smoke harness into CI as a PR gate #113

Description

@harrryyd

Problem

The e2e smoke harness (apps/server/scratchpad/e2e-smoke.ts) boots the real server in-process, authenticates, opens a real WebSocket connection, and exercises 10 RPC methods end-to-end. It caught a critical regression (8 missing RPC scope declarations in #73/8834e517) that unit tests missed entirely.

The regression was missed because:

  1. Unit tests exercise individual deciders/services in isolation — they don't boot the full server
  2. Adding a method to WsRpcGroup without a corresponding entry in RPC_REQUIRED_SCOPE causes a connection-level protocol defect that tears down the entire WebSocket — but no unit test exercises the full handler → RPC framework → WS connection path
  3. The merge went through without any gate that booted the real server end-to-end

The harness currently lives in apps/server/scratchpad/ and is not wired into any CI pipeline.

Proposal

Wire apps/server/scratchpad/e2e-smoke.ts into CI as a required gate for PRs. Options:

  • Wrap it in a Vitest suite inside apps/server so it runs alongside existing tests
  • Add it as a separate CI job that runs after the main test suite
  • Run it in the existing CI workflow as a final smoke-check step

Relevant: the existing wsRpcScopes.test.ts regression test already guards the static scope-map, but e2e-smoke guards against runtime contract-implementation drift (e.g. handler signatures not matching Rpc.make contracts after Effect v4 schema changes).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions