S
Knowledge Pack Files
SideButton Marketing Website Knowledge Pack Files
Browse the source files that power the SideButton Marketing Website MCP server knowledge pack.
Available free v1.0.3 Browser
$
sidebutton install sidebutton.com Prerequisites
- Authenticated session
- Workflows loaded (at least 1 per role: OPS, SE, QA, SD, PM)
- Cookie consent dismissed
Phase 1: Page Load & Structure
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 1.1 | Workflows page loads | navigate to /portal/workflows | H1 "Workflows" visible |
| 1.2 | Workflow count | snapshot | "N workflows" text below heading (currently "12 workflows") |
| 1.3 | Pack group header | snapshot | "SideButton Default Pack" text below count |
| 1.4 | Column headers | snapshot | "WORKFLOW", "SOURCE", "UPDATED" headers visible above rows |
| 1.5 | Workflow list renders | snapshot(includeContent=true) | All workflows listed with toggles, role badges, titles, descriptions, slugs, source badges, times |
| 1.6 | Sidebar active | snapshot | "Workflows" nav link highlighted in sidebar |
| 1.7 | Browser tab title | snapshot | Page title = "Workflows - SideButton Fleet" |
Phase 2: Workflow List — Row Elements
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 2.1 | Enable/disable toggle present | snapshot | Each workflow row has a button "Disable workflow {slug}" toggle |
| 2.2 | Toggle is green (enabled) | screenshot(ref=toggle) | Toggle switch shows green/on state for all workflows |
| 2.3 | Role badge: PM | snapshot | Purple circle with "PM" text on pm-drive, pm-sprint |
| 2.4 | Role badge: QA | snapshot | Purple circle with "QA" text on qa-* workflows |
| 2.5 | Role badge: SE | snapshot | Green circle with "SE" text on se-* workflows |
| 2.6 | Role badge: SD | snapshot | Orange circle with "SD" text on sd-coverage |
| 2.7 | Role badge: OPS | snapshot | Green circle with "OPS" text on pull-repos |
| 2.8 | Workflow title (bold) | snapshot | Bold title text (e.g. "PM Agent: Drive Ticket") |
| 2.9 | Workflow description | snapshot | Grey description below title, truncated with "..." if long |
| 2.10 | Workflow slug | snapshot | Grey monospace slug (e.g. "pm-drive") |
| 2.11 | Step count | snapshot | "1 step" text per workflow |
| 2.12 | Source badge | snapshot | Grey "default" pill badge per workflow |
| 2.13 | Relative time | snapshot | "Nm ago" or "Nh ago" in UPDATED column |
| 2.14 | Row clickable | click any workflow link | Navigates to /portal/workflows/{id} |
| 2.15 | All 12 workflows present | snapshot(includeContent=true) | pm-drive, pm-sprint, pull-repos, qa-followup, qa-new-ticket, qa-regression, qa-validate, sd-coverage, se-followup, se-rca, se-rca-fix, se-work |
Phase 3: Enable/Disable Toggle
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 3.1 | Toggle click does not navigate | click toggle button | URL stays at /portal/workflows, no navigation to detail |
| 3.2 | Toggle on list page | click button "Disable workflow pull-repos" → snapshot | Toggle changes state (button text may change to "Enable workflow pull-repos") |
| 3.3 | Re-enable workflow | click toggle again → snapshot | Toggle returns to enabled state |
| 3.4 | Toggle on detail page | navigate to detail → click button "Disable workflow" → snapshot | "Enabled" text changes to "Disabled" next to H1 |
| 3.5 | Re-enable on detail | click toggle again → snapshot | Text returns to "Enabled" |
Phase 4: Workflow Detail — OPS (no inputs)
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 4.1 | Detail loads | click "pull-repos" row → snapshot | H1 = "Git pull on all repos and reinstall skill packs" |
| 4.2 | Browser tab title | snapshot | Page title = "pull-repos - SideButton Fleet" |
| 4.3 | Back link | snapshot | "Back to workflows" link with chevron present |
| 4.4 | Enabled toggle | snapshot | Green toggle + "Enabled" text next to H1 |
| 4.5 | Metadata line | snapshot | Slug "pull-repos", "1 step", Created date, Updated date |
| 4.6 | STEPS section | snapshot | "STEPS" label visible (uppercase) |
| 4.7 | Step name + role badge | snapshot | "Ops: Pull All Repos" with "OPS" badge |
| 4.8 | Step description | snapshot | Description text below step name |
| 4.9 | No input params | snapshot | No ticket_url / hint input params displayed |
| 4.10 | terminal.open step | snapshot | Green terminal.open badge + "Agent: Pull All Repos" + ~/workspace |
| 4.11 | terminal.run step | snapshot | Red terminal.run badge + full agent prompt text in dark block |
| 4.12 | poll step | snapshot | "Monitor task reports" with poll badge + polling description |
| 4.13 | Step indicator dots | screenshot | Blue dots visible to the left of each step |
| 4.14 | Recent Jobs section | snapshot | "RECENT JOBS" label with job links (if workflow has been run) |
Phase 5: Workflow Detail — SE/QA (with inputs)
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 5.1 | SE detail loads | navigate to se-work detail → snapshot | H1 = "Read ticket, understand context, implement fix, create PR, report back" |
| 5.2 | Input params visible | snapshot | ticket_url: {{input.ticket_url}} and hint: {{input.hint}} displayed below step description |
| 5.3 | Prompt contains template vars | snapshot(includeContent=true) | {{ticket_url}} and {{hint}} in terminal.run prompt text |
| 5.4 | Entry path template | snapshot | terminal.open shows {{entry_path}} as path (not fixed path) |
| 5.5 | Agent name matches | snapshot | "Agent: SE Work" in terminal.open step |
| 5.6 | QA detail loads | navigate to qa-validate detail → snapshot | H1 = "Review PR code against ticket acceptance criteria — does NOT test live site" |
| 5.7 | QA input params | snapshot | Same input params: ticket_url and hint |
| 5.8 | QA without recent jobs | snapshot | No "RECENT JOBS" section when workflow has no executions |
Phase 6: Workflow Detail — PM (long prompt)
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 6.1 | PM detail loads | navigate to pm-drive detail → snapshot | H1 = description starting with "Drive a ticket to completion" |
| 6.2 | Long prompt visible | snapshot(includeContent=true) | Multi-phase prompt with PLAN, REFINE, MANAGE, VALIDATE & CLOSE sections visible |
| 6.3 | Prompt in dark code block | screenshot | terminal.run prompt rendered in dark background code block |
| 6.4 | Scrollable content | scroll down on page | Full prompt content accessible via scroll |
| 6.5 | Recent jobs with status | snapshot | Recent job rows show color-coded dots (red=active, green=completed, grey=failed) + "pm-drive — queued" + job IDs |
Phase 7: Navigation & Cross-checks
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 7.1 | Back to list | click "Back to workflows" from detail | Returns to /portal/workflows with full list |
| 7.2 | Recent Job link | click a recent job link → snapshot | Navigates to /portal/jobs/{id} with job detail |
| 7.3 | Direct URL access | navigate to /portal/workflows/249 | Correct workflow detail loads (pull-repos) |
| 7.4 | Invalid workflow ID | navigate to /portal/workflows/99999 | Redirects to /portal/workflows list (no error, no crash) |
| 7.5 | Sidebar nav from detail | click "Jobs" in sidebar from detail page | Navigates to /portal/jobs |
| 7.6 | All role types accessible | navigate to one workflow per role (PM/QA/SE/SD/OPS) | All 5 detail pages load correctly |
Phase 8: Edge Cases
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 8.1 | Non-numeric ID | navigate to /portal/workflows/abc | Redirects to list or shows error (no crash) |
| 8.2 | Negative ID | navigate to /portal/workflows/-1 | Redirects to list or shows error (no crash) |
| 8.3 | Page refresh on detail | navigate to detail → reload page | Detail page reloads correctly with same content |
| 8.4 | Page refresh on list | navigate to list → reload page | List reloads with all 12 workflows |
| 8.5 | Long prompt scroll | on pm-drive detail, scroll to bottom | All prompt text visible, RECENT JOBS section below |
| 8.6 | Multiple recent jobs | on a heavily-used workflow → snapshot | Multiple job rows listed with correct chronological order (newest first) |
Phase 9: Input Parameter Variations
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 9.1 | Hint-only workflow (sd-coverage) | navigate to sd-coverage detail → snapshot | Only hint: {{input.hint}} shown — no ticket_url param |
| 9.2 | Hint-only workflow (pm-sprint) | navigate to pm-sprint detail → snapshot | Only hint: {{input.hint}} shown — no ticket_url param |
| 9.3 | Extra input (qa-regression depth) | navigate to qa-regression detail → snapshot | Three input params: ticket_url, hint, AND depth: {{input.depth}} |
| 9.4 | No inputs (pull-repos) | navigate to pull-repos detail → snapshot | No input params section below step description |
| 9.5 | Fixed path vs template | snapshot pull-repos detail | terminal.open shows ~/workspace (fixed path, not {{entry_path}}) |
| 9.6 | Template path | snapshot se-work detail | terminal.open shows {{entry_path}} (template variable) |
Phase 10: Recent Jobs — Status Dots
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 10.1 | Active job dot color | screenshot recent jobs on heavily-used workflow | Most recent job shows red/orange dot |
| 10.2 | Completed job dot color | screenshot older jobs | Completed jobs show green dots |
| 10.3 | Failed job dot color | screenshot (if visible) | Failed/timed-out jobs show grey dots |
| 10.4 | Job count limit | snapshot workflow with many executions | Up to 10 recent jobs displayed |
| 10.5 | Few jobs displayed | snapshot workflow with limited executions | Shows fewer than 10 if not enough executions (no padding/placeholder) |
| 10.6 | Job links navigate | click any recent job link | Navigates to /portal/jobs/{id} with correct job detail |
| 10.7 | Chronological order | snapshot recent jobs | Jobs listed newest first (highest ID, most recent time) |
Phase 11: Toggle Accessibility & State Detection
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 11.1 | Toggle button label (list, enabled) | snapshot list page | Button text = "Disable workflow {slug}" for all enabled workflows |
| 11.2 | Toggle button label (list, disabled) | disable a workflow → snapshot | Button text still reads "Disable workflow {slug}" — does NOT change to "Enable" |
| 11.3 | Toggle button label (detail, enabled) | snapshot detail page | Button text = "Disable workflow" |
| 11.4 | Toggle button label (detail, disabled) | disable on detail → snapshot | Button text still reads "Disable workflow" — does NOT change to "Enable" |
| 11.5 | Detect state via content | snapshot(includeContent=true) on detail | "Enabled" or "Disabled" text visible in page content (not button label) |
| 11.6 | Toggle updates timestamp | disable workflow → navigate to list → snapshot | Toggled workflow shows "Just now" in UPDATED column |
| 11.7 | Re-enable restores timestamp | re-enable same workflow → snapshot list | UPDATED column refreshes again to "Just now" |
Phase 12: Multi-Pack Source Display
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 12.1 | Pack group header | snapshot list page | Header below count shows pack source names joined by " · " (e.g. "SideButton Default Pack · venmate-skill-packs-main (2)") |
| 12.2 | Source badge per workflow | snapshot(includeContent=true) | Each workflow shows its source badge (e.g. "default") |
| 12.3 | Non-default pack workflows | snapshot | Workflows from non-default packs show their pack name as source badge |
Phase 13: Recent Jobs Ordering & Limits
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 13.1 | Max 10 recent jobs | snapshot detail of heavily-used workflow | Exactly 10 or fewer job links shown |
| 13.2 | Chronological order | snapshot recent jobs | Jobs sorted by most recent execution time first |
| 13.3 | Job ID ordering | snapshot | Job IDs may not be strictly descending — time ordering takes precedence over ID ordering |
| 13.4 | No recent jobs section | snapshot sd-coverage or new workflow | "RECENT JOBS" section absent (not empty placeholder) |
| 13.5 | Job link format | snapshot | Format: "slug — {ticket_key or 'queued'}" + #ID + relative time |
| 13.6 | All jobs show "queued" | snapshot workflow without ticket-triggered jobs | All recent jobs show "queued" label (not ticket keys) |
Phase 14: H1 Truncation & Long Content
| # | Test | Method | Pass Criteria |
|---|---|---|---|
| 14.1 | Long H1 truncated in snapshot | snapshot detail of pm-drive | Heading ref text is truncated — does not contain full description |
| 14.2 | Full H1 in content | snapshot(includeContent=true) detail of pm-drive | Full description text visible in page content markdown |
| 14.3 | Short H1 not truncated | snapshot detail of pull-repos | Heading text "Git pull on all repos and reinstall skill packs" fully visible |
| 14.4 | Long description on list | snapshot(includeContent=true) list | Long descriptions truncated with "..." on list page |
Automation Tips
- Workflow list rows are
linkelements — click by ref to navigate to detail - Enable/disable toggles are
buttonelements with text "Disable workflow {slug}" — separate from the row link - URLs use numeric IDs (
/portal/workflows/247), not slugs — don't use slugs in URLs - The detail page has no edit/create functionality — it's read-only except for the enable/disable toggle
- Long prompts in terminal.run steps may require scrolling — use
snapshot(includeContent=true)to get full text without scrolling - Role badges are styled circles, not images — color varies by role
- "1 step" is shown even for workflows with terminal.open + terminal.run + poll sub-steps
- Recent Jobs section only appears if the workflow has been executed — shows up to 10 jobs
- Recent job dots are color-coded: red/orange = active, green = completed, grey = failed — do not assert all dots are green
- Invalid workflow IDs redirect to list page silently — check URL after navigation to detect
- Cookie consent dialog reappears on navigation — dismiss with
click(ref=N)on Reject/Accept button - The H1 on detail is the description, not the title — don't assert the short title as H1 content
- Step type badges are color-coded: terminal.open = green/teal, terminal.run = red/coral, poll = grey
- Column headers (WORKFLOW, SOURCE, UPDATED) appear once above the first workflow row
- Pack group header shows all pack sources (e.g. "SideButton Default Pack · venmate-skill-packs-main (2)") between the count and column headers
- Toggle button accessibility label never changes — always "Disable workflow" on detail, "Disable workflow {slug}" on list, regardless of enabled/disabled state. Use page content text ("Enabled"/"Disabled") or screenshot to determine state
- Toggling a workflow updates its
updated_attimestamp — the UPDATED column will show "Just now" after toggle - Workflow IDs are dynamic (change on re-registration) — never hardcode IDs in URLs; navigate via list page clicks
- Long H1 descriptions are truncated in accessibility snapshot — use
snapshot(includeContent=true)for full text - Recent jobs are sorted by execution time, not by job ID — IDs may appear out of sequence
Known Blockers
- No way to test workflow creation/editing through the UI — managed via CLI only
- Cannot verify workflow execution from this page — must check Jobs page for results
- Toggle state persistence cannot be verified without re-navigating or reloading
- Toggle state not detectable via accessibility tree — button label always says "Disable workflow" regardless of state; must use screenshot or page content text to verify
- Non-default pack source workflows may not always be present — depends on which skill packs are registered in the fleet