os-autoinst-distri-rocky/tests/_graphical_wait_login.pm
Adam Williamson 469a1395d0 Revise desktop background checks
Split this out of install_default, because it really is not a
part of that test and we do not want that test to fail because
the desktop background is wrong. Make it its own test module
and test suite instead. Don't do it on Rawhide, because we
really can't assert anything worthwhile about Rawhide at the
moment at least (this means the test runs but is a no-op and
will always pass on Rawhide, unfortunately). Move the needles
to a more appropriate location (this has nothing to do with
anaconda) and use 'background' not 'wallpaper' naming (that's
the name we use elsewhere in the project, e.g. package names).
Also, run the test on updates, and add an F29 needle for this
purpose.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2019-08-14 14:30:25 -07:00

96 lines
3.4 KiB
Perl

use base "installedtest";
use strict;
use testapi;
use utils;
sub run {
my $self = shift;
my $version = get_var("VERSION");
# If KICKSTART is set, then the wait_time needs to consider the
# install time. if UPGRADE, we have to wait for the entire upgrade
# unless ENCRYPT_PASSWORD is set (in which case the postinstall
# test does the waiting)
my $wait_time = 300;
$wait_time = 1800 if (get_var("KICKSTART"));
$wait_time = 6000 if (get_var("UPGRADE") && !get_var("ENCRYPT_PASSWORD"));
# Handle pre-login initial setup if we're doing INSTALL_NO_USER
if (get_var("INSTALL_NO_USER") && !get_var("_setup_done")) {
if (get_var("DESKTOP") eq 'gnome') {
gnome_initial_setup(prelogin=>1, timeout=>$wait_time);
}
else {
anaconda_create_user(timeout=>$wait_time);
assert_and_click "initialsetup_finish_configuration";
set_var("_setup_done", 1);
}
$wait_time = 300;
}
# Wait for the login screen, unless we're doing an > 28 GNOME no
# user install, which transitions straight from g-i-s to logged-in
# desktop
unless (get_var("DESKTOP") eq 'gnome' && ($version > 28 || $version eq "Rawhide") && get_var("INSTALL_NO_USER")) {
boot_to_login_screen(timeout => $wait_time);
# if USER_LOGIN is set to string 'false', we're done here
return if (get_var("USER_LOGIN") eq "false");
# GDM 3.24.1 dumps a cursor in the middle of the screen here...
mouse_hide;
if (get_var("DESKTOP") eq 'gnome') {
# we have to hit enter to get the password dialog
send_key "ret";
}
assert_screen "graphical_login_input";
my $password = get_var("USER_PASSWORD", "weakpassword");
if (get_var("SWITCHED_LAYOUT")) {
# see _do_install_and_reboot; when layout is switched
# user password is doubled to contain both US and native
# chars
desktop_switch_layout 'ascii';
type_very_safely $password;
desktop_switch_layout 'native';
type_very_safely $password;
}
else {
type_very_safely $password;
}
send_key "ret";
}
# Handle initial-setup, for GNOME, unless START_AFTER_TEST
# is set in which case it will have been done already. Always
# do it if ADVISORY_OR_TASK is set, as for the update testing flow,
# START_AFTER_TEST is set but a no-op and this hasn't happened
if (get_var("DESKTOP") eq 'gnome' && (get_var("ADVISORY_OR_TASK") || !get_var("START_AFTER_TEST"))) {
# as this test gets loaded twice on the ADVISORY_OR_TASK flow, and
# we might be on the INSTALL_NO_USER flow, check whether
# this happened already
unless (get_var("_setup_done")) {
gnome_initial_setup();
}
}
if (get_var("DESKTOP") eq 'gnome' && get_var("INSTALL_NO_USER")) {
# wait for the stupid 'help' screen to show and kill it
if (check_screen "getting_started", 30) {
send_key "alt-f4";
wait_still_screen 5;
}
else {
record_soft_failure "'getting started' missing (probably BGO#790811)";
}
}
# Move the mouse somewhere it won't highlight the match areas
mouse_set(300, 800);
# KDE can take ages to start up
check_desktop_clean(tries=>40);
}
sub test_flags {
return { fatal => 1, milestone => 1 };
}
1;
# vim: set sw=4 et: