fix: address Playwright API audit findings
- Replace deprecated Locator.Type() with PressSequentially() (node.go) - Close page on Goto failure to prevent resource leak (playwright.go) - Fix teardown order: close context before browser (playwright.go) - Clean up resources on NewPage failure (interactive.go) - Spawn cleanup goroutine on context cancellation in both constructors Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -95,6 +95,9 @@ func NewInteractiveBrowser(ctx context.Context, opts ...BrowserOptions) (Interac
|
||||
|
||||
page, err := res.bctx.NewPage()
|
||||
if err != nil {
|
||||
_ = res.bctx.Close()
|
||||
_ = res.browser.Close()
|
||||
_ = res.pw.Stop()
|
||||
ch <- result{nil, fmt.Errorf("failed to create page: %w", err)}
|
||||
return
|
||||
}
|
||||
@@ -112,6 +115,12 @@ func NewInteractiveBrowser(ctx context.Context, opts ...BrowserOptions) (Interac
|
||||
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
go func() {
|
||||
r := <-ch
|
||||
if r.err == nil && r.ib != nil {
|
||||
_ = r.ib.Close()
|
||||
}
|
||||
}()
|
||||
return nil, ctx.Err()
|
||||
case r := <-ch:
|
||||
return r.ib, r.err
|
||||
|
||||
Reference in New Issue
Block a user