feat: promote headless page to InteractiveBrowser mid-session #78
Reference in New Issue
Block a user
Delete Branch "feature/76-promote-to-interactive"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
PromoteToInteractive(Document) (InteractiveBrowser, error)to transfer a live page from scraping mode to interactive mode (e.g. for human captcha solving)DemoteToDocument(InteractiveBrowser) (Document, error)to transfer back to scraping mode on the same pagedetachedflag so the original handle'sClose()becomes a no-op (page ownership transfers cleanly)InteractiveBrowserdoes not own the Playwright infrastructure — only the page — so the originalBrowsermust stay aliveDesign
Package-level functions (not interface methods) to avoid breaking changes. Uses type assertion on the concrete
*document/*interactiveBrowsertypes — same pattern aspageEvaluatorinreadability.go.Test plan
TestPromoteToInteractive_NonPromotable— mock document returnsErrNotPromotableTestPromoteToInteractive_AlreadyDetached— double-promote returnsErrAlreadyDetachedTestDemoteToDocument_NonDemotable— mock interactive browser returnsErrNotDemotableTestDemoteToDocument_AlreadyDetached— double-demote returnsErrAlreadyDetachedgo build ./...,go test ./...,go vet ./...all passCloses #76