diff --git a/lib/utils.pm b/lib/utils.pm index 43b72596..150ea757 100644 --- a/lib/utils.pm +++ b/lib/utils.pm @@ -6,7 +6,7 @@ use base 'Exporter'; use Exporter; use lockapi; use testapi qw(is_serial_terminal :DEFAULT); -our @EXPORT = qw/run_with_error_check type_safely type_very_safely desktop_vt boot_to_login_screen console_login console_switch_layout desktop_switch_layout console_loadkeys_us do_bootloader boot_decrypt check_release menu_launch_type setup_repos repo_setup get_workarounds disable_updates_repos cleanup_workaround_repo console_initial_setup handle_welcome_screen gnome_initial_setup anaconda_create_user check_desktop quit_firefox advisory_get_installed_packages acnp_handle_output advisory_check_nonmatching_packages start_with_launcher quit_with_shortcut disable_firefox_studies select_rescue_mode copy_devcdrom_as_isofile get_release_number check_left_bar check_top_bar check_prerelease check_version spell_version_number _assert_and_click is_branched rec_log repos_mirrorlist register_application get_registered_applications solidify_wallpaper check_and_install_git download_testdata make_serial_writable set_update_notification_timestamp kde_doublek_workaround dm_perform_login/; +our @EXPORT = qw/run_with_error_check type_safely type_very_safely desktop_vt boot_to_login_screen console_login console_switch_layout desktop_switch_layout console_loadkeys_us do_bootloader boot_decrypt check_release menu_launch_type setup_repos repo_setup get_workarounds disable_updates_repos cleanup_workaround_repo console_initial_setup handle_welcome_screen gnome_initial_setup anaconda_create_user check_desktop quit_firefox advisory_get_installed_packages acnp_handle_output advisory_check_nonmatching_packages start_with_launcher quit_with_shortcut disable_firefox_studies select_rescue_mode copy_devcdrom_as_isofile get_release_number check_left_bar check_top_bar check_prerelease check_version spell_version_number _assert_and_click is_branched rec_log repos_mirrorlist register_application get_registered_applications solidify_wallpaper check_and_install_git download_testdata make_serial_writable set_update_notification_timestamp kde_doublek_workaround dm_perform_login desktop_launch_terminal/; # We introduce this global variable to hold the list of applications that have @@ -1822,4 +1822,20 @@ sub dm_perform_login { send_key "ret"; } +# launch a terminal from a desktop, using the most efficient/reliable +# approach (not appropriate if we really need to test launching it a +# specific way) +sub desktop_launch_terminal { + my $desktop = get_var("DESKTOP"); + if ($desktop eq "i3") { + send_key "alt-ret"; + } + elsif ($desktop eq "kde") { + send_key "ctrl-alt-t"; + } + else { + menu_launch_type "terminal"; + } +} + 1; diff --git a/needles/gnome/user_confirm_jack-20210715.json b/needles/gnome/user_confirm_jack-20210715.json deleted file mode 100644 index c3d762a6..00000000 --- a/needles/gnome/user_confirm_jack-20210715.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "area": [ - { - "width": 41, - "type": "match", - "ypos": 173, - "xpos": 191, - "height": 21 - } - ], - "properties": [], - "tags": [ - "user_confirm_jack" - ] -} \ No newline at end of file diff --git a/needles/gnome/user_confirm_jack-20210715.png b/needles/gnome/user_confirm_jack-20210715.png deleted file mode 100644 index 276edc89..00000000 Binary files a/needles/gnome/user_confirm_jack-20210715.png and /dev/null differ diff --git a/needles/gnome/user_confirm_jack-20230823.json b/needles/gnome/user_confirm_jack-20230823.json deleted file mode 100644 index 0f60a0a7..00000000 --- a/needles/gnome/user_confirm_jack-20230823.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "area": [ - { - "height": 21, - "width": 39, - "ypos": 165, - "type": "match", - "xpos": 185 - } - ], - "properties": [], - "tags": [ - "user_confirm_jack" - ] -} \ No newline at end of file diff --git a/needles/gnome/user_confirm_jack-20230823.png b/needles/gnome/user_confirm_jack-20230823.png deleted file mode 100644 index 272c8bd7..00000000 Binary files a/needles/gnome/user_confirm_jack-20230823.png and /dev/null differ diff --git a/needles/gnome/user_confirm_jack-20240702.json b/needles/gnome/user_confirm_jack-20240702.json deleted file mode 100644 index fad1cfb0..00000000 --- a/needles/gnome/user_confirm_jack-20240702.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "area": [ - { - "width": 39, - "height": 21, - "type": "match", - "xpos": 185, - "ypos": 165 - } - ], - "properties": [], - "tags": [ - "user_confirm_jack" - ] -} \ No newline at end of file diff --git a/needles/gnome/user_confirm_jack-20240702.png b/needles/gnome/user_confirm_jack-20240702.png deleted file mode 100644 index 4b80fd3a..00000000 Binary files a/needles/gnome/user_confirm_jack-20240702.png and /dev/null differ diff --git a/needles/gnome/user_confirm_jim-20210715.json b/needles/gnome/user_confirm_jim-20210715.json deleted file mode 100644 index e3d6c2cc..00000000 --- a/needles/gnome/user_confirm_jim-20210715.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "area": [ - { - "height": 15, - "type": "match", - "ypos": 176, - "xpos": 193, - "width": 31 - } - ], - "properties": [], - "tags": [ - "user_confirm_jim" - ] -} \ No newline at end of file diff --git a/needles/gnome/user_confirm_jim-20210715.png b/needles/gnome/user_confirm_jim-20210715.png deleted file mode 100644 index 862b673c..00000000 Binary files a/needles/gnome/user_confirm_jim-20210715.png and /dev/null differ diff --git a/needles/gnome/user_confirm_jim-20230823.json b/needles/gnome/user_confirm_jim-20230823.json deleted file mode 100644 index acf7b748..00000000 --- a/needles/gnome/user_confirm_jim-20230823.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "area": [ - { - "height": 15, - "width": 31, - "ypos": 168, - "xpos": 185, - "type": "match" - } - ], - "properties": [], - "tags": [ - "user_confirm_jim" - ] -} \ No newline at end of file diff --git a/needles/gnome/user_confirm_jim-20230823.png b/needles/gnome/user_confirm_jim-20230823.png deleted file mode 100644 index 5a46484e..00000000 Binary files a/needles/gnome/user_confirm_jim-20230823.png and /dev/null differ diff --git a/needles/gnome/user_confirm_jim-20240702.json b/needles/gnome/user_confirm_jim-20240702.json deleted file mode 100644 index 5953665c..00000000 --- a/needles/gnome/user_confirm_jim-20240702.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "area": [ - { - "height": 15, - "width": 31, - "xpos": 185, - "ypos": 168, - "type": "match" - } - ], - "properties": [], - "tags": [ - "user_confirm_jim" - ] -} \ No newline at end of file diff --git a/needles/gnome/user_confirm_jim-20240702.png b/needles/gnome/user_confirm_jim-20240702.png deleted file mode 100644 index 8c984336..00000000 Binary files a/needles/gnome/user_confirm_jim-20240702.png and /dev/null differ diff --git a/needles/kde/user_confirm_jack_kde-20210929.json b/needles/kde/user_confirm_jack_kde-20210929.json deleted file mode 100644 index 642548a5..00000000 --- a/needles/kde/user_confirm_jack_kde-20210929.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "area": [ - { - "height": 15, - "xpos": 40, - "ypos": 217, - "type": "match", - "width": 31 - } - ], - "properties": [], - "tags": [ - "user_confirm_jack" - ] -} \ No newline at end of file diff --git a/needles/kde/user_confirm_jack_kde-20210929.png b/needles/kde/user_confirm_jack_kde-20210929.png deleted file mode 100644 index da194cb1..00000000 Binary files a/needles/kde/user_confirm_jack_kde-20210929.png and /dev/null differ diff --git a/needles/kde/user_confirm_jack_kde-20231206.json b/needles/kde/user_confirm_jack_kde-20231206.json deleted file mode 100644 index b5f62958..00000000 --- a/needles/kde/user_confirm_jack_kde-20231206.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "area": [ - { - "height": 16, - "type": "match", - "ypos": 200, - "width": 31, - "xpos": 44 - } - ], - "properties": [], - "tags": [ - "user_confirm_jack" - ] -} \ No newline at end of file diff --git a/needles/kde/user_confirm_jack_kde-20231206.png b/needles/kde/user_confirm_jack_kde-20231206.png deleted file mode 100644 index 3dbdec7b..00000000 Binary files a/needles/kde/user_confirm_jack_kde-20231206.png and /dev/null differ diff --git a/needles/kde/user_confirm_jim_kde-20210929.json b/needles/kde/user_confirm_jim_kde-20210929.json deleted file mode 100644 index 0f52cf68..00000000 --- a/needles/kde/user_confirm_jim_kde-20210929.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "area": [ - { - "ypos": 215, - "type": "match", - "width": 26, - "xpos": 39, - "height": 17 - } - ], - "properties": [], - "tags": [ - "user_confirm_jim" - ] -} \ No newline at end of file diff --git a/needles/kde/user_confirm_jim_kde-20210929.png b/needles/kde/user_confirm_jim_kde-20210929.png deleted file mode 100644 index 26ee1c6c..00000000 Binary files a/needles/kde/user_confirm_jim_kde-20210929.png and /dev/null differ diff --git a/needles/kde/user_confirm_jim_kde-20231206.json b/needles/kde/user_confirm_jim_kde-20231206.json deleted file mode 100644 index 60b4f83b..00000000 --- a/needles/kde/user_confirm_jim_kde-20231206.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "area": [ - { - "width": 26, - "xpos": 43, - "ypos": 199, - "type": "match", - "height": 17 - } - ], - "properties": [], - "tags": [ - "user_confirm_jim" - ] -} \ No newline at end of file diff --git a/needles/kde/user_confirm_jim_kde-20231206.png b/needles/kde/user_confirm_jim_kde-20231206.png deleted file mode 100644 index 4ce9e47f..00000000 Binary files a/needles/kde/user_confirm_jim_kde-20231206.png and /dev/null differ diff --git a/tests/desktop_login.pm b/tests/desktop_login.pm index 672a8ab4..a935ff09 100644 --- a/tests/desktop_login.pm +++ b/tests/desktop_login.pm @@ -115,32 +115,21 @@ sub login_user { sub check_user_logged_in { # Performs a check that a correct user has been locked in. - my $user = shift; - my $exitkey; - # In Gnome, the name of the user was accessible through menu - # in the upper right corner, but apparently it has been removed. - # Reading the login name from the terminal prompt seems to be - # the most reliable thing to do. - if ($desktop eq "gnome") { - menu_launch_type("terminal"); - wait_still_screen 2; - $exitkey = "alt-f4"; - } - elsif ($desktop eq "i3") { - send_key("alt-ret"); - assert_screen("apps_run_terminal"); - assert_script_run('[ $(whoami) = "' . "$user\" ]"); - wait_screen_change { send_key("alt-shift-q"); }; - return; - } - # With KDE, the user is shown in the main menu, so let us just - # open this and see. - else { - assert_and_click "system_menu_button"; - $exitkey = "esc"; - } - assert_screen "user_confirm_$user"; - send_key $exitkey; + my %args = @_; + $args{termopen} //= 0; + $args{keepterm} //= 0; + my $user = $args{user}; + # In Gnome and i3, the current user's name is not easily visible, + # so reading the login name from the terminal prompt seems to be + # the most reliable thing to do. In KDE we could see it on the + # launcher menu, but it keeps things clean if we use the same + # approach for all desktops. + my $exitkey = "alt-f4"; + $exitkey = "shift-ctrl-q" if ($desktop eq "i3"); + desktop_launch_terminal unless ($args{termopen}); + assert_screen("apps_run_terminal"); + assert_script_run('[ $(whoami) = "' . "$user\" ]"); + send_key $exitkey unless ($args{keepterm}); wait_still_screen 5; } @@ -163,7 +152,6 @@ sub logout_user { sub switch_user { # Switch the user, i.e. leave the current user logged in and # log in another user simultaneously. - send_key "ret"; if (check_screen "locked_screen_switch_user", 5) { assert_and_click "locked_screen_switch_user"; } @@ -276,7 +264,7 @@ sub run { # Log in with the first user account. login_user(user => "jack", password => $jackpass); - check_user_logged_in("jack"); + check_user_logged_in(user => "jack"); # Log out the user. logout_user(); @@ -289,7 +277,7 @@ sub run { # If not, we are in KDE and we will log in normally. login_user(user => "jim", password => $jimpass); } - check_user_logged_in("jim"); + check_user_logged_in(user => "jim"); # And this time reboot the system using the menu. reboot_system(); @@ -307,7 +295,7 @@ sub run { # only work if we were correctly denied login with the wrong password, # if we were let in with the wrong password it'll fail login_user(user => "jim", password => $jimpass); - check_user_logged_in("jim"); + check_user_logged_in(user => "jim"); # Lock the screen and unlock again. lock_screen(); @@ -315,32 +303,29 @@ sub run { login_user(user => "jim", password => $jimpass, method => "unlock"); # Switch user tests - if ($desktop eq "gnome") { - # Because KDE at the moment (20200403) is very unreliable concerning switching the users inside - # the virtual machine, we will skip this part, until situation is better. Switching users will - # be only tested in Gnome. - + unless ($desktop eq "i3") { # Start a terminal session to monitor on which sessions we are, when we start switching users. # This time, we will open the terminal window manually because we want to leave it open later. - menu_launch_type "terminal"; + desktop_launch_terminal; wait_still_screen 2; # Initiate switch user switch_user(); # Now, we get a new login screen, so let's do the login into the new session. login_user(user => "jack", password => $jackpass); # Check that it is a new session, the terminal window should not be visible. - if (check_screen "user_confirm_jim") { + if (check_screen "apps_run_terminal") { die "The session was not switched!"; } else { - check_user_logged_in("jack"); + # keep the terminal open so we can check later + check_user_logged_in(user => "jack", keepterm => 1); } - # Log out the user. - logout_user(); + # Switch again. + switch_user(); # Now, let us log into the original session, this time, the terminal window # should still be visible. login_user(user => "jim", password => $jimpass); - assert_screen "user_confirm_jim"; + check_user_logged_in(user => "jim", termopen => 1); # We will also test another alternative - switching the user from # a locked screen. @@ -348,7 +333,9 @@ sub run { send_key "ret"; switch_user(); login_user(user => "jack", password => $jackpass); - check_user_logged_in("jack"); + # we should be back in the previous 'jack' session so the terminal + # we kept open should be there + check_user_logged_in(user => "jack", termopen => 1); } # Power off the machine power_off();