mirror of
https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git
synced 2024-11-24 23:03:08 +00:00
Add the graphical upgrade tests.
This PR builds on some elements of the current upgrade process, such as upgrade_boot, upgrade_preinstall, upgrade_postinstall, but replaces the upgrade_run with graphical_upgrade_run to use graphical methods to upgrade the system. This would not be possible without necessary settings, that are performed by graphical_upgrade_prerequisites. Works for both Gnome and KDE.
This commit is contained in:
parent
34eba25858
commit
d3a6beda3d
9
main.pm
9
main.pm
@ -122,7 +122,16 @@ sub load_upgrade_tests() {
|
||||
autotest::loadtest "tests/${pu}.pm";
|
||||
}
|
||||
}
|
||||
# If we want the upgrade run with GUI tools, we need
|
||||
# to load a GUI set of tests
|
||||
if (get_var("GUI_UPGRADE")) {
|
||||
autotest::loadtest("tests/graphical_upgrade_prerequisites.pm");
|
||||
autotest::loadtest("tests/graphical_upgrade_run.pm");
|
||||
}
|
||||
# otherwise go with the CLI variant
|
||||
else {
|
||||
autotest::loadtest "tests/upgrade_run.pm";
|
||||
}
|
||||
# handle additional postinstall tests
|
||||
if (get_var("POSTINSTALL")) {
|
||||
set_var('POSTINSTALL', "upgrade_postinstall " . get_var("POSTINSTALL"));
|
||||
|
15
needles/gnome/desktop_package_tool_restart_upgrade.json
Normal file
15
needles/gnome/desktop_package_tool_restart_upgrade.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"area": [
|
||||
{
|
||||
"xpos": 438,
|
||||
"ypos": 277,
|
||||
"width": 143,
|
||||
"height": 20,
|
||||
"type": "match"
|
||||
}
|
||||
],
|
||||
"properties": [],
|
||||
"tags": [
|
||||
"desktop_package_tool_restart_upgrade"
|
||||
]
|
||||
}
|
BIN
needles/gnome/desktop_package_tool_restart_upgrade.png
Normal file
BIN
needles/gnome/desktop_package_tool_restart_upgrade.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 53 KiB |
26
needles/gnome/desktop_package_tool_upgrade_system.json
Normal file
26
needles/gnome/desktop_package_tool_upgrade_system.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"area": [
|
||||
{
|
||||
"height": 56,
|
||||
"type": "match",
|
||||
"click_point": {
|
||||
"xpos": 50,
|
||||
"ypos": 10
|
||||
},
|
||||
"width": 154,
|
||||
"xpos": 435,
|
||||
"ypos": 277
|
||||
},
|
||||
{
|
||||
"height": 30,
|
||||
"type": "match",
|
||||
"width": 133,
|
||||
"xpos": 558,
|
||||
"ypos": 162
|
||||
}
|
||||
],
|
||||
"properties": [],
|
||||
"tags": [
|
||||
"desktop_package_tool_upgrade_system"
|
||||
]
|
||||
}
|
BIN
needles/gnome/desktop_package_tool_upgrade_system.png
Normal file
BIN
needles/gnome/desktop_package_tool_upgrade_system.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
16
needles/kde/apps/auth_required-20240214.json
Normal file
16
needles/kde/apps/auth_required-20240214.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"area": [
|
||||
{
|
||||
"xpos": 334,
|
||||
"ypos": 271,
|
||||
"width": 212,
|
||||
"height": 20,
|
||||
"type": "match"
|
||||
}
|
||||
],
|
||||
"properties": [],
|
||||
"tags": [
|
||||
"auth_required",
|
||||
"auth_required_password"
|
||||
]
|
||||
}
|
BIN
needles/kde/apps/auth_required-20240214.png
Normal file
BIN
needles/kde/apps/auth_required-20240214.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 277 KiB |
@ -0,0 +1,15 @@
|
||||
{
|
||||
"area": [
|
||||
{
|
||||
"xpos": 322,
|
||||
"ypos": 684,
|
||||
"width": 136,
|
||||
"height": 25,
|
||||
"type": "match"
|
||||
}
|
||||
],
|
||||
"properties": [],
|
||||
"tags": [
|
||||
"desktop_package_tool_restart_automatically"
|
||||
]
|
||||
}
|
BIN
needles/kde/desktop_package_tool_restart_automatically-kde.png
Normal file
BIN
needles/kde/desktop_package_tool_restart_automatically-kde.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 198 KiB |
15
needles/kde/desktop_package_tool_upgrade_system-kde.json
Normal file
15
needles/kde/desktop_package_tool_upgrade_system-kde.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"area": [
|
||||
{
|
||||
"height": 20,
|
||||
"type": "match",
|
||||
"width": 59,
|
||||
"xpos": 785,
|
||||
"ypos": 90
|
||||
}
|
||||
],
|
||||
"properties": [],
|
||||
"tags": [
|
||||
"desktop_package_tool_upgrade_system"
|
||||
]
|
||||
}
|
BIN
needles/kde/desktop_package_tool_upgrade_system-kde.png
Normal file
BIN
needles/kde/desktop_package_tool_upgrade_system-kde.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 188 KiB |
@ -3068,7 +3068,6 @@
|
||||
"ROOT_PASSWORD": "weakpassword",
|
||||
"TEST_TARGET": "COMPOSE",
|
||||
"UPGRADE": "1",
|
||||
"GUI_UPGRADE": "1",
|
||||
"USER_LOGIN": "test",
|
||||
"USER_PASSWORD": "weakpassword"
|
||||
}
|
||||
@ -3091,6 +3090,40 @@
|
||||
"USER_PASSWORD": "weakpassword"
|
||||
}
|
||||
},
|
||||
"upgrade_desktop_graphical": {
|
||||
"profiles": {
|
||||
"fedora-universal-x86_64-*-64bit": 30,
|
||||
"fedora-universal-aarch64-*-aarch64": 40
|
||||
},
|
||||
"settings": {
|
||||
"BOOTFROM": "c",
|
||||
"DESKTOP": "gnome",
|
||||
"HDD_1": "disk_f%UP1REL%_desktop_5_%ARCH%.qcow2",
|
||||
"ROOT_PASSWORD": "weakpassword",
|
||||
"TEST_TARGET": "COMPOSE",
|
||||
"UPGRADE": "1",
|
||||
"GUI_UPGRADE": "1",
|
||||
"USER_LOGIN": "test",
|
||||
"USER_PASSWORD": "weakpassword"
|
||||
}
|
||||
},
|
||||
"upgrade_2_desktop_graphical": {
|
||||
"profiles": {
|
||||
"fedora-universal-x86_64-*-64bit": 30,
|
||||
"fedora-universal-aarch64-*-aarch64": 40
|
||||
},
|
||||
"settings": {
|
||||
"BOOTFROM": "c",
|
||||
"DESKTOP": "gnome",
|
||||
"HDD_1": "disk_f%UP2REL%_desktop_5_%ARCH%.qcow2",
|
||||
"ROOT_PASSWORD": "weakpassword",
|
||||
"TEST_TARGET": "COMPOSE",
|
||||
"UPGRADE": "1",
|
||||
"GUI_UPGRADE": "1",
|
||||
"USER_LOGIN": "test",
|
||||
"USER_PASSWORD": "weakpassword"
|
||||
}
|
||||
},
|
||||
"upgrade_kde": {
|
||||
"profiles": {
|
||||
"fedora-universal-x86_64-*-64bit": 30
|
||||
@ -3106,6 +3139,22 @@
|
||||
"USER_PASSWORD": "weakpassword"
|
||||
}
|
||||
},
|
||||
"upgrade_kde_graphical": {
|
||||
"profiles": {
|
||||
"fedora-universal-x86_64-*-64bit": 30
|
||||
},
|
||||
"settings": {
|
||||
"+HDD_1": "disk_f%UP1REL%_kde_5_x86_64.qcow2",
|
||||
"BOOTFROM": "c",
|
||||
"DESKTOP": "kde",
|
||||
"ROOT_PASSWORD": "weakpassword",
|
||||
"TEST_TARGET": "COMPOSE",
|
||||
"UPGRADE": "1",
|
||||
"GUI_UPGRADE": "1",
|
||||
"USER_LOGIN": "test",
|
||||
"USER_PASSWORD": "weakpassword"
|
||||
}
|
||||
},
|
||||
"upgrade_minimal": {
|
||||
"profiles": {
|
||||
"fedora-universal-aarch64-*-aarch64": 30,
|
||||
|
129
tests/graphical_upgrade_prerequisites.pm
Normal file
129
tests/graphical_upgrade_prerequisites.pm
Normal file
@ -0,0 +1,129 @@
|
||||
use base "installedtest";
|
||||
use strict;
|
||||
use testapi;
|
||||
use utils;
|
||||
|
||||
sub run {
|
||||
my $self = shift;
|
||||
my $release = get_release_number;
|
||||
my $rawrel = get_var("RAWREL");
|
||||
my $curr = get_var("TEST") =~ "upgrade_2" ? get_var("UP2REL") : get_var("UP1REL");
|
||||
my $desktop = get_var("DESKTOP");
|
||||
my $user = get_var("USER_LOGIN", "test");
|
||||
my $pword = get_var("USER_PASSWORD", "weakpassword");
|
||||
|
||||
# As this is designed, the 'upgrade_preinstall' test script
|
||||
# runs before this one and ends on the root console. Therefore,
|
||||
# we can assume that we are still on that root console, so
|
||||
# we can safely use script assertions.
|
||||
|
||||
# Make serial console writable for everyone, so that we
|
||||
# can use script assertions for further commands as well.
|
||||
assert_script_run("chmod 666 /dev/${serialdev}");
|
||||
|
||||
if ($desktop eq "gnome") {
|
||||
# Install Gnome specific packages
|
||||
assert_script_run("dnf install -y jq dbus-x11");
|
||||
# FIXME on Fedora 40, update gnome-software from updates-testing
|
||||
# to ensure we have the fix for
|
||||
# https://gitlab.gnome.org/GNOME/gnome-software/-/issues/2514
|
||||
# drop this when the update is stable
|
||||
if ($curr eq "40") {
|
||||
assert_script_run("dnf -y --enablerepo=updates-testing update gnome-software", 180);
|
||||
}
|
||||
# Leave the CLI and come back to the login screen.
|
||||
desktop_vt();
|
||||
# Log onto the graphical session
|
||||
send_key("ret");
|
||||
wait_still_screen(1);
|
||||
type_very_safely("$pword\n");
|
||||
handle_welcome_screen();
|
||||
check_desktop();
|
||||
# After the login, let us wait that everything settles
|
||||
# and that we are not too quick on the system.
|
||||
wait_still_screen(5);
|
||||
# According to the ticket, the 'fedora.json' file
|
||||
# which lists the available versions will be created
|
||||
# after the Software starts. Let's start it then on Gnome.
|
||||
menu_launch_type("software");
|
||||
# When Software is started for the first time, it asks whether
|
||||
# a user wants to use Third Party software. We want to Ignore
|
||||
# this and proceed, so if we see that we click on Ignore.
|
||||
if (check_screen("gnome_software_ignore", timeout => 60)) {
|
||||
click_lastmatch();
|
||||
}
|
||||
# Wait a couple of second, just in case the file needs a little
|
||||
# longer to be created.
|
||||
sleep(10);
|
||||
# Close Software
|
||||
send_key("alt-f4");
|
||||
}
|
||||
|
||||
# Switch back to the CLI for further settings.
|
||||
$self->root_console(tty => 3);
|
||||
|
||||
# For Gnome desktop only.
|
||||
if ($desktop eq "gnome") {
|
||||
# FIXME workaround for https://bugzilla.redhat.com/show_bug.cgi?id=2268590
|
||||
# upgrade fails if modular repo definitions are present
|
||||
# remove when that is fixed
|
||||
unless (script_run "ls /etc/yum.repos.d/*modul*") {
|
||||
record_soft_failure "Modular repos present! Upgrade will fail, so removing";
|
||||
assert_script_run "rm -f /etc/yum.repos.d/*modul*";
|
||||
}
|
||||
# Switch to a user account
|
||||
enter_cmd("su -l $user");
|
||||
# Navigate to the version file directory
|
||||
assert_script_run("cd ~/.cache/gnome-software/fedora-pkgdb-collections");
|
||||
# Replace the word 'devel' with the Rawhide version number
|
||||
# so Rawhide behaves like other releases, if we're upgrading
|
||||
# to Rawhide
|
||||
if ($release eq $rawrel) {
|
||||
assert_script_run("jq '(.collections |= map(if .version == \"devel\" then .koji_name = \"f$rawrel\" | .version = \"$rawrel\" else . end))' fedora.json > fedora-updated.json");
|
||||
assert_script_run("mv fedora-updated.json fedora.json");
|
||||
}
|
||||
# Now make sure the versions we're trying to upgrade from and to
|
||||
# are both 'active'
|
||||
assert_script_run("jq '(.collections |= map(if .version == \"$release\" or .version == \"$curr\" then .status = \"Active\" else . end))' fedora.json > fedora-updated.json");
|
||||
assert_script_run("mv fedora-updated.json fedora.json");
|
||||
# upload the modified file for debugging
|
||||
upload_logs("fedora.json", failok => 1);
|
||||
|
||||
# Disable blanking the screen on inactivity, because if the screen gets switched off
|
||||
# we will have no way to make it active again.
|
||||
assert_script_run("dbus-launch --exit-with-session gsettings set org.gnome.desktop.screensaver idle-activation-enabled false");
|
||||
assert_script_run("dbus-launch --exit-with-session gsettings set org.gnome.desktop.screensaver lock-enabled false");
|
||||
assert_script_run("dbus-launch --exit-with-session gsettings set org.gnome.desktop.lockdown disable-lock-screen true");
|
||||
# Logout the regular user
|
||||
enter_cmd("exit");
|
||||
}
|
||||
# For KDE desktop only.
|
||||
elsif ($desktop eq "kde") {
|
||||
# Replace "rawhide" with the Rawhide version number if we're
|
||||
# upgrading to Rawhide
|
||||
assert_script_run("sed -i 's,rawhide,$rawrel,g' /usr/share/metainfo/org.fedoraproject.fedora.metainfo.xml") if ($release eq $rawrel);
|
||||
# Now mark the release we want to upgrade to as stable
|
||||
assert_script_run("sed -i 's,version=\"$release\" type=\".*\" date=,version=\"$release\" type=\"stable\" date=,g' /usr/share/metainfo/org.fedoraproject.fedora.metainfo.xml");
|
||||
# Upload the modified file for debugging
|
||||
upload_logs("/usr/share/metainfo/org.fedoraproject.fedora.metainfo.xml", failok => 1);
|
||||
# Switch to the regular user
|
||||
enter_cmd("su -l $user");
|
||||
# Wipe last update notification time
|
||||
assert_script_run("kwriteconfig5 --file PlasmaDiscoverUpdates --group Global --key LastNotificationTime --delete");
|
||||
# Disable the screen locker
|
||||
assert_script_run("kwriteconfig5 --file kscreenlockerrc --group Daemon --key Autolock false qdbus org.freedesktop.ScreenSaver /ScreenSaver configure");
|
||||
# Exit regular user
|
||||
enter_cmd("exit");
|
||||
}
|
||||
|
||||
# Reboot system to load changes
|
||||
enter_cmd("reboot");
|
||||
}
|
||||
|
||||
sub test_flags {
|
||||
return {fatal => 1};
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
# vim: set sw=4 et:
|
96
tests/graphical_upgrade_run.pm
Normal file
96
tests/graphical_upgrade_run.pm
Normal file
@ -0,0 +1,96 @@
|
||||
use base "installedtest";
|
||||
use strict;
|
||||
use testapi;
|
||||
use utils;
|
||||
|
||||
# This method does the basic login to a DE,
|
||||
# it can distinguish between Gnome and KDE.
|
||||
# We are using it to make the code a little
|
||||
# lighter.
|
||||
sub session_login {
|
||||
my $desktop = shift;
|
||||
my $pword = get_var("USER_PASSWORD") // "weakpassword";
|
||||
if ($desktop eq "gnome") {
|
||||
# For Gnome, we need to press Enter first
|
||||
# to show the password field, then we type
|
||||
# in the password.
|
||||
send_key("ret");
|
||||
wait_still_screen(1);
|
||||
}
|
||||
# For both DEs
|
||||
type_very_safely("$pword\n");
|
||||
}
|
||||
|
||||
sub run {
|
||||
my $self = shift;
|
||||
my $rawrel = get_var("RAWREL");
|
||||
my $user = get_var("USER_LOGIN") // "test";
|
||||
my $pword = get_var("USER_PASSWORD") // "weakpassword";
|
||||
my $desktop = get_var("DESKTOP");
|
||||
|
||||
# The previous test, 'graphical_upgrade_prerequsites' reset
|
||||
# the machine, so we will deal with booting it and
|
||||
# login to the $desktop.
|
||||
boot_to_login_screen();
|
||||
session_login($desktop);
|
||||
# If we are on Gnome, we have seen the welcome screen already
|
||||
# in the previous step, so we do not want to repeat this.
|
||||
# However, for KDE we will deal with it.
|
||||
if ($desktop eq "kde") {
|
||||
handle_welcome_screen();
|
||||
}
|
||||
# Let's check, that the desktop is shown.
|
||||
check_desktop();
|
||||
|
||||
# Start the package manager application depending
|
||||
# on which DE we are on.
|
||||
my $pkgmgr = "software";
|
||||
$pkgmgr = "discover" if ($desktop eq "kde");
|
||||
menu_launch_type($pkgmgr);
|
||||
|
||||
# On Gnome, the upgrade is safely visible when
|
||||
# we visit the Update page by clicking on the
|
||||
# Update icon. Let's click on that icon on
|
||||
# both DEs, just to make sure.
|
||||
assert_and_click("desktop_package_tool_update");
|
||||
|
||||
# Click the appropriate button to download the upgrade.
|
||||
assert_and_click("desktop_package_tool_upgrade_system", timeout => 180);
|
||||
|
||||
if ($desktop eq "gnome") {
|
||||
# Restart the computer to apply upgrades, when the download is complete.
|
||||
# Downloading the upgrade packages may take a long time
|
||||
# so let's check until we find it.
|
||||
assert_and_click("desktop_package_tool_restart_upgrade", timeout => 1200);
|
||||
assert_screen("auth_required");
|
||||
|
||||
# Type the password to confirm.
|
||||
type_very_safely("$pword\n");
|
||||
|
||||
# Click on the 'restart and install' button
|
||||
# to restart into the upgrade session.
|
||||
assert_and_click("gnome_reboot_confirm");
|
||||
}
|
||||
elsif ($desktop eq "kde") {
|
||||
# Click on Update all
|
||||
assert_and_click("desktop_package_tool_update_apply", timeout => 1200);
|
||||
# Once we click that button, we can check the checkbutton
|
||||
# for restarting the computer automatically.
|
||||
assert_and_click("desktop_package_tool_restart_automatically");
|
||||
# When we see auth_required, it means the restart has been triggered
|
||||
# and we need to authorize it
|
||||
while (!check_screen("auth_required")) {
|
||||
sleep 15;
|
||||
}
|
||||
type_very_safely("$pword\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub test_flags {
|
||||
return {fatal => 1};
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
# vim: set sw=4 et:
|
Loading…
Reference in New Issue
Block a user