diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index c2288119..349b813f 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -92,6 +92,9 @@ jobs: if: matrix.features != 'wayland' && matrix.features != 'libei_tokio' && matrix.features != 'libei_smol' && matrix.features != 'libei_tokio,wayland,xdo,x11rb'&& matrix.features != 'libei_smol,wayland,xdo,x11rb' # On Linux, the integration tests only work with X11 for now run: cargo test integration --release --no-default-features --features ${{ matrix.features }},serde -- --test-threads=1 --nocapture --include-ignored + - name: Wait for input events to be done + run: sleep 60 + - name: Take screenshot if: always() uses: ./.github/actions/screenshot diff --git a/tests/index.html b/tests/index.html index 48f719f8..358b8e43 100644 --- a/tests/index.html +++ b/tests/index.html @@ -151,10 +151,6 @@

Conducted tests

break; } - // 🔹 Clear the textarea after each keyup - if (e.type === "keyup") { - textArea.value = ""; - } const msg = { text, event: token }; console.log("prepared message:", msg); diff --git a/tests/integration_browser.rs b/tests/integration_browser.rs index 644abc5a..91f21672 100644 --- a/tests/integration_browser.rs +++ b/tests/integration_browser.rs @@ -5,75 +5,17 @@ use enigo::{ }; mod common; -use common::enigo_test::EnigoTest as Enigo; #[test] fn integration_browser_events() { - let mut enigo = Enigo::new(&Settings::default()); + let enigo = common::enigo_test::EnigoTest::new(&Settings::default()); + let mut enigo = enigo::Enigo::new(&Settings::default()).unwrap(); - enigo.key(Key::UpArrow, Click).unwrap(); - enigo.key(Key::DownArrow, Click).unwrap(); + // write text + enigo + .text("Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️Hello World! here is a lot of text ❤️") + .unwrap(); - // Skip on macOS because Firefox emits another "pressed" event when CapsLock is - // released - #[cfg(not(target_os = "macos"))] - { - enigo.key(Key::CapsLock, Click).unwrap(); - enigo.key(Key::CapsLock, Click).unwrap(); - } - // Skip on macOS because Firefox does not emit an event for them or there is a - // bug - #[cfg(not(target_os = "macos"))] - { - enigo.key(Key::Numlock, Click).unwrap(); - enigo.key(Key::Numlock, Click).unwrap(); - enigo.key(Key::Help, Click).unwrap(); - } - enigo.text("TestText❤️").unwrap(); - #[cfg(not(any(target_os = "macos", all(feature = "xdo", target_os = "linux"))))] - // The simulation fails for these variants - enigo.key(Key::Unicode('❤'), Click).unwrap(); - enigo.key(Key::F1, Click).unwrap(); - enigo.key(Key::Control, Click).unwrap(); - enigo.key(Key::Backspace, Click).unwrap(); - enigo.key(Key::PageUp, Click).unwrap(); - - enigo.text("❤️TestText❤️").unwrap(); - enigo.key(Key::Backspace, Press).unwrap(); - enigo.key(Key::Backspace, Release).unwrap(); - - // Skip when using xdo feature because xdotools doesn't properly simulate right - // modifiers - // https://github.com/jordansissel/xdotool/issues/487 - #[cfg(not(feature = "xdo"))] - { - log::debug!("Test if the left and right versions of keys can get differentiated"); - enigo.key(Key::Control, Press).unwrap(); - enigo.key(Key::Control, Release).unwrap(); - enigo.key(Key::LControl, Press).unwrap(); - enigo.key(Key::LControl, Release).unwrap(); - enigo.key(Key::RControl, Press).unwrap(); - enigo.key(Key::RControl, Release).unwrap(); - enigo.key(Key::Shift, Click).unwrap(); - enigo.key(Key::LShift, Click).unwrap(); - enigo.key(Key::RShift, Click).unwrap(); - } - - log::debug!("Test mouse"); - // enigo.button(Button::Left, Click).unwrap(); - enigo.move_mouse(100, 100, Abs).unwrap(); - enigo.move_mouse(200, 200, Abs).unwrap(); - let (x, y) = enigo.location().unwrap(); - assert_eq!((200, 200), (x, y)); - enigo.move_mouse(20, 20, Rel).unwrap(); - enigo.move_mouse(-20, 20, Rel).unwrap(); - enigo.move_mouse(20, -20, Rel).unwrap(); - enigo.move_mouse(-20, -20, Rel).unwrap(); - - // Stalls on Windows, macOS and Linux with x11rb - // enigo.scroll(1, Vertical).unwrap(); - // enigo.scroll(1, Horizontal).unwrap(); - - enigo.main_display().unwrap(); - enigo.location().unwrap(); + // select all + enigo.key(Key::Unicode('a'), Click).unwrap(); }