mirror of
https://github.com/m5stack/MicroPythonOS.git
synced 2026-05-20 11:51:27 -07:00
Add tests/test_graphical_hotspot_password.py
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
"""
|
||||
Graphical test for hotspot settings password defaults.
|
||||
|
||||
This test verifies that the hotspot settings screen shows the
|
||||
"(defaults to none)" value under the "Auth Mode" setting.
|
||||
|
||||
Usage:
|
||||
Desktop: ./tests/unittest.sh tests/test_graphical_hotspot_password.py
|
||||
Device: ./tests/unittest.sh tests/test_graphical_hotspot_password.py --ondevice
|
||||
"""
|
||||
|
||||
import unittest
|
||||
import lvgl as lv
|
||||
import mpos.ui
|
||||
from mpos import (
|
||||
AppManager,
|
||||
wait_for_render,
|
||||
print_screen_labels,
|
||||
click_button,
|
||||
verify_text_present,
|
||||
find_setting_value_label,
|
||||
get_setting_value_text,
|
||||
click_label,
|
||||
simulate_click,
|
||||
get_widget_coords,
|
||||
select_dropdown_option_by_text,
|
||||
find_dropdown_widget,
|
||||
SharedPreferences,
|
||||
)
|
||||
|
||||
|
||||
class TestGraphicalHotspotPassword(unittest.TestCase):
|
||||
"""Test suite for hotspot password defaults in settings UI."""
|
||||
|
||||
def _reset_hotspot_preferences(self):
|
||||
"""Clear hotspot preferences to ensure default values are shown."""
|
||||
prefs = SharedPreferences("com.micropythonos.settings.hotspot")
|
||||
editor = prefs.edit()
|
||||
editor.remove_all()
|
||||
editor.commit()
|
||||
|
||||
def _open_hotspot_settings_screen(self):
|
||||
"""Start hotspot app and open the Settings screen."""
|
||||
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("\nInitial screen 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("\nSettings screen labels:")
|
||||
print_screen_labels(screen)
|
||||
return screen
|
||||
|
||||
def tearDown(self):
|
||||
"""Clean up after each test method."""
|
||||
# Navigate back to launcher to close any opened apps
|
||||
try:
|
||||
mpos.ui.back_screen()
|
||||
wait_for_render(5)
|
||||
except:
|
||||
pass
|
||||
|
||||
def test_auth_mode_defaults_label(self):
|
||||
"""Verify Auth Mode shows defaults to none in hotspot settings."""
|
||||
print("\n=== Starting Hotspot Settings Auth Mode default test ===")
|
||||
|
||||
self._reset_hotspot_preferences()
|
||||
screen = self._open_hotspot_settings_screen()
|
||||
|
||||
self.assertTrue(
|
||||
verify_text_present(screen, "Auth Mode"),
|
||||
"Auth Mode setting title not found on settings screen",
|
||||
)
|
||||
|
||||
value_label = find_setting_value_label(screen, "Auth Mode")
|
||||
self.assertIsNotNone(
|
||||
value_label,
|
||||
"Could not find value label for Auth Mode setting",
|
||||
)
|
||||
|
||||
value_text = get_setting_value_text(screen, "Auth Mode")
|
||||
print(f"Auth Mode value text: {value_text}")
|
||||
self.assertEqual(
|
||||
value_text,
|
||||
"(defaults to none)",
|
||||
"Auth Mode value text did not match expected default",
|
||||
)
|
||||
|
||||
print("\n=== Hotspot settings Auth Mode default test completed ===")
|
||||
|
||||
def test_auth_mode_dropdown_select_wpa2(self):
|
||||
"""Change Auth Mode via dropdown and verify stored value label."""
|
||||
print("\n=== Starting Hotspot Settings Auth Mode dropdown test ===")
|
||||
|
||||
self._reset_hotspot_preferences()
|
||||
screen = 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()
|
||||
print("\nAuth Mode edit screen labels:")
|
||||
print_screen_labels(screen)
|
||||
|
||||
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)
|
||||
|
||||
screen = lv.screen_active()
|
||||
print("\nSettings screen labels after save:")
|
||||
print_screen_labels(screen)
|
||||
|
||||
value_text = get_setting_value_text(screen, "Auth Mode")
|
||||
print(f"Auth Mode value text after save: {value_text}")
|
||||
self.assertEqual(
|
||||
value_text,
|
||||
"wpa2",
|
||||
"Auth Mode value did not update to wpa2",
|
||||
)
|
||||
|
||||
print("\n=== Hotspot settings Auth Mode dropdown test completed ===")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pass
|
||||
Executable → Regular
Reference in New Issue
Block a user