Trending

#spix

Latest posts tagged with #spix on Bluesky

Latest Top
Trending

Posts tagged #spix

Preview
Automating Repetitive GUI Interactions in Embedded Development with Spix # Automating Repetitive GUI Interactions in Embedded Development with Spix As Embedded Software Developers, we all know the pain: you make a code change, rebuild your project, restart the application - and then spend precious seconds repeating the same five clicks just to reach the screen you want to test. Add a login dialog on top of it, and suddenly those seconds turn into minutes. Multiply that by a hundred iterations per day, and it’s clear: this workflow is frustrating, error-prone, and a waste of valuable development time. In this article, we’ll look at how to automate these repetitive steps using Spix, an open-source tool for GUI automation in Qt/QML applications. We’ll cover setup, usage scenarios, and how Spix can be integrated into your workflow to save hours of clicking, typing, and waiting. ## The Problem: Click Fatigue in GUI Testing Imagine this: * You start your application. * The login screen appears. * You enter your username and password. * You click "Login". * Only then do you finally reach the UI where you can verify whether your code changes worked. This is fine the first few times - but if you’re doing it 100+ times a day, it becomes a serious bottleneck. While features like **hot reload** can help in some cases, they aren’t always applicable - especially when structural changes are involved or when you must work with "real" production data. So, what’s the alternative? ## The Solution: Automating GUI Input with Spix Spix allows you to control your Qt/QML applications programmatically. Using scripts (typically Python), you can automatically: * Insert text into input fields * Click buttons * Wait for UI elements to appear * Take and compare screenshots This means you can automate login steps, set up UI states consistently, and even extend your CI pipeline with **visual testing**. Unlike manual hot reload tweaks or hardcoding start screens, Spix provides an **external, scriptable solution** without altering your application logic. ## Setting up Spix in Your Project Getting Spix integrated requires a few straightforward steps: ### 1. **Add Spix as a dependency** * Typically done via a Git submodule into your project’s third-party folder. git subrepo add 3rdparty/spix git@github.com:faaxm/spix.git ### 2.**Register Spix in CMake** * Update your `CMakeLists.txt` with a `find_package(Spix REQUIRED)` call. * Because of CMake quirks, you may also need to manually specify the path to Spix’s CMake modules. LIST(APPEND CMAKE_MODULE_PATH /home/christoph/KDAB/spix/cmake/modules) find_package(Spix REQUIRED) ### 3.**Link against Spix** * Add `Spix` to your `target_link_libraries` call. target_link_libraries(myApp PRIVATE Qt6::Core Qt6::Quick Qt6::SerialPort Spix::Spix ) ### 4.**Initialize Spix in your application** * Include Spix headers in `main.cpp`. * Add some lines of boilerplate code: * Include the 2 Spix Headers (AnyRPCServer for Communication and QtQmlBot) * Start the Spix RPC server. * Create a `Spix::QtQmlBot`. * Run the test server on a specified port (e.g. `9000`). #include <Spix/AnyRpcServer.h> #include <Spix/QtQmlBot.h> [...] //Start the actual Runner/Server spix::AnyRpcServer server; auto bot = new spix::QtQmlBot(); bot->runTestServer(server); At this point, your application is "Spix-enabled". You can verify this by checking for the open port (e.g. `localhost:9000`). ## Spix can be a Security Risk: Make sure to not expose Spix in any production environment, maybe only enable it for your Debug-builds. ## Where Spix Shines Once the setup is done, Spix can be used to automate repetitive tasks. Let’s look at two particularly useful examples: ### 1. Automating Logins with a Python Script Instead of typing your credentials and clicking "Login" manually, you can write a simple Python script that: * Connects to the Spix server on `localhost:9000` * Inputs text into the `userField` and `passwordField` * Clicks the "Login" button (Items marked with "Quotes" are literal That-Specific-Text-Identifiers for Spix) import xmlrpc.client session = xmlrpc.client.ServerProxy('http://localhost:9000') session.inputText('mainWindow/userField', 'christoph') session.inputText('mainWindow/passwordField', 'secret') session.mouseClick('mainWindow/"Login"') When executed, this script takes care of the entire login flow - no typing, no clicking, no wasted time. Better yet, you can check the script into your repository, so your whole team can reuse it. For Development, Integration in Qt-Creator can be achieved with a Custom startup executable, that also starts this python script. ## In a CI environment, this approach is particularly powerful, since you can ensure every test run starts from a clean state without relying on manual navigation. ### 2. Screenshot Comparison Beyond input automation, Spix also supports **taking screenshots**. Combined with Python libraries like OpenCV or `scikit-image`, this opens up interesting possibilities for testing. #### Example 1: Full-screen comparison Take a screenshot of the main window and store it first: import xmlrpc.client session = xmlrpc.client.ServerProxy('http://localhost:9000') [...] session.takeScreenshot('mainWindow', '/tmp/screenshot.png')k Now we can compare it with a reference image: from skimage import io from skimage.metrics import structural_similarity as ssim screenshot1 = io.imread('/tmp/reference.png', as_gray=True) screenshot2 = io.imread('/tmp/screenshot.png', as_gray=True) ssim_index = ssim(screenshot1, screenshot2, data_range=screenshot1.max() - screenshot1.min()) threshold = 0.95 if ssim_index == 1.0: print("The screenshots are a perfect match") elif ssim_index >= threshold: print("The screenshots are similar, similarity: " + str(ssim_index * 100) + "%") else: print("The screenshots are not similar at all, similarity: " + str(ssim_index * 100) + "%") This is useful for catching unexpected regressions in visual layout. #### Example 2: Finding differences in the same UI Use OpenCV to highlight pixel-level differences between two screenshots—for instance, missing or misaligned elements: import cv2 image1 = cv2.imread('/tmp/reference.png') image2 = cv2.imread('/tmp/screenshot.png') diff = cv2.absdiff(image1, image2) # Convert the difference image to grayscale gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY) # Threshold the grayscale image to get a binary image _, thresh = cv2.threshold(gray, 30, 255, cv2.THRESH_BINARY) contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(image1, contours, -1, (0, 0, 255), 2) cv2.imshow('Difference Image', image1) cv2.waitKey(0) This form of **visual regression testing** can be integrated into your CI system. If the UI changes unintentionally, Spix can detect it and trigger an alert. Defective Image The script marked the defective parts of the image compared to the should-be image. ## Recap Spix is not a full-blown GUI testing framework like Squish, but it fills a useful niche for embedded developers who want to: * Save time on repetitive input (like logins). * Share reproducible setup scripts with colleagues. * Perform lightweight visual regression testing in CI. * Interact with their applications on embedded devices remotely. While there are limitations (e.g. manual wait times, lack of deep synchronization with UI states), Spix provides a powerful and flexible way to automate everyday development tasks - without having to alter your application logic. If you’re tired of clicking the same buttons all day, give Spix a try. It might just save you hours of time and frustration in your embedded development workflow. The post Automating Repetitive GUI Interactions in Embedded Development with Spix appeared first on KDAB.

Automating Repetitive #GUI Interactions in Embedded Development with #Spix
#qt #qml
www.kdab.com/automating-repetitive-gu...

0 0 0 0

bsky.app/profile/did:...

better-experience.blogspot.com/2026/01/aepi...

#AMBRIDGE #PENNSYLVANIA
multi-search-tag-explorer.headlines-world.com/advanced-sea...
#CROPIWR #SPIX
aepiot.com/advanced-sea...
O #VEGAS I #MACAU #III
aepiot.com/advanced-sea...
aepiot.ro

0 0 0 0
Preview
Brazil police probe plight of near-extinct blue parrot Brazilian police said Wednesday they were probing the outbreak of a lethal virus among some of the last Spix’s Macaws, one of the world’s rarest birds — made famous as the blue parrot in the 2011 animated film “Rio.” The conservation of the Spix’s macaw has been the subject of a fierce battle between private […] The post Brazil police probe plight of near-extinct blue parrot appeared first on Digital Journal.
0 0 0 0
1st Panel: It's supposed to be an overhead shot of where the 4-way pong Minigame in the videogame appears. It is most likely not accurate to what is in-game. The 4 birds that appear are: Nico, Pedro, Rafael, and Azzy, who is speaking. "Wow, it's... 4-Way Pong. I haven't seen this sorta mini-game yet in this... uh, party game. How Original."

2nd panel: A close-up shot of Azzy, with Blu Guntherson in the background casually observing the game in progress. Several buildings are in the background with text on them. There is also disclaimer text about how I did not look at the map in-game before making this comic.

Azzy continues to speak. "I have no qualms with pong, or any mini-game for that matter of fact. While I can excuse most party game logic, such as how the hell nobody is noticing this specific road, there is one question I should probably bring up..."

3rd panel: Azzy is pointing at a Marmoset, or a 'Mico', as my friend tells me what they call them. A one-block building exists for comedic reasons, and a sign that says 'Empty Space Strikes Again!'

