import json import shutil import subprocess from pathlib import Path import pytest ROOT = Path(__file__).resolve().parents[1] pytestmark = pytest.mark.skipif(not shutil.which("node"), reason="node binary not on PATH") def _node_eval(source: str): result = subprocess.run( ["node", "--input-type=module", "-e", source], cwd=ROOT, check=True, capture_output=True, text=True, ) return json.loads(result.stdout) def test_censor_pref_falls_back_when_storage_throws(): values = _node_eval( """ globalThis.localStorage = { getItem() { throw new Error('blocked'); } }; const { _prefEnabled } = await import('./static/js/censor.js'); console.log(JSON.stringify({ enabled: _prefEnabled() })); """ ) assert values == {"enabled": False} def test_censor_pref_reads_enabled_flag(): values = _node_eval( """ globalThis.localStorage = { getItem(key) { return key === 'odysseus-sensitive-blur' ? 'on' : null; } }; const { _prefEnabled } = await import('./static/js/censor.js'); console.log(JSON.stringify({ enabled: _prefEnabled() })); """ ) assert values == {"enabled": True}