S

Knowledge Pack Files

SideButton Dashboard Knowledge Pack Files

Browse the source files that power the SideButton Dashboard MCP server knowledge pack.

Available free v0.4.0 Browser
$ sidebutton install sidebutton.local
Download ZIP
14.2 KB

Settings — QA Test Playbook

Prerequisites

  • SideButton server running on localhost:9876
  • Browser extension connected
  • Navigate to SPA root (localhost:9876) first — direct /settings navigation returns Fastify 404 JSON
  • At least one role and one target configured for CRUD tests

Phase 1: Page Load & Structure

#TestMethodPass Criteria
1.1Settings page loadsClick sidebar button:has-text("Settings")"Settings" h1 heading + Back button visible; no loading error
1.2Top-level tabs presentsnapshot"AI Context" tab (active/underlined) + "LLM Provider" tab visible
1.3Default tab on loadNavigate fresh to /settingsAI Context tab is active, Persona sub-tab selected by default
1.4Sub-tab badges show countssnapshot sub-tabsCount numbers visible on Roles, Targets, Integrations, Inline tabs
1.5Persona description textsnapshot under sub-tabsText "Your persona — injected into every LLM call" visible
1.6Back navigationClick "Back" buttonReturns to previous page
1.7Tab resets on re-navigateNavigate away and backReturns to AI Context > Persona (component-local state resets)

Phase 2: Persona Sub-Tab

#TestMethodPass Criteria
2.1Persona textarea presentsnapshot Persona sub-tabMonospace textarea with persona markdown content visible
2.2Character count shownsnapshotRight-aligned "{N} chars" text visible above/near textarea
2.3Save disabled when cleanNo edits madebutton "Save Persona" is [disabled]
2.4Save enabled after editType any character in textarea"Save Persona" button becomes enabled (dirty tracking)
2.5Save personaEdit textarea → click "Save Persona".success-banner appears (green). Screenshot immediately — auto-hides after 3s

Phase 3: Roles Sub-Tab

#TestMethodPass Criteria
3.1Roles list loadsClick "Roles" sub-tabRole items with name, match tags, description text visible in list
3.2Role item structuresnapshot .context-itemBold name + .tag.match badge(s) + description text + toggle switch on right
3.3System role badgesnapshot system role.tag.system "system" gray badge visible on roles with filenames starting _
3.4Actions hidden by defaultsnapshot without hoverEdit and × buttons NOT visible (opacity: 0) on role cards
3.5Actions reveal on hoverhover over .context-itemscreenshot"Edit" and "×" buttons appear on right side of card
3.6System role has no deleteHover over system role"×" button is NOT rendered (not just hidden) for system roles
3.7Toggle switch custom buttonsnapshot .toggle-switchbutton.toggle-switch present (NOT native checkbox/radio)
3.8Toggle off statesnapshot disabled roleToggle shows gray background; no .on class
3.9Inactive role opacityscreenshot role with enabled=false.context-item.inactive renders at reduced opacity (~0.5)
3.10Add Role buttonsnapshot top of listbutton "+ Add Role" visible at top-right

Phase 3b: Roles — Inline Delete Confirm Flow

#TestMethodPass Criteria
3b.1Click × opens confirmHover role → click "×" .btn-deleteCard transforms to .context-item.deleting with red-tinted background
3b.2Confirm textsnapshot deleting cardp inside .context-item.deleting shows Delete "{name}"? in red
3b.3Cancel button presentsnapshot deleting card.btn-cancel-sm "Cancel" button visible
3b.4Delete confirm buttonsnapshot deleting card.btn-delete-confirm "Delete" button visible (red)
3b.5Cancel dismisses confirmClick "Cancel"Card reverts to normal; role still in list; delete NOT executed
3b.6NO browser confirm()Observe carefully when clicking ×Browser does NOT show window.confirm() dialog; it's all inline UI

Phase 4: Targets Sub-Tab

#TestMethodPass Criteria
4.1Targets list loadsClick "Targets" sub-tabTarget items with name, domain match tags, description, toggle visible
4.2Provider targets excludedsnapshot full listTargets with a provider field do NOT appear (managed via Integrations)
4.3Add Target buttonsnapshotbutton "+ Add Target" visible at top-right
4.4Toggle targetHover → click button.toggle-switchToggle state changes (on/off). API auto-saves; scroll position preserved
4.5Edit targetHover → click "Edit"RoleTargetModal opens pre-filled with target's name, match, body

