Sentinel

Sentinel User Guide

AI-powered browser testing, bug tracking, feature requests, and visual guide generation — with 50+ MCP tools for full automation.

50+ MCP Tools Chrome MV3 Side Panel React 19 TypeScript 5.9 Tailwind v4
1

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.

Development mode Use 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

  1. Open your browser and navigate to chrome://extensions/.
  2. Enable Developer mode using the toggle in the top-right corner.
  3. Click Load unpacked.
  4. Select the extension/dist folder from this project.
  5. 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.

Why a side panel? Side panels persist during page navigation and interaction, making them ideal for recording sessions that span multiple pages or long workflows.
2

Recording

2.1 Start a Recording

  1. Open the Sentinel side panel by clicking its toolbar icon.
  2. Click Start Recording in the header controls.
  3. Interact with any website — clicks, typing, form submissions, keyboard shortcuts, and scrolling are all captured automatically.
  4. Watch recorded steps appear live in the Steps tab as you work.
  5. Click Stop Recording when finished.
Bug Tracking Sync Toggle the bug icon in the header to automatically start error tracking alongside recording. Captured errors are linked to the recording timeline.

2.2 What Gets Captured

EventDetails
ClicksButtons, links, inputs, and interactive elements. Layout-only containers (div, section) are filtered out unless they have roles or event handlers.
Text InputDebounced at 800ms per element. Only the final value is captured on blur or timeout.
KeyboardSpecial keys (Enter, Escape, Tab, arrows, F-keys) and modifier combos (Ctrl+S, etc.).
ScrollingDebounced at 1 second with a 200px minimum distance threshold.
Form SubmitCaptured on the submit event.
NavigationPage URL changes are tracked automatically.
Select/DropdownOption selections on <select> elements are captured with selected value.
Drag & DropDrag operations captured with start and end coordinates.
HoverHover 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 a role, onclick, or tabindex.
  • 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.
3

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 kindrecording for standard sessions or suite for 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.
4

Visual Guides

4.1 Export an HTML Guide

Turn any recording into a polished, self-contained HTML document with screenshots:

  1. Stop the current recording (or load a saved session).
  2. Click Export HTML Guide.
  3. A .html file downloads automatically.
  4. 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 contenteditable support.
  • 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 TypeDescription
noteInformational callout highlighted in blue.
warningWarning callout highlighted in amber.
tipHelpful tip highlighted in green.
headingSection heading to break the guide into chapters.
htmlRaw 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.

5

Playback

5.1 Start Playback

  1. Navigate to the page where the recording started.
  2. Open the Sentinel side panel.
  3. Choose a playback speed: 0.5x, 1x, 1.5x, 2x, or 4x.
  4. 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

ControlDescription
PauseTemporarily halt playback at the current step.
ResumeContinue playback from where you paused.
StopEnd the playback session entirely.
Next StepAdvance 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:

  1. Primary selector — the original CSS selector is tried first.
  2. Candidate selectors — alternative selectors stored during recording are tried in confidence order.
  3. Heuristic matching — the target snapshot (tag, text, role, attributes) is used to find the best match in the current DOM.
  4. 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.

6

Assertions & Testing

6.1 Adding Assertions

Add assertions to turn recordings into automated tests that validate your application's state.

  1. Expand the Assertions panel in the side panel.
  2. Click Inspect Element — hover over any element on the page to highlight it, then click to select.
  3. Choose an assertion type from the dropdown.
  4. Enter an expected value (if required) and click Add Assertion.

6.2 Assertion Types

TypeDescription
Is visibleAsserts the element is visible on the page.
Is hiddenAsserts the element is not visible.
Text containsAsserts the element's text includes the expected string.
Text equalsAsserts the element's text matches exactly.
Has classAsserts the element has the specified CSS class.
Exists in DOMAsserts 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.

7

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.

SourceWhat's Captured
console.errorExplicit error logging from application code.
window.onerrorUncaught exceptions with file, line, and column info.
Promise rejectionsUnhandled promise rejections with reason and stack.
CSP violationsContent Security Policy violations with directive and blocked URI.
Network failuresFailed 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 typesbug or feature-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.

8

Feature Requests

8.1 Creating Requests

Create feature requests tied to specific page elements. The feature request builder is available in the side panel:

  1. Open the Feature Req panel in the Steps tab.
  2. Click Inspect Element to select the relevant UI element.
  3. Enter a title and description for the enhancement.
  4. Set a priority level (Critical, High, Medium, or Low).
  5. 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".

9

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.
10

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.

11

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

Side panel limitation Native fullscreen is not available within Chrome side panels. Use the enlarge modal to view videos at a larger size.

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.

12

UI Reference

12.1 Side Panel Layout

The Sentinel side panel is organized into tabs and collapsible sections:

