display = None
window = None
+entry = None
expected_change = None
def key_pressed_cb (controller, keyval, keycode, state):
# we need to wait out the map animation, or pointer coords will be off
wait(1000)
+def launch_entry():
+ global display
+ global window
+ global entry
+
+ if verbose:
+ print('launch entry')
+
+ if display == None:
+ display = Gdk.Display.open(os.getenv('WAYLAND_DISPLAY'))
+
+ window = Gtk.Window.new()
+
+ entry = Gtk.Entry.new()
+
+ window.set_child(entry)
+
+ window.connect('notify::is-active', got_active)
+ window.maximize()
+ window.present()
+
+ wait(500)
+
+ assert window.is_active(), "Observer not active"
+ assert window.get_width() == 1024, "Window not maximized"
+ assert window.get_height() == 768, "Window not maximized"
+
+ # we need to wait out the map animation, or pointer coords will be off
+ wait(1000)
+
def stop_observer():
global window
window.destroy()
window = None
+def expect_entry_text(text):
+ assert text == entry.get_text(), 'Unexpected entry text: ' + entry.get_text()
+
def key_press(keyval):
if verbose:
print(f'press key {keyval}')
print(f'Error in basic_keyboard_tests: {e}')
terminate()
+def quick_typing_test():
+ try:
+ launch_entry()
+
+ key_press(Gdk.KEY_T)
+ key_release(Gdk.KEY_T)
+ key_press(Gdk.KEY_e)
+ key_release(Gdk.KEY_e)
+ key_press(Gdk.KEY_s)
+ key_release(Gdk.KEY_s)
+ key_press(Gdk.KEY_t)
+ key_release(Gdk.KEY_t)
+
+ wait(100)
+ expect_entry_text('Test')
+
+ stop_observer()
+ except AssertionError as e:
+ print(f'Error in quick_typing_test: {e}')
+ terminate()
+
def basic_pointer_tests():
try:
if verbose:
basic_keyboard_tests()
basic_pointer_tests()
dnd_tests()
+ quick_typing_test()
def mutter_appeared(name):
global remote_desktop