Hello everyone,
As part of my effort to improve accessibility test infrastructure and
coverage [1], I'll have to work on covering the platform layer.
The chosen approach, after discussing with Florian Effenberger (back in
late 2021 I think), is communicating with a LO process through AT-SPI2
on Linux. This is because it's the true outer layer, and that GTK4 does
not use ATK anymore, so tests relying on simply checking the ATK
implementations in the GTK3 VCL would not be future-proof, and don't
seem sensible to invest on nowadays. Using AT-SPI2 directly would also
allow testing the Qt VCLs.
This means that to perform tests I'll have to run LO in the CI
environment in a way where it can use the gtk3/4 VCL, and have a working
AT-SPI2 bus so they can communicate. The tests themselves would then
simply use the exposed AT-SPI2 interfaces and control they behave as
expected.
We at Hypra already have done similar setups (even with LO itself) using
xvfb-run (or xvnc, but that's not very useful in CI) and dbus-launch,
and then interacting through AT-SPI2 using Python and the excellent
dogtail module [2].
My question here is: what would be acceptable in CIs, and how would it
work to add such CI dependencies? I'd rather not rebuild xvfb & al for
each CI run, as it seems heavy and not very sensible: it's a fairly
standard piece of software and I wouldn't need any specific version of it.
A follow-up question would be whether you have any pointers in how to
integrate this kind of things to the build? I didn't start
investigating because I'd like to make sure I'm not pursuing the wrong
path, but anything that could save me reading a hundred gbuild files
would be much appreciated :)
Thanks in advance,
Colomban
[1]
https://blog.documentfoundation.org/blog/2021/10/13/tender-to-implement-c-accessibility-tests-202110-01/
[2] https://gitlab.com/dogtail/dogtail