controller: browser_overlays + cookies field (Playwright session auth)

Use case: Grafana с session cookie (login flow вместо Bearer token),
admin UIs без API token endpoint.

Config:
  dashboards:
    - id: my_widget
      cookies:
        - name: session_id
          value: abc123
          url: https://example.com/

Каждый element passed к page.context.add_cookies. Playwright spec format:
{name, value, url} OR {name, value, domain, path, ...}.

Multi-dashboard verified рабочий (caвая dashboard = own Page в shared browser).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
gx
2026-05-22 09:33:50 +01:00
parent 450cee3556
commit e773066867
@@ -73,6 +73,10 @@ class DashboardCfg(BaseModel):
description="HTTP headers для каждого request — auth tokens, custom UA. "
"Пример Grafana service account: "
'{"Authorization": "Bearer glsa_xxxxxxxx"}')
cookies: list[dict] = Field(default_factory=list,
description="Session cookies через Playwright context.add_cookies. "
"Каждый dict: {name, value, url}|{name, value, domain, path}. "
"Пример: [{\"name\":\"session_id\",\"value\":\"abc\",\"url\":\"https://...\"}]")
opacity: float = 1.0
z_order: int = 28
@@ -137,6 +141,12 @@ class BrowserRenderer:
)
if cfg.extra_http_headers:
await page.set_extra_http_headers(cfg.extra_http_headers)
if cfg.cookies:
try:
await page.context.add_cookies(cfg.cookies)
except Exception as e:
log.warning("browser_overlays.cookies_invalid",
id=cfg.id, error=str(e))
# background_color в new_context не работает для transparent — used CLI arg
await page.goto(cfg.url, wait_until=cfg.wait_until,
timeout=cfg.page_timeout_ms)