1
0
mirror of https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git synced 2024-11-24 14:53:09 +00:00
os-autoinst-distri-fedora/tests/desktop_printing.pm
Adam Williamson 943c4193d3 Factor out the KDE launcher double-typing workaround, use it more
There's a couple of places where we do menu_launch_type in KDE
without doing this workaround first, and they do run into the
bug sometimes. Let's factor it out from the few places it's
already repeated, and add it to the places it is missing.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2024-06-11 16:21:00 -07:00

140 lines
5.2 KiB
Perl

use base "installedtest";
use strict;
use testapi;
use utils;
sub run {
my $self = shift;
my $usecups = get_var("USE_CUPS");
# 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/test/";
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 the test should be running with CUPS-PDF, we need to install it first.
if ($usecups) {
# Install the Cups-PDF package to use the Cups-PDF printer
assert_script_run "dnf -y install cups-pdf", 180;
}
# 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/test/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");
# 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";
my $maximize = "super-up";
my $term = "gnome-terminal";
if ($desktop eq "kde") {
$editor = "kwrite";
$viewer = "okular";
$maximize = "super-pgup";
$term = "konsole";
}
# 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.
menu_launch_type($term);
wait_still_screen(5);
# Open the text editor and maximize it.
wait_screen_change { type_very_safely "$editor /home/test/testfile.txt &\n"; };
wait_still_screen(stilltime => 2, similarity_level => 45);
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 => 3, 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/test/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
send_key "alt-f4";
}
# 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/test/Desktop" : "/home/test/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.
type_safely("$viewer $filepath &\n");
wait_still_screen(stilltime => 3, similarity_level => 45);
# Resize the window, so that the size of the document fits the bigger space
# and gets more readable.
send_key $maximize;
wait_still_screen(stilltime => 2, similarity_level => 45);
# in KDE, make sure we're at the start of the document
send_key "ctrl-home" if ($desktop eq "kde");
# Check the printed pdf.
assert_screen "printing_check_sentence";
}
sub test_flags {
return {fatal => 1};
}
1;
# vim: set sw=4 et: