microsoft / microsoft/vscode

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

Open
#330,946 0 comments 0 reactions 1 assignee Claimed by @justschen View on GitHub
Dominant language
TypeScript
Stars
193k
Forks
42.4k
PR merge metrics
PR metrics pending

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:

```css
.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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.