Phase 4b: Targets — Inline Delete Confirm Flow

#TestMethodPass Criteria
4b.1Click × opens confirmHover target → click "×"Same inline confirm pattern as Roles: .context-item.deleting with red bg
4b.2Confirm textsnapshot deleting cardp shows Delete "{name}"? in red (#b91c1c)
4b.3CancelClick .btn-cancel-sm "Cancel"Card reverts; target NOT deleted
4b.4Execute deleteClick .btn-delete-confirm "Delete"Target removed from list

Phase 5: Integrations Sub-Tab

#TestMethodPass Criteria
5.1Provider cards presentClick "Integrations" sub-tabCards for Jira, Slack, GitHub, Bitbucket (and others) visible
5.2Provider type badgessnapshot provider header.tag.match badge(s) showing type(s) — e.g., "issues provider", "git" (multi-type providers show multiple badges)
5.3Not connected statussnapshot unconnected provider.tag.provider-not-configured gray badge "Not connected"
5.4Ready connector statussnapshot GitHub CLI (gh)"Ready" in green text (.req-met) — even when not selected as active
5.5Missing env var statussnapshot Jira REST APIOrange-brown monospace text "Missing: {VAR_NAMES}"
5.6CLI not detected statussnapshot Jira CLI (acli)Orange-brown text "CLI not detected: acli"
5.7Feature level labelssnapshot connectors"Full Features" or "Basic Features" text on right side of connector row
5.8Setup button expandsClick "Setup" on any connectorButton label changes to "Hide setup"; .setup-instructions panel appears below
5.9Setup instructions contentsnapshot expanded setup panelInstruction text + cyan code badge(s) for required env var names
5.10Hide setup collapsesClick "Hide setup"Setup panel hidden; button reverts to "Setup"
5.11Connector radio selectClick radio input[type="radio"] on a connectorRadio becomes checked; connector row gains .connector-row.active (blue border/bg); auto-saves
5.12Integrations badge = connectedCheck badge count on sub-tabCount shows only providers where connected === true

Phase 6: Inline Sub-Tab

#TestMethodPass Criteria
6.1Inline tab structureClick "Inline" sub-tab"LLM CONTEXTS" section heading + "ENVIRONMENT VARIABLES" section heading visible
6.2Add buttonsnapshotbutton "+ Add" visible at top-right
6.3LLM context itemsnapshot existing context.context-item with tag (Global/Industry/Domain) + truncated .context-text preview
6.4Global tagsnapshot item with no industry/domain.tag.global gray badge "Global"
6.5Env vars empty stateView with no env vars configured"No environment variables configured" + "Add variables accessible via {{env.name}}"
6.6LLM context editHover context item → click "Edit"ContextModal opens pre-filled with type, industry/domain, context text
6.7Inline badge = total countCheck badge on sub-tabCount equals total of LLM contexts + env variables combined

Phase 6b: Inline — Delete Confirm Flow

#TestMethodPass Criteria
6b.1LLM context × opens confirmHover LLM context → click "×"Card transforms to .context-item.deleting
6b.2LLM context confirm textsnapshot deleting cardText "Delete this context?" inside deleting card
6b.3CancelClick .btn-cancel-sm "Cancel"Confirm dismissed; context remains
6b.4Execute deleteClick .btn-delete-confirm "Delete"Context removed; tab badge count decrements

Phase 7: LLM Provider Tab

#TestMethodPass Criteria
7.1LLM Provider tab layoutClick "LLM Provider" top tabTwo-column layout: left = form, right = status panel
7.2Provider dropdown is native selectsnapshotselect#provider native element with OpenAI/Anthropic/Ollama options
7.3Provider auto-fills on changeselect_option() to "Anthropic"Base URL → https://api.anthropic.com; Model → claude-3-5-sonnet-latest
7.4API Key field maskedsnapshot API Key fieldinput#api-key renders as password type; placeholder "sk-..."
7.5API Key show/hide toggleClick "Show" button next to API Key labelInput type toggles passwordtext; button text changes "Show" ↔ "Hide"
7.6"..." action buttonssnapshot Base URL + API Key inputsSmall "..." button visible inside each input field (right side)
7.7Test Connection buttonsnapshot form"Test Connection" secondary button + "Save" primary button below Model field
7.8Status panel fieldssnapshot right column"LLM Configured", "Provider", "Model" rows with current values
7.9LLM Configured: NoView status with no API key"LLM Configured" shows "No" in red
7.10Save configFill API key → click "Save""Saving..." shown briefly; .success-banner green appears; status "LLM Configured: Yes"

Phase 8: Modals — RoleTargetModal

#TestMethodPass Criteria
8.1Add Role modal opensClick "+ Add Role"Modal opens with "New Role" or similar heading
8.2Modal fields — rolesnapshot modalName input (required), Match patterns input, Body textarea visible
8.3Name requiredSubmit without nameValidation error or submit disabled
8.4Match patterns formatEnter "@engineering" in matchPattern accepted; shown as tag on saved role
8.5Modal cancelClose/cancel modalModal closes; no role added to list
8.6Edit role pre-fillsHover role → click "Edit"Modal opens with existing name, match, body values populated
8.7Add Target modalClick "+ Add Target"Modal opens in target mode; fields: Name, Match patterns (domains/globs), Body

Phase 9: State Tests

#TestMethodPass Criteria
9.1Loading stateObserve page on first load.loading div "Loading settings..." visible briefly
9.2Error bannerTrigger API failure (e.g., invalid operation).error-banner red banner appears above tab content
9.3Success bannerSave any setting successfully.success-banner green banner visible; auto-hides after ~3s
9.4Saving stateClick "Save" in LLM ProviderButton shows "Saving..." text and is disabled during save
9.5Testing stateClick "Test Connection"Button shows "Testing..." and is disabled during test
9.6Test result auto-hidesWait after test completes.test-result message visible then disappears after ~4s
9.7Inactive item opacityscreenshot a disabled role/targetCard renders visually dimmed (opacity ~0.5) via .context-item.inactive
9.8Item actions hover-onlysnapshot role card without hoverEdit and × buttons NOT present/visible in snapshot at rest

Automation Tips

  • No URL-based tab state: All tab/sub-tab selection is component-local. Navigate away and back always resets to AI Context > Persona. Cannot deep-link to a sub-tab
  • SPA root required: Load localhost:9876 first, then navigate in-app. Direct /settings returns Fastify 404 JSON
  • Inline delete is NOT window.confirm(): Both Roles/Targets × button and Inline tab × button use in-page inline confirm (.context-item.deleting with .btn-cancel-sm + .btn-delete-confirm). No browser dialog to dismiss
  • Toggle switch is a custom button: button.toggle-switch — NOT a native <input type="checkbox">. Use click() by ref, not select_option()
  • Provider dropdown IS native: select#provider in LLM Provider tab is a real <select>. Use select_option() for automation
  • Item actions are hover-only: Edit and × buttons have opacity: 0 at rest. They appear on .context-item:hover. Use hover() before snapshotting to get refs, or use direct ref-click after hovering
  • Banners auto-hide: Success banners hide after 3s, test result hides after 4s. Screenshot immediately after action
  • Multi-type providers: Providers like GitHub show multiple type badges ("git", "issues provider") — one badge per type
  • Provider "Ready" ≠ Connected: A connector showing "Ready" in green means env vars are set, but the provider status is still "Not connected" unless a radio is selected (active connector)
  • Connector radio deselects on re-click: Clicking an already-active connector's radio calls handleConnectorChange(prov.id, null) — deactivates it, reverts provider to "Not connected"
  • Scroll position preserved on role/target toggle: preserveScroll() is called on toggle — list does not scroll to top after toggle action
  • Inline tab section headings uppercase: "LLM CONTEXTS" and "ENVIRONMENT VARIABLES" headings appear uppercase via CSS — underlying content may be mixed-case

Known Blockers

  • File upload fields: None observed in current settings UI
  • Setup instructions expand via click: Native browser Setup panel — automatable via click() on "Setup" button and waiting for .setup-instructions to appear
  • Connector radio auto-saves: No explicit Save button for connector selection — change fires immediately on radio onchange. Cannot stage and cancel