Add dated release scatter panels to React WVS map

Co-Authored-By: PI[gpt-5.6-terra] <288921227+claudypoo@users.noreply.github.com>
This commit is contained in:
wassname
2026-09-17 08:13:11 +08:00
co-authored by PI[gpt-5.6-terra]
parent 0be556bcef
commit f93a6092cf
20 changed files with 146 additions and 34 deletions
+35 -10
View File
@@ -46,10 +46,13 @@ def main() -> None:
page.wait_for_selector("svg .model-mark")
assert page.locator("path.zone").count() == 4
assert page.locator("polygon.zone").count() == 0
assert "64 models" not in page.locator("main").inner_text()
assert "Historical coordinates" not in page.locator("main").inner_text()
assert page.locator(".map-note").get_attribute("text-anchor") == "end"
assert float(page.locator(".map-note").get_attribute("x")) > float(page.locator(".map-title").get_attribute("x"))
assert float(page.locator("svg").get_attribute("data-median-x")) == data["median"]["x"]
assert float(page.locator("svg").get_attribute("data-median-y")) == data["median"]["y"]
map_svg = page.get_by_role("img", name="Frontier LLMs on the World Values Survey")
assert float(map_svg.get_attribute("data-median-x")) == data["median"]["x"]
assert float(map_svg.get_attribute("data-median-y")) == data["median"]["y"]
rendered_models = page.locator(".model-mark").evaluate_all(
"nodes => nodes.map(node => [node.dataset.model, Number(node.dataset.x), Number(node.dataset.y)])"
)
@@ -61,22 +64,32 @@ def main() -> None:
country_before = page.locator("circle.country").evaluate_all(
"nodes => nodes.map(node => [node.getAttribute('cx'), node.getAttribute('cy')])"
)
qwen_group = page.locator('svg > g[data-family="qwen"]')
dated = [model for model in data["models"] if model["provenance"]["release_created"]]
qwen_group = map_svg.locator(':scope > g[data-family="qwen"]')
assert qwen_group.get_attribute("display") in (None, "inline")
assert page.locator('svg [data-family="qwen"] .model-label').count() == 1
assert map_svg.locator('[data-family="qwen"] .model-label').count() == 1
assert page.locator(".release-panel").count() == 2
assert page.locator(".release-mark").count() == len(dated) * 2
for panel in page.locator(".release-panel").all():
dates = panel.locator(".release-mark").evaluate_all("nodes => nodes.map(node => node.dataset.releaseDate)")
assert dates == sorted(dates)
assert page.locator(".release-trajectory").count() == 0
page.screenshot(path=OUT / "wvs_react_playwright_release_panels.png", full_page=True)
page.get_by_role("button", name="qwen: qwen3.8-flash").click()
page.get_by_role("button", name="qwen", exact=True).click()
page.wait_for_timeout(100)
assert qwen_group.get_attribute("display") == "none"
assert page.locator('svg [data-family="qwen"] .model-label').count() == 1
assert page.locator('svg [data-family="muse"] .model-label').count() == 1
assert map_svg.locator('[data-family="qwen"] .model-label').count() == 1
assert map_svg.locator('[data-family="muse"] .model-label').count() == 1
assert all(group.get_attribute("display") == "none" for group in page.locator('.release-panel [data-family="qwen"]').all())
assert all(group.get_attribute("display") != "none" for group in page.locator('.release-panel [data-family="muse"]').all())
country_after = page.locator("circle.country").evaluate_all(
"nodes => nodes.map(node => [node.getAttribute('cx'), node.getAttribute('cy')])"
)
assert country_after == country_before
page.screenshot(path=OUT / "wvs_react_playwright_qwen_hidden.png", full_page=True)
page.get_by_role("button", name="qwen: qwen3.8-flash").click()
page.get_by_role("button", name="qwen", exact=True).click()
marker = page.locator('[data-model="qwen3.8-flash"]')
marker.locator(".model-ring").hover()
page.wait_for_selector("#model-tooltip")
@@ -89,6 +102,16 @@ def main() -> None:
assert page.evaluate("document.activeElement.dataset.model") == "qwen3.8-flash"
assert page.locator("#model-tooltip").is_visible()
page.screenshot(path=OUT / "wvs_react_playwright_keyboard_focus.png", full_page=True)
release_marker = page.locator('.release-panel[data-coordinate="y"] [data-release-model="qwen3.8-flash"]')
release_marker.locator(".model-ring").hover()
page.wait_for_selector("#release-tooltip")
assert "qwen3.8-flash" in page.locator("#release-tooltip").inner_text()
page.screenshot(path=OUT / "wvs_react_playwright_release_panel_hover.png", full_page=True)
release_marker.focus()
assert page.evaluate("document.activeElement.dataset.releaseModel") == "qwen3.8-flash"
assert page.locator("#release-tooltip").is_visible()
page.screenshot(path=OUT / "wvs_react_playwright_release_panel_keyboard_focus.png", full_page=True)
browser.close()
if errors:
@@ -110,8 +133,10 @@ def main() -> None:
print(json.dumps({
"shared": {"models": 64, "countries": 90, "buffered_hulls": 4, "latest_labels": 13,
"numeric_model_country_median_equality": "verified against DOM data attributes"},
"qwen_toggle": "clicked, family group hidden, country coordinates invariant",
"tooltip": "pointer hover and focus show model, family, coordinates, readout, samples and release metadata",
"qwen_toggle": "clicked, map and dated-panel family groups hidden, country coordinates invariant",
"tooltip": "map and release-panel pointer hover and focus show model, family, coordinates, readout, samples and release metadata",
"release_panels": {"panels": 2, "dated_models": len(dated), "date_order": "DOM order verified", "no_paths": True},
"copy": "source caption only; no model-count wording or archaeological paragraph",
"visual_contract": "four smooth SVG paths, no zone polygons, source note right of title",
"hashes": hashes,
}, indent=2))