-
-
+
+
+
+
+
XYZ 平移摇杆
+ mm
+
+
+
+
+
+
+
+
+
+
+
+
+ X 左右
+ Y 上下
+ Z 中心
+
+
+
+
+
WPR 姿态摇杆
+ deg
+
+
+
+
+
+
+
+
+
+
+
+
+ W 左右
+ P 上下
+ R 中心
+
+
+
+
+
+
请求日志
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
--
diff --git a/tests/Flyshot.Server.IntegrationTests/StatusEndpointTests.cs b/tests/Flyshot.Server.IntegrationTests/StatusEndpointTests.cs
index 2c8c3f9..a8986fc 100644
--- a/tests/Flyshot.Server.IntegrationTests/StatusEndpointTests.cs
+++ b/tests/Flyshot.Server.IntegrationTests/StatusEndpointTests.cs
@@ -35,7 +35,7 @@ public sealed class StatusEndpointTests(FlyshotServerFactory factory) : IClassFi
}
///
- /// 状态页应当提供直角坐标点动按钮,并复用现有 MovePose HTTP 接口。
+ /// 状态页应当提供双摇杆直角坐标点动面板,并复用现有 MovePose HTTP 接口。
///
[Fact]
public async Task GetStatusPageAssets_ExposeCartesianJogControls()
@@ -47,24 +47,45 @@ public sealed class StatusEndpointTests(FlyshotServerFactory factory) : IClassFi
var html = await htmlResponse.Content.ReadAsStringAsync();
Assert.Contains("直角坐标点动", html, StringComparison.Ordinal);
+ Assert.Contains("XYZ 平移摇杆", html, StringComparison.Ordinal);
+ Assert.Contains("WPR 姿态摇杆", html, StringComparison.Ordinal);
Assert.Contains("id=\"linear-step\"", html, StringComparison.Ordinal);
Assert.Contains("id=\"angular-step\"", html, StringComparison.Ordinal);
+ Assert.Contains("max=\"20\"", html, StringComparison.Ordinal);
+ Assert.Contains("请求日志", html, StringComparison.Ordinal);
+ Assert.Contains("id=\"request-log\"", html, StringComparison.Ordinal);
+ Assert.Contains("id=\"clear-log\"", html, StringComparison.Ordinal);
- foreach (var axis in new[] { "x", "y", "z", "w", "p", "r" })
+ foreach (var (axis, negative, positive) in new[]
+ {
+ ("x", "X-", "X+"),
+ ("y", "Y-", "Y+"),
+ ("z", "Z-", "Z+"),
+ ("w", "W-", "W+"),
+ ("p", "P-", "P+"),
+ ("r", "R-", "R+")
+ })
{
Assert.Contains($"data-axis=\"{axis}\"", html, StringComparison.Ordinal);
Assert.Contains($"data-axis=\"{axis}\" data-direction=\"1\"", html, StringComparison.Ordinal);
Assert.Contains($"data-axis=\"{axis}\" data-direction=\"-1\"", html, StringComparison.Ordinal);
+ Assert.Contains(negative, html, StringComparison.Ordinal);
+ Assert.Contains(positive, html, StringComparison.Ordinal);
}
using var scriptResponse = await client.GetAsync("/assets/status.js");
Assert.Equal(HttpStatusCode.OK, scriptResponse.StatusCode);
var script = await scriptResponse.Content.ReadAsStringAsync();
+ Assert.Contains("/api/status/snapshot", script, StringComparison.Ordinal);
Assert.Contains("/move_pose/", script, StringComparison.Ordinal);
Assert.Contains("cartesianPose", script, StringComparison.Ordinal);
Assert.Contains("pointerdown", script, StringComparison.Ordinal);
Assert.Contains("pointerup", script, StringComparison.Ordinal);
+ Assert.Contains("pointerleave", script, StringComparison.Ordinal);
+ Assert.Contains("blur", script, StringComparison.Ordinal);
+ Assert.Contains("request-log", script, StringComparison.Ordinal);
+ Assert.Contains("clear-log", script, StringComparison.Ordinal);
}
///