From 84e811572be4d47ee3c1b4364c7fddf488ff8242 Mon Sep 17 00:00:00 2001 From: Steve Dudenhoeffer Date: Fri, 13 Mar 2026 01:28:45 +0000 Subject: [PATCH] fix: sanitize cookie expires for Playwright compatibility Playwright requires cookie expires to be either -1 (session cookie) or a positive unix timestamp. When a cookie has no expiry (zero time.Time), .Unix() returns -62135596800 which Playwright rejects. Cookies with non-positive timestamps (e.g. Cloudflare's __cf_bm) also fail. Now treats zero time or non-positive unix timestamps as session cookies by setting expires to -1. Fixes #84 Co-Authored-By: Claude Opus 4.6 --- playwright.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/playwright.go b/playwright.go index 26c0820..df8fb4b 100644 --- a/playwright.go +++ b/playwright.go @@ -122,12 +122,17 @@ func playwrightSameSiteToSameSite(s *playwright.SameSiteAttribute) SameSite { } func cookieToPlaywrightOptionalCookie(cookie Cookie) playwright.OptionalCookie { + expires := float64(cookie.Expires.Unix()) + if cookie.Expires.IsZero() || expires <= 0 { + expires = -1 + } + oc := playwright.OptionalCookie{ Name: cookie.Name, Value: cookie.Value, Domain: playwright.String(cookie.Host), Path: playwright.String(cookie.Path), - Expires: playwright.Float(float64(cookie.Expires.Unix())), + Expires: playwright.Float(expires), Secure: playwright.Bool(cookie.Secure), HttpOnly: playwright.Bool(cookie.HttpOnly), }