coordination #155608
Updated by szarate 10 months ago
Background: I met with Sam Thursfield from Gnome during FOSDEM, and one of the things that popped up was that we needed (both openSUSE & Gnome) to collaborate better and to avoid duplicating the work that we do for the same actions, I asked Sam to do a writeup of things they would need from Gnome perspective, things they have developed, that could also help us. There are Ideas I was already exploring like the Replay feature in QEMU, and while going through this document, I confirm that for a lot of the Ideas we have in the backlog of either openQA or the openQA tests, they have the heart in the right place. Source: https://gitlab.gnome.org/GNOME/openqa-tests/-/wikis/GNOME-End-to-end-Testing-Initiative/openQA-Wishlist In no particular order... * The web API and command server API allows building custom tooling around openQA * The Web UI makes fixing mismatched needles very easy * All logs are available so debugging is usually practical * Ready-built containers make it easier to set up * The video.ogv for the test run is fantastic to have * Upstream maintainers always friendly and responsive * This type of testing just wasn't possible before. ### A rough wishlist for openQA and the testing initiative. In no particular order. Some items realistic and others not. - Collaboration with downstream distro QA teams - Not sure how we do this. But we are duplicating some effort at the moment. #### .1 Documented support for transient workers - GNOME doesn't capacity to maintain a fleet of dedicated openQA workers, instead we use our existing set of Gitlab runners and create transient openQA workers on those. - This is currently not entirely supported in openQA; for example developer mode can't be used, and we have to (ab)use 'worker_class' to ensure jobs are routed to the right worker (see https://gitlab.gnome.org/GNOME/openqa-tests/-/blob/master/utils/setup_worker.sh?ref_type=heads). - Goal: document this way of using openQA upstream and fix any rough edges #### .1 Branching in needles and tests. .1 We don't want the working tree of the needles repo to grow infinitely - We want to branch the testsuite and needles for every GNOME release, i.e the 'main' / 'master' branch tests the latest 'master' version of GNOME OS, while 'gnome-45' branch tests GNOME 45, etc. - openQA calls tests 'gnomeos-master-iso.x86_64', how do we swap 'master' for 'gnome46' etc? - How can we ensure the correct version of the needles are used in the web UI and test? #### .1 Improved local development flows - GNOME is developed by many commandline users. It seems like openQA is designed for "web-first" use, where internet connection is always available and tests run on remote infra. This isn't ideal for integrating into existing module development workflows. - The single-instance container provides one way to run tests locally - running a full instance of openQA + os-autoinst. This works but is heavyweight. You still couldn't really integrate it into a Makefile-style local build. - An attempt at solving this is ssam_openqa tool, which wraps just the os-autoinst container. Apart from pulling the container, it's a lightweight workflow. - .1 Documenting and versioning the command server API would make building this kind of tool easier. - The ideal would be a graphical desktop app, but this requires a big investment. - QAnvas is another tool, a mini needle editor in HTML+JS #### .1 Docs for the support functions in os-autoinst-distri-opensuse - When I need something like serial console support, I copy paste from os-autoinst-distri-opensuse until something works, without any idea what I am really doing. - This stuff is going to be different for each distro, but there must be a way to better share and document this infrastructure. #### .1 A way to update all changed needles. - Sometimes GNOME lands a change which affects appearance of all applications. We want to include app appearance in the app needles, to guard against accidental regressions in the UI. But we also want a way to say "this change was expected, update all the needles with the new appearance". - .1 Better audio testing. When adding screenreader tests we found that an 80% match rate would treat no audio output at all as "success", while 90% would treat a difference in timing as "failed". - .1 Support for testing complex gestures e.g. multitouch - .1 Avoid the one second delay in every assert_and_click and click_lastmatch call - .1 Show mouse cursor so we can test cursor size changes - This becomes more relevant as we start testing GNOME on Mobile. - .1 Better SMBIOS support. We currently manually build and inject an SMBIOS with a hack; SMBIOS is very powerful and perhaps we could improve support in isotovideo for injecting configuration files and kernel args via SMBIOS. #57 - .1 Support for running the web UI in openShift - .1 Support for running openQA tests in each app's CI pipeline - .1 Hardware testing for GNOME - .1 Record and replay the entire test using https://www.qemu.org/docs/master/system/replay.html