Test Copilot's BYOK Provider and Model Selector for Keyboard Accessibility
GitHub announced on July 14, 2026 that Copilot for JetBrains expanded bring-your-own-key capabilities. Primary source: GitHub Changelog, July 14, 2026.
Provider and model selection looks like two dropdowns, but behaves like one dependent workflow: credential context -> provider -> compatible models -> confirmed session.
This is a proposed accessibility test plan, not a hands-on review. It does not claim that the current product has an accessibility defect.
Test Outcomes, Not Widget Assumptions
A keyboard or screen-reader user should be able to reach the provider control, discover its name and current value, inspect options, commit or cancel, understand that model choices changed, and select a compatible model without losing context.
Use this matrix:
| Case | Action | Keyboard expectation | Screen-reader expectation | State expectation |
|---|---|---|---|---|
| P1 | Reach provider | Visible focus | Name, role, value | No change |
| P2 | Open options | Documented key works | Expanded state is clear | Existing value retained |
| P3 | Browse providers | No focus escape | Option and selection announced | Browsing does not commit |
| P4 | Select provider | Pointer not required | New value announced once | Model refresh begins |
| M1 | Reach model after refresh | Focus not stolen | Availability communicated | Options match provider |
| M2 | Search models | Keys do not conflict | Query and result are clear | Search does not select |
| R1 | Change provider later | No trap | Invalidated model explained | Stale pair cannot submit |
| E1 | Loading fails | Retry/cancel reachable | Error and next action announced | Last valid state is clear |
The matrix separates interaction, announcement, and state correctness. A control can pass one and fail another.
Record the Environment
ide: "<product and exact version>"plugin: "GitHub Copilot <exact version>"os: "<name and version>"assistive_technology: "<name and version>"keymap: "<default or named alternative>"initial_state: "<unconfigured or existing selection>"
Vary Test Conditions
- One versus many providers
- Short versus long model names
- Loaded / loading / empty / error states
- Changing provider before and after selecting a model
Dynamic Updates Deserve Special Attention
Automatically moving focus can disorient users; silent refresh leaves them unaware. A useful expected pattern is to keep focus stable, announce a concise change when needed, and let the user navigate deliberately. Record perceived behavior rather than prescribing an implementation API.
Release Gate
- Every selection and recovery action works without a pointer
- Focus remains stable across refreshes
- Name, role, value, selected state, and availability are perceivable
- Browsing never silently commits
- Invalid provider/model pairs cannot be confirmed
- Loading, empty, and error states expose a next action
Exact controls, shortcuts, supported assistive technologies, and provider behavior must be confirmed against current GitHub and JetBrains documentation.
The durable lesson is to test the transition between dependent controls, not only two static screenshots.
Comments
No comments yet. Start the discussion.