mirror of
https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git
synced 2024-11-24 14:53:09 +00:00
d515ad1195
This reverts commit b3e5dd41cb
.
Some testing on lab seems to indicate it's not needed any more,
at least several runs with the workarounds reverted have passed.
Will put them back if we hit failures.
145 lines
5.3 KiB
Perl
145 lines
5.3 KiB
Perl
use base "installedtest";
|
|
use strict;
|
|
use testapi;
|
|
use utils;
|
|
use packagetest;
|
|
|
|
sub run {
|
|
my $self = shift;
|
|
my $desktop = get_var('DESKTOP');
|
|
my $relnum = get_release_number;
|
|
# use a tty console for repo config and package prep
|
|
$self->root_console(tty => 3);
|
|
disable_updates_repos;
|
|
# for update tests, disable koji-rawhide at this point, otherwise
|
|
# gnome-software will complain about things being unsigned even
|
|
# though the repo has gpgcheck=0
|
|
if (get_var("ADVISORY_OR_TASK") && get_var("VERSION") eq get_var("RAWREL")) {
|
|
assert_script_run 'sed -i -e "s,enabled=1,enabled=0,g" /etc/yum.repos.d/koji-rawhide.repo';
|
|
}
|
|
prepare_test_packages;
|
|
# get back to the desktop
|
|
desktop_vt;
|
|
|
|
# run the updater
|
|
if ($desktop eq 'kde') {
|
|
# try and avoid double-typing issues
|
|
kde_doublek_workaround;
|
|
menu_launch_type('discover');
|
|
# Wait for it to run and maximize it to make sure we see the
|
|
# Updates entry
|
|
assert_screen('discover_runs');
|
|
wait_still_screen 2;
|
|
wait_screen_change { send_key "super-pgup"; };
|
|
wait_still_screen 2;
|
|
}
|
|
else {
|
|
# this launches GNOME Software on GNOME, dunno for any other
|
|
# desktop yet
|
|
sleep 3;
|
|
menu_launch_type('update');
|
|
}
|
|
# GNOME Software 44+ has a 3rd party source pop-up, get rid of it
|
|
# if it shows up (but don't fail if it doesn't, we're not testing that)
|
|
if ($desktop eq 'gnome' && check_screen 'gnome_software_ignore', 10) {
|
|
wait_still_screen 3;
|
|
# match again as the dialog may have moved a bit
|
|
assert_and_click 'gnome_software_ignore';
|
|
}
|
|
# go to the 'update' interface. We may be waiting some time at a
|
|
# 'Software catalog is being loaded' screen.
|
|
for my $n (1 .. 5) {
|
|
last if (check_screen 'desktop_package_tool_update', 120);
|
|
mouse_set 10, 10;
|
|
mouse_hide;
|
|
}
|
|
# wait out a possible animation
|
|
wait_still_screen 5;
|
|
assert_and_click 'desktop_package_tool_update';
|
|
# wait for things to settle if e.g. GNOME is refreshing
|
|
wait_still_screen 5, 90;
|
|
# we always want to refresh to make sure we get the prepared update
|
|
assert_and_click 'desktop_package_tool_update_refresh', timeout => 120;
|
|
# for GNOME, the apply/download buttons remain visible for a long
|
|
# time, annoyingly. So let's actually watch the 'refreshing' state
|
|
# till it goes away
|
|
if ($desktop eq 'gnome') {
|
|
assert_screen 'desktop_package_tool_update_refreshing';
|
|
# now wait for it to go away
|
|
for my $n (1 .. 30) {
|
|
last unless (check_screen 'desktop_package_tool_update_refreshing', 6);
|
|
# if we matched, we likely matched *immediately*, so sleep
|
|
# the other five seconds
|
|
sleep 5;
|
|
}
|
|
sleep 3;
|
|
}
|
|
else {
|
|
# just wait a bit to make sure the UI clears to a 'refreshing'
|
|
# state
|
|
sleep 5;
|
|
}
|
|
|
|
my $tags = ['desktop_package_tool_update_download', 'desktop_package_tool_update_apply']; # testtag
|
|
|
|
# Apply updates, moving the mouse every two minutes to avoid the
|
|
# idle screen blank kicking in. Depending on whether this is KDE
|
|
# or GNOME and what Fedora release, we may see 'apply' right away,
|
|
# or 'download' then 'apply'
|
|
for (my $n = 1; $n < 6; $n++) {
|
|
if (check_screen $tags, 120) {
|
|
# if we see 'apply', we're done here, quit out of the loop
|
|
last if (match_has_tag 'desktop_package_tool_update_apply');
|
|
# if we see 'download', let's hit it, and continue waiting
|
|
# for apply (only)
|
|
wait_screen_change { click_lastmatch; };
|
|
$n -= 1 if ($n > 1);
|
|
if (get_var("TAG") || get_var("COPR")) {
|
|
# we might get a 'download unsigned software' prompt
|
|
# https://gitlab.gnome.org/GNOME/gnome-software/-/issues/2246
|
|
click_lastmatch if (check_screen "desktop_package_tool_update_download_unsigned", 30);
|
|
}
|
|
$tags = ['desktop_package_tool_update_apply'];
|
|
next;
|
|
}
|
|
# move the mouse to stop the screen blanking on idle
|
|
mouse_set 10, 10;
|
|
mouse_hide;
|
|
}
|
|
# Magic wait, clicking this right after the last click sometimes
|
|
# goes wrong
|
|
wait_still_screen 5;
|
|
assert_and_click 'desktop_package_tool_update_apply';
|
|
# on GNOME, wait for reboots.
|
|
if ($desktop eq 'gnome') {
|
|
# handle reboot confirm screen which pops up when user is
|
|
# logged in (but don't fail if it doesn't as we're not testing
|
|
# that)
|
|
if (get_var("TAG") || get_var("COPR")) {
|
|
# we might get a 'download unsigned software' prompt
|
|
# https://gitlab.gnome.org/GNOME/gnome-software/-/issues/2246
|
|
click_lastmatch if (check_screen "desktop_package_tool_update_download_unsigned", 5);
|
|
}
|
|
if (check_screen 'gnome_reboot_confirm', 15) {
|
|
send_key 'tab';
|
|
send_key 'ret';
|
|
}
|
|
boot_to_login_screen;
|
|
}
|
|
elsif ($desktop eq 'kde') {
|
|
assert_and_click 'kde_offline_update_reboot';
|
|
boot_to_login_screen;
|
|
}
|
|
# back to console to verify updates
|
|
$self->root_console(tty => 3);
|
|
verify_updated_packages;
|
|
}
|
|
|
|
sub test_flags {
|
|
return {fatal => 1};
|
|
}
|
|
|
|
1;
|
|
|
|
# vim: set sw=4 et:
|