diff --git a/lib/installedtest.pm b/lib/installedtest.pm index b48971d3..125c5ce7 100644 --- a/lib/installedtest.pm +++ b/lib/installedtest.pm @@ -101,6 +101,16 @@ sub repo_setup { script_run "cat /etc/yum.repos.d/{fedora,fedora-rawhide}.repo"; } +# switch to the desktop where the VT is +sub desktop_vt { + if (get_var("DESKTOP") eq 'gnome') { + send_key 'ctrl-alt-f2'; + } + else { + send_key 'ctrl-alt-f1'; + } +} + 1; # vim: set sw=4 et: diff --git a/needles/gnome/desktop_package_tool_update.json b/needles/gnome/desktop_package_tool_update.json new file mode 100644 index 00000000..b763ede5 --- /dev/null +++ b/needles/gnome/desktop_package_tool_update.json @@ -0,0 +1,16 @@ +{ + "properties": [], + "tags": [ + "desktop_package_tool_update", + "DESKTOP-gnome" + ], + "area": [ + { + "xpos": 600, + "ypos": 40, + "width": 54, + "height": 21, + "type": "match" + } + ] +} diff --git a/needles/gnome/desktop_package_tool_update.png b/needles/gnome/desktop_package_tool_update.png new file mode 100644 index 00000000..adfb9d72 Binary files /dev/null and b/needles/gnome/desktop_package_tool_update.png differ diff --git a/needles/gnome/desktop_package_tool_update_apply.json b/needles/gnome/desktop_package_tool_update_apply.json new file mode 100644 index 00000000..3e6c081e --- /dev/null +++ b/needles/gnome/desktop_package_tool_update_apply.json @@ -0,0 +1,16 @@ +{ + "tags": [ + "DESKTOP-gnome", + "desktop_package_tool_update_apply" + ], + "area": [ + { + "xpos": 849, + "ypos": 44, + "width": 106, + "height": 13, + "type": "match" + } + ], + "properties": [] +} \ No newline at end of file diff --git a/needles/gnome/desktop_package_tool_update_apply.png b/needles/gnome/desktop_package_tool_update_apply.png new file mode 100644 index 00000000..d4059ee7 Binary files /dev/null and b/needles/gnome/desktop_package_tool_update_apply.png differ diff --git a/needles/gnome/desktop_package_tool_update_refresh.json b/needles/gnome/desktop_package_tool_update_refresh.json new file mode 100644 index 00000000..ffb38d84 --- /dev/null +++ b/needles/gnome/desktop_package_tool_update_refresh.json @@ -0,0 +1,16 @@ +{ + "area": [ + { + "xpos": 12, + "ypos": 39, + "width": 20, + "height": 21, + "type": "match" + } + ], + "tags": [ + "DESKTOP-gnome", + "desktop_package_tool_update_refresh" + ], + "properties": [] +} \ No newline at end of file diff --git a/needles/gnome/desktop_package_tool_update_refresh.png b/needles/gnome/desktop_package_tool_update_refresh.png new file mode 100644 index 00000000..1cb60d1b Binary files /dev/null and b/needles/gnome/desktop_package_tool_update_refresh.png differ diff --git a/needles/gnome/gnome_reboot_confirm.json b/needles/gnome/gnome_reboot_confirm.json new file mode 100644 index 00000000..e016631a --- /dev/null +++ b/needles/gnome/gnome_reboot_confirm.json @@ -0,0 +1,16 @@ +{ + "properties": [], + "tags": [ + "DESKTOP-gnome", + "gnome_reboot_confirm" + ], + "area": [ + { + "xpos": 588, + "ypos": 517, + "width": 110, + "height": 18, + "type": "match" + } + ] +} \ No newline at end of file diff --git a/needles/gnome/gnome_reboot_confirm.png b/needles/gnome/gnome_reboot_confirm.png new file mode 100644 index 00000000..31afca25 Binary files /dev/null and b/needles/gnome/gnome_reboot_confirm.png differ diff --git a/needles/gnome/gnome_software_welcome.json b/needles/gnome/gnome_software_welcome.json new file mode 100644 index 00000000..0ee64deb --- /dev/null +++ b/needles/gnome/gnome_software_welcome.json @@ -0,0 +1,16 @@ +{ + "area": [ + { + "xpos": 509, + "ypos": 561, + "width": 62, + "height": 18, + "type": "match" + } + ], + "tags": [ + "DESKTOP-gnome", + "gnome_software_welcome" + ], + "properties": [] +} \ No newline at end of file diff --git a/needles/gnome/gnome_software_welcome.png b/needles/gnome/gnome_software_welcome.png new file mode 100644 index 00000000..33d672ce Binary files /dev/null and b/needles/gnome/gnome_software_welcome.png differ diff --git a/needles/kde/desktop_expand_notifications.json b/needles/kde/desktop_expand_notifications.json new file mode 100644 index 00000000..1a3b08ef --- /dev/null +++ b/needles/kde/desktop_expand_notifications.json @@ -0,0 +1,16 @@ +{ + "area": [ + { + "xpos": 846, + "ypos": 743, + "width": 17, + "height": 18, + "type": "match" + } + ], + "tags": [ + "DESKTOP-kde", + "desktop_expand_notifications" + ], + "properties": [] +} diff --git a/needles/kde/desktop_expand_notifications.png b/needles/kde/desktop_expand_notifications.png new file mode 100644 index 00000000..5307e244 Binary files /dev/null and b/needles/kde/desktop_expand_notifications.png differ diff --git a/needles/kde/desktop_package_tool_update.json b/needles/kde/desktop_package_tool_update.json new file mode 100644 index 00000000..02141b22 --- /dev/null +++ b/needles/kde/desktop_package_tool_update.json @@ -0,0 +1,16 @@ +{ + "area": [ + { + "xpos": 613, + "ypos": 509, + "width": 19, + "height": 18, + "type": "match" + } + ], + "tags": [ + "DESKTOP-kde", + "desktop_package_tool_update" + ], + "properties": [] +} diff --git a/needles/kde/desktop_package_tool_update.png b/needles/kde/desktop_package_tool_update.png new file mode 100644 index 00000000..3d98203b Binary files /dev/null and b/needles/kde/desktop_package_tool_update.png differ diff --git a/needles/kde/desktop_package_tool_update_apply.json b/needles/kde/desktop_package_tool_update_apply.json new file mode 100644 index 00000000..80278b9c --- /dev/null +++ b/needles/kde/desktop_package_tool_update_apply.json @@ -0,0 +1,16 @@ +{ + "area": [ + { + "xpos": 749, + "ypos": 705, + "width": 100, + "height": 15, + "type": "match" + } + ], + "tags": [ + "DESKTOP-kde", + "desktop_package_tool_update_apply" + ], + "properties": [] +} \ No newline at end of file diff --git a/needles/kde/desktop_package_tool_update_apply.png b/needles/kde/desktop_package_tool_update_apply.png new file mode 100644 index 00000000..3f1d1f86 Binary files /dev/null and b/needles/kde/desktop_package_tool_update_apply.png differ diff --git a/needles/kde/desktop_package_tool_update_done.json b/needles/kde/desktop_package_tool_update_done.json new file mode 100644 index 00000000..c7aa07aa --- /dev/null +++ b/needles/kde/desktop_package_tool_update_done.json @@ -0,0 +1,16 @@ +{ + "properties": [], + "area": [ + { + "xpos": 634, + "ypos": 665, + "width": 41, + "height": 44, + "type": "match" + } + ], + "tags": [ + "DESKTOP-kde", + "desktop_package_tool_update_done" + ] +} \ No newline at end of file diff --git a/needles/kde/desktop_package_tool_update_done.png b/needles/kde/desktop_package_tool_update_done.png new file mode 100644 index 00000000..32036289 Binary files /dev/null and b/needles/kde/desktop_package_tool_update_done.png differ diff --git a/needles/kde/desktop_package_tool_update_refresh.json b/needles/kde/desktop_package_tool_update_refresh.json new file mode 100644 index 00000000..184e4db6 --- /dev/null +++ b/needles/kde/desktop_package_tool_update_refresh.json @@ -0,0 +1,16 @@ +{ + "tags": [ + "DESKTOP-kde", + "desktop_package_tool_update_refresh" + ], + "area": [ + { + "xpos": 760, + "ypos": 704, + "width": 124, + "height": 17, + "type": "match" + } + ], + "properties": [] +} diff --git a/needles/kde/desktop_package_tool_update_refresh.png b/needles/kde/desktop_package_tool_update_refresh.png new file mode 100644 index 00000000..45f3ffd6 Binary files /dev/null and b/needles/kde/desktop_package_tool_update_refresh.png differ diff --git a/templates b/templates index c2972b5a..ee909aea 100755 --- a/templates +++ b/templates @@ -303,6 +303,28 @@ }, test_suite => { name => "base_update_cli" }, }, + { + machine => { name => "64bit" }, + prio => 30, + product => { + arch => "x86_64", + distri => "fedora", + flavor => "Workstation-live-iso", + version => "*", + }, + test_suite => { name => "desktop_update_graphical" }, + }, + { + machine => { name => "64bit" }, + prio => 32, + product => { + arch => "x86_64", + distri => "fedora", + flavor => "KDE-live-iso", + version => "*", + }, + test_suite => { name => "desktop_update_graphical" }, + }, { machine => { name => "64bit" }, prio => 30, @@ -2078,6 +2100,15 @@ { key => "WORKER_CLASS", value => "tap" }, ], }, + { + name => "desktop_update_graphical", + settings => [ + { key => "POSTINSTALL", value => "desktop_update_graphical" }, + { key => "START_AFTER_TEST", value => "install_default_upload" }, + { key => "BOOTFROM", value => "c" }, + { key => "HDD_1", value => "disk_%FLAVOR%_%MACHINE%.qcow2" }, + ], + }, { name => "desktop_terminal", settings => [ diff --git a/tests/desktop_update_graphical_postinstall.pm b/tests/desktop_update_graphical_postinstall.pm new file mode 100644 index 00000000..d97aa97c --- /dev/null +++ b/tests/desktop_update_graphical_postinstall.pm @@ -0,0 +1,78 @@ +use base "installedtest"; +use strict; +use testapi; +use packagetest; + +sub run { + my $self = shift; + my $desktop = get_var('DESKTOP'); + # use a tty console for repo config and package prep + $self->root_console(tty=>3); + assert_script_run 'dnf config-manager --set-disabled updates-testing'; + prepare_test_packages; + # get back to the desktop + $self->desktop_vt(); + # run the updater + if ($desktop eq 'kde') { + # KDE team tells me the 'preferred' update method is the + # systray applet + assert_and_click 'desktop_expand_notifications'; + } + else { + # this launches GNOME Software on GNOME, dunno for any other + # desktop yet + $self->menu_launch_type('update'); + } + # GNOME Software has a welcome screen, get rid of it if it shows + # up (but don't fail if it doesn't, we're not testing that) + if ($desktop eq 'gnome' && check_screen 'gnome_software_welcome', 10) { + send_key 'ret'; + } + # go to the 'update' interface. For GNOME, we may be waiting + # some time at a 'Software catalog is being loaded' screen. + if ($desktop eq 'gnome') { + for my $n (1..5) { + last if (check_screen 'desktop_package_tool_update', 120); + mouse_set 10, 10; + mouse_hide; + } + } + assert_and_click 'desktop_package_tool_update'; + # refresh updates + assert_and_click 'desktop_package_tool_update_refresh'; + # wait for refresh, then apply updates + for my $n (1..5) { + last if (check_screen 'desktop_package_tool_update_apply', 120); + mouse_set 10, 10; + mouse_hide; + } + assert_and_click 'desktop_package_tool_update_apply'; + # on GNOME, wait for reboots. + if ($desktop eq 'gnome') { + # handle reboot confirm screen which pops up when user is + # logged in (but don't fail if it doesn't as we're not testing + # that) + if (check_screen 'gnome_reboot_confirm', 15) { + send_key 'ret'; + } + assert_screen 'graphical_login', 300; + } + else { + assert_screen 'desktop_package_tool_update_done', 180; + } + # back to console to verify updates + $self->root_console(tty=>3); + verify_updated_packages; +} + +sub test_flags { + # without anything - rollback to 'lastgood' snapshot if failed + # 'fatal' - whole test suite is in danger if this fails + # 'milestone' - after this test succeeds, update 'lastgood' + # 'important' - if this fails, set the overall state to 'fail' + return { fatal => 1 }; +} + +1; + +# vim: set sw=4 et: