feat(web-console): rebuild intelligent cockpit sync interface
This commit is contained in:
@@ -130,73 +130,18 @@ class TestSelfCalibrationApi:
|
||||
assert reset["transport"]["state"] == "disconnected"
|
||||
assert [axis["permille"] for axis in reset["axes"]] == [0, 0, 0, 0]
|
||||
|
||||
def test_frontend_and_original_model_are_served_by_existing_service(self) -> None:
|
||||
def test_frontend_and_original_model_are_removed(self) -> None:
|
||||
with urllib.request.urlopen(f"{self.base_url}/", timeout=3) as response:
|
||||
html = response.read().decode("utf-8")
|
||||
with urllib.request.urlopen(
|
||||
f"{self.base_url}/self-calibration.js?v=calibration-8",
|
||||
timeout=3,
|
||||
) as response:
|
||||
script = response.read().decode("utf-8")
|
||||
with urllib.request.urlopen(
|
||||
f"{self.base_url}/self-calibration.css?v=calibration-12",
|
||||
timeout=3,
|
||||
) as response:
|
||||
styles = response.read().decode("utf-8")
|
||||
with urllib.request.urlopen(
|
||||
f"{self.base_url}/console-v2.js?v=desktop-refactor-31",
|
||||
timeout=3,
|
||||
) as response:
|
||||
console_script = response.read().decode("utf-8")
|
||||
with urllib.request.urlopen(
|
||||
f"{self.base_url}/assets/models/n7_seat.glb",
|
||||
timeout=3,
|
||||
) as response:
|
||||
model = response.read()
|
||||
content_type = response.headers["Content-Type"]
|
||||
content_security_policy = response.headers["Content-Security-Policy"]
|
||||
unversioned_cache_control = response.headers["Cache-Control"]
|
||||
with urllib.request.urlopen(
|
||||
f"{self.base_url}/assets/models/n7_seat.glb?v=e7f50f03",
|
||||
timeout=3,
|
||||
) as response:
|
||||
versioned_model_prefix = response.read(4)
|
||||
versioned_cache_control = response.headers["Cache-Control"]
|
||||
with pytest.raises(urllib.error.HTTPError) as missing_model:
|
||||
urllib.request.urlopen(
|
||||
f"{self.base_url}/assets/models/missing-seat.glb?v=missing",
|
||||
timeout=3,
|
||||
)
|
||||
assert "self-calibration" not in html
|
||||
assert "vendor/mediamtx" not in html
|
||||
|
||||
assert 'href="/self-calibration.css?v=calibration-12"' in html
|
||||
assert 'src="/self-calibration.js?v=calibration-8"' in html
|
||||
assert 'data-calibration-page="live"' in script
|
||||
assert 'data-calibration-view="live"' in script
|
||||
assert 'data-calibration-page="hall"' not in script
|
||||
assert 'data-calibration-page="stereo"' not in script
|
||||
assert "座椅与双目联合标定" in script
|
||||
assert 'class="v2-module-heading"' in script
|
||||
assert 'SELF-CALIBRATION' in script
|
||||
assert 'padding: var(--v2-module-title-block) 0 0' in styles
|
||||
assert 'margin-inline: var(--v2-module-title-inline)' in styles
|
||||
assert "实时座椅姿态" in script
|
||||
assert "四轴实时控制" in script
|
||||
assert "ZED 实时画面" in script
|
||||
assert "双目位姿数据" not in script
|
||||
assert 'class="v2-calibration-panel v2-calibration-mqtt-panel"' not in script
|
||||
assert "grid-template-columns: minmax(420px, 1.06fr) minmax(380px, 0.94fr)" in styles
|
||||
assert "标定仿真台架" in script
|
||||
assert "X-Cognitive-Agent-Role" in script
|
||||
assert "--v2-sidebar: #dae3f5" in styles
|
||||
assert "--v2-sidebar-deep: #b6c7ea" in styles
|
||||
assert "--v2-accent-strong: #1e386b" in styles
|
||||
assert '["self-calibration", "self-repair"].includes(module)' in console_script
|
||||
assert 'setRole("admin", { allowModuleTransition: true })' in console_script
|
||||
assert len(model) == 845_992
|
||||
assert versioned_model_prefix == model[:4]
|
||||
assert content_type.startswith("model/gltf-binary")
|
||||
assert unversioned_cache_control == "no-cache"
|
||||
assert versioned_cache_control == "public, max-age=31536000, immutable"
|
||||
assert missing_model.value.code == 404
|
||||
assert "img-src 'self' data: blob:;" in content_security_policy
|
||||
assert "connect-src 'self' blob:;" in content_security_policy
|
||||
for path in (
|
||||
"/self-calibration.js",
|
||||
"/self-calibration.css",
|
||||
"/vendor/mediamtx/reader.js",
|
||||
"/assets/models/n7_seat.glb",
|
||||
):
|
||||
with pytest.raises(urllib.error.HTTPError) as missing_asset:
|
||||
urllib.request.urlopen(f"{self.base_url}{path}", timeout=3)
|
||||
assert missing_asset.value.code == 404
|
||||
|
||||
Reference in New Issue
Block a user