Automate the QA:Testcase_Anaconda_help.

This PR automates the mentioned testcase to test that Help can be
displayed in Anaconda during the installation. It navigates through
the available Help screens and if it can see it, it finishes.

This test runs after `install_default_upload` to override the
installation defaults defined for all primary tests.

Delete a duplicated needle.

Reformat list extensions to make it nicer.

Get rid of wrong export and an empty line.

Delete empty line.

Use _boot_to_anaconda for booting and move subroutine accordingly.

Add variable to templates.fif.json

Delete trailing whitespace.

Fix calling the pretest.

Move help checking to another place.
This commit is contained in:
Lukáš Růžička 2021-05-03 17:37:46 +02:00 committed by adamwill
parent f475156eff
commit c6d443a20f
78 changed files with 740 additions and 1 deletions

View File

@ -77,6 +77,7 @@ it also means that `B` conflicts `A` even if not shown in the table).
| `POSTINSTALL` | string | not set | nothing | If set, `tests/(value)_postinstall.pm` will be loaded after install, boot, login, and other postinstall tests | `POSTINSTALL` | string | not set | nothing | If set, `tests/(value)_postinstall.pm` will be loaded after install, boot, login, and other postinstall tests
| `UEFI` | boolean | `false`/not set | nothing | whether to use UEFI, this variable isn't usually set in test suites but in machine definition | | `UEFI` | boolean | `false`/not set | nothing | whether to use UEFI, this variable isn't usually set in test suites but in machine definition |
| `ANACONDA_TEXT` | boolean | `false`/not set | all | when specified, anaconda will run in text mode | | `ANACONDA_TEXT` | boolean | `false`/not set | all | when specified, anaconda will run in text mode |
| `HELPCHECK` | boolean | `false`/not set | all | when specified, Anaconda Help will be called on each available pane. |
| `ANACONDA_STATIC` | string (IPv4 address) | not set | `ANACONDA_TEXT` | If set, will set up static networking using the chosen IP address during install | | `ANACONDA_STATIC` | string (IPv4 address) | not set | `ANACONDA_TEXT` | If set, will set up static networking using the chosen IP address during install |
| `POST_STATIC` | string (space-separated IPv4 address and hostname) | not set | nothing | If set, will set up static networking using the chosen IP address and hostname during early post-install | | `POST_STATIC` | string (space-separated IPv4 address and hostname) | not set | nothing | If set, will set up static networking using the chosen IP address and hostname during early post-install |
| `NO_UEFI_POST` | boolean | `false`/not set | nothing | If set, `uefi_postinstall` test will not be loaded even if `UEFI` is set (can be useful for non-English tests to avoid `uefi_postinstall` running loadkeys) | | `NO_UEFI_POST` | boolean | `false`/not set | nothing | If set, `uefi_postinstall` test will not be loaded even if `UEFI` is set (can be useful for non-English tests to avoid `uefi_postinstall` running loadkeys) |

View File

@ -102,6 +102,14 @@ for fsys in ("ext3", "xfs", "ext4"):
testliterals.append(f"anaconda_part_fs_{fsys}_selected") testliterals.append(f"anaconda_part_fs_{fsys}_selected")
# variable-y in custom_change_device but we only have one value # variable-y in custom_change_device but we only have one value
testliterals.append("anaconda_part_device_sda") testliterals.append("anaconda_part_device_sda")
# for Anaconda help related needles.
testliterals.extend(f"anaconda_help_{fsys}" for fsys in ('install_destination',
'installation_progress', 'keyboard_layout', 'language_support', 'network_host_name',
'root_password', 'select_packages', 'installation_source', 'time_date', 'create_user',
'language_selection', 'language', 'summary_link'))
testliterals.extend(f"anaconda_main_hub_{fsys}" for fsys in ('language_support', 'selec_packages',
'time_date', 'create_user','keyboard_layout'))
# retcode tracker # retcode tracker
ret = 0 ret = 0

View File

