mirror of
				https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git
				synced 2025-10-30 23:05:58 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			141 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			5.2 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";
 | |
|     unless ($user_login eq 'false') {
 | |
|         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:
 |