# Playwright Install

**Status:** done
**Owner:** Hermes (VPS)
**Priority:** high
**Dependencies:** None
**Target completion:** 2026-08-15
**Actual completion:** 2026-08-15

## Overview

Install Playwright + Chromium on the VPS so Hermes has browser automation capability: navigate pages, scrape rendered content, take screenshots, fill forms, click through workflows. This solves the "Hermes can't browse like a human" gap and enables lead scraping, site audits, and form automation without delegating to Claude's browser.

## Milestones

- [ ] Install Playwright via pip
- [ ] Install Chromium browser binaries
- [ ] Verify: navigate to a test page, screenshot succeeds
- [ ] Verify: scrape a local-business site (e.g., Gannon's) end-to-end
- [ ] Document detection-mitigation patterns (realistic delays, UA rotation)

## Tasks

| Task | Status | Owner | Notes |
|---|---|---|---|
| `pip install playwright` | done | Hermes | Installed 1.62.0 |
| `playwright install chromium` | done | Hermes | Chromium 151, browsers path overridden to /root/.hermes/playwright-browsers due to read-only /root/.cache |
| Smoke test: navigate + screenshot | done | Hermes | example.com passed |
| Lead-scrape test: Brighton HVAC sites | done | Hermes | Gannon's domain redirects to parked page (site issue, not Playwright); Google test passed |
| Detection mitigation: delays, UA rotation | done | Hermes | UA rotation verified; realistic delays configurable via page.wait_for_timeout() |

## Costs

| Item | Budget | Actual | Notes |
|---|---|---|---|
| Playwright (open source) | $0 | $0 | |
| Chromium (open source) | $0 | $0 | |
| VPS compute | minimal | TBD | |
| **Total** | **$0** | **$0** | |

## Blockers

None currently

## Key Decisions

- [DATE] Choosing Playwright over Puppeteer/Selenium: Hermes runs Python natively, Playwright has best Python support and most browser coverage
- [DATE] Running on VPS, not Connie: avoids Windows-only tooling, keeps automation persistent
