You've already forked MicroPythonOS
mirror of
https://github.com/m5stack/MicroPythonOS.git
synced 2026-05-20 11:51:27 -07:00
Hotspot settings: refresh UI after changes
This commit is contained in:
+4
-2
@@ -70,8 +70,10 @@ class HotspotSettings(Activity):
|
||||
def refresh_status(self):
|
||||
is_running = WifiService.is_hotspot_enabled()
|
||||
state_text = "Running" if is_running else "Stopped"
|
||||
ssid = self.prefs.get_string("ssid", self.DEFAULTS["ssid"])
|
||||
authmode = self.prefs.get_string("authmode", None)
|
||||
self.prefs.load()
|
||||
self.ui_prefs.load()
|
||||
ssid = self.ui_prefs.get_string("ssid", self.DEFAULTS["ssid"])
|
||||
authmode = self.ui_prefs.get_string("authmode", self.DEFAULTS["authmode"])
|
||||
security_text = self._format_security_label(authmode)
|
||||
self.status_label.set_text(
|
||||
f"Status: {state_text}\nHotspot name: {ssid}\nSecurity: {security_text}"
|
||||
|
||||
@@ -0,0 +1,185 @@
|
||||
"""
|
||||
Graphical test for hotspot settings refreshing overview values.
|
||||
|
||||
This test verifies:
|
||||
1) Auth Mode changes in settings are reflected on the hotspot overview.
|
||||
2) SSID changes in settings are reflected on the hotspot overview.
|
||||
|
||||
Usage:
|
||||
Desktop: ./tests/unittest.sh tests/test_graphical_hotspot_settings.py
|
||||
Device: ./tests/unittest.sh tests/test_graphical_hotspot_settings.py --ondevice
|
||||
"""
|
||||
|
||||
import unittest
|
||||
import lvgl as lv
|
||||
import mpos.ui
|
||||
from mpos import (
|
||||
AppManager,
|
||||
SharedPreferences,
|
||||
WifiService,
|
||||
wait_for_render,
|
||||
click_button,
|
||||
click_label,
|
||||
print_screen_labels,
|
||||
verify_text_present,
|
||||
find_dropdown_widget,
|
||||
select_dropdown_option_by_text,
|
||||
get_widget_coords,
|
||||
simulate_click,
|
||||
)
|
||||
|
||||
|
||||
class TestGraphicalHotspotSettings(unittest.TestCase):
|
||||
"""Graphical tests for hotspot settings refresh."""
|
||||
|
||||
def _reset_hotspot_preferences(self):
|
||||
prefs = SharedPreferences("com.micropythonos.settings.hotspot")
|
||||
editor = prefs.edit()
|
||||
editor.remove_all()
|
||||
editor.commit()
|
||||
|
||||
def _open_hotspot_settings_screen(self):
|
||||
result = AppManager.start_app("com.micropythonos.settings.hotspot")
|
||||
self.assertTrue(result, "Failed to start hotspot settings app")
|
||||
wait_for_render(iterations=20)
|
||||
|
||||
screen = lv.screen_active()
|
||||
print("\nHotspot overview labels:")
|
||||
print_screen_labels(screen)
|
||||
|
||||
self.assertTrue(
|
||||
click_button("Settings"),
|
||||
"Could not find Settings button in hotspot app",
|
||||
)
|
||||
wait_for_render(iterations=40)
|
||||
|
||||
screen = lv.screen_active()
|
||||
print("\nHotspot settings labels:")
|
||||
print_screen_labels(screen)
|
||||
return screen
|
||||
|
||||
def _find_textarea(self, node):
|
||||
try:
|
||||
if node.__class__.__name__ == "textarea":
|
||||
return node
|
||||
if hasattr(node, "set_one_line") and hasattr(node, "set_text") and hasattr(node, "get_text"):
|
||||
return node
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
child_count = node.get_child_count()
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
for i in range(child_count):
|
||||
child = node.get_child(i)
|
||||
result = self._find_textarea(child)
|
||||
if result:
|
||||
return result
|
||||
return None
|
||||
|
||||
def tearDown(self):
|
||||
try:
|
||||
WifiService.disable_hotspot()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
mpos.ui.back_screen()
|
||||
wait_for_render(5)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def test_auth_mode_change_updates_overview_security(self):
|
||||
"""Verify Auth Mode change is reflected on the hotspot overview."""
|
||||
print("\n=== Starting hotspot Auth Mode overview refresh test ===")
|
||||
|
||||
self._reset_hotspot_preferences()
|
||||
self._open_hotspot_settings_screen()
|
||||
|
||||
self.assertTrue(
|
||||
click_label("Auth Mode"),
|
||||
"Could not click Auth Mode setting",
|
||||
)
|
||||
wait_for_render(iterations=40)
|
||||
|
||||
screen = lv.screen_active()
|
||||
dropdown = find_dropdown_widget(screen)
|
||||
self.assertIsNotNone(dropdown, "Auth Mode dropdown not found")
|
||||
|
||||
coords = get_widget_coords(dropdown)
|
||||
self.assertIsNotNone(coords, "Could not get dropdown coordinates")
|
||||
|
||||
print(f"Clicking dropdown at ({coords['center_x']}, {coords['center_y']})")
|
||||
simulate_click(coords["center_x"], coords["center_y"], press_duration_ms=100)
|
||||
wait_for_render(iterations=20)
|
||||
|
||||
self.assertTrue(
|
||||
select_dropdown_option_by_text(dropdown, "WPA2", allow_partial=True),
|
||||
"Could not select WPA2 option in dropdown",
|
||||
)
|
||||
wait_for_render(iterations=20)
|
||||
|
||||
self.assertTrue(
|
||||
click_button("Save"),
|
||||
"Could not click Save button in Auth Mode settings",
|
||||
)
|
||||
wait_for_render(iterations=40)
|
||||
|
||||
mpos.ui.back_screen()
|
||||
wait_for_render(iterations=20)
|
||||
|
||||
screen = lv.screen_active()
|
||||
print("\nHotspot overview labels after Auth Mode change:")
|
||||
print_screen_labels(screen)
|
||||
self.assertTrue(
|
||||
verify_text_present(screen, "Security: WPA2"),
|
||||
"Hotspot overview did not update Security after Auth Mode change",
|
||||
)
|
||||
|
||||
print("\n=== Hotspot Auth Mode overview refresh test completed ===")
|
||||
|
||||
def test_ssid_change_updates_overview_name(self):
|
||||
"""Verify SSID change is reflected on the hotspot overview."""
|
||||
print("\n=== Starting hotspot SSID overview refresh test ===")
|
||||
|
||||
new_ssid = "MPOS-Test-SSID"
|
||||
|
||||
self._reset_hotspot_preferences()
|
||||
self._open_hotspot_settings_screen()
|
||||
|
||||
self.assertTrue(
|
||||
click_label("Network Name (SSID)"),
|
||||
"Could not click Network Name (SSID) setting",
|
||||
)
|
||||
wait_for_render(iterations=40)
|
||||
|
||||
screen = lv.screen_active()
|
||||
textarea = self._find_textarea(screen)
|
||||
self.assertIsNotNone(textarea, "SSID textarea not found")
|
||||
textarea.set_text(new_ssid)
|
||||
wait_for_render(iterations=10)
|
||||
|
||||
self.assertTrue(
|
||||
click_button("Save"),
|
||||
"Could not click Save button in SSID settings",
|
||||
)
|
||||
wait_for_render(iterations=40)
|
||||
|
||||
mpos.ui.back_screen()
|
||||
wait_for_render(iterations=20)
|
||||
|
||||
screen = lv.screen_active()
|
||||
print("\nHotspot overview labels after SSID change:")
|
||||
print_screen_labels(screen)
|
||||
self.assertTrue(
|
||||
verify_text_present(screen, f"Hotspot name: {new_ssid}"),
|
||||
"Hotspot overview did not update SSID after settings change",
|
||||
)
|
||||
|
||||
print("\n=== Hotspot SSID overview refresh test completed ===")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pass
|
||||
Reference in New Issue
Block a user