SectionPurpose
HeaderLogo, title, active tab pill, AI connection status, and quick-access controls (Record, Video, Bug Sync, Export).
Status BarShows current state: Idle, Recording, Playing, or Paused.
Steps TabLive list of recorded actions with type, selector, and value.
Errors TabCaptured JavaScript errors and network failures.
Findings TabBug and feature request tracker with severity, filtering, and analysis.
AI TabActivity log of all MCP tool calls from AI assistants.
Notes TabManual notes with tags, attachments, annotations, and project association.
Resources TabCentralized gallery of all screenshots, videos, issues, and notes across projects.
Projects TabMulti-project workspace manager with descriptions and repository links.
Videos TabRecorded screen capture clips with thumbnails.
Recording ControlsStart/Stop recording buttons.
Playback ControlsSpeed selector, step-by-step toggle, play/pause/stop, progress bar.
SessionsSave, load, rename, and delete recorded sessions.
AssertionsElement inspector and assertion builder for automated tests.
Feature ReqFeature request builder with element inspection.
Test ReportPass/fail results, playback metrics, and selector recovery details.
SettingsMCP 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:

CategoryKeys
NavigationEnter Tab Escape
Arrow keys
Function keysF1 through F12
Modifier combosCtrl+key, Alt+key, Cmd+key

Regular character typing is captured as text input events (debounced), not individual key presses.

13

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.

Why MCP? MCP is an open standard that connects AI models to external tools. Sentinel’s MCP server turns the extension into a full browser automation toolkit with project context.

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)

  1. Install Python dependencies (once):
    pip install -r mcp-server/requirements.txt
  2. 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:
    python mcp-server/install_host.py <your-extension-id>
    The extension ID is shown in the banner and has a Copy button. After running the command, reload the extension in chrome://extensions/.
  3. From now on, use the Start and Stop buttons in the Settings tab to control the server — no terminal needed.
  4. 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

  1. Install dependencies (once):
    pip install -r mcp-server/requirements.txt
  2. Start the server:
    python mcp-server/sentinel_mcp.py
  3. Keep the terminal open while using AI tools. Open the Sentinel side panel in Chrome and check for the green Connected badge.
Windows only The launcher (Option A) currently supports Windows. On macOS/Linux, use Option B or register the native host manually by adapting install_host.py for your platform.

13.3 MCP Tools Reference

Sentinel provides 50+ MCP tools organized into categories:

Navigation & Page Interaction

ToolDescription
sentinel_attachAttach to the current browser tab.
sentinel_navigateNavigate the active tab to a URL.
sentinel_screenshotCapture a screenshot of the current tab.
sentinel_screenshot_saveSave a screenshot directly to a file on disk.
sentinel_compare_screenshotsPixel-by-pixel before/after screenshot comparison.
sentinel_statusGet extension state (recording, error tracking, project context).

Element Querying

ToolDescription
sentinel_get_page_snapshotGet all interactive elements on the current page.
sentinel_find_elementFind elements by text content, ARIA role, or tag name.
sentinel_get_text_contentRead the text content of a specific element.
sentinel_get_element_stateGet the full state of a form element (value, checked, options).
sentinel_evaluate_selectorCheck if a CSS selector exists and get element info.
sentinel_wait_for_elementWait for a CSS selector to appear in the DOM.
sentinel_wait_for_textWait for specific text to appear on the page.

Actions & Input

ToolDescription
sentinel_inject_actionExecute a single synthetic DOM action (click, input, scroll, etc.).
sentinel_inject_actionsExecute multiple actions in a batch sequence.
sentinel_hoverTrigger mouseover/hover events on an element.
sentinel_select_optionSet the value of a dropdown/select element.
sentinel_key_sequenceSend keyboard shortcuts and key sequences.
sentinel_dragPerform drag-and-drop between elements or coordinates.

Recording & Sessions

ToolDescription
sentinel_start_recordingStart recording user interactions.
sentinel_stop_recordingStop recording and return captured action count.
sentinel_get_sessionGet all recorded actions from the current session.
sentinel_get_session_with_screenshotsGet session actions with base64-encoded screenshots.
sentinel_analyze_sessionAnalyze session structure, page flow, and metrics.
sentinel_set_step_descriptionSet a human-readable description for a specific step.
sentinel_clear_sessionClear the current session data.
sentinel_save_sessionSave the current session to persistent storage.
sentinel_load_sessionLoad a previously saved session by name.
sentinel_list_sessionsList all saved sessions with metadata.
sentinel_run_saved_sessionReplay a saved session by name.

Guide & Report Generation

