Test suite often fails to grabFocus of the Persistent Storage passphrase entry
Example debug log:
03:38:27.139918545: executing Python as Debian-gdm: node3497 = dogtail.tree.root.application('Welcome to Tails!')
03:38:27.157524939: execution complete
03:38:27.157721632: executing Python as Debian-gdm: node3498 = node3497.child(roleName=r'password text')
03:38:27.191422169: execution complete
03:38:27.191594201: try_for: attempt 1 (0.01s elapsed of 10s)...
03:38:27.191657602: executing Python as Debian-gdm: node3498.grabFocus()
03:38:27.208903461: execution complete
03:38:27.209006403: executing Python as Debian-gdm: print(node3498.focused)
03:38:27.224255963: execution complete
03:38:27.224386725: try_for: failed by code block returning failure
03:38:28.225504474: try_for: attempt 2 (1.04s elapsed of 10s)...
03:38:28.225650666: executing Python as Debian-gdm: node3498.grabFocus()
03:38:28.238895178: execution complete
03:38:28.239086791: executing Python as Debian-gdm: print(node3498.focused)
03:38:28.251492280: execution complete
03:38:28.251673153: try_for: failed by code block returning failure
03:38:29.252782158: try_for: attempt 3 (2.07s elapsed of 10s)...
03:38:29.252968461: executing Python as Debian-gdm: node3498.grabFocus()
03:38:29.266011390: execution complete
03:38:29.266124601: executing Python as Debian-gdm: print(node3498.focused)
03:38:29.278371428: execution complete
03:38:29.278422739: try_for: failed by code block returning failure
03:38:30.279525774: try_for: attempt 4 (3.09s elapsed of 10s)...
03:38:30.279664116: executing Python as Debian-gdm: node3498.grabFocus()
03:38:30.292903078: execution complete
03:38:30.293261733: executing Python as Debian-gdm: print(node3498.focused)
03:38:30.305020612: execution complete
03:38:30.305275247: try_for: failed by code block returning failure
03:38:31.306387589: try_for: attempt 5 (4.12s elapsed of 10s)...
03:38:31.306527601: executing Python as Debian-gdm: node3498.grabFocus()
03:38:31.319198804: execution complete
03:38:31.319316676: executing Python as Debian-gdm: print(node3498.focused)
03:38:31.330969164: execution complete
03:38:31.331022864: try_for: failed by code block returning failure
03:38:32.332266955: try_for: attempt 6 (5.15s elapsed of 10s)...
03:38:32.332607080: executing Python as Debian-gdm: node3498.grabFocus()
03:38:32.376457953: execution complete
03:38:32.376659096: executing Python as Debian-gdm: print(node3498.focused)
03:38:32.392938521: execution complete
03:38:32.393015022: try_for: failed by code block returning failure
03:38:33.393937727: try_for: attempt 7 (6.21s elapsed of 10s)...
03:38:33.394079079: executing Python as Debian-gdm: node3498.grabFocus()
03:38:33.407214078: execution complete
03:38:33.407270059: executing Python as Debian-gdm: print(node3498.focused)
03:38:33.418409340: execution complete
03:38:33.418455191: try_for: failed by code block returning failure
03:38:34.419545516: try_for: attempt 8 (7.23s elapsed of 10s)...
03:38:34.419687608: executing Python as Debian-gdm: node3498.grabFocus()
03:38:34.456693072: execution complete
03:38:34.456815084: executing Python as Debian-gdm: print(node3498.focused)
03:38:34.468828097: execution complete
03:38:34.468914148: try_for: failed by code block returning failure
03:38:35.470015300: try_for: attempt 9 (8.28s elapsed of 10s)...
03:38:35.470155792: executing Python as Debian-gdm: node3498.grabFocus()
03:38:35.482249406: execution complete
03:38:35.482329567: executing Python as Debian-gdm: print(node3498.focused)
03:38:35.495897323: execution complete
03:38:35.496004724: try_for: failed by code block returning failure
03:38:36.497115235: try_for: attempt 10 (9.31s elapsed of 10s)...
03:38:36.497263047: executing Python as Debian-gdm: node3498.grabFocus()
03:38:36.509541875: execution complete
03:38:36.509655437: executing Python as Debian-gdm: print(node3498.focused)
03:38:36.521490727: execution complete
03:38:36.521560898: try_for: failed by code block returning failure
And I enable persistence (failed) # features/step_definitions/usb.rb:664
try_for() timeout expired (Timeout::Error)
./features/support/helpers/misc_helpers.rb:145:in `rescue in try_for'
./features/support/helpers/misc_helpers.rb:51:in `try_for'
./features/support/helpers/dogtail.rb:345:in `grabFocus'
./features/step_definitions/usb.rb:654:in `/^I try to enable persistence( with the changed passphrase)?$/'
./features/step_definitions/usb.rb:665:in `/^I enable persistence( with the changed passphrase)?$/'
features/persistent_tor_bridges.feature:19:in `And I enable persistence'
execution expired (#<Class:0x00007f48aa4c5de8>)
I've seen this happen in various scenarios. Nothing strange in the video, but no trace of the keyboard input cursor landing in the expected widget (not sure this would be visible with grabFocus
though).
Also, I suppose that's a totally unrelated lead, but in the instance I'm looking at:
- I see a bunch of
spice-vdagent
errors in the Journal:udscs_connect: Could not connect: No such file or directory
. - I see
Reached target sockets.target.
without seeingListening on spice-vdagentd.socket.
beforehand. And indeed, whilesockets.target
hasAfter=spice-vdagentd.socket
as expected, it does not haveWants=spice-vdagentd.socket
, so the only wayspice-vdagentd.socket
gets started is via/lib/udev/rules.d/70-spice-vdagentd.rules
. No idea why in some Journal's I see it gets started, but not in the one that exposes this bug. - As a result, the kernel never registers this device:
input: spice vdagent tablet
, while in other logs I see it. - All this makes the startup of the GNOME session fail to complete successfully:
gnome-session-binary[4092]: WARNING: App 'spice-vdagent.desktop' exited with code 1
. Might it be that something we need only happens once this has succeeded, perhaps?
I did not check the correlation between these 2 issues any further yet.