Skip to content

Commit 13dd58a

Browse files
Improve tests (#1134)
1 parent 9f1f3d3 commit 13dd58a

5 files changed

Lines changed: 47 additions & 13 deletions

File tree

scripts/test_local_update.sh

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,39 @@ if [ -z "$DEV_MACHINE_IP" ]; then
7272
exit 1
7373
fi
7474

75+
# SSH helper function
76+
sshdev() {
77+
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no "root@$DEVICE_IP" "$@"
78+
}
79+
7580
# Calculate binary SHA256
7681
BINARY_SHA256=$(shasum -a 256 "$BINARY_PATH" | awk '{print $1}')
7782

83+
# Deploy binary to device
84+
echo -e "${CYAN}Deploying binary to device...${NC}"
85+
sshdev "cat > /userdata/jetkvm/jetkvm_app.update" < "$BINARY_PATH"
86+
sshdev "reboot"
87+
88+
echo -e "${YELLOW}Waiting for device to reboot...${NC}"
89+
sleep 30
90+
91+
# Wait for device to come back online
92+
for i in {1..30}; do
93+
if ping -c 1 -W 2 "$DEVICE_IP" >/dev/null 2>&1; then
94+
break
95+
fi
96+
sleep 2
97+
done
98+
99+
# Wait for web interface to be ready
100+
for i in {1..30}; do
101+
if curl -s --max-time 5 "http://$DEVICE_IP" >/dev/null 2>&1; then
102+
echo -e "${GREEN}Device is ready${NC}"
103+
break
104+
fi
105+
sleep 2
106+
done
107+
78108
# Create mock API server
79109
TEMP_DIR=$(mktemp -d)
80110
mkdir -p "$TEMP_DIR/app/$VERSION"
@@ -188,9 +218,10 @@ echo ""
188218
echo -e "${CYAN}${HLINE}${NC}"
189219
printf "${CYAN}${NC} ${GREEN}%-$((BOX_WIDTH - 2))s${NC}${CYAN}${NC}\n" "E2E Tests"
190220
echo -e "${CYAN}${HLINE}${NC}"
191-
print_row "Device " "http://$DEVICE_IP"
192-
print_row "Version" "$VERSION"
193-
print_row "Stable " "$STABLE_VERSION"
221+
print_row "Device " "http://$DEVICE_IP"
222+
print_row "Version " "$VERSION"
223+
print_row "Stable " "$STABLE_VERSION"
224+
print_row "Deployed" "Yes"
194225
echo -e "${CYAN}${HLINE}${NC}"
195226
echo ""
196227

ui/e2e/hdmi-sleep-reboot.spec.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@ import { test, expect } from "@playwright/test";
22

33
import { verifyHidAndVideo, reconnectAfterReboot } from "./helpers";
44

5-
// Time to wait for device to reboot (ms)
6-
const REBOOT_DELAY = 15000;
7-
85
// Time to wait for settings to apply (ms)
96
const SETTINGS_APPLY_DELAY = 1000;
107

@@ -41,7 +38,7 @@ test.describe("HDMI Sleep Mode and Reboot Tests", () => {
4138
await yesButton.click();
4239

4340
// Wait for reboot and reconnect
44-
await reconnectAfterReboot(page, REBOOT_DELAY);
41+
await reconnectAfterReboot(page);
4542

4643
// Verify video, mouse, and keyboard all work
4744
await verifyHidAndVideo(page);

ui/e2e/helpers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ export async function waitForTerminalReady(page: Page, timeout = 10000): Promise
498498
*/
499499
export async function reconnectAfterReboot(
500500
page: Page,
501-
waitBeforeRetry = 30000,
501+
waitBeforeRetry = 15000,
502502
maxRetries = 15,
503503
retryInterval = 3000,
504504
): Promise<void> {

ui/e2e/z-ota-update-flow.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ test.describe("OTA Update Flow", () => {
5454

5555
try {
5656
await page.goto("/", { timeout: 10000 });
57-
await waitForWebRTCReady(page, 30000);
57+
await waitForWebRTCReady(page);
5858
await waitForTerminalReady(page, 10000);
5959

6060
const restoreCommand = `sed -i 's|"update_api_url": "[^"]*"|"update_api_url": "https://api.jetkvm.com"|' /userdata/kvm_config.json`;
@@ -77,7 +77,7 @@ test.describe("OTA Update Flow", () => {
7777
configModified = true;
7878

7979
await sendTerminalCommand(page, "reboot", 0);
80-
await reconnectAfterReboot(page, 30000);
80+
await reconnectAfterReboot(page);
8181
});
8282

8383
// Phase 2: Downgrade to stable version
@@ -90,7 +90,7 @@ test.describe("OTA Update Flow", () => {
9090
await expect(updateButton).toBeVisible({ timeout: 20000 });
9191
await updateButton.click();
9292

93-
await reconnectAfterReboot(page, 60000);
93+
await reconnectAfterReboot(page, 35000);
9494

9595
const afterDowngrade = await getCurrentVersion(page);
9696
expect(afterDowngrade).toBe(stableVersion);
@@ -106,7 +106,7 @@ test.describe("OTA Update Flow", () => {
106106
await expect(otaUpdateButton).toBeVisible({ timeout: 20000 });
107107
await otaUpdateButton.click();
108108

109-
await reconnectAfterReboot(page, 60000);
109+
await reconnectAfterReboot(page, 35000);
110110

111111
const finalVersion = await getCurrentVersion(page);
112112
expect(finalVersion, "Failed to get version after OTA upgrade").not.toBeNull();

ui/src/routes/devices.$id.settings.general.reboot.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,13 @@ function ConfirmationBox({
8080
</div>
8181
) : (
8282
<div className="mt-4 flex gap-x-2">
83-
<Button size="SM" theme="light" text={m.general_reboot_yes_button()} onClick={onYes} />
83+
<Button
84+
size="SM"
85+
theme="light"
86+
text={m.general_reboot_yes_button()}
87+
onClick={onYes}
88+
data-testid="reboot-confirm-yes"
89+
/>
8490
<Button size="SM" theme="blank" text={m.general_reboot_no_button()} onClick={onNo} />
8591
</div>
8692
)}

0 commit comments

Comments
 (0)