2016-09-20 22:32:44 +00:00
|
|
|
use base "installedtest";
|
|
|
|
use strict;
|
|
|
|
use testapi;
|
2017-01-18 07:15:44 +00:00
|
|
|
use utils;
|
2016-09-20 22:32:44 +00:00
|
|
|
use packagetest;
|
|
|
|
|
|
|
|
sub run {
|
|
|
|
my $self = shift;
|
|
|
|
my $desktop = get_var('DESKTOP');
|
|
|
|
# use a tty console for repo config and package prep
|
|
|
|
$self->root_console(tty=>3);
|
|
|
|
assert_script_run 'dnf config-manager --set-disabled updates-testing';
|
2019-03-07 03:51:09 +00:00
|
|
|
# disable the f30-build repo for this test as it makes GNOME
|
|
|
|
# Software choke - https://gitlab.gnome.org/GNOME/gnome-software/issues/603
|
|
|
|
if (get_var("VERSION") eq "30" && get_var("ADVISORY_OR_TASK")) {
|
|
|
|
assert_script_run 'dnf config-manager --set-disabled f30-build';
|
|
|
|
}
|
2016-09-20 22:32:44 +00:00
|
|
|
prepare_test_packages;
|
|
|
|
# get back to the desktop
|
2016-09-24 19:42:39 +00:00
|
|
|
desktop_vt;
|
2016-09-20 22:32:44 +00:00
|
|
|
# run the updater
|
|
|
|
if ($desktop eq 'kde') {
|
|
|
|
# KDE team tells me the 'preferred' update method is the
|
|
|
|
# systray applet
|
2016-09-23 23:03:13 +00:00
|
|
|
assert_and_click 'desktop_expand_systray';
|
2016-09-20 22:32:44 +00:00
|
|
|
}
|
|
|
|
else {
|
2019-02-07 17:06:38 +00:00
|
|
|
# work around https://gitlab.gnome.org/GNOME/gnome-software/issues/582
|
|
|
|
# if it happens
|
2019-03-26 19:30:47 +00:00
|
|
|
if (check_screen "auth_required", 10) {
|
2019-02-07 17:06:38 +00:00
|
|
|
record_soft_failure "spurious 'auth required' - https://gitlab.gnome.org/GNOME/gnome-software/issues/582";
|
|
|
|
# bit sloppy but correct for both...
|
|
|
|
type_safely "weakpassword\n";
|
|
|
|
}
|
2016-09-20 22:32:44 +00:00
|
|
|
# this launches GNOME Software on GNOME, dunno for any other
|
|
|
|
# desktop yet
|
2018-07-30 18:23:59 +00:00
|
|
|
sleep 3;
|
2017-01-18 07:15:44 +00:00
|
|
|
menu_launch_type('update');
|
2016-09-20 22:32:44 +00:00
|
|
|
}
|
|
|
|
# GNOME Software has a welcome screen, 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_welcome', 10) {
|
|
|
|
send_key 'ret';
|
|
|
|
}
|
|
|
|
# go to the 'update' interface. For GNOME, we may be waiting
|
|
|
|
# some time at a 'Software catalog is being loaded' screen.
|
|
|
|
if ($desktop eq 'gnome') {
|
|
|
|
for my $n (1..5) {
|
|
|
|
last if (check_screen 'desktop_package_tool_update', 120);
|
|
|
|
mouse_set 10, 10;
|
|
|
|
mouse_hide;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
assert_and_click 'desktop_package_tool_update';
|
Fix a potential race in desktop update test
https://openqa.stg.fedoraproject.org/tests/424393 is a failure
where the 'Download' [updates] button was already visible when
we went to the tab. We already checked whether an 'apply' button
is visible and skipped the 'refresh' click if so, but because
the 'download' button is a new thing, we weren't skipping the
'refresh' click if 'download' was already visible.
So in this case, even though we could already see 'download', we
went ahead and clicked 'refresh'...then *immediately* started
looking for 'download'. It seems that Software did not refresh
and remove the 'Download' button *immediately* when we pressed
'refresh' - it left the 'Download' button visible briefly, and
*in this brief window*, we clicked it. *Then* Software kinda
'noticed' we'd clicked 'Update', and it seems it just sort of
throws away our click on 'Download' at that point and does the
refresh.
So at that point, the test thinks it's clicked 'Download' and
expects to see 'Apply', but actually the 'Download' click got
more or less thrown away, so the test fails, sitting at the
'Download' button.
To solve this, let's just extend the existing check to skip the
'refresh' click if 'download' *or* 'apply' are already visible.
There is a sort of possibility here that we could wind up
downloading and installing some updates that existed and were
noticed *before* we did our python3-kickstart trick, but not
install the python3-kickstart update, and cause the test to fail
because of that, but that doesn't seem to have happened before
when we were seeing the 'update' button, so I think I'm not
going to borrow trouble. If it happens, we'll deal with it I
guess.
The comment talks only about KDE, but clearly it can be the case
that an automatic check makes the button visible on GNOME too,
so let's rewrite the comment too.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
2018-12-17 20:10:06 +00:00
|
|
|
# depending on automatic update checks, 'apply' or 'download' may
|
|
|
|
# already be visible at this point, we may not need to refresh
|
|
|
|
unless (check_screen ['desktop_package_tool_update_apply', 'desktop_package_tool_update_download'], 5) {
|
2018-03-29 02:42:31 +00:00
|
|
|
# refresh updates
|
|
|
|
assert_and_click 'desktop_package_tool_update_refresh', '', 120;
|
|
|
|
}
|
2018-10-11 23:18:04 +00:00
|
|
|
# wait for refresh, then apply updates, moving the mouse every two
|
2018-12-17 20:02:57 +00:00
|
|
|
# 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'.
|
|
|
|
my $tags = ['desktop_package_tool_update_download', 'desktop_package_tool_update_apply'];
|
2018-10-11 23:05:38 +00:00
|
|
|
for (my $n = 1; $n < 6; $n++) {
|
2018-10-31 19:45:11 +00:00
|
|
|
if (check_screen $tags, 120) {
|
2018-10-11 23:18:04 +00:00
|
|
|
# if we see 'apply', we're done here, quit out of the loop
|
2018-10-31 18:43:00 +00:00
|
|
|
last if (match_has_tag 'desktop_package_tool_update_apply');
|
|
|
|
# if we see 'download', we're in the GNOME Software 3.30.5+
|
2018-10-31 19:45:11 +00:00
|
|
|
# two-step process - let's hit it, and continue waiting for
|
2018-12-17 22:36:10 +00:00
|
|
|
# for apply (only)
|
2018-10-31 18:43:00 +00:00
|
|
|
if (match_has_tag 'desktop_package_tool_update_download') {
|
|
|
|
wait_screen_change { assert_and_click 'desktop_package_tool_update_download'; };
|
2018-10-31 19:45:11 +00:00
|
|
|
$n -= 1 if ($n > 1);
|
|
|
|
$tags = ['desktop_package_tool_update_apply'];
|
2018-10-31 18:43:00 +00:00
|
|
|
next;
|
|
|
|
}
|
2018-10-11 23:05:38 +00:00
|
|
|
}
|
2018-10-11 23:18:04 +00:00
|
|
|
# move the mouse to stop the screen blanking on idle
|
2016-09-20 22:32:44 +00:00
|
|
|
mouse_set 10, 10;
|
|
|
|
mouse_hide;
|
|
|
|
}
|
2016-09-24 00:21:54 +00:00
|
|
|
# KDE annoyingly pops the notification up right over the install
|
2017-03-02 23:33:23 +00:00
|
|
|
# button, which doesn't help...wait for it to go away. Let's also
|
|
|
|
# wait on GNOME, as we've had tests fail at this point for no
|
|
|
|
# obvious reason, a wait may help.
|
|
|
|
wait_still_screen 5;
|
2016-09-20 22:32:44 +00:00
|
|
|
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 (check_screen 'gnome_reboot_confirm', 15) {
|
2018-12-17 20:19:44 +00:00
|
|
|
send_key 'tab';
|
2016-09-20 22:32:44 +00:00
|
|
|
send_key 'ret';
|
|
|
|
}
|
consolidate login waits, use postinstall not entrypoint for base
Summary:
I started out wanting to fix an issue I noticed today where
graphical upgrade tests were failing because they didn't wait
for the graphical login screen properly; the test was sitting
at the 'full Fedora logo' state of plymouth for a long time,
so the current boot_to_login_screen's wait_still_screen was
triggered by it and the function wound up failing on the
assert_screen, because it was still some time before the real
login screen appeared.
So I tweaked the boot_to_login_screen implementation to work
slightly differently (look for a login screen match, *then* -
if we're dealing with a graphical login - wait_still_screen
to defeat the 'old GPU buffer showing login screen' problem
and assert the login screen again). But while working on it,
I figured we really should consolidate all the various places
that handle the bootloader -> login, we were doing it quite
differently in all sorts of different places. And as part of
that, I converted the base tests to use POSTINSTALL (and thus
go through the shared _wait_login tests) instead of handling
boot themselves. As part of *that*, I tweaked main.pm to not
require all POSTINSTALL tests have the _postinstall suffix on
their names, as it really doesn't make sense, and renamed the
tests.
Test Plan: Run all tests, see if they work.
Reviewers: jskladan, garretraziel
Reviewed By: garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D1015
2016-09-27 18:48:15 +00:00
|
|
|
boot_to_login_screen;
|
2016-09-20 22:32:44 +00:00
|
|
|
}
|
|
|
|
else {
|
2018-12-17 20:24:09 +00:00
|
|
|
assert_screen 'desktop_package_tool_update_done', 180;
|
2016-09-20 22:32:44 +00:00
|
|
|
}
|
|
|
|
# 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:
|