Compare commits

...

18 Commits

Author SHA1 Message Date
Lukáš Růžička 5a14a27ced Work on KDE version. 2024-05-07 10:24:30 +02:00
Lukáš Růžička 015da735cf Readd needles. 2024-05-07 10:24:30 +02:00
Lukáš Růžička 84b7b8e70f Clean unused needles. 2024-05-07 10:24:30 +02:00
Lukáš Růžička 5a4f2ffbfb Add needles. 2024-05-07 10:24:30 +02:00
Lukáš Růžička 2be06191d5 Finish the tests for Gnome (no needle purge) 2024-05-07 10:24:30 +02:00
Lukáš Růžička d9df504671 Start rewriting for SSH 2024-05-07 10:24:30 +02:00
Lukáš Růžička f8b0f161aa Try first run. 2024-05-07 10:24:30 +02:00
Lukáš Růžička be0d24443f Rewrite partly for SSH. 2024-05-07 10:24:30 +02:00
Lukas Ruzicka 806896e917 Create test suite for Desktop Keyring
This adds both the Gnome and the KDE tests to test the
Desktop Keyring. After a discussion with the Brno team,
how this could be tested without the need to rely on
external servers to log into, we set up a local FTP server,
we will log into it and remember the credentials and verify
that the credentials will be stored in the keyring correctly.
2024-05-07 10:24:30 +02:00
Adam Williamson 3b3e00f123 flatpak: proxy the connection to flathub
This is intended to reduce the amount of traffic we generate to
flathub, particularly so we can run this test on updates as well
as composes. We have to set a proxy and trust an SSL cert.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2024-05-06 15:12:15 -07:00
Adam Williamson 3a6e65914a Update kparted runs needle
Signed-off-by: Adam Williamson <awilliam@redhat.com>
2024-05-06 15:11:50 -07:00
Adam Williamson b782c44ee9 Update a couple of straggler needles for GTK 4.15
The Japanese one was hidden by the UEFI encryption passphrase
entry bug, and the weather one we only hit when the test runs
at an unusual time.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2024-05-06 15:10:53 -07:00
Adam Williamson 637a411fd6 Add yet another KDE menu button needle variant
Signed-off-by: Adam Williamson <awilliam@redhat.com>
2024-05-06 15:09:49 -07:00
Adam Williamson 57329a69fc Update some Maps needles for upstream metadata changes
Signed-off-by: Adam Williamson <awilliam@redhat.com>
2024-05-06 15:09:11 -07:00
Adam Williamson 3da32a643f Update some loupe needles for GTK 4.15
These are screens that weren't previously reached due to a bug
that was recently fixed.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2024-05-06 15:08:13 -07:00
Adam Williamson a353caeb90 Enable testing of COPRs, fix some issues, enable package checks
This works more or less like testing side tags. We also fix up
some flow problems with this path (that also affect the side tag
case), and enable the package checks on this path - it's not too
hard really, we just need to write the updatepkgs file when we
set up the repo, which we can do with dnf repoquery.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2024-05-03 14:40:34 -07:00
Adam Williamson 1edde53988 Try and avoid launcher typing issues in more KDE tests
This is the same thing we do for the app_startstop tests in
aaa_setup, applied to a couple of other places we use
menu_launch_type in KDE and it's having trouble.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2024-05-03 14:22:59 -07:00
Adam Williamson d142d2f4a1 zezere: update for new default ssh key algorithm
ssh-keygen now defaults to ed25519, so this test needs updating.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2024-04-29 10:32:14 -07:00
80 changed files with 927 additions and 48 deletions

View File

