Falko Schindler преди 2 години
родител
ревизия
b6ba95c42b
променени са 1 файла, в които са добавени 17 реда и са изтрити 0 реда
  1. 17 0
      tests/test_events.py

+ 17 - 0
tests/test_events.py

@@ -1,5 +1,7 @@
 import asyncio
 
+from selenium.webdriver.common.by import By
+
 from nicegui import ui
 
 from .screen import Screen
@@ -20,3 +22,18 @@ def test_event_with_update_before_await(screen: Screen):
     screen.wait_for('1')
     screen.should_not_contain('2')
     screen.wait_for('2')
+
+
+def test_event_modifiers(screen: Screen):
+    events = []
+    ui.input('A').on('keydown', lambda _: events.append('A'))
+    ui.input('B').on('keydown.x', lambda _: events.append('B'))
+    ui.input('C').on('keydown.once', lambda _: events.append('C'))
+    ui.input('D').on('keydown.shift.x', lambda _: events.append('D'))
+
+    screen.open('/')
+    screen.selenium.find_element(By.XPATH, '//*[@aria-label="A"]').send_keys('x')
+    screen.selenium.find_element(By.XPATH, '//*[@aria-label="B"]').send_keys('xy')
+    screen.selenium.find_element(By.XPATH, '//*[@aria-label="C"]').send_keys('xx')
+    screen.selenium.find_element(By.XPATH, '//*[@aria-label="D"]').send_keys('Xx')
+    assert events == ['A', 'B', 'C', 'D']