Details
-
Epic
-
Resolution: Unresolved
-
P2: Important
-
None
-
dev
-
None
-
CI screen recording
-
Description
Business rationale
UI test failures / flakiness can be related to CI infrastructure issues, which interfere with autotests of UI components. Such issues can't be easily reproduced locally, especially when related to virtual infrastructure.
Research can be highly time consuming, especially in case of flakiness where tests need to be re-run multiple times to observe a specific interference on the screen.
Examples
- System popups (license, update, DBus messages), claiming focus and causing code paths like qWaitForWindowActive(...) to fail.
- OS bugs, causing glitches or window manager crashes
- VM-specific issues, like touch emulation, hot keys
Technical considerations
Hackathon project
A hackathon project has implemented screenshot / screen recording in Testlib. While it demonstrates the use case, it comes with several disadvantages:
- Feature is test case specific. Every test case requiring screenshots / screen recording needs to be patched by injecting a macro. => it can't be enabled / disabled on an integration level.
- Perspective: The test records itself. That will cover failures, but not crashes. Recording of other items on the desktop is not possible e.g. on macOS.
- Performance: It slows down testing by >30%
- Dependency: Depends on ffmpeg
Architecture discussion / research
- Should it be done on VM-Level?
- Does openNebula provide a solution?
- Shall we record a VNC stream?
- Timeline needs to be syncable with COIN logs
Storage
- Where to store video artifacts?
- Which format, how long?
User interface
- Should it be a checkbox in the COIN scheduler?
- Should it be available as an option in the Gerrit Pre-check button?
- Implement a browsing tool for COIN logs / video?