Commit c263dfc
Add E2E scenario tests/examples for all SDK languages (#512)
* Commit base e2e across SDKs
* Add C# samples to 8 representative scenarios
Add csharp/ subdirectories with Program.cs and csproj for:
- transport/stdio, transport/tcp
- bundling/fully-bundled
- tools/no-tools, tools/custom-agents
- sessions/streaming
- callbacks/permissions
- prompts/system-message
All samples reference the local .NET SDK via ProjectReference.
Each verify.sh updated with dotnet build/run steps.
Added C# build artifacts to .gitignore.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix go.mod replace paths for test scenarios
All 30 go.mod files had incorrect relative paths to the SDK Go
module. Scenarios live at test/scenarios/<cat>/<scenario>/go/
(5 levels deep), so the replace directive needs ../../../../../go
instead of ../../../../go.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Replace copilot-core with Copilot CLI across all test scenarios
copilot-core is not a product name. Updated 63 files to use the
correct terminology:
- Prose/comments: "Copilot CLI"
- Binary name in code/commands: copilot
- COPILOT_CLI_PATH env var: unchanged (already correct)
- Dockerfile ENTRYPOINT/COPY: copilot
- docker-compose service name: copilot-cli
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add scenario build verification workflow for PR checks
Runs build verification for all test/scenarios across 4 languages
(TypeScript, Python, Go, C#) as parallel jobs. Triggered on PRs
that touch scenarios or SDK source, and on push to main.
Build-only — no E2E execution (no API keys or Copilot CLI needed).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add full language parity: all 34 scenarios × 4 languages
Every scenario now has TypeScript, Python, Go, and C# implementations.
New additions:
- C# for 26 scenarios (auth, bundling, callbacks, modes, prompts,
sessions, tools, transport)
- Python + Go + C# for 3 BYOK scenarios (anthropic, azure, ollama)
- Python + Go + C# stubs for multi-user scenarios (SKIP pattern)
All 136 scenario builds verified: 34 TS, 34 PY, 34 GO, 34 CS.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add CI caching and justfile targets for scenario builds
- Add npm, Go module, and NuGet caching to scenario-builds.yml
- Add just scenario-build, scenario-verify, scenario-build-lang targets
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Quality fixes: C# in all verify.sh, fix stubs, consistent patterns
- Add C# build/run steps to all 26 verify.sh scripts that were missing them
- Replace infinite-sessions TS stub with real implementation
- Rework modes: remove filesystem-preset, rename cli-preset→default and
minimal-preset→minimal with real implementations in all 4 languages
- Fix C# patterns across all 33 scenarios: consistent await using,
StartAsync/StopAsync, proper disposal
33 scenarios × 4 languages = 132 builds, all passing.
2 multi-user scenarios remain as stubs (require memory FS features).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Strengthen Python CI: py_compile + import check instead of AST-only
Install the Python SDK and use py_compile for proper compilation
checking, plus verify the copilot module is importable.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Update scenario model references to claude-sonnet-4.6
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: remove soft-pass fallbacks in verify.sh scenario scripts
Replace else/elif fallback branches that always passed with proper
failure reporting. Previously, when the expected grep pattern wasn't
found, the test would emit a warning but still count as passed. Now
these cases correctly report failure and increment the FAIL counter.
Changed 18 files with 21 soft-pass fixes across:
- 10 standard else-branch fallbacks (modes, prompts, tools, sessions)
- 3 elif-branch fallbacks (callbacks, streaming, virtual-filesystem)
- 3 multi-branch fixes with both 'partial' and 'got response' fallbacks
(concurrent-sessions, multi-user-long-lived, multi-user-short-lived)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Strengthen tools scenario verifications
- tool-filtering: use word-boundary grep (-w) for blacklisted tools to
avoid false positives on substrings like 'bashing'
- no-tools: change question to directly request bash tool usage; update
verify grep to check for inability patterns (can't, cannot, unable)
- virtual-filesystem: require both 'Virtual filesystem contents' AND
'plan.md' in output; fix dead elif branch
- custom-agents: tighten grep to only match 'researcher' or 'Research'
instead of also matching generic tool names
- skills: add lowercase 'skill' to grep pattern for broader matching
- mcp-servers: replace soft-pass (non-empty output) with meaningful
content grep; add separate failure message for pattern mismatch
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Support latest .NET
* Move to haiku
* Fix scenario tests: paths, verifications, streaming, and parallel execution
- Fix relative paths in TS package.json (43 files) and Python requirements.txt (33 files)
- Add RollForward to C# csproj files for .NET 8/10 compat
- Remove soft-pass fallbacks in verify.sh — tests now hard-fail on missing patterns
- Fix Go permissions bug (req.Kind → req.ToolName) and add ToolName to SDK type
- Fix Python/Go availableTools: empty list was omitted instead of sent as []
- Fix streaming event names (assistant.message.chunk → assistant.message_delta)
- Fix TS streaming subscription (session.on('event') → typed subscription)
- Fix Python streaming enum comparison (event.type.value)
- Add permission handlers to Go skills scenario
- Switch scenarios to claude-haiku-4.5 for faster execution
- Parallelize verify.sh with live progress bar and per-SDK status icons
- Fix parallel pip install race with pre-install and import check
- Remove go.sum files from tracking
- Remove hardcoded OAuth client ID from C# gh-app scenario
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Restore go.sum files needed for CI builds
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Revert ToolName addition to Go PermissionRequest — use Extra map instead
The ToolName field doesn't exist on PermissionRequest in other SDKs.
The scenario test now reads toolName from the Extra map to stay
consistent without modifying SDK types.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: use o4-mini for reasoning-effort scenario tests
claude-haiku-4.5 does not support the reasoningEffort configuration,
causing all 4 SDK scenario tests to fail. Switch to o4-mini which
supports reasoning effort.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>1 parent 886e5aa commit c263dfc
File tree
369 files changed
+15056
-6
lines changed- .github/workflows
- dotnet/src
- go
- python/copilot
- test/scenarios
- auth
- byok-anthropic
- csharp
- go
- python
- typescript
- src
- byok-azure
- csharp
- go
- python
- typescript
- src
- byok-ollama
- csharp
- go
- python
- typescript
- src
- byok-openai
- csharp
- go
- python
- typescript
- src
- gh-app
- csharp
- go
- python
- typescript
- src
- bundling
- app-backend-to-server
- csharp
- go
- python
- typescript
- src
- app-direct-server
- csharp
- go
- python
- typescript
- src
- container-proxy
- csharp
- go
- python
- typescript
- src
- fully-bundled
- csharp
- go
- python
- typescript
- src
- callbacks
- hooks
- csharp
- go
- python
- typescript
- src
- permissions
- csharp
- go
- python
- typescript
- src
- user-input
- csharp
- go
- python
- typescript
- src
- modes
- default
- csharp
- go
- python
- typescript
- src
- minimal
- csharp
- go
- python
- typescript
- src
- prompts
- attachments
- csharp
- go
- python
- typescript
- src
- reasoning-effort
- csharp
- go
- python
- typescript
- src
- system-message
- csharp
- go
- python
- typescript
- src
- sessions
- concurrent-sessions
- csharp
- go
- python
- typescript
- src
- infinite-sessions
- csharp
- go
- python
- typescript
- src
- multi-user-long-lived
- csharp
- go
- python
- typescript
- src
- multi-user-short-lived
- csharp
- go
- python
- typescript
- src
- session-resume
- csharp
- go
- python
- typescript
- src
- streaming
- csharp
- go
- python
- typescript
- src
- tools
- custom-agents
- csharp
- go
- python
- typescript
- src
- mcp-servers
- csharp
- go
- python
- typescript
- src
- no-tools
- csharp
- go
- python
- typescript
- src
- skills
- csharp
- go
- python
- sample-skills/greeting
- typescript
- src
- tool-filtering
- csharp
- go
- python
- typescript
- src
- virtual-filesystem
- csharp
- go
- python
- typescript
- src
- transport
- reconnect
- csharp
- go
- python
- typescript
- src
- stdio
- csharp
- go
- python
- typescript
- src
- tcp
- csharp
- go
- python
- typescript
- src
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
369 files changed
+15056
-6
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
105 | 105 | | |
106 | 106 | | |
107 | 107 | | |
108 | | - | |
| 108 | + | |
109 | 109 | | |
110 | | - | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
111 | 117 | | |
112 | 118 | | |
113 | 119 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
640 | 640 | | |
641 | 641 | | |
642 | 642 | | |
643 | | - | |
| 643 | + | |
644 | 644 | | |
645 | 645 | | |
646 | 646 | | |
| |||
671 | 671 | | |
672 | 672 | | |
673 | 673 | | |
674 | | - | |
| 674 | + | |
675 | 675 | | |
676 | 676 | | |
677 | 677 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
117 | 117 | | |
118 | 118 | | |
119 | 119 | | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
481 | 481 | | |
482 | 482 | | |
483 | 483 | | |
484 | | - | |
| 484 | + | |
485 | 485 | | |
486 | 486 | | |
487 | 487 | | |
| |||
652 | 652 | | |
653 | 653 | | |
654 | 654 | | |
655 | | - | |
| 655 | + | |
656 | 656 | | |
657 | 657 | | |
658 | 658 | | |
| |||
0 commit comments