Gap
PluginRemoteItemRenderer in src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.ts renders five distinct status states as text:
| State |
String |
| disabled |
Disabled |
| loading |
Loading |
| loaded |
Loaded |
| degraded |
Warning |
| error |
Error |
None of them is covered by a component fixture. The AI Customizations editor has ten plugin fixtures (PluginsTab, PluginsTabScrolled, PluginBrowseMode, PluginDetail, PluginsDisabledByUser, …) and not one exercises a remote-plugin row, so this renderer has no screenshot coverage at all.
Why it matters — this already hid a real bug
Both plugin renderers deliberately reuse the MCP row styling (// Installed Plugin Renderer (reuses .mcp-server-item CSS)), including .mcp-server-status. That rule was sized for a codicon glyph:
.mcp-server-item .mcp-server-status {
width: var(--vscode-spacing-size240); /* 24px */
height: var(--vscode-spacing-size240);
justify-content: center;
font-size: var(--vscode-codiconFontSize);
}
So the five text labels above were being rendered into a fixed 24×24 box. It went unnoticed because nothing renders those rows in CI.
The styling side is fixed as a side-effect of #330943, which reshapes that rule to be text-shaped. The coverage gap remains: the next change to shared .mcp-server-item styling has the same blind spot, and a reviewer looking at screenshot diffs will again see no movement for this renderer whether or not it is broken.
Suggested fix
Add a fixture exercising PluginRemoteItemRenderer across its status states — a remote-agent-host plugin list with rows in loading / loaded / degraded / error / disabled. That makes the shared-CSS coupling between the MCP and Plugins tabs visible in screenshot diffs, which is the property that was missing.
Notes
Found while reviewing the shared-CSS blast radius of #330943. Not filed there because it is a Plugins-tab coverage gap rather than part of that change.
Gap
PluginRemoteItemRendererinsrc/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.tsrenders five distinct status states as text:DisabledLoadingLoadedWarningErrorNone of them is covered by a component fixture. The AI Customizations editor has ten plugin fixtures (
PluginsTab,PluginsTabScrolled,PluginBrowseMode,PluginDetail,PluginsDisabledByUser, …) and not one exercises a remote-plugin row, so this renderer has no screenshot coverage at all.Why it matters — this already hid a real bug
Both plugin renderers deliberately reuse the MCP row styling (
// Installed Plugin Renderer (reuses .mcp-server-item CSS)), including.mcp-server-status. That rule was sized for a codicon glyph:So the five text labels above were being rendered into a fixed 24×24 box. It went unnoticed because nothing renders those rows in CI.
The styling side is fixed as a side-effect of #330943, which reshapes that rule to be text-shaped. The coverage gap remains: the next change to shared
.mcp-server-itemstyling has the same blind spot, and a reviewer looking at screenshot diffs will again see no movement for this renderer whether or not it is broken.Suggested fix
Add a fixture exercising
PluginRemoteItemRendereracross its status states — a remote-agent-host plugin list with rows inloading/loaded/degraded/error/ disabled. That makes the shared-CSS coupling between the MCP and Plugins tabs visible in screenshot diffs, which is the property that was missing.Notes
Found while reviewing the shared-CSS blast radius of #330943. Not filed there because it is a Plugins-tab coverage gap rather than part of that change.