Compare commits

...
Author SHA1 Message Date
K. O. A.andBret Mogilefsky 762cb0205b Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit 36f58aad010288d2e2e51182d1d86462175f6643)
2026-06-17 23:42:36 -07:00
barlindandBret Mogilefsky 858fba216d test(capability inspector): ensure descriptive compatibility shims are not rendered as commands
(cherry picked from commit 1b0e333d012ca43653c0b088bf50976aa20a421f)
2026-06-17 23:42:36 -07:00
2 changed files with 30 additions and 1 deletions
+1 -1
View File
@@ -382,7 +382,7 @@
if (attributionOnly && attributionOnly.has(String(surface || ''))) return null;
const mapped = (LEGACY_SURFACE_ENDPOINTS[String(capability || '')] || {})[String(surface || '')];
if (mapped) return mapped;
return { type: 'command', label: String(surface || '').trim() };
return null;
}
function shimEndpoints(shims, type, onlyHits) {
@@ -542,6 +542,35 @@ test('capability inspector links library legacy command surfaces to canonical en
assert.match(libraryContent, /title="2 participants"/);
});
test('capability inspector does not render descriptive compatibility shims as commands', () => {
const snapshot = {
pipelines: [
{ name: 'visualization', review: { lifecycle: 'active', label: 'Active contract', tone: 'clean', summary: 'Visualization surface.' }, participants: [
{ pluginId: 'core.visualization', roles: ['owner'], commands: ['inspect', 'list-providers', 'select-renderer', 'clear-renderer'], operations: ['renderer.create', 'renderer.destroy'], events: [], runtime: true, availability: 'available', ownership: 'multi-provider', safety: 'safe' },
], conflicts: [] },
],
participants: [{ pluginId: 'core.visualization' }],
compatibilityShims: [
{ shimId: 'visualization:window.slopsmithViz_*', source: 'core.visualization', capability: 'visualization', legacySurface: 'window.slopsmithViz_* factory globals', status: 'used', hitCount: 1 },
{ shimId: 'visualization:type-visualization-manifest', source: 'core.visualization', capability: 'visualization', legacySurface: 'plugin.json type: "visualization"', status: 'used', hitCount: 1 },
],
expectedCompatibilityShims: [],
};
const { window, elements } = loadInspector(snapshot);
const filter = elements.get('capability-inspector-filter');
filter.value = 'visualization';
window.__slopsmithCapabilityInspector.render();
const content = elements.get('capability-inspector-content').innerHTML;
assert.match(content, /data-capability-node="command:inspect"/);
assert.match(content, /data-capability-node="operation:renderer\.create"/);
assert.doesNotMatch(content, /data-capability-node="command:window\.slopsmithViz_\* factory globals"/);
assert.doesNotMatch(content, /data-capability-node="command:plugin\.json type: &quot;visualization&quot;"/);
assert.doesNotMatch(content, /data-link-kind="shimmed"[^>]*>window\.slopsmithViz_\* factory globals<\/span>/);
assert.doesNotMatch(content, /data-link-kind="shimmed"[^>]*>plugin\.json type: (?:&quot;|")visualization(?:&quot;|")<\/span>/);
});
test('capability inspector clears provider hover without a graph hover target', () => {
const snapshot = {
pipelines: [