|
|
@@ -115,16 +115,16 @@ describe('PluginInventorySettingsTab', () => {
|
|
|
expect(screen.getByText(`1 ${en.failedCountLabel}`)).toBeTruthy()
|
|
|
|
|
|
// A preset row expands into its provenance facts.
|
|
|
- fireEvent.click(screen.getByRole('button', { name: 'pwsh, Conditional' }))
|
|
|
+ fireEvent.click(screen.getByRole('button', { name: 'pwsh, pwsh, Conditional' }))
|
|
|
expect(screen.getByText(en.fromPreset)).toBeTruthy()
|
|
|
expect(screen.getByText('标准模式')).toBeTruthy()
|
|
|
expect(screen.getByText(en.condition)).toBeTruthy()
|
|
|
expect(screen.getByText('process.platform === \'win32\'')).toBeTruthy()
|
|
|
- fireEvent.click(screen.getByRole('button', { name: 'pwsh, Conditional' }))
|
|
|
+ fireEvent.click(screen.getByRole('button', { name: 'pwsh, pwsh, Conditional' }))
|
|
|
expect(screen.queryByText(en.condition)).toBeNull()
|
|
|
|
|
|
// A failed preset row names its runtime state instead of a condition.
|
|
|
- fireEvent.click(screen.getByRole('button', { name: 'crashy, Failed' }))
|
|
|
+ fireEvent.click(screen.getByRole('button', { name: 'crashy, crashy, Failed' }))
|
|
|
expect(screen.getByText(en.runtime)).toBeTruthy()
|
|
|
expect(screen.getByText('Failed to start')).toBeTruthy()
|
|
|
|
|
|
@@ -134,6 +134,34 @@ describe('PluginInventorySettingsTab', () => {
|
|
|
expect(screen.getByText(en.moduleLabel).nextElementSibling?.textContent).toBe('@fixture/anonymous')
|
|
|
})
|
|
|
|
|
|
+ it('distinguishes collapsed same-module rows by stable entry id', async () => {
|
|
|
+ const longId = 'tool-subagent-secondary-with-a-complete-stable-identity'
|
|
|
+ await renderReady({
|
|
|
+ entries: [],
|
|
|
+ agentPresets: [{
|
|
|
+ id: 'same-module',
|
|
|
+ trust: 'user',
|
|
|
+ isDefault: true,
|
|
|
+ rows: [
|
|
|
+ { entryId: 'tool-subagent-primary', moduleName: '@deepseek-ai/dsh-tool-subagent', enabled: true, fiberPhase: null },
|
|
|
+ { entryId: longId, moduleName: '@deepseek-ai/dsh-tool-subagent', enabled: false, fiberPhase: null },
|
|
|
+ ],
|
|
|
+ }],
|
|
|
+ })
|
|
|
+
|
|
|
+ expect(screen.getByRole('button', { name: 'tool-subagent, tool-subagent-primary, Enabled' })
|
|
|
+ .getAttribute('aria-expanded')).toBe('false')
|
|
|
+ const secondary = screen.getByRole('button', { name: `tool-subagent, ${longId}, Disabled` })
|
|
|
+ expect(secondary.getAttribute('aria-expanded')).toBe('false')
|
|
|
+ expect(screen.getByTitle(longId).textContent).toBe(longId)
|
|
|
+
|
|
|
+ fireEvent.change(screen.getByRole('searchbox', { name: en.search }), { target: { value: 'secondary' } })
|
|
|
+ expect(screen.queryByRole('button', { name: 'tool-subagent, tool-subagent-primary, Enabled' })).toBeNull()
|
|
|
+ const filteredSecondary = screen.getByRole('button', { name: `tool-subagent, ${longId}, Disabled` })
|
|
|
+ fireEvent.click(filteredSecondary)
|
|
|
+ expect(filteredSecondary.getAttribute('aria-expanded')).toBe('true')
|
|
|
+ })
|
|
|
+
|
|
|
it('expands the global plane with failures first and preset-provided rows inline', async () => {
|
|
|
const view = await renderReady()
|
|
|
|
|
|
@@ -148,21 +176,21 @@ describe('PluginInventorySettingsTab', () => {
|
|
|
// Rows the presets took over sit inline, marked instead of plainly disabled.
|
|
|
expect(screen.getAllByText(en.presetEnabledTag)).toHaveLength(2)
|
|
|
|
|
|
- fireEvent.click(screen.getByRole('button', { name: 'tool-bash, Enabled via presets' }))
|
|
|
+ fireEvent.click(screen.getByRole('button', { name: 'tool-bash, bash-host, Enabled via presets' }))
|
|
|
expect(screen.getByText(en.presetProvidedDetail)).toBeTruthy()
|
|
|
expect(screen.getByText(en.enabledIn)).toBeTruthy()
|
|
|
expect(screen.getByText('标准模式 · ptc')).toBeTruthy()
|
|
|
|
|
|
// The failed global card reports its runtime state.
|
|
|
- fireEvent.click(screen.getByRole('button', { name: 'telemetry, Failed' }))
|
|
|
+ fireEvent.click(screen.getByRole('button', { name: 'telemetry, telemetry, Failed' }))
|
|
|
expect(screen.getByText('Failed to start')).toBeTruthy()
|
|
|
|
|
|
// An enabled entry with no live fiber says so in its details, dot-free.
|
|
|
- fireEvent.click(screen.getByRole('button', { name: 'unobserved-name, Enabled' }))
|
|
|
+ fireEvent.click(screen.getByRole('button', { name: 'unobserved-name, unobserved, Enabled' }))
|
|
|
expect(screen.getByText('Not running')).toBeTruthy()
|
|
|
|
|
|
// A disabled row outside every preset stays plainly disabled.
|
|
|
- fireEvent.click(screen.getByRole('button', { name: 'dormant, Disabled' }))
|
|
|
+ fireEvent.click(screen.getByRole('button', { name: 'dormant, dormant, Disabled' }))
|
|
|
expect(screen.queryByText(en.presetProvidedDetail)).toBeNull()
|
|
|
|
|
|
fireEvent.click(globalToggle())
|
|
|
@@ -179,7 +207,7 @@ describe('PluginInventorySettingsTab', () => {
|
|
|
|
|
|
pickPreset('ptc')
|
|
|
expect(view.container.querySelector('[data-preset-plugin-count]')?.getAttribute('data-preset-plugin-count')).toBe('3')
|
|
|
- fireEvent.click(screen.getAllByRole('button', { name: 'tool-bash, Enabled' })[0]!)
|
|
|
+ fireEvent.click(screen.getByRole('button', { name: 'tool-bash, bash, Enabled' }))
|
|
|
// An unnamed preset labels provenance by its id.
|
|
|
expect(screen.getByText(en.fromPreset).nextElementSibling?.textContent).toBe('ptc')
|
|
|
|
|
|
@@ -227,11 +255,11 @@ describe('PluginInventorySettingsTab', () => {
|
|
|
])
|
|
|
fireEvent.keyDown(document, { key: 'Escape' })
|
|
|
|
|
|
- fireEvent.click(screen.getByRole('button', { name: 'pwsh, Conditional' }))
|
|
|
+ fireEvent.click(screen.getByRole('button', { name: 'pwsh, pwsh, Conditional' }))
|
|
|
expect(screen.getByText(en.fromPreset).nextElementSibling?.textContent).toBe('Localized standard')
|
|
|
|
|
|
fireEvent.click(globalToggle())
|
|
|
- fireEvent.click(screen.getByRole('button', { name: 'tool-bash, Enabled via presets' }))
|
|
|
+ fireEvent.click(screen.getByRole('button', { name: 'tool-bash, bash-host, Enabled via presets' }))
|
|
|
expect(screen.getByText('Localized standard · Localized ptc')).toBeTruthy()
|
|
|
})
|
|
|
|
|
|
@@ -241,7 +269,7 @@ describe('PluginInventorySettingsTab', () => {
|
|
|
fireEvent.click(screen.getByRole('menuitem', { name: 'ptc' }))
|
|
|
|
|
|
fireEvent.click(globalToggle())
|
|
|
- fireEvent.click(screen.getByRole('button', { name: 'tool-bash, Enabled via presets' }))
|
|
|
+ fireEvent.click(screen.getByRole('button', { name: 'tool-bash, bash-host, Enabled via presets' }))
|
|
|
fireEvent.click(screen.getByRole('button', { name: en.viewInPreset }))
|
|
|
expect(screen.getByRole('button', { name: en.switcherLabel }).textContent)
|
|
|
.toBe('标准模式 (default)')
|
|
|
@@ -290,10 +318,10 @@ describe('PluginInventorySettingsTab', () => {
|
|
|
expect(globalToggle().getAttribute('aria-expanded')).toBe('true')
|
|
|
expect(screen.getAllByRole('listitem')).toHaveLength(2)
|
|
|
|
|
|
- fireEvent.click(screen.getByRole('button', { name: 'hmr, Enabled' }))
|
|
|
+ fireEvent.click(screen.getByRole('button', { name: 'hmr, hmr, Enabled' }))
|
|
|
expect(screen.getByText(en.runtime)).toBeTruthy()
|
|
|
expect(view.container.querySelector('[data-loader-entry]')?.textContent).toBe('hmr')
|
|
|
- fireEvent.click(screen.getByRole('button', { name: 'off, Disabled' }))
|
|
|
+ fireEvent.click(screen.getByRole('button', { name: 'off, off, Disabled' }))
|
|
|
expect(screen.getAllByText(en.moduleLabel).length).toBeGreaterThan(0)
|
|
|
expect(screen.queryByText(en.runtime)).toBeNull()
|
|
|
})
|