mirror of
				https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git
				synced 2025-10-30 23:05:58 +00:00 
			
		
		
		
	This test uses a document viewer, so we need to tweak it to work with the new one. Signed-off-by: Adam Williamson <awilliam@redhat.com>
		
			
				
	
	
		
			170 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| use base "installedtest";
 | |
| use strict;
 | |
| use testapi;
 | |
| use utils;
 | |
| 
 | |
| sub run {
 | |
|     my $self = shift;
 | |
|     my $usecups = get_var("USE_CUPS");
 | |
|     my $desktop = get_var("DESKTOP");
 | |
|     my $user = get_var("USER_LOGIN", "test");
 | |
|     my $password = get_var("USER_PASSWORD", "weakpassword");
 | |
|     # Prepare the environment for the test.
 | |
|     #
 | |
|     # Some actions need a root account, so become root.
 | |
|     $self->root_console(tty => 3);
 | |
| 
 | |
|     # Create a text file, put content to it to prepare it for later printing.
 | |
|     script_run "cd /home/$user/";
 | |
|     assert_script_run "echo 'A quick brown fox jumps over a lazy dog.' > testfile.txt";
 | |
|     # Make the file readable and for everybody.
 | |
|     script_run "chmod 666 testfile.txt";
 | |
|     if ($desktop eq "i3") {
 | |
|         assert_script_run("dnf -y install mupdf", timeout => 120);
 | |
|     }
 | |
| 
 | |
|     # If the test should be running with CUPS-PDF, we need to install it first.
 | |
|     if ($usecups) {
 | |
|         my $pkgs = "cups-pdf";
 | |
|         # Install the Cups-PDF package to use the Cups-PDF printer
 | |
|         assert_script_run "dnf -y install $pkgs", 120;
 | |
|         assert_script_run "systemctl restart cups", 30;
 | |
|     }
 | |
| 
 | |
|     # Here, we were doing a version logic. This is no longer needed, because
 | |
|     # we now use a different approach to getting the resulting file name:
 | |
|     # We will list the directory where the printed file is put and we will
 | |
|     # take the file name that will be returned. To make it work, the directory
 | |
|     # must be empty, which it normally is, but to make sure let's delete everything.
 | |
|     script_run("rm /home/$user/Desktop/*");
 | |
|     # Verification commands need serial console to be writable and readable for
 | |
|     # normal users, let's make it writable then.
 | |
|     script_run("chmod 666 /dev/${serialdev}");
 | |
|     # Leave the root terminal and switch back to desktop for the rest of the test.
 | |
|     desktop_vt();
 | |
| 
 | |
|     my $desktop = get_var("DESKTOP");
 | |
|     my $relnum = get_release_number;
 | |
|     # Set up some variables to make the test compatible with different desktops.
 | |
|     # Defaults are for the Gnome desktop.
 | |
|     my $editor = "gnome-text-editor";
 | |
|     my $viewer = "evince";
 | |
|     $viewer = "papers" if ($desktop eq "gnome" && $relnum > 42);
 | |
|     my $maximize = "super-up";
 | |
|     my $term = "terminal";
 | |
|     if ($desktop eq "kde") {
 | |
|         $editor = "kwrite";
 | |
|         $viewer = "okular";
 | |
|         $maximize = "super-pgup";
 | |
|         $term = "konsole";
 | |
|     }
 | |
|     elsif ($desktop eq "i3") {
 | |
|         $editor = "mousepad";
 | |
|         $viewer = "mupdf";
 | |
|         $maximize = undef;
 | |
|     }
 | |
| 
 | |
|     # give the desktop a few seconds to settle, we seem to be getting
 | |
|     # a lot of mis-types in KDE if we do not, as of 2024-02
 | |
|     wait_still_screen(3);
 | |
|     # On KDE, try and avoid double-typing issues
 | |
|     if ($desktop eq "kde") {
 | |
|         kde_doublek_workaround;
 | |
|     }
 | |
|     # Let's open the terminal. We will use it to start the applications
 | |
|     # as well as to check for the name of the printed file.
 | |
|     desktop_launch_terminal;
 | |
|     assert_screen("apps_run_terminal");
 | |
|     wait_still_screen 3;
 | |
|     # switch to tabbed mode
 | |
|     send_key("alt-w") if ($desktop eq "i3");
 | |
|     # Open the text editor and maximize it.
 | |
|     wait_screen_change { type_very_safely "$editor /home/$user/testfile.txt &\n"; };
 | |
|     wait_still_screen(stilltime => 2, similarity_level => 45);
 | |
|     if (defined($maximize)) {
 | |
|         wait_screen_change { send_key($maximize); };
 | |
|         wait_still_screen(stilltime => 2, similarity_level => 45);
 | |
|     }
 | |
| 
 | |
|     # Print the file using one of the available methods
 | |
|     send_key "ctrl-p";
 | |
|     wait_still_screen(stilltime => 5, similarity_level => 45);
 | |
|     # We will select the printing method
 | |
|     # In case of KDE, we will need to select the printer first.
 | |
|     if ($desktop eq "kde") {
 | |
|         assert_and_click "printing_kde_select_printer";
 | |
|     }
 | |
|     if ($usecups) {
 | |
|         assert_and_click "printing_use_cups_printer";
 | |
|     }
 | |
|     else {
 | |
|         assert_and_click "printing_use_saveas_pdf";
 | |
|         # For KDE, we need to set the output location.
 | |
|         if ($desktop eq "kde") {
 | |
|             assert_and_click "printing_kde_location_line";
 | |
|             send_key("ctrl-a");
 | |
|             type_safely("/home/$user/Documents/output.pdf");
 | |
|         }
 | |
|     }
 | |
|     assert_and_click "printing_print";
 | |
|     # In Rawhide from 2023-11-04 onwards, sometimes g-t-e has
 | |
|     # already died somehow at this point
 | |
|     if (check_screen "apps_run_terminal", 10) {
 | |
|         record_soft_failure "gnome-text-editor died!";
 | |
|     }
 | |
|     else {
 | |
|         # Exit the application
 | |
|         my $killing_weapon = "alt-f4";
 | |
|         if ($desktop eq "i3") {
 | |
|             $killing_weapon = "alt-shift-q";
 | |
|         }
 | |
|         send_key($killing_weapon);
 | |
|     }
 | |
| 
 | |
|     # Get the name of the printed file. The path location depends
 | |
|     # on the selected method. We do this on a VT because there's
 | |
|     # no argument to script_output to make it type slowly, and
 | |
|     # it often fails typing fast in a desktop terminal
 | |
|     $self->root_console(tty => 3);
 | |
|     my $directory = $usecups ? "/home/$user/Desktop" : "/home/$user/Documents";
 | |
|     my $filename = script_output("ls $directory");
 | |
|     my $filepath = "$directory/$filename";
 | |
| 
 | |
|     # Echo that filename to the terminal for troubleshooting purposes
 | |
|     diag("The file of the printed out file is located in $filepath");
 | |
| 
 | |
|     # back to the desktop
 | |
|     desktop_vt();
 | |
|     wait_still_screen(stilltime => 3, similarity_level => 45);
 | |
|     # The CLI might be blocked by some application output. Pressing the
 | |
|     # Enter key will dismiss them and return the CLI to the ready status.
 | |
|     send_key("ret");
 | |
|     # Open the pdf file in a Document reader and check that it is correctly printed.
 | |
|     wait_screen_change { type_safely("$viewer $filepath &\n"); };
 | |
|     wait_still_screen(stilltime => 3, similarity_level => 45);
 | |
|     # Maximize the screen and check the printed pdf, giving it a few
 | |
|     # chances to work
 | |
|     my $count = 5;
 | |
|     while ($count) {
 | |
|         $count -= 1;
 | |
|         send_key($maximize);
 | |
|         wait_still_screen(stilltime => 3, similarity_level => 45);
 | |
|         if ($desktop eq "kde") {
 | |
|             # ensure we're at the start of the document
 | |
|             send_key "ctrl-home";
 | |
|             wait_still_screen(stilltime => 2, similarity_level => 45);
 | |
|         }
 | |
|         last if (check_screen("printing_check_sentence", 3));
 | |
|     }
 | |
|     assert_screen("printing_check_sentence", 5);
 | |
| }
 | |
| 
 | |
| 
 | |
| sub test_flags {
 | |
|     return {fatal => 1};
 | |
| }
 | |
| 
 | |
| 1;
 | |
| 
 | |
| # vim: set sw=4 et:
 |