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 <noreply@anthropic.com>
This commit is contained in:
@@ -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),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user