Sentinel User Guide
AI-powered browser testing, bug tracking, feature requests, and visual guide generation — with 50+ MCP tools for full automation.
Getting Started
1.1 Prerequisites
- Node.js 18+ and npm installed on your system.
- A Chromium-based browser: Google Chrome 114+, Microsoft Edge, or Brave.
1.2 Build from Source
Open a terminal in the project root and run:
cd extension
npm install
npm run build
This creates the extension/dist/ folder containing the production-ready extension files.
npm run dev for live rebuilds during development. After each rebuild, reload the extension in your browser to pick up changes.
1.3 Load in Your Browser
- Open your browser and navigate to
chrome://extensions/. - Enable Developer mode using the toggle in the top-right corner.
- Click Load unpacked.
- Select the
extension/distfolder from this project. - Sentinel appears in your toolbar. Pin it for easy access.
1.4 Open the Side Panel
Click the Sentinel icon in your browser toolbar. The side panel opens alongside your current page and stays open while you interact with websites — unlike popups, it won't close when you click away.
Recording
2.1 Start a Recording
- Open the Sentinel side panel by clicking its toolbar icon.
- Click Start Recording in the header controls.
- Interact with any website — clicks, typing, form submissions, keyboard shortcuts, and scrolling are all captured automatically.
- Watch recorded steps appear live in the Steps tab as you work.
- Click Stop Recording when finished.
2.2 What Gets Captured
| Event | Details |
|---|---|
| Clicks | Buttons, links, inputs, and interactive elements. Layout-only containers (div, section) are filtered out unless they have roles or event handlers. |
| Text Input | Debounced at 800ms per element. Only the final value is captured on blur or timeout. |
| Keyboard | Special keys (Enter, Escape, Tab, arrows, F-keys) and modifier combos (Ctrl+S, etc.). |
| Scrolling | Debounced at 1 second with a 200px minimum distance threshold. |
| Form Submit | Captured on the submit event. |
| Navigation | Page URL changes are tracked automatically. |
| Select/Dropdown | Option selections on <select> elements are captured with selected value. |
| Drag & Drop | Drag operations captured with start and end coordinates. |
| Hover | Hover events on interactive elements (when triggered via MCP). |
2.3 Noise Reduction
Sentinel applies intelligent filtering to keep recordings clean and readable:
- Input debouncing — 800ms per element; only emits the final value on blur or timeout.
- Keyboard filtering — only special keys and modifier combos are recorded; regular typing is captured as input events.
- Click deduplication — clicks within 300ms of each other on the same element are merged.
- Layout container rejection — clicks on
div,section,main, etc. are suppressed unless the element has arole,onclick, ortabindex. - Scroll throttling — 1-second debounce with a 200px minimum distance threshold.
- Change events — removed entirely (redundant with debounced input).
2.4 Smart Selectors
Each recorded action stores multiple selector strategies for reliable playback:
- Primary selector — the most specific CSS selector (by ID, data-testid, aria-label, or nth-child path).
- Candidate selectors — alternative selectors ranked by confidence, used as fallbacks during playback.
- Target snapshot — element attributes (tag, text, role, classes) stored for heuristic recovery when all selectors fail.
- Selector confidence — a score indicating how reliable the primary selector is expected to be.
Session Management
3.1 Save & Load
Save
Save the current recording for later use. Give it a meaningful name to keep your library organized.
Load
Load any saved session to review its steps, continue editing, or play it back on the target website.
3.2 Rename & Delete
Rename
Click the session name to edit it inline. Press Enter or click away to confirm.
Delete
Remove sessions you no longer need. This action is immediate and cannot be undone.
3.3 Storage
Sessions are stored in chrome.storage.local and persist across browser restarts. Storage is per-browser-profile — sessions are not synced across devices.
3.4 Session Tags & Metadata
Sessions can include additional metadata for organization and automation:
- Tags — label sessions with custom tags for filtering and grouping.
- Session kind —
recordingfor standard sessions orsuitefor test suites. - Export options — configure redaction profiles and diagnostic inclusion per session.
- Run stats — track pass/fail counts, flaky scores, and last run summaries across multiple playback runs.
Visual Guides
4.1 Export an HTML Guide
Turn any recording into a polished, self-contained HTML document with screenshots:
- Stop the current recording (or load a saved session).
- Click Export HTML Guide.
- A
.htmlfile downloads automatically. - Open it in any browser to see a step-by-step walkthrough with screenshots, selectors, and timestamps.
4.2 Guide Editor
Before exporting, refine your guide in the built-in editor. Click Edit Guide to open it in a new tab.
- Three-column layout — table of contents sidebar, step editor, and live preview.
- Edit step descriptions — rewrite auto-generated text to match your documentation style.
- Reorder or remove steps — drag steps or delete irrelevant ones.
- Live preview — see exactly how the exported guide will look as you edit, with
contenteditablesupport. - Guide title & intro — set a custom title and introductory paragraph for the exported guide.
4.3 Custom Sections
Insert custom sections between steps to add context and documentation:
| Section Type | Description |
|---|---|
note | Informational callout highlighted in blue. |
warning | Warning callout highlighted in amber. |
tip | Helpful tip highlighted in green. |
heading | Section heading to break the guide into chapters. |
html | Raw HTML block for fully custom content. |
Sections can be added via the guide editor UI or programmatically through the sentinel_edit_guide MCP tool.
4.4 Export Profiles
Choose an export profile to control what information is included in the generated guide:
Internal
Full technical detail including CSS selectors, timestamps, and debug information. Designed for developers and QA engineers.
Client
Clean, non-technical output with redacted selectors and simplified descriptions. Designed for client handoff and stakeholder review.
4.5 Sharing Guides
Exported guides are completely standalone — no external dependencies, all images embedded as base64. Share them via email, Slack, your team wiki, or any file-sharing platform. Anyone with a web browser can open them.
Playback
5.1 Start Playback
- Navigate to the page where the recording started.
- Open the Sentinel side panel.
- Choose a playback speed: 0.5x, 1x, 1.5x, 2x, or 4x.
- Click Start Playback.
A progress bar shows the current step number and total steps. During playback, the target element is highlighted with a visual indicator.
5.2 Playback Controls
| Control | Description |
|---|---|
| Pause | Temporarily halt playback at the current step. |
| Resume | Continue playback from where you paused. |
| Stop | End the playback session entirely. |
| Next Step | Advance to the next action (step-by-step mode only). |
5.3 Step-by-Step Mode
Enable step-by-step mode to advance one action at a time. After each step executes, playback pauses and waits for you to click Next Step. This is useful for debugging workflows or demonstrating processes to others.
5.4 Selector Recovery
When a recorded element can't be found by its primary selector, Sentinel automatically attempts recovery:
- Primary selector — the original CSS selector is tried first.
- Candidate selectors — alternative selectors stored during recording are tried in confidence order.
- Heuristic matching — the target snapshot (tag, text, role, attributes) is used to find the best match in the current DOM.
- Failed — if no match is found after all strategies, the step is marked as failed in the test report.
Each step's resolution strategy is tracked (primary, candidate, heuristic, or failed) and included in playback metrics.
Assertions & Testing
6.1 Adding Assertions
Add assertions to turn recordings into automated tests that validate your application's state.
- Expand the Assertions panel in the side panel.
- Click Inspect Element — hover over any element on the page to highlight it, then click to select.
- Choose an assertion type from the dropdown.
- Enter an expected value (if required) and click Add Assertion.
6.2 Assertion Types
| Type | Description |
|---|---|
| Is visible | Asserts the element is visible on the page. |
| Is hidden | Asserts the element is not visible. |
| Text contains | Asserts the element's text includes the expected string. |
| Text equals | Asserts the element's text matches exactly. |
| Has class | Asserts the element has the specified CSS class. |
| Exists in DOM | Asserts the element exists in the document. |
6.3 Retry Logic
Assertions support configurable retry behavior for elements that appear asynchronously:
retryMs— total retry window in milliseconds (e.g., 3000 = retry for up to 3 seconds).retryIntervalMs— interval between retry attempts (e.g., 200 = check every 200ms).
This is especially useful for SPAs where elements appear after async operations like API calls or route transitions.
6.4 Test Reports
Assertions are evaluated automatically during playback after their assigned step. When playback completes, a Test Report displays:
- Pass/fail status for each assertion with actual vs. expected values.
- Step resolution details — which selector strategy succeeded.
- Playback metrics — total duration, recovery warnings, confidence scores.
6.5 Flakiness Detection
When sessions are replayed multiple times, Sentinel tracks run statistics including pass/fail counts and computes a flaky score. Sessions with inconsistent results are flagged, helping you identify tests that need stabilization.
Bug & Issue Tracking
7.1 Captured Errors
Sentinel automatically captures JavaScript errors and network failures from the pages you're testing. View them in the Errors tab.
| Source | What's Captured |
|---|---|
console.error | Explicit error logging from application code. |
window.onerror | Uncaught exceptions with file, line, and column info. |
| Promise rejections | Unhandled promise rejections with reason and stack. |
| CSP violations | Content Security Policy violations with directive and blocked URI. |
| Network failures | Failed HTTP requests detected via PerformanceObserver. |
Errors are linked to the recording timeline, so you can see exactly when they occurred relative to your actions.
7.2 Issue Management
Captured errors can be promoted to issues with additional metadata:
- Severity levels — Critical, High, Medium, or Low priority.
- Issue types —
bugorfeature-request. - Fingerprinting — each issue gets a unique fingerprint for duplicate detection.
- Step correlation — issues are linked to specific recorded steps by index.
- Manual entry — add bugs manually without relying on error tracking.
Manage issues in the Findings tab — update severity, edit descriptions, or delete resolved issues.
7.3 Issue Analysis
The sentinel_analyze_issues tool (available via MCP) performs intelligent analysis on your issue list:
- Duplicate detection — identifies issues with matching fingerprints or similar error messages.
- Clustering — groups related issues by error source, page URL, or selector patterns.
- Pattern recognition — detects recurring patterns like same-page errors, same-error-source issues, and error clusters.
7.4 Error Context
Each issue can include rich context captured at the time of the error:
- Network log — XHR/fetch requests captured around the error, including URLs, status codes, and timing.
- Console log — browser console output leading up to the error.
- JS errors — full stack traces with file, line, and column references.
Context is retrieved via sentinel_get_issue_context and included in exported reports.
7.5 Issue Reports
Export captured issues as a standalone issue report HTML document designed for sharing with developers. Reports include:
- Error messages and stack traces
- Steps to reproduce (from the recording)
- Screenshots at each step
- Network and console log context
- Browser and page metadata
- Severity and priority indicators
Custom reports can be generated via sentinel_export_custom_report using the block-based renderer for full layout control.
Feature Requests
8.1 Creating Requests
Create feature requests tied to specific page elements. The feature request builder is available in the side panel:
- Open the Feature Req panel in the Steps tab.
- Click Inspect Element to select the relevant UI element.
- Enter a title and description for the enhancement.
- Set a priority level (Critical, High, Medium, or Low).
- Click Submit — a screenshot is captured automatically and attached to the request.
8.2 Element Inspection
When inspecting an element for a feature request, Sentinel captures:
- CSS selector for the target element
- Element tag, classes, and attributes
- Current visual state (screenshot)
- Page URL and timestamp
This gives developers full context about where the enhancement should apply.
8.3 Exporting Requests
Feature requests are exported alongside bug reports in the issue report. They appear with a distinct "Feature Request" label and include the inspection screenshot and element context. Via MCP, use sentinel_save_issue with type: "feature-request".
Manual Notes & Annotation
9.1 Creating Notes
Manual notes allow you to document observations that aren't tied to a specific recorded action. Access the Notes tab from the bottom navigation bar.
- Click New Note to start a draft.
- Notes are persistent and saved automatically as you type, even if you switch tabs.
- Port tools: Attach screenshots or create bug reports directly from the note editor.
9.2 Tagging & Organization
Organize your documentation with custom tags. Type a tag (e.g., #regression) in the tag input field and press Enter. You can filter the note list by clicking these tags in the main Notes view.
9.3 Annotation Editor
Sentinel includes a professional PowerPoint-style annotation suite for screenshots and captured video frames:
- Selection: Use the select tool to drag shapes or resize them using the corner handles.
- Shapes: Pen, Rectangle, and Arrow tools for visual highlighting.
- Highlight: A semi-transparent brush for non-obscuring emphasis.
- In-Place Text: Double-click any text or arrow-text element to edit content directly on the canvas.
- Font Controls: Real-time sliders for font size and stroke width.
9.4 Layer Management
The right-hand panel manages your annotation layers:
- Z-Ordering: Drag and drop layers in the list to move them behind or in front of other shapes.
- Deletion: Click the trash icon on a layer to remove specific annotations.
- Grouping: Mark layers as grouped for better visual organization in the sidebar.
Workspaces & Resources
10.1 Project Management
Organize your work into Workspaces (Projects). Each workspace tracks its own set of notes, findings, and resources.
- Define local source paths and dev server URLs per project.
- Switch the active project from the dropdown in the header bar.
- Manage all workspaces from the dedicated Workspaces tab.
10.2 Resource Gallery
The Resources tab provides a centralized gallery of all project assets:
- Screenshots: Every annotated or captured screenshot in the workspace.
- Videos: All recorded video feed clips.
- Findings: Quick links to bugs and feature requests.
10.3 Quick Actions
Hover over any card in the Resource Gallery to access one-click actions: Open Full Preview, Rename, Download, or Delete.
Video Recording
11.1 Capture a Video
Click Record Video in the header controls to start a screen capture of the active browser tab. The recording runs alongside step recording — you can capture both simultaneously.
- Video is encoded as WebM (VP9/VP8 codec) at 1 Mbps.
- Maximum recording duration is 5 minutes per clip.
11.2 Managing Clips
View all recorded clips in the Videos tab. Each clip shows a thumbnail preview. Click any clip to enlarge it in a modal viewer.
11.3 Limitations
Video clips are stored as blob URLs in memory and are not persisted across browser restarts. Export or download clips before closing the browser if you need to keep them.
UI Reference
12.1 Side Panel Layout
The Sentinel side panel is organized into tabs and collapsible sections:
| Section | Purpose |
|---|---|
| Header | Logo, title, active tab pill, AI connection status, and quick-access controls (Record, Video, Bug Sync, Export). |
| Status Bar | Shows current state: Idle, Recording, Playing, or Paused. |
| Steps Tab | Live list of recorded actions with type, selector, and value. |
| Errors Tab | Captured JavaScript errors and network failures. |
| Findings Tab | Bug and feature request tracker with severity, filtering, and analysis. |
| AI Tab | Activity log of all MCP tool calls from AI assistants. |
| Notes Tab | Manual notes with tags, attachments, annotations, and project association. |
| Resources Tab | Centralized gallery of all screenshots, videos, issues, and notes across projects. |
| Projects Tab | Multi-project workspace manager with descriptions and repository links. |
| Videos Tab | Recorded screen capture clips with thumbnails. |
| Recording Controls | Start/Stop recording buttons. |
| Playback Controls | Speed selector, step-by-step toggle, play/pause/stop, progress bar. |
| Sessions | Save, load, rename, and delete recorded sessions. |
| Assertions | Element inspector and assertion builder for automated tests. |
| Feature Req | Feature request builder with element inspection. |
| Test Report | Pass/fail results, playback metrics, and selector recovery details. |
| Settings | MCP bridge controls, multi-project management, and AI tool configuration. |
12.2 AI Activity Log
The AI tab displays a real-time log of all MCP tool invocations from connected AI assistants. Each entry shows:
- Tool name and timestamp
- Command parameters
- Success/error status and duration
This is useful for debugging AI automation workflows and understanding what the AI is doing at each step.
12.3 Keyboard Events
During recording, Sentinel captures these keyboard events:
| Category | Keys |
|---|---|
| Navigation | Enter Tab Escape |
| Arrow keys | ↑ ↓ ← → |
| Function keys | F1 through F12 |
| Modifier combos | Ctrl+key, Alt+key, Cmd+key |
Regular character typing is captured as text input events (debounced), not individual key presses.
AI Automation (MCP)
13.1 Overview
Sentinel includes a Model Context Protocol (MCP) server with 50+ tools that let AI assistants (Claude Code, Cursor, Copilot, etc.) control the extension programmatically. The AI can navigate pages, query elements, record guides, track errors, take and compare screenshots, drag-and-drop, manage sessions, and generate custom reports — all in a single conversation.
Once configured, you can give the AI high-level instructions like:
- “Perform the task addition flow and write a guide.”
- “Evaluate task addition for JS errors.”
- “Compare screenshots before and after my CSS changes.”
- “Find all buttons on the page and test each one.”
13.2 Setup & Installation
There are two ways to run the MCP server. Option A (recommended) lets you start and stop it with a button inside the extension. Option B is the manual terminal fallback.
Option A — Start/Stop from the Settings tab (recommended)
- Install Python dependencies (once):
pip install -r mcp-server/requirements.txt - Register the native launcher (once). Open the Sentinel Settings tab → MCP Bridge. If the launcher is not yet installed you will see an amber banner with your exact command — copy and run it:
The extension ID is shown in the banner and has a Copy button. After running the command, reload the extension inpython mcp-server/install_host.py <your-extension-id>chrome://extensions/. - From now on, use the Start and Stop buttons in the Settings tab to control the server — no terminal needed.
- Configure your AI client. In the Supported AI Tools section, click Install next to your tool to copy the correct config snippet, then paste it into the tool’s config file.
Option B — Manual terminal
- Install dependencies (once):
pip install -r mcp-server/requirements.txt - Start the server:
python mcp-server/sentinel_mcp.py - Keep the terminal open while using AI tools. Open the Sentinel side panel in Chrome and check for the green Connected badge.
install_host.py for your platform.
13.3 MCP Tools Reference
Sentinel provides 50+ MCP tools organized into categories:
Navigation & Page Interaction
| Tool | Description |
|---|---|
sentinel_attach | Attach to the current browser tab. |
sentinel_navigate | Navigate the active tab to a URL. |
sentinel_screenshot | Capture a screenshot of the current tab. |
sentinel_screenshot_save | Save a screenshot directly to a file on disk. |
sentinel_compare_screenshots | Pixel-by-pixel before/after screenshot comparison. |
sentinel_status | Get extension state (recording, error tracking, project context). |
Element Querying
| Tool | Description |
|---|---|
sentinel_get_page_snapshot | Get all interactive elements on the current page. |
sentinel_find_element | Find elements by text content, ARIA role, or tag name. |
sentinel_get_text_content | Read the text content of a specific element. |
sentinel_get_element_state | Get the full state of a form element (value, checked, options). |
sentinel_evaluate_selector | Check if a CSS selector exists and get element info. |
sentinel_wait_for_element | Wait for a CSS selector to appear in the DOM. |
sentinel_wait_for_text | Wait for specific text to appear on the page. |
Actions & Input
| Tool | Description |
|---|---|
sentinel_inject_action | Execute a single synthetic DOM action (click, input, scroll, etc.). |
sentinel_inject_actions | Execute multiple actions in a batch sequence. |
sentinel_hover | Trigger mouseover/hover events on an element. |
sentinel_select_option | Set the value of a dropdown/select element. |
sentinel_key_sequence | Send keyboard shortcuts and key sequences. |
sentinel_drag | Perform drag-and-drop between elements or coordinates. |
Recording & Sessions
| Tool | Description |
|---|---|
sentinel_start_recording | Start recording user interactions. |
sentinel_stop_recording | Stop recording and return captured action count. |
sentinel_get_session | Get all recorded actions from the current session. |
sentinel_get_session_with_screenshots | Get session actions with base64-encoded screenshots. |
sentinel_analyze_session | Analyze session structure, page flow, and metrics. |
sentinel_set_step_description | Set a human-readable description for a specific step. |
sentinel_clear_session | Clear the current session data. |
sentinel_save_session | Save the current session to persistent storage. |
sentinel_load_session | Load a previously saved session by name. |
sentinel_list_sessions | List all saved sessions with metadata. |
sentinel_run_saved_session | Replay a saved session by name. |
Guide & Report Generation
| Tool | Description |
|---|---|
sentinel_edit_guide | Pre-configure guide content: title, intro, custom sections, step edits. |
sentinel_export_guide | Generate an HTML guide from the recorded session. |
sentinel_export_custom_guide | Custom HTML guide export with full layout control. |
sentinel_export_custom_report | Custom HTML report export using block-based renderer. |
sentinel_render_blocks | Render typed content blocks (hero, stats, cards, tables, timelines, etc.). |
sentinel_design_system | Get CSS design system reference for consistent styling. |
Error Tracking & Issues
| Tool | Description |
|---|---|
sentinel_start_error_tracking | Start capturing JS errors, network failures, and CSP violations. |
sentinel_stop_error_tracking | Stop error tracking. |
sentinel_get_errors | Get all captured errors. |
sentinel_save_issue | Save a bug or feature request with screenshot. |
sentinel_get_issues | Get all saved issues. |
sentinel_get_issues_with_screenshots | Get issues with base64-encoded screenshots. |
sentinel_update_issue | Modify an existing issue (severity, title, notes). |
sentinel_delete_issue | Delete an issue by ID. |
sentinel_analyze_issues | Analyze issues for patterns, clusters, and duplicates. |
sentinel_get_issue_context | Get network/console log context for a specific issue. |
sentinel_export_issues | Generate an HTML issue report. |
sentinel_get_test_results | Get assertion results from the last playback run. |
Network & Console Monitoring
| Tool | Description |
|---|---|
sentinel_get_network_log | Get all captured XHR/fetch requests with timing and status. |
sentinel_wait_for_network_idle | Wait for network silence (no pending requests). |
sentinel_get_console_log | Get browser console output (logs, warnings, errors). |
One-Shot Workflows
| Tool | Description |
|---|---|
sentinel_create_guide | Navigate, perform actions, and export a guide in one call. |
sentinel_investigate | Navigate, track errors, and return findings in one call. |
13.4 Settings & Projects
The Settings tab (gear icon) is the main control center for MCP and project management.
MCP Bridge
Shows the server name, live WebSocket status badge, and process controls.
Start button
Visible when the server is stopped and the launcher is installed. Spawns sentinel_mcp.py as a background process.
Stop button
Visible when the server is running. Terminates the process cleanly via PID file.
Force Restart
Available in Settings to force-kill any stale server process holding port 18925 and start a fresh instance.
Status badges
Connected — WebSocket linked, AI tools ready.
Disconnected — server not running or not reachable.
Error — connection attempt failed.
Multi-Project Manager
Sentinel supports multiple projects, each with its own configuration. Use the project manager to:
- Add projects — create new project profiles with name, source folder, and dev server URL.
- Switch projects — click any project to make it active. The AI receives the active project's context via
sentinel_status(). - Edit or delete — update project details or remove projects you no longer need.
Each project configuration includes:
| Field | Description |
|---|---|
| Project Name | Human label shown in status responses. |
| Source Folder | Filesystem path to your project root (e.g. C:/projects/my-app). The AI uses this with its own file-reading tools to understand the codebase. |
| Dev Server URL | The URL of your running dev server (e.g. http://localhost:3000). The AI navigates here automatically. |
Install MCP locally — once you have set a Source Folder, this button writes a .mcp.json to that folder pointing to the Sentinel MCP server. This lets any AI tool that starts from that project directory pick up the server automatically.
Supported AI Tools
Lists all compatible AI clients. Click Install next to a tool to copy its config snippet to the clipboard, then paste it into the tool’s config file.
| Tool | Config file |
|---|---|
| Claude Code | .mcp.json |
| Claude Desktop | claude_desktop_config.json |
| Cursor | .cursor/mcp.json |
| VS Code Copilot | .vscode/settings.json |
| Codex | .codex/config.toml |
13.5 Troubleshooting MCP
Settings shows amber “Not installed” banner
The native launcher has not been registered with Chrome. Copy the command shown in the banner and run it in a terminal, then reload the extension from chrome://extensions/. This is a one-time step.
Start button does nothing / spinner hangs
The launcher is registered but Python failed to start the server. Check that python is on your PATH and that dependencies are installed (pip install -r mcp-server/requirements.txt). Also verify the registry path with regedit under HKCU\Software\Google\Chrome\NativeMessagingHosts\com.sentinel.launcher.
Extension shows “Disconnected” after clicking Start
The server process starts but the WebSocket connection takes a few seconds. Wait up to 15 seconds and the status badge will update automatically. If it stays disconnected, click the refresh icon.
Tools return “Extension not connected”
The AI client launched the MCP server but the browser extension hasn’t linked yet. Open the Sentinel side panel in Chrome, wait for the Connected badge, then retry.
WebSocket error in Chrome extension console
ERR_CONNECTION_REFUSED on port 18925 is expected when the MCP server is not running. It does not affect recording, playback, or any other feature. Start the server to clear the error.
Port 18925 already in use
A previous MCP server instance is still running. Use Force Restart in Settings, or click Stop. Alternatively, find and kill the process with netstat -ano | findstr 18925 followed by taskkill /F /PID <pid>.
13.6 AI Workflow Examples
Once your project is configured in Settings, the AI loads context automatically via sentinel_status() and can act on high-level instructions. Here are common patterns:
Write a feature guide
“Perform the task addition flow and write a guide.”
- AI calls
sentinel_status()→ getsproject.pathandproject.devUrl. - AI reads relevant source files to understand the feature.
- AI navigates to the dev URL and starts recording.
- AI uses
sentinel_find_element()andsentinel_get_page_snapshot()to discover interactive elements. - AI performs the interaction steps via
sentinel_inject_action(). - AI calls
sentinel_edit_guide()to set title, intro, and custom sections, thensentinel_export_guide().
Evaluate a feature for errors
“Evaluate task addition for JS errors.”
- AI calls
sentinel_status()→ gets project context. - AI reads the relevant source files for the feature.
- AI calls
sentinel_start_error_tracking(), then navigates and performs the flow. - AI calls
sentinel_get_errors()andsentinel_get_network_log()to gather context. - AI calls
sentinel_analyze_issues()to detect patterns and duplicates. - AI reports findings with file/line references and suggested fixes.
Visual regression testing
“Compare the login page before and after my CSS changes.”
- AI captures a baseline screenshot with
sentinel_screenshot_save(). - You make your CSS changes and rebuild.
- AI captures a new screenshot and calls
sentinel_compare_screenshots(). - AI reports pixel differences and highlights changed regions.
Log a bug with full context
“The submit button on the contact form is misaligned — log it.”
- AI navigates to the relevant page.
- AI calls
sentinel_save_issue()with typebug, severity, title, and notes — a screenshot is captured automatically. - AI calls
sentinel_get_issue_context()to attach network and console logs. - AI calls
sentinel_export_issues()to generate a full issue report.
Generate a custom report
“Create a test summary report with stats and a timeline.”
- AI calls
sentinel_design_system()for consistent styling. - AI builds content blocks:
hero,stats,test_results,timeline,callout. - AI calls
sentinel_render_blocks()to assemble the blocks into HTML. - AI calls
sentinel_export_custom_report()to download the final document.
Architecture
14.1 Project Structure
extension/
src/
types.ts — Shared TypeScript interfaces
background.ts — Service worker (state, screenshots, routing, AI logging)
content.ts — Content script (recording, playback, inspection, element querying)
App.tsx — Main React shell
main.tsx — React entry point
index.css — Tailwind CSS entry
editor.tsx — Guide editor entry point
EditorApp.tsx — Guide editor React app
lib/
messages.ts — Typed message bus
storage.ts — Session & project CRUD operations
guideHtml.ts — HTML generation for guides, reports & block rendering
hooks/
useExtensionState.ts — Reactive hook via chrome.storage.onChanged
useGuideEditor.ts — Guide editor state management
useVideoRecorder.ts — Video recording hook
components/
Header.tsx — Logo, title, status pills, quick controls
StepList.tsx — Live action list
ErrorFeed.tsx — Captured errors display
ErrorBoundary.tsx — React error boundary
IssueList.tsx — Bug tracker & findings panel
FeatureRequestBuilder.tsx — Feature request builder
AiLog.tsx — AI activity log
AssertionBuilder.tsx — Element inspector & assertions
TestReport.tsx — Pass/fail results & playback metrics
SessionManager.tsx — Session CRUD UI
SettingsPanel.tsx — MCP bridge, project manager, AI tool config
PlaybackControls.tsx — Speed, step-by-step, progress
NoteModule.tsx — Notes list, filtering, and management
NoteEditor.tsx — Rich note editor with attachments and video
ProjectModule.tsx — Multi-project workspace manager
ResourceModule.tsx — Centralized resource gallery (screenshots, videos, findings)
GuideEditor.tsx — Guide editor component
GuidePreview.tsx — Live guide preview
GuideStepEditor.tsx — Individual step editing
BugTracker.tsx — Bug tracking panel
Footer.tsx — Version info
public/
manifest.json — MV3 manifest
page-error-bridge.js — MAIN world script for capturing page-level errors
dist/ — Production build output
mcp-server/
sentinel_mcp.py — MCP server (50+ tools)
launcher.py — Native messaging launcher
install_host.py — Native host registration script
requirements.txt — Python dependencies
14.2 Tech Stack
React 19
UI framework for the side panel and guide editor.
TypeScript 5.9
Strict mode with shared types across all extension contexts.
Vite 8
Fast build tooling with multi-entry support (main, background, content).
Tailwind CSS v4
Utility-first styling via PostCSS integration. Zero runtime JS.
14.3 Chrome APIs
| Permission | Purpose |
|---|---|
activeTab | Access the current tab for screenshots and script injection. |
storage | Persist sessions, issues, projects, and state across browser restarts. |
scripting | Inject the content script into web pages. |
downloads | Trigger file downloads for exported guides and reports. |
tabs | Query and interact with browser tabs. |
sidePanel | Open the persistent side panel UI. |
tabCapture | Capture tab media streams for video recording. |
alarms | Schedule periodic tasks (e.g., connection health checks). |
nativeMessaging | Communicate with the native launcher to start/stop the MCP server. |
unlimitedStorage | Remove the 10 MB storage quota so sessions, screenshots, and projects persist without limits. |
Troubleshooting
15.1 Common Issues
Side panel doesn't open
Make sure you're on a regular web page (not chrome:// or chrome-extension:// pages). The extension requires an active tab with a URL that allows content script injection.
Recording doesn't capture actions
Reload the extension from chrome://extensions/ and refresh the target page. The content script must be injected before recording starts. Check the header for a green "attached" indicator.
Playback skips steps or fails
Ensure you're on the same page (or starting URL) where the recording began. If the page content has changed, selector recovery will attempt fallback strategies. Check the test report for steps that resolved via heuristic matching.
Export produces a large file
Screenshots are embedded as base64 JPEG (70% quality). For long recordings with many steps, the exported file can be several megabytes. Consider trimming unnecessary steps in the guide editor before exporting.
Video recording not available
Video capture requires the tabCapture permission. Ensure the extension has this permission and that no other extension is currently capturing the tab.
Error boundary shown
If a React component crashes, an error boundary catches it and displays a recovery message instead of a blank panel. Click the retry button or reload the side panel to recover.
15.2 Development Workflow
- Edit source files in
extension/src/. - Run
npm run build(or usenpm run devfor watch mode). - Open
chrome://extensions/and click the reload icon on the Sentinel card. - Click the toolbar icon to reopen the side panel with your changes.