ToolDescription
sentinel_edit_guidePre-configure guide content: title, intro, custom sections, step edits.
sentinel_export_guideGenerate an HTML guide from the recorded session.
sentinel_export_custom_guideCustom HTML guide export with full layout control.
sentinel_export_custom_reportCustom HTML report export using block-based renderer.
sentinel_render_blocksRender typed content blocks (hero, stats, cards, tables, timelines, etc.).
sentinel_design_systemGet CSS design system reference for consistent styling.

Error Tracking & Issues

ToolDescription
sentinel_start_error_trackingStart capturing JS errors, network failures, and CSP violations.
sentinel_stop_error_trackingStop error tracking.
sentinel_get_errorsGet all captured errors.
sentinel_save_issueSave a bug or feature request with screenshot.
sentinel_get_issuesGet all saved issues.
sentinel_get_issues_with_screenshotsGet issues with base64-encoded screenshots.
sentinel_update_issueModify an existing issue (severity, title, notes).
sentinel_delete_issueDelete an issue by ID.
sentinel_analyze_issuesAnalyze issues for patterns, clusters, and duplicates.
sentinel_get_issue_contextGet network/console log context for a specific issue.
sentinel_export_issuesGenerate an HTML issue report.
sentinel_get_test_resultsGet assertion results from the last playback run.

Network & Console Monitoring

ToolDescription
sentinel_get_network_logGet all captured XHR/fetch requests with timing and status.
sentinel_wait_for_network_idleWait for network silence (no pending requests).
sentinel_get_console_logGet browser console output (logs, warnings, errors).

One-Shot Workflows

ToolDescription
sentinel_create_guideNavigate, perform actions, and export a guide in one call.
sentinel_investigateNavigate, 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:

FieldDescription
Project NameHuman label shown in status responses.
Source FolderFilesystem 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 URLThe 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.

ToolConfig file
Claude Code.mcp.json
Claude Desktopclaude_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.”

  1. AI calls sentinel_status() → gets project.path and project.devUrl.
  2. AI reads relevant source files to understand the feature.
  3. AI navigates to the dev URL and starts recording.
  4. AI uses sentinel_find_element() and sentinel_get_page_snapshot() to discover interactive elements.
  5. AI performs the interaction steps via sentinel_inject_action().
  6. AI calls sentinel_edit_guide() to set title, intro, and custom sections, then sentinel_export_guide().

Evaluate a feature for errors

“Evaluate task addition for JS errors.”

  1. AI calls sentinel_status() → gets project context.
  2. AI reads the relevant source files for the feature.
  3. AI calls sentinel_start_error_tracking(), then navigates and performs the flow.
  4. AI calls sentinel_get_errors() and sentinel_get_network_log() to gather context.
  5. AI calls sentinel_analyze_issues() to detect patterns and duplicates.
  6. AI reports findings with file/line references and suggested fixes.

Visual regression testing

“Compare the login page before and after my CSS changes.”

  1. AI captures a baseline screenshot with sentinel_screenshot_save().
  2. You make your CSS changes and rebuild.
  3. AI captures a new screenshot and calls sentinel_compare_screenshots().
  4. 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.”

  1. AI navigates to the relevant page.
  2. AI calls sentinel_save_issue() with type bug, severity, title, and notes — a screenshot is captured automatically.
  3. AI calls sentinel_get_issue_context() to attach network and console logs.
  4. 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.”

  1. AI calls sentinel_design_system() for consistent styling.
  2. AI builds content blocks: hero, stats, test_results, timeline, callout.
  3. AI calls sentinel_render_blocks() to assemble the blocks into HTML.
  4. AI calls sentinel_export_custom_report() to download the final document.
Tip: be specific about the feature, not the steps. You don’t need to tell the AI which buttons to click. Describe the feature or flow by name (as it appears in your source code or UI) and the AI will figure out the steps from the codebase and live browser state.
14

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

PermissionPurpose
activeTabAccess the current tab for screenshots and script injection.
storagePersist sessions, issues, projects, and state across browser restarts.
scriptingInject the content script into web pages.
downloadsTrigger file downloads for exported guides and reports.
tabsQuery and interact with browser tabs.
sidePanelOpen the persistent side panel UI.
tabCaptureCapture tab media streams for video recording.
alarmsSchedule periodic tasks (e.g., connection health checks).
nativeMessagingCommunicate with the native launcher to start/stop the MCP server.
unlimitedStorageRemove the 10 MB storage quota so sessions, screenshots, and projects persist without limits.
15

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

  1. Edit source files in extension/src/.
  2. Run npm run build (or use npm run dev for watch mode).
  3. Open chrome://extensions/ and click the reload icon on the Sentinel card.
  4. Click the toolbar icon to reopen the side panel with your changes.
Hot reloading Chrome does not support true hot-reload for extensions. You must manually click the reload button and reopen the side panel after each build.