mirror of
https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git
synced 2024-11-11 17:34:23 +00:00
171230ab1a
os-autoinst is set so that if you once manually set the cursor somewhere, all subsequent calls to `assert_and_click` will return the cursor to the last manually-set position (if you never set the cursor anywhere manually, it uses the `mouse_hide` location). The mouse_hide location is no good for modern desktops as they use hot corners in various ways, so for the desktop tests, early in login, we set the mouse to 300/800, which we hope is a kind of neutral location that doesn't interfere with matches of the desktop_background needles (which I usually put towards the right of the screen). Unfortunately, KDE can show fairly big previews of active windows down there, and hovering over one causes that window to be displayed and all others to be hidden. Which rather breaks the desktop browser test, when we have the Welcome Center popping up on boot. We already moved the mouse set point from 300/200 a few years back because of a *different* awkward interaction with the browser test, so we can't go back there. Let's try 1023/384 instead - that's all the way on the right hand side of the screen, but half way down, not in either corner. I really hope this doesn't cause problems for any tests cos I don't know where else to stick the damn thing if this doesn't work. Signed-off-by: Adam Williamson <awilliam@redhat.com>
116 lines
4.3 KiB
Perl
116 lines
4.3 KiB
Perl
use base "installedtest";
|
|
use strict;
|
|
use testapi;
|
|
use utils;
|
|
|
|
sub _enter_password {
|
|
my $password = shift;
|
|
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";
|
|
}
|
|
|
|
sub run {
|
|
my $self = shift;
|
|
my $password = get_var("USER_PASSWORD", "weakpassword");
|
|
my $version = get_var("VERSION");
|
|
my $desktop = get_var("DESKTOP");
|
|
# 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 bootloader, if requested
|
|
if (get_var("GRUB_POSTINSTALL")) {
|
|
do_bootloader(postinstall => 1, params => get_var("GRUB_POSTINSTALL"), timeout => $wait_time);
|
|
$wait_time = 300;
|
|
}
|
|
|
|
# Handle pre-login initial setup if we're doing INSTALL_NO_USER
|
|
if (get_var("INSTALL_NO_USER") && !get_var("_SETUP_DONE")) {
|
|
if ($desktop eq 'gnome') {
|
|
gnome_initial_setup(prelogin => 1, timeout => $wait_time);
|
|
}
|
|
else {
|
|
anaconda_create_user(timeout => $wait_time);
|
|
# wait out animation
|
|
wait_still_screen 3;
|
|
assert_and_click "initialsetup_finish_configuration";
|
|
set_var("_SETUP_DONE", 1);
|
|
}
|
|
$wait_time = 300;
|
|
}
|
|
# Wait for the login screen, unless we're doing a GNOME no user
|
|
# install, which transitions straight from g-i-s to logged-in
|
|
# desktop
|
|
unless ($desktop eq 'gnome' && 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 ($desktop eq 'gnome') {
|
|
# we have to hit enter to get the password dialog, and it
|
|
# doesn't always work for some reason so just try it three
|
|
# times
|
|
send_key_until_needlematch("graphical_login_input", "ret", 3, 5);
|
|
}
|
|
assert_screen "graphical_login_input";
|
|
# seems like we often double-type on aarch64 if we start right
|
|
# away
|
|
wait_still_screen(stilltime => 5, similarity_level => 38);
|
|
_enter_password($password);
|
|
}
|
|
|
|
# Handle the welcome tour, unless _WELCOME_DONE is set (indicating
|
|
# it's been done previously within this test run, e.g. the second
|
|
# time this module runs on the update flow, or earlier in the boot
|
|
# process on the INSTALL_NO_USER flow), or START_AFTER_TEST is set
|
|
# to the same value as DEPLOY_UPLOAD_TEST (in which case it will
|
|
# have been done by the previous test run).
|
|
# the point of the default values here is to make the check fail if
|
|
# neither var is set, without needing an extra condition
|
|
my $sat = get_var("START_AFTER_TEST", "1");
|
|
my $dut = get_var("DEPLOY_UPLOAD_TEST", "2");
|
|
handle_welcome_screen if ($sat ne $dut && !get_var("_WELCOME_DONE"));
|
|
if (get_var("IMAGE_DEPLOY")) {
|
|
# if this was an image deployment, we also need to create
|
|
# root user now, for subsequent tests to work
|
|
send_key "ctrl-alt-f3";
|
|
console_login(user => get_var("USER_LOGIN", "test"), password => get_var("USER_PASSWORD", "weakpassword"));
|
|
type_string "sudo su\n";
|
|
type_string "$password\n";
|
|
my $root_password = get_var("ROOT_PASSWORD") || "weakpassword";
|
|
assert_script_run "echo 'root:$root_password' | chpasswd";
|
|
desktop_vt;
|
|
}
|
|
|
|
# Move the mouse somewhere it won't highlight the match areas and
|
|
# hopefully won't negatively interact with anything else later
|
|
mouse_set(1023, 384);
|
|
# KDE can take ages to start up
|
|
check_desktop(timeout => 120);
|
|
}
|
|
|
|
sub test_flags {
|
|
return {fatal => 1};
|
|
}
|
|
|
|
1;
|
|
|
|
# vim: set sw=4 et:
|