| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- from playwright.sync_api import sync_playwright
- URL = "http://localhost:8765/view/全局分类树-需求热度与关系分析.html"
- def wait_until_ready(page):
- page.goto(URL)
- page.locator("#demand-count").wait_for(state="visible")
- page.wait_for_function(
- "document.querySelector('#demand-count').textContent.trim() !== '—'"
- )
- def test_level_scroll(page):
- wait_until_ready(page)
- page.locator('[data-start-depth="3"]').click()
- viewport = page.locator("#icicle-viewport")
- dimensions = viewport.evaluate(
- "(element) => ({clientHeight: element.clientHeight, scrollHeight: element.scrollHeight})"
- )
- assert dimensions["scrollHeight"] > dimensions["clientHeight"], dimensions
- assert page.locator("#map-context").text_content().startswith("从第 3 级开始")
- assert page.locator("body").get_attribute("data-start-depth") == "3"
- page.screenshot(path="/tmp/supplyagent-level-tree.png")
- page.locator("#icicle-canvas").hover(position={"x": 120, "y": 220})
- page.mouse.wheel(0, 900)
- page.wait_for_timeout(300)
- scroll_top = viewport.evaluate("(element) => element.scrollTop")
- assert scroll_top > 0, f"ordinary wheel did not scroll the long tree: {scroll_top}"
- before_scale = float(page.locator("body").get_attribute("data-view-scale"))
- page.keyboard.down("Control")
- page.mouse.wheel(0, -120)
- page.keyboard.up("Control")
- page.wait_for_timeout(100)
- after_scale = float(page.locator("body").get_attribute("data-view-scale"))
- assert after_scale > before_scale, (before_scale, after_scale)
- def test_demand_path_navigation(page):
- wait_until_ready(page)
- page.locator("#global-search").fill("节日")
- page.locator(".demand-card", has_text="节日").first.click()
- page.locator(".attachment-button").first.click()
- path_buttons = page.locator("[data-path-info-node]")
- count = path_buttons.count()
- assert count > 1, f"expected an ancestor path, got {count} nodes"
- parent_button = path_buttons.nth(count - 2)
- parent_name = parent_button.locator("strong").text_content().strip()
- parent_button.click()
- assert "visible" in page.locator(".demand-attachments").get_attribute("class")
- assert "节日" in page.locator(".demand-card.selected").text_content()
- current_name = page.locator("#breadcrumb-bar button.current").text_content().strip()
- assert current_name == parent_name, (current_name, parent_name)
- page.locator("#parent-view").click()
- higher_parent_name = (
- page.locator("#breadcrumb-bar button.current").text_content().strip()
- )
- assert higher_parent_name != parent_name
- assert "节日" in page.locator(".demand-card.selected").text_content()
- assert (
- page.locator("[data-path-info-node].active strong").text_content().strip()
- == higher_parent_name
- )
- page.screenshot(path="/tmp/supplyagent-demand-path.png", full_page=True)
- with sync_playwright() as playwright:
- browser = playwright.chromium.launch(
- headless=True,
- executable_path="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
- )
- page = browser.new_page(viewport={"width": 1600, "height": 1000})
- console_errors = []
- page.on(
- "console",
- lambda message: console_errors.append(message.text)
- if message.type == "error"
- else None,
- )
- test_level_scroll(page)
- test_demand_path_navigation(page)
- assert not console_errors, console_errors
- browser.close()
|