Skip to content

feat(e2e/go): E2E tests for the Go SDK #3028

Description

@jiripetrlik

User Story

As a contributor working on OpenShell Go SDK I want mise run e2e:go to run E2E tests against a real
gateway. Regressions in sandbox lifecycle, exec, provider credential injection, and workspace management will be caught before they reach SDK consumers.

Problem Statement

The Go SDK (sdk/go/) is tested only by unit tests and sdk/go/openshell/v1/integration_test.go, which is only a very basic smoke E2E test. New E2E Go SDK test suite should be able to catch issues with:

  • protocol schema mismatches between the Go SDK and the actual gateway build
  • sandbox lifecycle can be managed by the Go SDK
  • provider credentials management using the Go SDK
  • workspace management

Impact / Why This Matters

The Go SDK (sdk/go/) is tested mostly by unit tests. These tests mock the transport and never talk to a real openshell-gateway. Which means that currently:

  • A gateway change can silently break every Go SDK consumer
  • Contributors have no mise run entry point to test Go SDK changes end-to-end before opening PR

Proposed Design

  • Separate module: E2E tests live in e2e/go/
  • No SDK changes: sdk/go/ is untouched

Possible design can be found in draft PR: jiripetrlik#1

Acceptance Criteria

  • e2e/go/ is a separate Go module
  • All e2e files has //go:build e2e
  • Sandbox tests cover CRUD
  • Provider tests assert placeholders (not raw secrets)
  • Workspace tests cover CRUD
  • AGENTS.md documents the e2e/go/ conventions
  • mise run pre-commit passes; commits are DCO-signed and follow Conventional Commits

Alternatives Considered

  • Rely on unit tests - can be faster to test, but many possible bugs can be missed
  • Put the e2e tests inside `sdk/go/ - put E2E tests to a separated directory is much more clear

Agent Investigation

No response

Checklist

  • I've reviewed existing issues and the architecture docs
  • This is a design proposal, not a "please build this" request

Activity

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

    needs-rfcstate:acceptedA maintainer decided OpenShell should pursue this issue

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions