From 8ad5a34f2dd01cf3cac42316c9a56b82994897df Mon Sep 17 00:00:00 2001 From: Steve Dudenhoeffer Date: Thu, 26 Dec 2024 22:20:07 -0500 Subject: [PATCH] Added global screenshot shortcut --- playwright.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/playwright.go b/playwright.go index 123d672..ef6ce97 100644 --- a/playwright.go +++ b/playwright.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "io" "log/slog" "time" @@ -248,3 +249,28 @@ func (b playWrightBrowser) Close() error { b.browser.Close(), ) } + +func deferClose(cl io.Closer) { + _ = cl.Close() +} + +func Screenshot(ctx context.Context, target string, timeout time.Duration) ([]byte, error) { + browser, err := NewPlayWrightBrowser(PlayWrightBrowserOptions{ + Timeout: &timeout, + }) + + if err != nil { + return nil, fmt.Errorf("error creating browser: %w", err) + } + + defer deferClose(browser) + + doc, err := browser.Open(ctx, target, OpenPageOptions{}) + if err != nil { + return nil, fmt.Errorf("error opening page: %w", err) + } + + defer deferClose(doc) + + return doc.Screenshot() +}