This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Always reference these skills when working on the codebase:
.claude/skills/frontend-design/skill.mdfor all CSS changes and UI componentes
When working with E2E tests:
-
ALWAYS use the
playwright-cliskill for:- Generating new tests
- Exploring UI elements
- Creating selectors
- Capturing screenshots
-
Only write tests manually when the skill can't handle the specific case
-
Always use context7 when I need code generation, setup or configuration steps, or library/API documentation. This means you should automatically use the Context7 MCP tools to resolve library id and get library docs without me having to explicitly ask.
Exploratory Testing Chrome Extension (Manifest v3) - A tool for web exploratory testing that allows testers to report bugs, ideas, notes, and questions with screenshots during testing sessions.
npm install # Install dependencies
npm test # Run Jest tests
npx jest # Run Jest directly
npx jest --watch # Run tests in watch mode
npx jest path/to/test # Run a single test filePowerShell scripts:
.\genetareZip.ps1 # Create timestamped .zip for Chrome Web Store
.\start_test_server.ps1 # Start HTTP server on localhost:8000- Service Worker (
background.js): Handles message passing, storage, and session management - Popup (
popup.html+js/popup.js): User-facing UI for creating annotations - Content Script (
js/content_script.js): Handles screenshot cropping on pages
Session
├── BrowserInfo (os, browser version, cookies enabled)
├── StartDateTime
└── annotations[]
├── Bug (extends Annotation)
├── Note (extends Annotation)
├── Idea (extends Annotation)
└── Question (extends Annotation)
| File | Purpose |
|---|---|
src/Session.js |
Main session management class |
src/Annotation.js |
Annotation base class and subclasses (Bug, Note, Idea, Question) |
src/browserInfo.js |
System/browser information collector |
src/JSonSessionService.js |
JSON serialization/deserialization |
src/ExportSessionCSV.js |
CSV export functionality |
Communication between popup and background:
addBug,addIdea,addNote,addQuestion: Add annotation with optional screenshotupdateAnnotationName,deleteAnnotation: Modify annotationsexportSessionCSV,exportSessionJSon,importSessionJSon: Import/exportclearSession,getSessionData,getFullSession: Session managementcsToBgCropData: Process cropped screenshot from content script
Uses chrome.storage.local for persistence. The extension handles quota errors gracefully by removing oldest screenshots when storage is full.
- Framework: Jest 29.7.0
- Test location:
test/spec/**/*.test.js - Chrome API mocks: Defined in
jest.setup.js
When adding new Chrome API calls, update the mocks in jest.setup.js.
Known issue: test/spec/ExportSessionCSV.test.js has syntax errors and needs fixing.
- jQuery 1.11.3, Bootstrap CSS (frontend)
- Jest + Babel (testing/transpilation)
- CanvasJS, Chart.js, TableFilter, JSZip (reporting)
- No npm runtime dependencies (all libraries bundled in
lib/)
The HTML report (HTMLReport/preview.html) supports two download options:
-
Download Report: Generates a standalone HTML file with all resources embedded
- Contains all screenshots as embedded base64 images
- Fully self-contained and portable
- Can be opened offline without any dependencies
-
Download Images: Creates a ZIP file with all screenshots
- Only available in preview.html (the initial report view)
- NOT available in downloaded HTML reports (to avoid Windows security warnings)
- Includes a README.txt file with session information
- Screenshots are named with type and timestamp
All external libraries are bundled locally in lib/ for Chrome Extension CSP compliance:
chart.umd.js: Chart.js for data visualizationjszip.min.js: JSZip for creating ZIP archives