Azzy continues speaking. "How did a monkey from South America get all the way over here in Minnesota? Why would you come all this way just to chuck Hockey Pucks at us?" To which the Mico responds, "I didn't even want to be here, bro, much less watch you bird-brains play a Crash Bash mini-game."

-Logi

1st Panel: It's supposed to be an overhead shot of where the 4-way pong Minigame in the videogame appears. It is most likely not accurate to what is in-game. The 4 birds that appear are: Nico, Pedro, Rafael, and Azzy, who is speaking. "Wow, it's... 4-Way Pong. I haven't seen this sorta mini-game yet in this... uh, party game. How Original." 2nd panel: A close-up shot of Azzy, with Blu Guntherson in the background casually observing the game in progress. Several buildings are in the background with text on them. There is also disclaimer text about how I did not look at the map in-game before making this comic. Azzy continues to speak. "I have no qualms with pong, or any mini-game for that matter of fact. While I can excuse most party game logic, such as how the hell nobody is noticing this specific road, there is one question I should probably bring up..." 3rd panel: Azzy is pointing at a Marmoset, or a 'Mico', as my friend tells me what they call them. A one-block building exists for comedic reasons, and a sign that says 'Empty Space Strikes Again!' Azzy continues speaking. "How did a monkey from South America get all the way over here in Minnesota? Why would you come all this way just to chuck Hockey Pucks at us?" To which the Mico responds, "I didn't even want to be here, bro, much less watch you bird-brains play a Crash Bash mini-game." -Logi

Wow, it's finished after 500 hours.

It's a small comic when I played the #Rio party game, and noticed something peculiar.

It's not the best: World building is not my thing.

However, I think I drew the Rio birds very well, so yay. 🦜

#art #birds #macaw #mico #marmoset #comic #spix

5 0 1 0
Preview
東京ゲームショウ2025で初音ミクとコラボした最新イヤホンを展示! 2025年の東京ゲームショウでは、初音ミクや人気キャラクターのイヤホンが展示!トークイベントや物販も必見です。

東京ゲームショウ2025で初音ミクとコラボした最新イヤホンを展示! #初音ミク #カラマリ #SPIX

2025年の東京ゲームショウでは、初音ミクや人気キャラクターのイヤホンが展示!トークイベントや物販も必見です。

0 0 0 0
Preview
The Stylish Gaming Earphones: Introducing 'THE SHOOTER CALAMARI and SPIX Editions' Explore the newly launched gaming earphones by MSY with 'THE SHOOTER CALAMARI Edition' and 'THE SHOOTER SPIX Edition', designed for serious gamers.

The Stylish Gaming Earphones: Introducing 'THE SHOOTER CALAMARI and SPIX Editions' #Japan #Tokyo #GRAPHT #CALAMARI #SPIX

0 0 0 0
Preview
よしもとゲーミングの新作イヤホンが登場!カラマリ&SPIXモデル よしもとゲーミングが監修したゲーミングイヤホンが新登場。カラマリとSPIXの全く新しい音体験をお届けします。

よしもとゲーミングの新作イヤホンが登場!カラマリ&SPIXモデル #ゲーミングイヤホン #カラマリ #SPIX

よしもとゲーミングが監修したゲーミングイヤホンが新登場。カラマリとSPIXの全く新しい音体験をお届けします。

0 0 0 0
Preview
カラマリとSPIX監修のゲーミングイヤホンが新登場! 『THE SHOOTER CALAMARI Edition』と『THE SHOOTER SPIX Edition』の誕生。プロゲーミングチームの魅力が詰まった特別なイヤホンを体感しよう!

カラマリとSPIX監修のゲーミングイヤホンが新登場! #GRAPHT #カラマリ #SPIX

『THE SHOOTER CALAMARI Edition』と『THE SHOOTER SPIX Edition』の誕生。プロゲーミングチームの魅力が詰まった特別なイヤホンを体感しよう!

0 0 0 0

#India's Prime Minister poses with #Spix Macaws at inauguration of "conservation center", wrapped in denunciations and controversies
@conexaoplaneta.bsky.social

1 1 0 0
YouTube Share your videos with friends, family, and the world

ゲーマービンゴ面白かったなぁ☺️🫶

#よしもとゲーミング
#カラマリ #spix
#Samsung

www.youtube.com/live/ycFCYuj...

2 0 0 0
Post image

#EsWarEinmal am 9.2.1781:Von #Bayern nach #Brasilien:Geburt von J.von #Spix,entdeckte fossilreiche SantanaFormation

0 0 0 0