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 {
|
func cookieToPlaywrightOptionalCookie(cookie Cookie) playwright.OptionalCookie {
|
||||||
|
expires := float64(cookie.Expires.Unix())
|
||||||
|
if cookie.Expires.IsZero() || expires <= 0 {
|
||||||
|
expires = -1
|
||||||
|
}
|
||||||
|
|
||||||
oc := playwright.OptionalCookie{
|
oc := playwright.OptionalCookie{
|
||||||
Name: cookie.Name,
|
Name: cookie.Name,
|
||||||
Value: cookie.Value,
|
Value: cookie.Value,
|
||||||
Domain: playwright.String(cookie.Host),
|
Domain: playwright.String(cookie.Host),
|
||||||
Path: playwright.String(cookie.Path),
|
Path: playwright.String(cookie.Path),
|
||||||
Expires: playwright.Float(float64(cookie.Expires.Unix())),
|
Expires: playwright.Float(expires),
|
||||||
Secure: playwright.Bool(cookie.Secure),
|
Secure: playwright.Bool(cookie.Secure),
|
||||||
HttpOnly: playwright.Bool(cookie.HttpOnly),
|
HttpOnly: playwright.Bool(cookie.HttpOnly),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user