@ -570,13 +570,24 @@ sub setup_repos {
);
my $arch = get_var("ARCH");
my $tag = get_var("TAG");
# write the tag repo config if appropriate
assert_script_run 'printf "[openqa-testtag]\nname=openqa-testtag\nbaseurl=https://kojipkgs.fedoraproject.org/repos/' . "$tag/latest/$arch" . '/\ncost=2000\nenabled=1\ngpgcheck=0\n" > /etc/yum.repos.d/openqa-testtag.repo' if ($tag && !$args{waonly});
my $copr = get_var("COPR");
if (($tag || $copr) && !$args{waonly}) {
# write a side tag or COPR repo config, enabled or disabled
# according to the 'configs' arg
assert_script_run 'printf "[openqa-testtag]\nname=openqa-testtag\nbaseurl=' . get_var("UPDATE_OR_TAG_REPO") . '/\ncost=2000\nenabled=' . $args{configs} . '\ngpgcheck=0\npriority=1\n" > /etc/yum.repos.d/openqa-testtag.repo';
# write out the info files
assert_script_run 'dnf --disablerepo=* --enablerepo=openqa-testtag repoquery --qf "%{SOURCERPM} %{NAME} %{EPOCH} %{VERSION} %{RELEASE}" | sort -u > /mnt/updatepkgs.txt';
# the | xargs here is a wacky trick that converts newlines to
# spaces - unlike rpm, dnf always puts every package on a new
# line, which we don't want here
# https://unix.stackexchange.com/a/110759
assert_script_run 'dnf --disablerepo=* --enablerepo=openqa-testtag repoquery --qf "%{NAME} " | xargs > /mnt/updatepkgnames.txt';
}
my @was = get_workarounds($args{version});
# bail if there are no workarounds:
# * if we're in workarounds-only mode
# * if we're testing a side tag (so no packages to dl)
if ($args{waonly} || $tag) {
# * if we're testing a side tag or COPR (so no packages to dl)
if ($args{waonly} || $tag || $copr) {
return unless (@was);
}
# if we got this far, we're definitely downloading *something*
@ -619,14 +630,14 @@ sub setup_repos {
die "Neither ADVISORY_NVRS nor KOJITASK set! Don't know what to do" unless ($args{waonly});
}
my $cmd = "/usr/local/bin/setup_repos.py";
# don't download updates if we're in workarounds-only mode or testing a tag
$cmd .= " -u $udstring" unless ($args{waonly} || $tag);
# don't download updates if we're in workarounds-only mode or testing a tag or COPR
$cmd .= " -u $udstring" unless ($args{waonly} || $tag || $copr);
$cmd .= " -w $wastring" if (@was);
# write repo config files if asked
$cmd .= " -c" if ($args{configs});
$cmd .= " $arch";
assert_script_run $cmd, $timeout;
unless ($args{waonly} || $tag) {
unless ($args{waonly} || $tag || $copr) {
upload_logs "/mnt/updatepkgnames.txt";
upload_logs "/mnt/updatepkgs.txt";
}
@ -635,8 +646,9 @@ sub setup_repos {
sub _repo_setup_updates {
# Appropriate repo setup steps for testing a Bodhi update
my $tag = get_var("TAG");
my $copr = get_var("COPR");
# Check if we already ran, bail if so
if ($tag) {
if ($tag || $copr) {
# for TAG case, check for the repo file
return unless script_run "test -f /etc/yum.repos.d/openqa-testtag.repo";
}
@ -670,8 +682,8 @@ sub _repo_setup_updates {
select_console("virtio-console");
console_login();
# prepare the directory the packages will be downloaded to, unless we're
# testing a side tag
_prepare_update_mount() unless ($tag);
# testing a side tag or COPR
_prepare_update_mount() unless ($tag || $copr);
# on CANNED, we need to enter the toolbox at this point
if (get_var("CANNED")) {
@ -829,7 +841,6 @@ sub gnome_initial_setup {
@_
);
my $relnum = get_release_number;
my $advortask = get_var("ADVISORY_OR_TASK");
# note: when 'language' is "skipped", it's turned into a 'welcome'
# page, which has a "Start Setup" button, not a "Next" button
@ -1203,8 +1214,6 @@ sub quit_with_shortcut {
# are currently installed. This is here so we can do it both in
# _advisory_post and post_fail_hook.
sub advisory_get_installed_packages {
# can't do anything useful when testing a side tag
return if (get_var("TAG"));
# bail out if the file doesn't exist: this is in case we get
# here in the post-fail hook but we failed before creating it
return if script_run "test -f /mnt/updatepkgs.txt";
@ -1234,8 +1243,6 @@ sub advisory_check_nonmatching_packages {
wrapper => "",
@_
);
# can't do anything useful when testing a side tag
return if (get_var("TAG"));
# bail out if the file doesn't exist: this is in case we get
# here in the post-fail hook but we failed before creating it
return if script_run "test -f /mnt/updatepkgnames.txt";
@ -1245,9 +1252,13 @@ sub advisory_check_nonmatching_packages {
script_run 'touch /tmp/installedupdatepkgs.txt';
my $rpmcmd = "rpm";
my $timeout = 180;
# longer if we have a lot of packages
my $pkgs = script_output "wc -l /mnt/updatepkgs.txt";
$timeout *= 2 if ($pkgs > 100);
$timeout *= 2 if ($pkgs > 400);
my $wrapper = $args{wrapper};
$rpmcmd = "$wrapper rpm" if ($wrapper);
$timeout = 360 if ($wrapper);
$timeout *= 2 if ($wrapper);
# this creates /tmp/installedupdatepkgs.txt as a sorted list of installed
# packages with the same name as packages from the update, in the same form
# as /mnt/updatepkgs.txt. The '--last | head -1' tries to handle the

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 271,
"ypos": 113,
"width": 142,
"height": 24,
"type": "match"
}
],
"properties": [],
"tags": [
"apps_run_seahorse"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 521,
"ypos": 304,
"width": 195,
"height": 47,
"type": "match"
}
],
"properties": [],
"tags": [
"keyring_keys_values"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

View File

@ -0,0 +1,24 @@
{
"area": [
{
"xpos": 184,
"ypos": 329,
"width": 107,
"height": 13,
"type": "match",
"match": 90
},
{
"xpos": 185,
"ypos": 383,
"width": 111,
"height": 13,
"type": "match",
"match": 90
}
],
"properties": [],
"tags": [
"keyring_multiple_instances"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 383,
"ypos": 436,
"width": 133,
"height": 17,
"type": "match"
}
],
"properties": [],
"tags": [
"keyring_open_when_logged"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 442,
"ypos": 261,
"width": 126,
"height": 19,
"type": "match"
}
],
"properties": [],
"tags": [
"keyring_seahorse_details_shown"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 35,
"ypos": 121,
"width": 38,
"height": 19,
"type": "match"
}
],
"properties": [],
"tags": [
"keyring_seahorse_login"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 33,
"ypos": 121,
"width": 40,
"height": 21,
"type": "match"
}
],
"properties": [],
"tags": [
"keyring_seahorse_login"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 338,
"ypos": 111,
"width": 169,
"height": 26,
"type": "match"
}
],
"properties": [],
"tags": [
"keyring_seahorse_login_details"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 440,
"ypos": 262,
"width": 111,
"height": 22,
"type": "match"
}
],
"properties": [],
"tags": [
"keyring_seahorse_password_shown"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 615,
"ypos": 260,
"width": 27,
"height": 26,
"type": "match"
}
],
"properties": [],
"tags": [
"keyring_seahorse_show_password"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 586,
"ypos": 510,
"width": 58,
"height": 16,
"type": "match"
}
],
"properties": [],
"tags": [
"keyring_sshkey_unlock"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"height": 21,
"type": "match",
"ypos": 610,
"xpos": 353,
"width": 57
}
],
"properties": [],
"tags": [
"loupe_about_credits"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"type": "match",
"height": 101,
"ypos": 207,
"width": 186,
"xpos": 419
}
],
"properties": [],
"tags": [
"loupe_about_shown"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

View File

@ -0,0 +1,22 @@
{
"area": [
{
"width": 116,
"xpos": 358,
"ypos": 202,
"height": 21,
"type": "match"
},
{
"width": 92,
"xpos": 355,
"height": 19,
"type": "match",
"ypos": 425
}
],
"properties": [],
"tags": [
"loupe_credits_shown"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"type": "match",
"height": 16,
"ypos": 409,
"width": 134,
"xpos": 806
}
],
"properties": [],
"tags": [
"loupe_menu_about"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"ypos": 296,
"height": 24,
"type": "match",
"width": 140,
"xpos": 803
}
],
"properties": [],
"tags": [
"loupe_menu_set_wallpaper"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"type": "match",
"height": 20,
"ypos": 263,
"width": 35,
"xpos": 700
}
],
"properties": [],
"tags": [
"loupe_set_wallpaper"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 KiB

View File

@ -0,0 +1,22 @@
{
"area": [
{
"ypos": 192,
"type": "match",
"height": 60,
"xpos": 376,
"width": 98
},
{
"ypos": 105,
"type": "match",
"height": 36,
"xpos": 456,
"width": 52
}
],
"properties": [],
"tags": [
"maps_info_vilnius"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 944 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 415,
"width": 197,
"ypos": 362,
"type": "match",
"height": 162
}
],
"properties": [],
"tags": [
"maps_map_zoomed"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"ypos": 97,
"type": "match",
"height": 34,
"xpos": 274,
"width": 80
}
],
"properties": [],
"tags": [
"maps_select_poysdorf"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"height": 34,
"type": "match",
"ypos": 97,
"xpos": 274,
"width": 80
}
],
"properties": [],
"tags": [
"maps_select_poysdorf"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 361,
"ypos": 104,
"width": 141,
"height": 21,
"type": "match"
}
],
"properties": [],
"tags": [
"nautilus_connection_established"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 260,
"ypos": 608,
"width": 138,
"height": 20,
"type": "match"
}
],
"properties": [],
"tags": [
"nautilus_enter_address"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 258,
"ypos": 610,
"width": 140,
"height": 19,
"type": "match"
}
],
"properties": [],
"tags": [
"nautilus_enter_address"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 109,
"ypos": 559,
"width": 109,
"height": 20,
"type": "match"
}
],
"properties": [],
"tags": [
"nautilus_other_locations"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 381,
"ypos": 434,
"width": 142,
"height": 21,
"type": "match"
}
],
"properties": [],
"tags": [
"nautilus_remember_password"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 400,
"width": 55,
"ypos": 219,
"height": 24,
"type": "match"
}
],
"properties": [],
"tags": [
"weather_report_hourly"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"ypos": 307,
"height": 21,
"type": "match",
"width": 97,
"xpos": 335
}
],
"properties": [],
"tags": [
"desktop_input_source_japanese_anthy"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"ypos": 98,
"type": "match",
"height": 18,
"width": 115,
"xpos": 574
}
],
"properties": [],
"tags": [
"kparted_runs"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 459,
"ypos": 96,
"width": 104,
"height": 23,
"type": "match"
}
],
"properties": [],
"tags": [
"kwalletmanager_runs"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 KiB

View File

@ -0,0 +1,17 @@
{
"area": [
{
"xpos": 20,
"width": 25,
"ypos": 728,
"height": 24,
"type": "match"
}
],
"properties": [],
"tags": [
"DESKTOP-kde",
"system_menu_button",
"apps_menu_button"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -20,6 +20,8 @@
"backend": "qemu",
"settings": {
"ARCH_BASE_MACHINE": "aarch64",
"INSECURE_PFLASH_CODE": "/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw",
"INSECURE_PFLASH_VARS": "/usr/share/edk2/aarch64/vars-template-pflash.raw",
"PART_TABLE_TYPE": "gpt",
"QEMU": "aarch64",
"QEMUCPU": "host",
@ -56,6 +58,8 @@
"backend": "qemu",
"settings": {
"ARCH_BASE_MACHINE": "64bit",
"INSECURE_PFLASH_CODE": "/usr/share/edk2/ovmf/OVMF_CODE.fd",
"INSECURE_PFLASH_VARS": "/usr/share/edk2/ovmf/OVMF_VARS.fd",
"PART_TABLE_TYPE": "gpt",
"QEMUCPU": "Nehalem",
"QEMUCPUS": "2",
@ -1353,6 +1357,20 @@
"START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%"
}
},
"desktop_keyring": {
"profiles": {
"fedora-Workstation-live-iso-ppc64le-*-ppc64le": 20,
"fedora-Workstation-live-iso-x86_64-*-64bit": 20,
"fedora-KDE-live-iso-x86_64-*-64bit": 30,
"fedora-Workstation-raw_xz-raw.xz-aarch64-*-aarch64": 22
},
"settings": {
"BOOTFROM": "c",
"HDD_1": "disk_%FLAVOR%_%MACHINE%.qcow2",
"POSTINSTALL_PATH": "tests/applications/keyring",
"START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%"
}
},
"desktop_update_graphical": {
"profiles": {
"fedora-KDE-live-iso-x86_64-*-64bit": 32,

View File

@ -33,6 +33,7 @@ sub run {
}
my $arch = get_var("ARCH");
my $tag = get_var("TAG");
my $copr = get_var("COPR");
my $workarounds = get_workarounds;
if (get_var("NUMDISKS") > 2) {
# put /var/lib/mock on the third disk, so we don't run out of
@ -50,13 +51,13 @@ sub run {
assert_script_run "echo \"include('/etc/mock/fedora-${mockver}-${arch}.cfg')\" > /etc/mock/openqa.cfg";
# make the side and workarounds repos and the serial device available inside the mock root
assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_enable\'] = True" >> /etc/mock/openqa.cfg';
assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/update_repo\', \'/mnt/update_repo\'))" >> /etc/mock/openqa.cfg' unless ($tag);
assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/update_repo\', \'/mnt/update_repo\'))" >> /etc/mock/openqa.cfg' unless ($tag || $copr);
assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/workarounds_repo\', \'/mnt/workarounds_repo\'))" >> /etc/mock/openqa.cfg' if ($workarounds);
assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/dev/' . $serialdev . '\', \'/dev/' . $serialdev . '\'))" >> /etc/mock/openqa.cfg';
my $repos = 'config_opts[\'dnf.conf\'] += \"\"\"\n';
# add the update repo or tag repo to the config
$repos .= '[advisory]\nname=Advisory repo\nbaseurl=file:///mnt/update_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' unless ($tag);
$repos .= '[openqa-testtag]\nname=Tag test repo\nbaseurl=https://kojipkgs.fedoraproject.org/repos/' . "${tag}/latest/${arch}" . '\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' if ($tag);
# add the update, tag or COPR repo to the config
$repos .= '[advisory]\nname=Advisory repo\nbaseurl=file:///mnt/update_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' unless ($tag || $copr);
$repos .= '[openqa-testtag]\nname=Tag test repo\nbaseurl=' . get_var("UPDATE_OR_TAG_REPO") . '\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\npriority=1\n' if ($tag || $copr);
# and the workaround repo
$repos .= '\n[workarounds]\nname=Workarounds repo\nbaseurl=file:///mnt/workarounds_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' if ($workarounds);
# also the buildroot repo, for Rawhide
@ -86,8 +87,8 @@ sub run {
assert_script_run 'sed -i -e "s,dnf-yum,yum,g" teams/cloud/vagrant.xml';
}
# now add the side repo or tag repo to the appropriate repo XML
assert_script_run 'printf "$(head -n -1 ' . $repoxml . ')\n <repository type=\"rpm-md\" alias=\"advisory\" sourcetype=\"baseurl\">\n <source path=\"file:///mnt/update_repo\"/>\n </repository>\n</image>\n" > ' . $repoxml unless ($tag);
assert_script_run 'printf "$(head -n -1 ' . $repoxml . ')\n <repository type=\"rpm-md\" alias=\"openqa-testtag\" sourcetype=\"baseurl\">\n <source path=\"https://kojipkgs.fedoraproject.org/repos/' . "${tag}/latest/${arch}" . '\"/>\n </repository>\n</image>\n" > ' . $repoxml if ($tag);
assert_script_run 'printf "$(head -n -1 ' . $repoxml . ')\n <repository type=\"rpm-md\" alias=\"advisory\" sourcetype=\"baseurl\">\n <source path=\"file:///mnt/update_repo\"/>\n </repository>\n</image>\n" > ' . $repoxml unless ($tag || $copr);
assert_script_run 'printf "$(head -n -1 ' . $repoxml . ')\n <repository type=\"rpm-md\" alias=\"openqa-testtag\" sourcetype=\"baseurl\">\n <source path=\"' . get_var("UPDATE_OR_TAG_REPO") . '\"/>\n </repository>\n</image>\n" > ' . $repoxml if ($tag || $copr);
# and the workarounds repo
assert_script_run 'printf "$(head -n -1 ' . $repoxml . ')\n <repository type=\"rpm-md\" alias=\"workarounds\" sourcetype=\"baseurl\">\n <source path=\"file:///mnt/workarounds_repo\"/>\n </repository>\n</image>\n" > ' . $repoxml if ($workarounds);
# and the buildroot repo, for Rawhide

View File

@ -27,8 +27,8 @@ sub run {
}
$cmd .= " --repo=/etc/yum.repos.d/workarounds.repo" if (get_workarounds);
$cmd .= " --repo=/etc/yum.repos.d/koji-rawhide.repo" if ($version eq $rawrel);
$cmd .= " --repo=/etc/yum.repos.d/advisory.repo" unless (get_var("TAG"));
$cmd .= " --repo=/etc/yum.repos.d/openqa-testtag.repo" if (get_var("TAG"));
$cmd .= " --repo=/etc/yum.repos.d/advisory.repo" unless (get_var("TAG") || get_var("COPR"));
$cmd .= " --repo=/etc/yum.repos.d/openqa-testtag.repo" if (get_var("TAG") || get_var("COPR"));
$cmd .= " ./results";
assert_script_run $cmd, 2400;
# good to have the log around for checks

View File

@ -17,7 +17,7 @@ sub run {
sleep 2;
# confirm empty passphrase
send_key "ret";
my $sshpub = script_output "cat /root/.ssh/id_rsa.pub";
my $sshpub = script_output "cat /root/.ssh/id_ed25519.pub";
# launch Firefox
type_string "startx /usr/bin/firefox -width 1024 -height 768 http://172.16.2.118\n";
# log in as admin

View File

@ -28,6 +28,7 @@ sub run {
my $subv = get_var("SUBVARIANT");
my $lcsubv = lc($subv);
my $tag = get_var("TAG");
my $copr = get_var("COPR");
my $workarounds = get_workarounds;
if (get_var("NUMDISKS") > 2) {
# put /var/lib/mock on the third disk, so we don't run out of
@ -45,13 +46,13 @@ sub run {
assert_script_run "echo \"include('/etc/mock/fedora-${mockver}-${arch}.cfg')\" > /etc/mock/openqa.cfg";
# make the side and workarounds repos and the serial device available inside the mock root
assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_enable\'] = True" >> /etc/mock/openqa.cfg';
assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/update_repo\', \'/mnt/update_repo\'))" >> /etc/mock/openqa.cfg' unless ($tag);
assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/update_repo\', \'/mnt/update_repo\'))" >> /etc/mock/openqa.cfg' unless ($tag || $copr);
assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/workarounds_repo\', \'/mnt/workarounds_repo\'))" >> /etc/mock/openqa.cfg' if ($workarounds);
assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/dev/' . $serialdev . '\', \'/dev/' . $serialdev . '\'))" >> /etc/mock/openqa.cfg';
my $repos = 'config_opts[\'dnf.conf\'] += \"\"\"\n';
# add the update repo or tag repo to the config
$repos .= '[advisory]\nname=Advisory repo\nbaseurl=file:///mnt/update_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' unless ($tag);
$repos .= '[openqa-testtag]\nname=Tag test repo\nbaseurl=https://kojipkgs.fedoraproject.org/repos/' . "${tag}/latest/${arch}" . '\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' if ($tag);
# add the update, tag or COPR repo to the config
$repos .= '[advisory]\nname=Advisory repo\nbaseurl=file:///mnt/update_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' unless ($tag || $copr);
$repos .= '[openqa-testtag]\nname=Tag test repo\nbaseurl=' . get_var("UPDATE_OR_TAG_REPO") . '/\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\npriority=1\n' if ($tag || $copr);
# and the workaround repo
$repos .= '\n[workarounds]\nname=Workarounds repo\nbaseurl=file:///mnt/workarounds_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n' if ($workarounds);
# also the buildroot repo, for Rawhide
@ -68,9 +69,9 @@ sub run {
assert_script_run 'git clone https://pagure.io/fedora-kickstarts.git';
assert_script_run 'cd fedora-kickstarts';
assert_script_run "git checkout ${branch}";
# now add the side repo or tag repo to the appropriate repo ks
assert_script_run 'echo "repo --name=advisory --baseurl=file:///mnt/update_repo" >> ' . $repoks unless ($tag);
assert_script_run 'echo "repo --name=openqa-testtag --baseurl=https://kojipkgs.fedoraproject.org/repos/' . "${tag}/latest/${arch}" . '" >> ' . $repoks if ($tag);
# now add the side, tag or COPR repo to the appropriate repo ks
assert_script_run 'echo "repo --name=advisory --baseurl=file:///mnt/update_repo" >> ' . $repoks unless ($tag || $copr);
assert_script_run 'echo "repo --name=openqa-testtag --baseurl=' . get_var("UPDATE_OR_TAG_REPO") . '" >> ' . $repoks if ($tag || $copr);
# and the workarounds repo
assert_script_run 'echo "repo --name=workarounds --baseurl=file:///mnt/workarounds_repo" >> ' . $repoks if ($workarounds);
# and the buildroot repo, for Rawhide

View File

@ -10,20 +10,18 @@ sub run {
my $rawrel = get_var("RAWREL");
my $repo = $version eq $rawrel ? "fedora-rawhide.repo" : "fedora.repo";
my $branch;
my $releasever;
if ($version eq $rawrel) {
$branch = "main";
$releasever = "Rawhide";
}
else {
$branch = "f${version}";
$releasever = $version;
}
my $advortask = get_var("ADVISORY_OR_TASK");
my $arch = get_var("ARCH");
my $subv = get_var("SUBVARIANT");
my $lcsubv = lc($subv);
my $tag = get_var("TAG");
my $copr = get_var("COPR");
my $workarounds = get_workarounds;
# mount our nice big empty scratch disk as /var/tmp
assert_script_run "rm -rf /var/tmp/*";
@ -43,14 +41,14 @@ sub run {
# now copy the advisory, workaround repo and koji-rawhide config files
assert_script_run 'cp /etc/yum.repos.d/workarounds.repo .' if ($workarounds);
assert_script_run 'cp /etc/yum.repos.d/koji-rawhide.repo .' if ($version eq $rawrel);
assert_script_run 'cp /etc/yum.repos.d/advisory.repo .' unless ($tag);
assert_script_run 'cp /etc/yum.repos.d/openqa-testtag.repo .' if ($tag);
assert_script_run 'cp /etc/yum.repos.d/advisory.repo .' unless ($tag || $copr);
assert_script_run 'cp /etc/yum.repos.d/openqa-testtag.repo .' if ($tag || $copr);
# and add them to the config file
my $repl = 'repos:';
$repl .= '\n - workarounds' if ($workarounds);
$repl .= '\n - koji-rawhide' if ($version eq $rawrel);
$repl .= '\n - advisory' unless ($tag);
$repl .= '\n - openqa-testtag' if ($tag);
$repl .= '\n - advisory' unless ($tag || $copr);
$repl .= '\n - openqa-testtag' if ($tag || $copr);
# Up to Fedora 39, repo definitions are in the subvariant config...
assert_script_run 'sed -i -e "s,repos:,' . $repl . ',g" fedora-' . $lcsubv . '.yaml';
# From Fedora 40 onwards, they're in the common config. Let's just
@ -106,8 +104,8 @@ sub run {
}
$cmd .= " --repo=/etc/yum.repos.d/workarounds.repo" if ($workarounds);
$cmd .= " --repo=/etc/yum.repos.d/koji-rawhide.repo" if ($version eq $rawrel);
$cmd .= " --repo=/etc/yum.repos.d/advisory.repo" unless ($tag);
$cmd .= " --repo=/etc/yum.repos.d/openqa-testtag.repo" if ($tag);
$cmd .= " --repo=/etc/yum.repos.d/advisory.repo" unless ($tag || $copr);
$cmd .= " --repo=/etc/yum.repos.d/openqa-testtag.repo" if ($tag || $copr);
$cmd .= " ./results";
assert_script_run $cmd, 9000;
# good to have the log around for checks

View File

@ -133,9 +133,11 @@ sub run {
assert_script_run "mkdir -p /export";
# get the kickstart
assert_script_run "curl -o /export/root-user-crypted-net.ks https://fedorapeople.org/groups/qa/kickstarts/root-user-crypted-net.ks";
# for update tests, set up the update repository and export it
if (get_var("ADVISORY_OR_TASK") && !get_var("TAG")) {
assert_script_run "echo '/mnt/update_repo 172.16.2.0/24(ro)' >> /etc/exports";
# for update tests, set up the update repository and export it,
# if we have one (for tag and copr tests we don't really need to
# be here at all so we'll just sit here being useless)
if (get_var("ADVISORY_OR_TASK")) {
assert_script_run "echo '/mnt/update_repo 172.16.2.0/24(ro)' >> /etc/exports" if (!get_var("TAG") && !get_var("COPR"));
}
# for compose tests, we do all this stuff
else {

View File

@ -0,0 +1,55 @@
use base "installedtest";
use strict;
use testapi;
use utils;
# This script will install the necessary things to test the Desktop Keyring on Gnome
# and KDE, i.e.:
# - we will set up the SSHd to accept connections with an SSH key
# - we will create the ssh key for the user
sub run {
my $self = shift;
my $desktop = get_var("DESKTOP");
my $user = get_var("USER") || "test";
# Switch to console
$self->root_console(tty => 3);
# We install the necessary packages.
if ($desktop eq "gnome") {
assert_script_run("dnf -y install seahorse");
}
# Enable and start SSHd.
assert_script_run("systemctl enable sshd.service --now");
# Check that it is running (the assertion will fail if not)
assert_script_run("systemctl status sshd.service --no-pager");
# Create the SSH keys for the user.
# Change to the normal user
enter_cmd("su -l $user");
sleep 1;
# Create the SSH key.
enter_cmd("ssh-keygen");
sleep 1;
# Confirm the location of the key.
send_key("ret");
sleep 1;
# Create a password for the key.
type_very_safely("sshpassword\n");
sleep 1;
type_very_safely("sshpassword\n");
sleep 1;
# Logout the regular user
enter_cmd("exit");
}
sub test_flags {
return {fatal => 1, milestone => 1};
}
1;
# vim: set sw=4 et:

View File

@ -0,0 +1,126 @@
use base "installedtest";
use strict;
use testapi;
use utils;
# This script will check that the password has been added
# to the system keyring. We will start a wallet application
# and check that the password is listed in that application.
sub connect_localhost {
my $type = shift;
my $user = get_var("USER_LOGIN", "test");
my $pass = get_var("USER_PASSWORD", "weakpassword");
# Use the file explorer to establish the connection
# to the localhost.
if (get_var("DESKTOP") eq "gnome") {
menu_launch_type("nautilus");
assert_screen("apps_run_files");
assert_and_click("nautilus_other_locations");
assert_and_click("nautilus_enter_address");
type_very_safely("ssh://$user");
type_very_safely('@localhost');
send_key("ret");
if ($type ne "reconnect") {
wait_still_screen(3);
type_very_safely($pass);
assert_and_click("nautilus_remember_password");
assert_and_click("nautilus_unlock");
}
assert_screen("nautilus_connection_established");
send_key("alt-f4");
}
else {
menu_launch_type("dolphin");
assert_screen("dolphin_runs");
assert_and_click("dolphin_explore_network");
assert_and_click("dolphin_add_network_folder");
assert_and_click("dolphin_rbutton_ssh");
assert_and_click("kde_button_next");
type_very_safely("SSH folder");
send_key("tab");
type_very_safely($user);
send_key("tab");
type_very_safely("127.0.0.1");
for my $i (1..3) {
send_key("tab");
}
type_very_safely("/");
assert_and_click("dolphin_save_and_connect");
assert_and_click("kde_dismiss_notification");
assert_and_click("dolphin_dont_askagain");
assert_and_click("dolphin_connect_anyway");
assert_screen("dolphin_network_ssh_connected");
}
}
sub check_stored {
if (get_var("DESKTOP") eq "kde") {
# Start the KDE wallet application and maximize it.
menu_launch_type("kwalletmanager");
assert_screen("kwalletmanager_runs");
send_key("super-pgup");
# Navigate to the stored entry and check that
# the credentials are stored there.
assert_and_dclick("keyring_sshkeys_unfold");
assert_and_dclick("keyring_sshkey_values");
assert_screen("keyring_keys_values");
}
else {
# Start the Seahorse application and maximize it.
menu_launch_type("seahorse");
assert_screen("apps_run_seahorse");
send_key("super-up");
# Navigate to the stored entry and check
# that the credentials are stored there.
assert_and_click("keyring_seahorse_login");
assert_and_dclick("keyring_seahorse_login_details");
assert_screen("keyring_seahorse_details_shown");
assert_and_click("keyring_seahorse_show_password");
assert_screen("keyring_seahorse_password_shown");
}
}
sub run {
my $self = shift;
my $desktop = get_var("DESKTOP");
my $user = get_var("USER_LOGIN", "test");
my $pass = get_var("USER_PASSWORD", "weakpassword");
enter_cmd("echo 'Starting test for keyring_password.'");
# We are still at the root console, but for the following steps,
# there is nothing we should be doing there, so we switch back
# to the graphical desktop.
desktop_vt();
# Lets connect to localhost via SSH. This should result in
# asking for a password and storing the credentials for later use.
connect_localhost("connect");
# Check that the password has been stored.
check_stored();
# Reboot the machine, log onto the session again.
$self->root_console(tty => 3);
enter_cmd("reboot");
boot_to_login_screen();
send_key("ret");
type_very_safely("$pass\n");
wait_still_screen(3);
send_key("esc");
# Reconnect without using password. We still should be
# able to log in.
connect_localhost("reconnect");
}
sub test_flags {
return {fatal => 0, always_rollback => 1};
}
1;
# vim: set sw=4 et:

View File

@ -0,0 +1,111 @@
use base "installedtest";
use strict;
use testapi;
use utils;
# This script will check that the password has been added
# to the system keyring. We will start a wallet application
# and check that the password is listed in that application.
sub connect_localhost {
my $user = get_var("USER_LOGIN", "test");
my ($type) = @_;
# Start the terminal application.
if (get_var("DESKTOP") eq "gnome") {
menu_launch_type("terminal");
assert_screen("apps_run_terminal");
}
else {
menu_launch_type("konsole");
assert_screen("konsole_runs");
}
# Use SSH to log onto the localhost without needing
# a password. The log-in process should only require
# the actual command.
type_very_safely("ssh $user");
type_very_safely('@localhost');
send_key("ret");
sleep 2;
if ($type ne "reconnect") {
# Answer yes for the upcoming warning.
type_very_safely("yes\n");
wait_still_screen(2);
# Open the SSH key.
type_very_safely("sshpassword");
# Unlock the password when logged in.
assert_and_click("keyring_open_when_logged");
assert_and_click("keyring_sshkey_unlock");
wait_still_screen(2);
}
# Check that more instances are logged in.
enter_cmd("who\n");
assert_screen("keyring_multiple_instances");
# Exit the terminal app.
enter_cmd("exit");
}
sub run {
my $self = shift;
my $desktop = get_var("DESKTOP");
my $user = get_var("USER_LOGIN", "test");
my $pass = get_var("USER_PASSWORD", "weakpassword");
# We are still at the root console and for the following steps,
# we will need to perform more set up steps.
# We install the necessary packages.
if ($desktop eq "gnome") {
assert_script_run("dnf -y install seahorse");
}
# Set up the SSH daemon
# Create a drop-in configuration file.
enter_cmd("touch /etc/ssh/ssh_config.d/30-passwordless.conf");
enter_cmd('echo "Host *" >> /etc/ssh/ssh_config.d/30-passwordless.conf');
enter_cmd('echo " PasswordAuthentication no" >> /etc/ssh/ssh_config.d/30-passwordless.conf');
# Restart the SSHd.
assert_script_run("systemctl restart sshd.service");
# Check that it is running (the assertion will fail if not)
assert_script_run("systemctl status sshd.service --no-pager");
# Authorize the SSH key.
enter_cmd("su -l $user");
enter_cmd('echo $(cat ~/.ssh/id_ed25519.pub) > ~/.ssh/authorized_keys');
enter_cmd("exit");
# Return to desktop
desktop_vt();
# Use SSH to connect to the localhost.
connect_localhost("connect");
# Reboot the machine, log onto the session again.
$self->root_console(tty => 3);
enter_cmd("reboot");
boot_to_login_screen();
send_key("ret");
type_very_safely("$pass\n");
wait_still_screen(3);
send_key("esc");
# Reconnect without using password. We still should be
# able to log in.
connect_localhost("reconnect");
}
sub test_flags {
return {fatal => 0, always_rollback => 1};
}
1;
# vim: set sw=4 et:

View File

@ -0,0 +1,30 @@
use base "installedtest";
use strict;
use testapi;
use utils;
# This part of the suite tests that Evince can be switched into night mode.
sub run {
my $self = shift;
# Click on the Menu button.
assert_and_click("gnome_burger_menu", timeout => 30, button => "left");
# Click on the Night mode to select it.
assert_and_click("evince_toggle_night_mode", button => "left", timeout => 30);
# The menu stays opened, so hit Esc to dismiss it.
send_key("esc");
wait_still_screen 2;
# Check that night mode has been activated.
assert_screen("evince_night_mode", timeout => 30);
}
sub test_flags {
return {always_rollback => 1};
}
1;

View File

@ -23,6 +23,13 @@ sub run {
# run the updater
if ($desktop eq 'kde') {
# try and avoid double-typing issues, same way we do
# for apps_startstop test
wait_screen_change { send_key 'super'; };
wait_still_screen 3;
send_key "k";
wait_still_screen 5;
send_key "esc";
menu_launch_type('discover');
# Wait for it to run and maximize it to make sure we see the
# Updates entry

View File

@ -10,20 +10,25 @@ sub run {
my $self = shift;
$self->root_console(tty => 3);
# Trust the SSL certificate for the proxy we use to MITM flathub
# to reduce external traffic
# https://pagure.io/fedora-infrastructure/issue/11634
assert_script_run("curl -o /etc/pki/ca-trust/source/anchors/flathub-proxy.crt https://fedorapeople.org/groups/qa/openqa-data/flathub-proxy.crt");
assert_script_run("update-ca-trust");
# On Silverblue, Flathub is not set as a Flatpak remote by default, only when Third Party Repos
# are enabled. To make sure, we have it enabled, we will use the following command to
# add the Flathub repository.
assert_script_run("sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo");
assert_script_run("sudo http_proxy=http://flatpak-cache01.iad2.fedoraproject.org:3128 flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo");
# Check that the Flathub repository has been added into the repositories.
validate_script_output("flatpak remotes", sub { m/flathub/ });
# Now, we can search for an application that only exists in Flathub.
validate_script_output("flatpak search focuswriter", sub { m/org.gottcode.FocusWriter/ });
validate_script_output("http_proxy=http://flatpak-cache01.iad2.fedoraproject.org:3128 flatpak search focuswriter", sub { m/org.gottcode.FocusWriter/ });
# And we can install it
assert_script_run("flatpak install -y org.gottcode.FocusWriter", timeout => 600);
assert_script_run("http_proxy=http://flatpak-cache01.iad2.fedoraproject.org:3128 flatpak install -y org.gottcode.FocusWriter", timeout => 600);
# Check that now the application is listed in the installed flatpaks.
assert_script_run("flatpak list | grep org.gottcode.FocusWriter");

View File

@ -19,7 +19,7 @@ sub run {
assert_script_run("flatpak remote-add --if-not-exists flatpaktest https://lruzicka.fedorapeople.org/flatpaktest/flatpaktest.flatpakrepo", timeout => 120);
# Install the Dummy application.
assert_script_run("flatpak install -y org.flatpak.Dummy", timeout => 600);
assert_script_run("http_proxy=http://flatpak-cache01.iad2.fedoraproject.org:3128 flatpak install -y org.flatpak.Dummy", timeout => 600);
# Check that the application has been installed
assert_script_run("flatpak list | grep org.flatpak.Dummy");

View File

@ -41,6 +41,15 @@ sub run {
}
# Let's check, that the desktop is shown.
check_desktop();
# On KDE, try and avoid double-typing issues, same way we do
# for apps_startstop test
if ($desktop eq "kde") {
wait_screen_change { send_key 'super'; };
wait_still_screen 3;
send_key "k";
wait_still_screen 5;
send_key "esc";
}
# Start the package manager application depending
# on which DE we are on.