@ -8,7 +8,7 @@ use Exporter;
use testapi; use testapi;
use utils; use utils;
our @EXPORT = qw/select_disks custom_scheme_select custom_blivet_add_partition custom_blivet_format_partition custom_blivet_resize_partition custom_change_type custom_change_fs custom_change_device custom_delete_part get_full_repo get_mirrorlist_url/; our @EXPORT = qw/select_disks custom_scheme_select custom_blivet_add_partition custom_blivet_format_partition custom_blivet_resize_partition custom_change_type custom_change_fs custom_change_device custom_delete_part get_full_repo get_mirrorlist_url check_help_on_pane/;
sub select_disks { sub select_disks {
# Handles disk selection. Has one optional argument - number of # Handles disk selection. Has one optional argument - number of
@ -307,3 +307,50 @@ sub get_full_repo {
sub get_mirrorlist_url { sub get_mirrorlist_url {
return "mirrors.fedoraproject.org/mirrorlist?repo=fedora-" . lc(get_var("VERSION")) . "&arch=" . get_var('ARCH'); return "mirrors.fedoraproject.org/mirrorlist?repo=fedora-" . lc(get_var("VERSION")) . "&arch=" . get_var('ARCH');
} }
sub check_help_on_pane {
# This subroutine opens the selected Anaconda pane and checks
# if the Help button can be clicked to obtain relevant help.
#
# Pass an argument to select particular pane to check.
my $screen = shift;
# Some Help buttons need to be accessed directly according
# to various installation steps (and not from the main hub),
# namely the Main hub Help button, Language selection Help button
# and Installation progress Help button. For the aforementioned
# step, we are skipping selecting the panes.
if ($screen ne "main" && $screen ne "language_selection" && $screen ne "installation_progress") {
assert_and_click "anaconda_main_hub_$screen";
}
# For Help, click on the the Help button.
assert_and_click "anaconda_help_button";
# On the main hub, the Help summary is shown, from where a link
# takes us to Installation progress. This is a specific situation,
# so let's handle this differently.
if ($screen eq "main") {
# Check the Installation Summary screen.
assert_screen "anaconda_help_summary";
# Click on Installation Progress link
assert_and_click "anaconda_help_progress_link";
# Check the Installation Progress screen
assert_screen "anaconda_help_progress";
}
# Otherwise, only check the relevant screen.
else {
assert_screen "anaconda_help_$screen";
}
# Close Help window
assert_and_click "anaconda_help_quit";
# Where panes were not opened, we will not close them.
if ($screen ne "main" && $screen ne "language_selection" && $screen ne "installation_progress") {
assert_and_click "anaconda_spoke_done";
}
# In the situation, when we do not arrive at main hub, we will skip
# testing that main hub is shown.
if ($screen ne "language_selection" && $screen ne "installation_progress") {
assert_screen "anaconda_main_hub";
}
}

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 955,
"ypos": 52,
"width": 39,
"height": 17,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_button"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 44,
"ypos": 174,
"width": 184,
"height": 26,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_create_user"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 10,
"ypos": 95,
"width": 374,
"height": 39,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_install_destination"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 42,
"ypos": 173,
"width": 364,
"height": 25,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_install_destination"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"type": "match",
"ypos": 95,
"xpos": 303,
"width": 337,
"height": 40
}
],
"properties": [],
"tags": [
"anaconda_help_installation_progress"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 336,
"ypos": 171,
"width": 319,
"height": 33,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_installation_progress"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 41,
"ypos": 172,
"width": 293,
"height": 28,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_installation_source"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"height": 41,
"width": 272,
"xpos": 11,
"type": "match",
"ypos": 93
}
],
"properties": [],
"tags": [
"anaconda_help_keyboard_layout"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 40,
"ypos": 172,
"width": 267,
"height": 31,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_keyboard_layout"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

View File

@ -0,0 +1,15 @@
{
"properties": [],
"tags": [
"anaconda_help_language"
],
"area": [
{
"xpos": 380,
"ypos": 170,
"width": 312,
"height": 32,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"height": 38,
"width": 313,
"xpos": 353,
"ypos": 97,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_language_selection"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -0,0 +1,15 @@
{
"properties": [],
"tags": [
"anaconda_help_language_selection"
],
"area": [
{
"xpos": 379,
"ypos": 168,
"width": 313,
"height": 38,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 43,
"ypos": 173,
"width": 291,
"height": 30,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_language_support"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 40,
"ypos": 170,
"width": 334,
"height": 30,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_network_host_name"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"type": "match",
"ypos": 96,
"xpos": 301,
"width": 335,
"height": 40
}
],
"properties": [],
"tags": [
"anaconda_help_progress"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 333,
"ypos": 172,
"width": 319,
"height": 31,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_progress"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"height": 17,
"width": 143,
"xpos": 137,
"ypos": 727,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_progress_link"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 205,
"ypos": 718,
"width": 129,
"height": 11,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_progress_link"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 966,
"ypos": 81,
"width": 16,
"height": 13,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_quit"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

View File

@ -0,0 +1,15 @@
{
"properties": [],
"tags": [
"anaconda_help_quit"
],
"area": [
{
"xpos": 968,
"ypos": 52,
"width": 21,
"height": 20,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 40,
"ypos": 170,
"width": 232,
"height": 31,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_root_password"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 41,
"ypos": 172,
"width": 294,
"height": 26,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_select_packages"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"ypos": 99,
"type": "match",
"xpos": 12,
"width": 342,
"height": 35
}
],
"properties": [],
"tags": [
"anaconda_help_summary"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 40,
"ypos": 170,
"width": 342,
"height": 35,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_help_summary"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

View File

@ -0,0 +1,15 @@
{
"properties": [],
"tags": [
"anaconda_help_summary_link"
],
"area": [
{
"xpos": 683,
"ypos": 446,
"width": 142,
"height": 14,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 12,
"ypos": 99,
"type": "match",
"height": 30,
"width": 196
}
],
"properties": [],
"tags": [
"anaconda_help_time_date"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@ -0,0 +1,15 @@
{
"properties": [],
"tags": [
"anaconda_help_time_date"
],
"area": [
{
"xpos": 43,
"ypos": 171,
"width": 196,
"height": 30,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

View File

@ -0,0 +1,15 @@
{
"properties": [],
"tags": [
"anaconda_main_hub_create_user"
],
"area": [
{
"xpos": 248,
"ypos": 556,
"width": 32,
"height": 33,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 248,
"ypos": 207,
"width": 29,
"height": 28,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_main_hub_keyboard_layout"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 249,
"ypos": 276,
"width": 31,
"height": 28,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_main_hub_language_support"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

View File

@ -0,0 +1,24 @@
{
"area": [
{
"width": 37,
"height": 33,
"ypos": 356,
"type": "match",
"xpos": 363
},
{
"ypos": 423,
"type": "match",
"xpos": 364,
"width": 34,
"height": 37
}
],
"properties": [],
"tags": [
"anaconda_main_hub",
"ENV-DISTRI-fedora",
"INSTALLER-smallhub"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

@ -0,0 +1,24 @@
{
"area": [
{
"type": "match",
"xpos": 365,
"ypos": 369,
"width": 34,
"height": 37
},
{
"xpos": 366,
"ypos": 444,
"width": 33,
"height": 30,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_main_hub",
"ENV-DISTRI-fedora",
"INSTALLER-smallhub"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

View File

@ -0,0 +1,30 @@
{
"area": [
{
"ypos": 199,
"xpos": 485,
"type": "match",
"height": 33,
"width": 33
},
{
"width": 28,
"height": 34,
"ypos": 272,
"type": "match",
"xpos": 488
},
{
"ypos": 267,
"type": "match",
"xpos": 722,
"width": 34,
"height": 37
}
],
"properties": [],
"tags": [
"anaconda_main_hub",
"ENV-DISTRI-fedora"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

View File

@ -0,0 +1,30 @@
{
"area": [
{
"ypos": 268,
"xpos": 248,
"type": "match",
"height": 33,
"width": 33
},
{
"type": "match",
"xpos": 244,
"ypos": 199,
"width": 41,
"height": 34
},
{
"ypos": 336,
"xpos": 246,
"type": "match",
"width": 34,
"height": 37
}
],
"properties": [],
"tags": [
"anaconda_main_hub",
"ENV-DISTRI-fedora"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 247,
"ypos": 488,
"width": 35,
"height": 29,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_main_hub_root_password"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 247,
"ypos": 345,
"width": 34,
"height": 33,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_main_hub_time_date"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View File

@ -523,6 +523,22 @@
"START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%" "START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%"
} }
}, },
"anaconda_help": {
"profiles": {
"fedora-KDE-live-iso-x86_64-*-64bit": 40,
"fedora-Workstation-live-iso-x86_64-*-64bit": 40,
"fedora-Workstation-live-iso-ppc64le-*-ppc64le": 20,
"fedora-Silverblue-dvd_ostree-iso-ppc64le-*-ppc64le": 50,
"fedora-Silverblue-dvd_ostree-iso-x86_64-*-64bit": 50,
"fedora-Server-dvd-iso-aarch64-*-aarch64": 20,
"fedora-Server-dvd-iso-ppc64le-*-ppc64le": 20,
"fedora-Server-dvd-iso-x86_64-*-64bit": 20
},
"settings": {
"ENTRYPOINT": "_boot_to_anaconda anaconda_help",
"HELPCHECK": "1"
}
},
"base_reboot_unmount": { "base_reboot_unmount": {
"profiles": { "profiles": {
"fedora-Cloud_Base-qcow2-qcow2-aarch64-*-aarch64": 20, "fedora-Cloud_Base-qcow2-qcow2-aarch64-*-aarch64": 20,

View File

@ -126,6 +126,7 @@ sub run {
# wait for anaconda to appear; we click to work around # wait for anaconda to appear; we click to work around
# RHBZ #1566066 if it happens # RHBZ #1566066 if it happens
assert_and_click("anaconda_select_install_lang", timeout=>300); assert_and_click("anaconda_select_install_lang", timeout=>300);
# Select install language # Select install language
wait_screen_change { assert_and_click "anaconda_select_install_lang_input"; }; wait_screen_change { assert_and_click "anaconda_select_install_lang_input"; };
type_safely $language; type_safely $language;
@ -133,6 +134,12 @@ sub run {
# appropriate language, here # appropriate language, here
assert_and_click "anaconda_select_install_lang_filtered"; assert_and_click "anaconda_select_install_lang_filtered";
assert_screen "anaconda_select_install_lang_selected", 10; assert_screen "anaconda_select_install_lang_selected", 10;
# Check for Help on the Language selection pane, if HELPCHECK is
# required
if (get_var('HELPCHECK')) {
check_help_on_pane("language_selection");
}
assert_and_click "anaconda_select_install_lang_continue"; assert_and_click "anaconda_select_install_lang_continue";
# wait 180 secs for hub or Rawhide warning dialog to appear # wait 180 secs for hub or Rawhide warning dialog to appear

72
tests/anaconda_help.pm Normal file
View File

@ -0,0 +1,72 @@
use base "anacondatest";
use strict;
use lockapi;
use testapi;
use utils;
use anaconda;
sub run {
# This test tests that Anaconda is able to show help for particular Anaconda screens.
# It opens various Anaconda panes, clicks on Help button, and checks that correct
# Help content is shown for that pane.
#
# Although this test performs Anaconda routines and it only partly performs the installation,
# therefore it is NOT to be considered an *installation test*.
#
# This tests should run after the _boot_to_anaconda test. Which should take us to Anaconda
# main hub.
# Now, we should be on Anaconda Main hub, but the hub differs for various
# installation media. For each such media (ServerDVD, WS Live, KDE Live),
# we create a tailored test plan.
#
# At first, we check for the main hub help.
check_help_on_pane("main");
# Create test plans
my @testplan;
# For LIVE KDE:
if ((get_var('LIVE')) && (get_var('DESKTOP') eq "kde")) {
@testplan = qw/keyboard_layout time_date install_destination network_host_name root_password create_user/;
}
# For LIVE Workstation
elsif ((get_var('LIVE')) && (get_var('DESKTOP') eq "gnome")) {
@testplan = qw/keyboard_layout install_destination time_date/;
}
# For Silverblue
elsif (get_var('DESKTOP') eq "gnome") {
@testplan = qw/keyboard_layout language_support install_destination time_date/;
}
# For ServerDVD
else {
@testplan = qw/keyboard_layout language_support time_date installation_source select_packages install_destination network_host_name root_password create_user/;
}
# Iterate over test plan and do the tests.
foreach (@testplan) {
check_help_on_pane($_);
}
# Now, we will start the installation.
# As we have not created any root password, or any user, on non-live systems
# the Begin Installation button may be greyed out. If this is the situation,
# we will create the root password to override this.
unless (check_screen "anaconda_main_hub_begin_installation", 120) {
assert_and_click "anaconda_main_hub_root_password";
type_safely "weakrootpassword";
send_key "tab";
type_safely "weakrootpassword";
assert_and_click "anaconda_spoke_done";
}
# Begin installation
assert_and_click "anaconda_main_hub_begin_installation";
# Check the last Help screen. As
check_help_on_pane("installation_progress");
# As there is no need to proceed with the installation,
# the test ends here and the VM will be destroyed
# after some short time.
}
1;