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() +}