Add tests/test_graphical_hotspot_password.py

This commit is contained in:
Thomas Farstrike
2026-03-25 14:23:53 +01:00
parent abcf4df5f0
commit 73b9095631
4 changed files with 352 additions and 3 deletions
+155
View File
@@ -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
View File