Skip to content

Plugins tab: remote-plugin rows have no component fixture coverage, hiding shared-CSS regressions #330946

Description

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.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions