mirror of
https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git
synced 2024-11-25 23:33:07 +00:00
b67f604894
Summary: This adds a couple of new exporter modules, renames main_common to utils (this is a better name: openSUSE's main_common is functions used in main.pm, utils is what they call their module full of miscellaneous commonly-used functions), and moves a bunch of utility functions that were previously needlessly implemented as instance methods in base classes into the exporter modules. That means we can get rid of all the annoying $self-> syntax for calling them. We get rid of `fedorabase` entirely, as it's no longer useful for anything. Other base classes keep the 'standard' methods (like `post_fail_hook`) and methods which actually need to be methods (like `root_console`, whose behaviour is different in anacondatest and installedtest). Test Plan: Do a full test suite run and check everything lines up. There should be no functional differences from before at all, this is just a re-org. Reviewers: jskladan, garretraziel_but_actually_jsedlak_who_uses_stupid_nicknames Reviewed By: garretraziel_but_actually_jsedlak_who_uses_stupid_nicknames Subscribers: tflink Differential Revision: https://phab.qa.fedoraproject.org/D1080
139 lines
5.1 KiB
Perl
139 lines
5.1 KiB
Perl
use base "anacondatest";
|
|
use strict;
|
|
use testapi;
|
|
use utils;
|
|
|
|
sub type_user_password {
|
|
my $self = shift;
|
|
my $user_password = get_var("USER_PASSWORD") || "weakpassword";
|
|
if (get_var("SWITCHED_LAYOUT")) {
|
|
# we double the password, the second time using the native
|
|
# layout, so the password has both ASCII and native characters
|
|
desktop_switch_layout "ascii", "anaconda";
|
|
type_very_safely $user_password;
|
|
desktop_switch_layout "native", "anaconda";
|
|
type_very_safely $user_password;
|
|
}
|
|
else {
|
|
type_very_safely $user_password;
|
|
}
|
|
}
|
|
|
|
sub run {
|
|
my $self = shift;
|
|
# Anaconda hub
|
|
assert_screen "anaconda_main_hub", 300; #
|
|
|
|
# Begin installation
|
|
# Sometimes, the 'slide in from the top' animation messes with
|
|
# this - by the time we click the button isn't where it was any
|
|
# more. So wait a sec just in case.
|
|
sleep 1;
|
|
assert_and_click "anaconda_main_hub_begin_installation";
|
|
|
|
# Set root password
|
|
my $root_password = get_var("ROOT_PASSWORD") || "weakpassword";
|
|
assert_and_click "anaconda_install_root_password";
|
|
assert_screen "anaconda_install_root_password_screen";
|
|
# wait out animation
|
|
wait_still_screen 2;
|
|
desktop_switch_layout("ascii", "anaconda") if (get_var("SWITCHED_LAYOUT"));
|
|
if (get_var("IMAGETYPE") eq 'dvd-ostree') {
|
|
# we can't type SUPER safely for ostree installer tests, as
|
|
# the install completes quite fast and if we type too slow
|
|
# the USER CREATION spoke may be blocked
|
|
type_safely $root_password;
|
|
wait_screen_change { send_key "tab"; };
|
|
type_safely $root_password;
|
|
}
|
|
else {
|
|
# these screens seems insanely subject to typing errors, so
|
|
# type super safely. This doesn't really slow the test down
|
|
# as we still get done before the install process is complete.
|
|
type_very_safely $root_password;
|
|
wait_screen_change { send_key "tab"; };
|
|
type_very_safely $root_password;
|
|
}
|
|
assert_and_click "anaconda_spoke_done";
|
|
|
|
# Set user details
|
|
# wait out animation
|
|
sleep 3;
|
|
my $user_login = get_var("USER_LOGIN") || "test";
|
|
assert_and_click "anaconda_install_user_creation";
|
|
assert_screen "anaconda_install_user_creation_screen";
|
|
# wait out animation
|
|
wait_still_screen 2;
|
|
type_very_safely $user_login;
|
|
type_very_safely "\t\t\t\t";
|
|
$self->type_user_password();
|
|
wait_screen_change { send_key "tab"; };
|
|
wait_still_screen 2;
|
|
$self->type_user_password();
|
|
# even with all our slow typing this still *sometimes* seems to
|
|
# miss a character, so let's try again if we have a warning bar.
|
|
# But not if we're installing with a switched layout, as those
|
|
# will *always* result in a warning bar at this point (see below)
|
|
if (!get_var("SWITCHED_LAYOUT") && check_screen "anaconda_warning_bar", 3) {
|
|
wait_screen_change { send_key "shift-tab"; };
|
|
wait_still_screen 2;
|
|
$self->type_user_password();
|
|
wait_screen_change { send_key "tab"; };
|
|
wait_still_screen 2;
|
|
$self->type_user_password();
|
|
}
|
|
assert_and_click "anaconda_install_user_creation_make_admin";
|
|
assert_and_click "anaconda_spoke_done";
|
|
# since 20170105, we will get a warning here when the password
|
|
# contains non-ASCII characters. Assume only switched layouts
|
|
# produce non-ASCII characters, though this isn't strictly true
|
|
if (get_var('SWITCHED_LAYOUT') && check_screen "anaconda_warning_bar", 3) {
|
|
wait_still_screen 1;
|
|
assert_and_click "anaconda_spoke_done";
|
|
}
|
|
|
|
# Check username (and hence keyboard layout) if non-English
|
|
if (get_var('LANGUAGE')) {
|
|
assert_screen "anaconda_install_user_created";
|
|
}
|
|
|
|
# With the slow typing - especially with SWITCHED_LAYOUT - we
|
|
# may not complete user creation until anaconda reaches post-install,
|
|
# which causes a 'Finish configuration' button
|
|
if (check_screen "anaconda_install_finish_configuration", 5) {
|
|
assert_and_click "anaconda_install_finish_configuration";
|
|
}
|
|
|
|
# Wait for install to end. Give Rawhide a bit longer, in case
|
|
# we're on a debug kernel, debug kernel installs are really slow.
|
|
my $timeout = 1800;
|
|
if (lc(get_var('VERSION')) eq "rawhide") {
|
|
$timeout = 2400;
|
|
}
|
|
assert_screen "anaconda_install_done", $timeout;
|
|
# wait for transition to complete so we don't click in the sidebar
|
|
wait_still_screen 3;
|
|
# for the memory check test, we *don't* want to leave
|
|
unless (get_var("MEMCHECK")) {
|
|
assert_and_click "anaconda_install_done";
|
|
if (get_var('LIVE')) {
|
|
# reboot from a console, it's more reliable than the desktop
|
|
# runners
|
|
$self->root_console;
|
|
type_string "reboot\n";
|
|
}
|
|
}
|
|
}
|
|
|
|
sub test_flags {
|
|
# without anything - rollback to 'lastgood' snapshot if failed
|
|
# 'fatal' - whole test suite is in danger if this fails
|
|
# 'milestone' - after this test succeeds, update 'lastgood'
|
|
# 'important' - if this fails, set the overall state to 'fail'
|
|
return { fatal => 1 };
|
|
}
|
|
|
|
1;
|
|
|
|
# vim: set sw=4 et:
|