perf: reuse browser across chart scrapes
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
from contextlib import contextmanager
|
||||
|
||||
from scrapers import lookintobitcoin
|
||||
from scoring import engine
|
||||
|
||||
@@ -26,3 +28,29 @@ def test_vdd_derived_return_is_labeled_as_momentum_not_raw_multiple():
|
||||
|
||||
assert vdd["name"] == "VDD 30-Period Momentum"
|
||||
assert vdd["transform"] == "30_period_return"
|
||||
|
||||
|
||||
def test_scrape_all_reuses_one_browser_page(monkeypatch):
|
||||
page = object()
|
||||
seen_pages = []
|
||||
|
||||
@contextmanager
|
||||
def fake_browser_page():
|
||||
yield page
|
||||
|
||||
def fake_scrape_chart(_path, timeout=25000, page=None):
|
||||
seen_pages.append(page)
|
||||
return [{"name": "metric", "y": [1.0]}]
|
||||
|
||||
monkeypatch.setattr(lookintobitcoin, "CHARTS", {
|
||||
"first": {"path": "/first", "traces": ["metric"]},
|
||||
"second": {"path": "/second", "traces": ["metric"]},
|
||||
})
|
||||
monkeypatch.setattr(lookintobitcoin, "browser_page", fake_browser_page)
|
||||
monkeypatch.setattr(lookintobitcoin, "scrape_chart", fake_scrape_chart)
|
||||
|
||||
result = lookintobitcoin.scrape_all()
|
||||
|
||||
assert seen_pages == [page, page]
|
||||
assert result["first"]["value"] == 1.0
|
||||
assert result["second"]["value"] == 1.0
|
||||
|
||||
Reference in New Issue
Block a user