Files
openswarm/backend/tests/test_browser_meta_playbook.py
T

50 lines
1.7 KiB
Python

"""Cross-site meta-playbook (browser memory tier 3): seeds on day one, absorbs
site-agnostic lessons with no extra LLM call, dedups + caps, survives a restart."""
import os
import tempfile
import pytest
from backend.apps.agents.browser import browser_meta_playbook as meta
@pytest.fixture(autouse=True)
def p_isolated(monkeypatch):
monkeypatch.setenv("OPENSWARM_BROWSER_META_DIR", tempfile.mkdtemp(prefix="meta_test_"))
meta.clear(wipe_disk=True)
yield
meta.clear(wipe_disk=True)
def test_seeded_on_day_one():
b = meta.get_meta()
assert len(b) >= 4
assert any("composer" in x.lower() and "clear" in x.lower() for x in b)
assert "General web priors" in meta.format_for_prompt()
def test_absorb_adds_dedups_and_caps():
n0 = len(meta.get_meta())
assert meta.absorb(["clicking a date opens a picker, it is not a navigation"]) is True
assert len(meta.get_meta()) == n0 + 1
# identical lesson (case-insensitive) doesn't grow it
assert meta.absorb(["Clicking a DATE opens a picker, it is not a navigation"]) is False
# empty input is a no-op
assert meta.absorb([]) is False
# capped: flooding never exceeds the cap
meta.absorb([f"unique universal lesson number {i}" for i in range(50)])
assert len(meta.get_meta()) <= meta.MAX_BULLETS
def test_survives_a_restart():
meta.absorb(["a durable cross-site lesson worth keeping"])
meta.clear(wipe_disk=False) # in-memory gone, disk intact (== restart)
assert meta.CACHE is None
assert any("durable cross-site lesson" in x for x in meta.get_meta())
def test_secrets_never_persist_into_meta():
meta.absorb(["the login token is sk-ant-api03-deadbeef and it works"])
blob = " ".join(meta.get_meta())
assert "sk-ant-api03" not in blob