feat(javaTest): visualize floor transfer evidence
This commit is contained in:
@@ -38,6 +38,8 @@ def run_point_to_point(page):
|
||||
"route quality tuple must contain six ordered metrics")
|
||||
require(page.locator("#route-comparability").inner_text() != "--",
|
||||
"historical comparability badge was not populated")
|
||||
require("DIRECT" in page.locator("#evidence-assignment-mode").inner_text(),
|
||||
"same-floor point simulation did not expose DIRECT assignment mode")
|
||||
|
||||
|
||||
def verify_map_interactions(page):
|
||||
@@ -90,7 +92,7 @@ def verify_map_interactions(page):
|
||||
|
||||
|
||||
def verify_historical_mode(page):
|
||||
"""Run the real 240-task endpoint and verify task selection keeps decision evidence live."""
|
||||
"""Run 240 tasks and inspect one real cross-floor dispatch without drawing a fake edge."""
|
||||
page.locator(".mode-tab[data-mode='history']").click()
|
||||
page.locator("#run-history").click()
|
||||
expect(page.locator("#history-run-state")).to_have_text(
|
||||
@@ -100,9 +102,52 @@ def verify_historical_mode(page):
|
||||
"historical result did not expose all 240 tasks")
|
||||
require(page.locator("#history-task-body tr").count() == 240,
|
||||
"historical task table row count is not 240")
|
||||
page.locator("#history-task-body tr").nth(1).click()
|
||||
transfer_rows = page.locator(
|
||||
"#history-task-body tr[data-assignment-mode='FLOOR_TRANSFER']"
|
||||
)
|
||||
require(transfer_rows.count() > 0,
|
||||
"historical result did not expose a FLOOR_TRANSFER task")
|
||||
transfer_rows.first.click()
|
||||
require(page.locator("#route-candidate-body tr").count() > 0,
|
||||
"selected historical task lost route candidates")
|
||||
require("FLOOR_TRANSFER" in page.locator("#evidence-assignment-mode").inner_text(),
|
||||
"selected transfer task did not expose its assignment mode")
|
||||
expect(page.locator("#floor-transfer-panel")).to_be_visible()
|
||||
require(page.locator("#floor-transfer-list .floor-transfer-job").count() > 0,
|
||||
"selected transfer task did not render its transfer job")
|
||||
require("→" in page.locator("#floor-transfer-list").inner_text()
|
||||
and "幂等键" in page.locator("#floor-transfer-list").inner_text(),
|
||||
"transfer job is missing port direction or idempotency evidence")
|
||||
require(page.locator("#floor-select option", has_text="换层").count() >= 2,
|
||||
"floor selector did not mark all floors involved in the transfer")
|
||||
require(page.locator("#dynamic-route-layer .floor-transfer-port-marker").count() > 0,
|
||||
"selected floor did not render a transfer port marker")
|
||||
transfer_events = page.locator(
|
||||
"#event-table-body tr[data-event-type^='FLOOR_TRANSFER']"
|
||||
)
|
||||
require(transfer_events.count() >= 3,
|
||||
"transfer lifecycle events are missing from the timeline")
|
||||
require(page.locator(
|
||||
"#event-type-filter option[value='FLOOR_TRANSFER_COMPLETED']"
|
||||
).inner_text() == "换层完成",
|
||||
"transfer completion event did not receive a business label")
|
||||
|
||||
cross_floor_segments = page.evaluate("""
|
||||
async () => {
|
||||
const bootstrap = await fetch('/api/bootstrap').then(response => response.json());
|
||||
const floors = Object.fromEntries(
|
||||
bootstrap.sites.map(site => [site.siteId, Number(site.floor)]));
|
||||
return Array.from(document.querySelectorAll(
|
||||
'#dynamic-route-layer .route-segment title'))
|
||||
.map(title => title.textContent.split(' → '))
|
||||
.filter(parts => parts.length === 2
|
||||
&& floors[parts[0]] !== undefined
|
||||
&& floors[parts[1]] !== undefined
|
||||
&& floors[parts[0]] !== floors[parts[1]]);
|
||||
}
|
||||
""")
|
||||
require(not cross_floor_segments,
|
||||
"normal route layer drew cross-floor edges: " + str(cross_floor_segments))
|
||||
|
||||
|
||||
def verify_viewport(browser, viewport, filename, run_history):
|
||||
|
||||
Reference in New Issue
Block a user