Skip to content

Add quickstart smoke test to e2e suite #281

@david-martin

Description

@david-martin

What would you like to be added

An e2e test that validates the quickstart flow works end-to-end: applying the quickstart manifests (Gateway, HTTPRoutes, XBackends, XAccessPolicies), deploying the MCP server, and verifying that tool calls are allowed/denied according to the policies.

This would catch regressions like the function collision bug (#272) which both broke the quickstart but weren't caught by existing e2e tests.

What should be tested

Using the quickstart policy manifests from site-src/guides/quickstart/policy/e2e.yaml:

  • initialize - allowed (base protocol method)
  • tools/list - allowed (base protocol method)
  • get-sum on local MCP backend - allowed (in inline allowlist)
  • get-tiny-image on local MCP backend - allowed (in inline allowlist)
  • echo on local MCP backend - denied (not in allowlist)

Optionally, with external auth quickstart manifests:

  • Tool call to remote MCP backend with allowed repo - allowed
  • Tool call to remote MCP backend with disallowed repo - denied

Options for running this

Option A: Add to existing e2e suite (tests/e2e/controller_test.go)

Add a new TestQuickstartE2E function that applies the quickstart manifests directly. The existing run-e2e.sh runner already calls setup_cluster_with_controller, so the cluster and controller are ready. The test would apply site-src/guides/quickstart/policy/e2e.yaml and the MCP server deployment, then run assertions using the same callTool/runKubectl helpers.

Pros: fits into existing CI (pull-kube-agentic-networking-e2e), reuses test infrastructure.
Cons: quickstart manifests hardcode quickstart-ns namespace which differs from the e2e namespace (e2e-test-ns).

Option A variant: Symlink or copy quickstart manifests into testdata

Instead of referencing site-src/ paths, copy the quickstart manifests into tests/e2e/testdata/ (or symlink). Avoids cross-directory dependencies but risks drift between the test copy and the real quickstart manifests.

Option B: New test suite that runs the quickstart script

A separate test or script (dev/ci/run-quickstart-smoke.sh) that actually runs run-quickstart.sh (without the agent/port-forward steps), then runs targeted tool call assertions against the gateway.

Pros: tests the actual quickstart script, catches script-level bugs (like #272).
Cons: needs a new Prow job, slower, harder to run assertions without the Go test framework.

Option C: Hybrid - Go test using quickstart manifests

A Go test in tests/e2e/ that applies the quickstart YAML files directly (not via the script) but uses the quickstart namespace and manifest paths. This validates the manifests are correct without testing the bash script itself.

Pros: catches manifest/policy regressions, runs in existing CI.
Cons: doesn't catch script bugs.

Options A or C seem most practical - they fit into existing CI and catch the most important regressions (policy/manifest correctness). Script-level bugs like #272 are rarer and can be caught by manual testing.

Metadata

Metadata

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions