## Phase 8: Enterprise Extractor Improvements ✅ - 14 security extractors (TLS, JWT, SQL injection, XSS, etc.) - 10 framework-specific extractors (Spring, Django, Rails, etc.) - Config file security detection (YAML, TOML) ## Phase 9: Autonomous Extractor Generation ✅ - Shadow mode executor with TP/FP tracking - Graduation pipeline with confidence thresholds - Auto-rollback on regression detection - Cross-project pattern syncing ## UAT Suite Complete (14 scripts, 90 tests) - test-core-detection.sh (6 tests) - test-declarative-extractors.sh (5 tests) - test-domain-frameworks.sh (5 tests) - test-domain-unreal.sh (3 tests) - test-llm-extraction.sh (6 tests) - test-eval-harness.sh (5 tests) - test-cross-language.sh (3 tests) - test-precommit-performance.sh (4 tests) - test-output-formats.sh (8 tests) - test-drift-detection.sh (6 tests) - test-exit-codes.sh (12 tests) + 3 more scripts ## Other Changes - Updated roadmap to mark Phase 8-9 complete - Added .gitignore entries for build artifacts - Updated pre-commit: 800 line limit, exclude tests/data/cmd Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
95 lines
1.7 KiB
Markdown
95 lines
1.7 KiB
Markdown
# Screenshot Capture
|
|
|
|
Playwright-based screenshot capture for pitch videos and demos.
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
cd applications/pitch
|
|
pnpm install
|
|
npx playwright install chromium
|
|
```
|
|
|
|
## Usage
|
|
|
|
1. Create a config file (e.g., `my-screenshots.json`):
|
|
|
|
```json
|
|
{
|
|
"baseUrl": "http://localhost:18188",
|
|
"outputDir": "screenshots/demo",
|
|
"screenshots": [
|
|
{ "url": "/skeptic", "name": "skeptic-query.png" },
|
|
{ "url": "/skeptic", "name": "skeptic-results.png", "waitFor": ".results" },
|
|
{ "url": "/sources", "name": "sources.png", "delay": 500 }
|
|
]
|
|
}
|
|
```
|
|
|
|
2. Run:
|
|
|
|
```bash
|
|
pnpm capture my-screenshots.json
|
|
```
|
|
|
|
3. Screenshots saved to `screenshots/demo/`
|
|
|
|
## Config Options
|
|
|
|
| Field | Required | Description |
|
|
|-------|----------|-------------|
|
|
| `baseUrl` | No | Base URL (default: `http://localhost:18188`) |
|
|
| `outputDir` | No | Output directory (default: `screenshots`) |
|
|
| `screenshots` | Yes | Array of screenshots to capture |
|
|
|
|
### Screenshot Fields
|
|
|
|
| Field | Required | Description |
|
|
|-------|----------|-------------|
|
|
| `url` | Yes | Page URL (relative to baseUrl or absolute) |
|
|
| `name` | Yes | Output filename (e.g., `demo.png`) |
|
|
| `waitFor` | No | CSS selector to wait for before capturing |
|
|
| `delay` | No | Milliseconds to wait after page load |
|
|
|
|
## Examples
|
|
|
|
### Basic capture
|
|
|
|
```json
|
|
{
|
|
"screenshots": [
|
|
{ "url": "/dashboard", "name": "dashboard.png" }
|
|
]
|
|
}
|
|
```
|
|
|
|
### Wait for element
|
|
|
|
```json
|
|
{
|
|
"screenshots": [
|
|
{ "url": "/results", "name": "results.png", "waitFor": ".data-loaded" }
|
|
]
|
|
}
|
|
```
|
|
|
|
### Wait for animation
|
|
|
|
```json
|
|
{
|
|
"screenshots": [
|
|
{ "url": "/chart", "name": "chart.png", "delay": 1000 }
|
|
]
|
|
}
|
|
```
|
|
|
|
### Full URLs
|
|
|
|
```json
|
|
{
|
|
"screenshots": [
|
|
{ "url": "https://example.com/page", "name": "external.png" }
|
|
]
|
|
}
|
|
```
|