diff --git a/README.md b/README.md index ecdbf7eb..562f5cf2 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,13 @@ It is very important, therefore, that needles have the correct tags. Any needle Note that tags of the form `ENV-INSTLANG-(anything)` are useless artefacts and should be removed. +## Contribution Approval Guidelines + +Use the following guidelines to understand the level of approval needed to merge your contributions: +1. Pull requests and merge requests to a non-default branch will require 1 visual inspection approval to merge, provided all comments are addressed and no requests for followup are outstanding. +1. Pull and merge requests to the default branch (`rocky`) require 2 visual inspection approvals **and** 1 openQA automation approval to merge. +1. When public openQA infrastructure is available, all pull requests should initiate an openQA build, which must pass prior to merge. + ## Licensing and credits The contents of this repository are available under the GPL, version 3 or any later version. A copy is included as COPYING. Note that we do not include the full GPL header in every single test file as they are quite short and this would waste a lot of space. diff --git a/build-report.sh b/build-report.sh index 8edc978a..30fa1696 100755 --- a/build-report.sh +++ b/build-report.sh @@ -5,7 +5,7 @@ BUILD_NAME=$1 printf '# Build%s\n' "$BUILD_NAME" printf "| Test | Result | Failure Reason | Effort to Fix | Notes |\n" -printf "| ---- | ------ | -------------- | ------------ | ----- |\n" +printf "| ---- | ------ | -------------- | ------------- | ----- |\n" openqa-cli api -X GET jobs build="$BUILD_NAME" | \ jq -r '.jobs[] | {name,result} | join(" | ") | split("-") | last' | \ diff --git a/main.pm b/main.pm index 1cfbab62..52a7d43e 100644 --- a/main.pm +++ b/main.pm @@ -175,14 +175,6 @@ sub load_install_tests() { autotest::loadtest "tests/_anaconda_network_enable.pm"; } - ## Kdump - if (get_var('ANACONDA_KDUMP') eq 'enabled') { - autotest::loadtest "tests/_anaconda_kdump_enable.pm"; - } - else { - autotest::loadtest "tests/_anaconda_kdump_disable.pm"; - } - ## Installation source if (get_var('MIRRORLIST_GRAPHICAL') || get_var("REPOSITORY_GRAPHICAL")) { autotest::loadtest "tests/install_source_graphical.pm"; @@ -215,6 +207,14 @@ sub load_install_tests() { autotest::loadtest "tests/disk_guided_encrypted.pm"; } + ## Kdump + if (get_var('ANACONDA_KDUMP') eq 'enabled') { + autotest::loadtest "tests/_anaconda_kdump_enable.pm"; + } + else { + autotest::loadtest "tests/_anaconda_kdump_disable.pm"; + } + # Start installation, set user & root passwords, reboot # install and reboot phase is loaded automatically every time (except when KICKSTART is set) autotest::loadtest "tests/_do_install_and_reboot.pm"; diff --git a/needles/anaconda/install_destination/rocky-disk_guided_empty-anaconda_install_destination_delete_all_btn_selected-20220513.json b/needles/anaconda/install_destination/rocky-disk_guided_empty-anaconda_install_destination_delete_all_btn_selected-20220513.json new file mode 100644 index 00000000..a520b4f3 --- /dev/null +++ b/needles/anaconda/install_destination/rocky-disk_guided_empty-anaconda_install_destination_delete_all_btn_selected-20220513.json @@ -0,0 +1,17 @@ +{ + "area": [ + { + "xpos": 912, + "ypos": 510, + "width": 90, + "height": 38, + "type": "match" + } + ], + "properties": [], + "tags": [ + "ENV-DISTRI-rocky", + "LANGUAGE-english", + "anaconda_install_destination_delete_all_btn_selected" + ] +} \ No newline at end of file diff --git a/needles/anaconda/install_destination/rocky-disk_guided_empty-anaconda_install_destination_delete_all_btn_selected-20220513.png b/needles/anaconda/install_destination/rocky-disk_guided_empty-anaconda_install_destination_delete_all_btn_selected-20220513.png new file mode 100644 index 00000000..baaff2dd Binary files /dev/null and b/needles/anaconda/install_destination/rocky-disk_guided_empty-anaconda_install_destination_delete_all_btn_selected-20220513.png differ diff --git a/needles/anaconda/install_destination/rocky-disk_guided_empty-anaconda_install_destination_reclaim_space_btn_selected-20220513.json b/needles/anaconda/install_destination/rocky-disk_guided_empty-anaconda_install_destination_reclaim_space_btn_selected-20220513.json new file mode 100644 index 00000000..f2c02f1f --- /dev/null +++ b/needles/anaconda/install_destination/rocky-disk_guided_empty-anaconda_install_destination_reclaim_space_btn_selected-20220513.json @@ -0,0 +1,17 @@ +{ + "area": [ + { + "xpos": 878, + "ypos": 615, + "width": 124, + "height": 37, + "type": "match" + } + ], + "properties": [], + "tags": [ + "ENV-DISTRI-rocky", + "LANGUAGE-english", + "anaconda_install_destination_reclaim_space_btn_selected" + ] +} \ No newline at end of file diff --git a/needles/anaconda/install_destination/rocky-disk_guided_empty-anaconda_install_destination_reclaim_space_btn_selected-20220513.png b/needles/anaconda/install_destination/rocky-disk_guided_empty-anaconda_install_destination_reclaim_space_btn_selected-20220513.png new file mode 100644 index 00000000..03dfc437 Binary files /dev/null and b/needles/anaconda/install_destination/rocky-disk_guided_empty-anaconda_install_destination_reclaim_space_btn_selected-20220513.png differ diff --git a/needles/anaconda/install_source/rocky-https_selected-20220514.json b/needles/anaconda/install_source/rocky-https_selected-20220514.json new file mode 100644 index 00000000..1cd957e5 --- /dev/null +++ b/needles/anaconda/install_source/rocky-https_selected-20220514.json @@ -0,0 +1,17 @@ +{ + "area": [ + { + "type": "match", + "height": 19, + "width": 105, + "ypos": 210, + "xpos": 56 + } + ], + "properties": [], + "tags": [ + "ENV-DISTRI-rocky", + "ENV-FLAVOR-server", + "anaconda_install_source_selected" + ] +} \ No newline at end of file diff --git a/needles/anaconda/install_source/rocky-https_selected-20220514.png b/needles/anaconda/install_source/rocky-https_selected-20220514.png new file mode 100644 index 00000000..0c9b27f8 Binary files /dev/null and b/needles/anaconda/install_source/rocky-https_selected-20220514.png differ diff --git a/needles/anaconda/main_hub/rocky-anaconda_main_hub-20220514.json b/needles/anaconda/main_hub/rocky-anaconda_main_hub-20220514.json new file mode 100644 index 00000000..27ea8dde --- /dev/null +++ b/needles/anaconda/main_hub/rocky-anaconda_main_hub-20220514.json @@ -0,0 +1,31 @@ +{ + "area": [ + { + "width": 33, + "type": "match", + "ypos": 410, + "height": 33, + "xpos": 721 + }, + { + "xpos": 242, + "height": 34, + "ypos": 199, + "type": "match", + "width": 41 + }, + { + "height": 37, + "ypos": 337, + "xpos": 244, + "width": 34, + "type": "match" + } + ], + "properties": [], + "tags": [ + "ENV-DISTRI-rocky", + "LANGUAGE-english", + "anaconda_main_hub" + ] +} \ No newline at end of file diff --git a/needles/anaconda/main_hub/rocky-anaconda_main_hub-20220514.png b/needles/anaconda/main_hub/rocky-anaconda_main_hub-20220514.png new file mode 100644 index 00000000..d35ee8e0 Binary files /dev/null and b/needles/anaconda/main_hub/rocky-anaconda_main_hub-20220514.png differ diff --git a/needles/cockpit/rocky-autoupdate_planned_day-20220514.json b/needles/cockpit/rocky-autoupdate_planned_day-20220514.json new file mode 100644 index 00000000..8d8f1649 --- /dev/null +++ b/needles/cockpit/rocky-autoupdate_planned_day-20220514.json @@ -0,0 +1,16 @@ +{ + "area": [ + { + "width": 73, + "type": "match", + "height": 21, + "xpos": 429, + "ypos": 477 + } + ], + "properties": [], + "tags": [ + "ENV-DISTRI-rocky", + "autoupdate_planned_day" + ] +} \ No newline at end of file diff --git a/needles/cockpit/rocky-autoupdate_planned_day-20220514.png b/needles/cockpit/rocky-autoupdate_planned_day-20220514.png new file mode 100644 index 00000000..e9b98a63 Binary files /dev/null and b/needles/cockpit/rocky-autoupdate_planned_day-20220514.png differ diff --git a/needles/cockpit/rocky-autoupdate_planned_time-20220514.json b/needles/cockpit/rocky-autoupdate_planned_time-20220514.json new file mode 100644 index 00000000..74408917 --- /dev/null +++ b/needles/cockpit/rocky-autoupdate_planned_time-20220514.json @@ -0,0 +1,16 @@ +{ + "area": [ + { + "xpos": 531, + "ypos": 475, + "width": 40, + "height": 21, + "type": "match" + } + ], + "properties": [], + "tags": [ + "ENV-DISTRI-rocky", + "autoupdate_planned_time" + ] +} \ No newline at end of file diff --git a/needles/cockpit/rocky-autoupdate_planned_time-20220514.png b/needles/cockpit/rocky-autoupdate_planned_time-20220514.png new file mode 100644 index 00000000..e9b98a63 Binary files /dev/null and b/needles/cockpit/rocky-autoupdate_planned_time-20220514.png differ diff --git a/needles/cockpit/rocky-cockpit_main-20220514.json b/needles/cockpit/rocky-cockpit_main-20220514.json new file mode 100644 index 00000000..bd118136 --- /dev/null +++ b/needles/cockpit/rocky-cockpit_main-20220514.json @@ -0,0 +1,16 @@ +{ + "area": [ + { + "type": "match", + "height": 27, + "width": 213, + "ypos": 548, + "xpos": 262 + } + ], + "properties": [], + "tags": [ + "ENV-DISTRI-rocky", + "cockpit_main" + ] +} \ No newline at end of file diff --git a/needles/cockpit/rocky-cockpit_main-20220514.png b/needles/cockpit/rocky-cockpit_main-20220514.png new file mode 100644 index 00000000..6832a6ca Binary files /dev/null and b/needles/cockpit/rocky-cockpit_main-20220514.png differ diff --git a/needles/cockpit/rocky-cockpit_updates_updated-cockpit-20220514.json b/needles/cockpit/rocky-cockpit_updates_updated-cockpit-20220514.json new file mode 100644 index 00000000..7bd3ff2a --- /dev/null +++ b/needles/cockpit/rocky-cockpit_updates_updated-cockpit-20220514.json @@ -0,0 +1,16 @@ +{ + "area": [ + { + "xpos": 639, + "ypos": 241, + "width": 172, + "height": 30, + "type": "match" + } + ], + "properties": [], + "tags": [ + "ENV-DISTRI-rocky", + "cockpit_updates_updated" + ] +} \ No newline at end of file diff --git a/needles/cockpit/rocky-cockpit_updates_updated-cockpit-20220514.png b/needles/cockpit/rocky-cockpit_updates_updated-cockpit-20220514.png new file mode 100644 index 00000000..665c41ae Binary files /dev/null and b/needles/cockpit/rocky-cockpit_updates_updated-cockpit-20220514.png differ diff --git a/needles/cockpit/rocky-logs_entry-systemd-20220514.json b/needles/cockpit/rocky-logs_entry-systemd-20220514.json new file mode 100644 index 00000000..c2fbba84 --- /dev/null +++ b/needles/cockpit/rocky-logs_entry-systemd-20220514.json @@ -0,0 +1,16 @@ +{ + "area": [ + { + "ypos": 374, + "xpos": 944, + "type": "match", + "height": 15, + "width": 52 + } + ], + "properties": [], + "tags": [ + "ENV-DISTRI-rocky", + "cockpit_logs_entry" + ] +} \ No newline at end of file diff --git a/needles/cockpit/rocky-logs_entry-systemd-20220514.png b/needles/cockpit/rocky-logs_entry-systemd-20220514.png new file mode 100644 index 00000000..be051103 Binary files /dev/null and b/needles/cockpit/rocky-logs_entry-systemd-20220514.png differ diff --git a/needles/cockpit/rocky-logs_entry_detail-20220514.json b/needles/cockpit/rocky-logs_entry_detail-20220514.json new file mode 100644 index 00000000..0c08a178 --- /dev/null +++ b/needles/cockpit/rocky-logs_entry_detail-20220514.json @@ -0,0 +1,16 @@ +{ + "area": [ + { + "height": 14, + "type": "match", + "width": 145, + "ypos": 745, + "xpos": 263 + } + ], + "properties": [], + "tags": [ + "ENV-DISTRI-rocky", + "cockpit_logs_detail" + ] +} \ No newline at end of file diff --git a/needles/cockpit/rocky-logs_entry_detail-20220514.png b/needles/cockpit/rocky-logs_entry_detail-20220514.png new file mode 100644 index 00000000..01252adb Binary files /dev/null and b/needles/cockpit/rocky-logs_entry_detail-20220514.png differ diff --git a/needles/cockpit/rocky-services_detail-20220514.json b/needles/cockpit/rocky-services_detail-20220514.json new file mode 100644 index 00000000..08ec5f59 --- /dev/null +++ b/needles/cockpit/rocky-services_detail-20220514.json @@ -0,0 +1,16 @@ +{ + "area": [ + { + "ypos": 585, + "xpos": 263, + "type": "match", + "height": 28, + "width": 133 + } + ], + "properties": [], + "tags": [ + "ENV-DISTRI-rocky", + "cockpit_services_detail" + ] +} \ No newline at end of file diff --git a/needles/cockpit/rocky-services_detail-20220514.png b/needles/cockpit/rocky-services_detail-20220514.png new file mode 100644 index 00000000..dc9c0628 Binary files /dev/null and b/needles/cockpit/rocky-services_detail-20220514.png differ diff --git a/templates.fif.json b/templates.fif.json index 437071e2..5d6c8a0d 100644 --- a/templates.fif.json +++ b/templates.fif.json @@ -57,6 +57,7 @@ "settings": { "GRUB": "ip=dhcp", "+QEMURAM": 3072, + "HDDSIZEGB": "15", "TEST_TARGET": "ISO" }, "version": "*" @@ -68,6 +69,7 @@ "settings": { "GRUB": "ip=dhcp", "+QEMURAM": 3072, + "HDDSIZEGB": "15", "TEST_TARGET": "ISO" }, "version": "*" @@ -79,6 +81,7 @@ "settings": { "+QEMURAM": 3072, "DEPLOY_UPLOAD_TEST": "install_minimal_upload", + "HDDSIZEGB": "15", "TEST_TARGET": "ISO" }, "version": "*" @@ -90,6 +93,7 @@ "settings": { "+QEMURAM": 3072, "DEPLOY_UPLOAD_TEST": "install_minimal_upload", + "HDDSIZEGB": "15", "TEST_TARGET": "ISO" }, "version": "*" @@ -100,6 +104,7 @@ "flavor": "dvd-iso", "settings": { "DEPLOY_UPLOAD_TEST": "install_default_upload", + "HDDSIZEGB": "15", "TEST_TARGET": "ISO" }, "version": "*" @@ -110,6 +115,7 @@ "flavor": "dvd-iso", "settings": { "DEPLOY_UPLOAD_TEST": "install_default_upload", + "HDDSIZEGB": "15", "TEST_TARGET": "ISO" }, "version": "*" @@ -119,6 +125,7 @@ "distri": "rocky", "flavor": "package-set", "settings": { + "HDDSIZEGB": "15", "TEST_TARGET": "ISO" }, "version": "*" @@ -128,6 +135,7 @@ "distri": "rocky", "flavor": "package-set", "settings": { + "HDDSIZEGB": "15", "TEST_TARGET": "ISO" }, "version": "*" @@ -137,6 +145,7 @@ "distri": "rocky", "flavor": "universal", "settings": { + "HDDSIZEGB": "15", "TEST_TARGET": "ISO" }, "version": "*" @@ -146,6 +155,7 @@ "distri": "rocky", "flavor": "universal", "settings": { + "HDDSIZEGB": "15", "TEST_TARGET": "ISO" }, "version": "*" @@ -348,7 +358,6 @@ "settings": { "DESKTOP": "gnome", "ENCRYPT_PASSWORD": "weakpassword", - "HDDSIZEGB": "15", "LANGUAGE": "arabic", "PACKAGE_SET": "workstation", "POSTINSTALL": "_console_login", @@ -367,7 +376,6 @@ "settings": { "DESKTOP": "gnome", "ENCRYPT_PASSWORD": "weakpassword", - "HDDSIZEGB": "15", "INPUT_METHOD": "1", "LANGUAGE": "japanese", "PACKAGE_SET": "workstation", @@ -386,6 +394,7 @@ }, "settings": { "PARTITIONING": "custom_gui_lvm_ext4", + "HDDSIZEGB": "15", "POSTINSTALL": "disk_custom_lvm_ext4_postinstall", "ROOT_PASSWORD": "weakpassword" } @@ -434,7 +443,6 @@ "settings": { "DESKTOP": "gnome", "ENCRYPT_PASSWORD": "weakpassword", - "HDDSIZEGB": "15", "LANGUAGE": "russian", "PACKAGE_SET": "workstation", "POSTINSTALL": "_console_login", @@ -455,7 +463,6 @@ }, "settings": { "DESKTOP": "gnome", - "HDDSIZEGB": "15", "PACKAGE_SET": "default", "POSTINSTALL": "_collect_data" } @@ -513,6 +520,7 @@ "settings": { "HDDMODEL": "ide-hd", "HDD_1": "disk_full_mbr.img", + "HDDSIZEGB": "20", "PARTITIONING": "guided_delete_all" } }, @@ -524,7 +532,6 @@ "settings": { "DESKTOP": "gnome", "ENCRYPT_PASSWORD": "weakpassword", - "HDDSIZEGB": "15", "LANGUAGE": "french", "NO_UEFI_POST": "1", "PACKAGE_SET": "workstation", @@ -553,7 +560,6 @@ "rocky-dvd-iso-x86_64-*-uefi": 41 }, "settings": { - "HDDSIZEGB": "15", "PARTITIONING": "custom_lvm_ext4", "ROOT_PASSWORD": "weakpassword", "STORE_HDD_1": "disk_%FLAVOR%_%MACHINE%.qcow2" @@ -566,7 +572,6 @@ "rocky-dvd-iso-x86_64-*-uefi": 31 }, "settings": { - "HDDSIZEGB": "15", "PARTITIONING": "custom_standard_partition_ext4", "ROOT_PASSWORD": "weakpassword" } @@ -655,7 +660,6 @@ "settings": { "DESKTOP": "gnome", "ENCRYPT_PASSWORD": "weakpassword", - "HDDSIZEGB": "15", "PACKAGE_SET": "graphical-server", "POSTINSTALL": "_console_login", "ROOT_PASSWORD": "weakpassword", @@ -672,7 +676,6 @@ "settings": { "DESKTOP": "gnome", "ENCRYPT_PASSWORD": "weakpassword", - "HDDSIZEGB": "15", "PACKAGE_SET": "workstation", "POSTINSTALL": "_console_login", "ROOT_PASSWORD": "weakpassword", @@ -759,7 +762,7 @@ }, "settings": { "CDMODEL": "scsi-cd", - "GRUB": "inst.updates=https://rockypeople.org/groups/qa/updates/updates-openqa.img", + "GRUB": "inst.updates=https://fedorapeople.org/groups/qa/updates/updates-openqa.img", "HDDMODEL": "scsi-hd", "SCSICONTROLLER": "virtio-scsi-pci", "TEST_UPDATES": "1" @@ -818,6 +821,7 @@ }, "settings": { "HDD_1": "disk_freespace_%PART_TABLE_TYPE%.img", + "HDDSIZEGB": "20", "PARTITIONING": "guided_free_space", "ROOT_PASSWORD": "weakpassword" } diff --git a/tests/disk_guided_delete_partial.pm b/tests/disk_guided_delete_partial.pm index f426c491..604361f6 100644 --- a/tests/disk_guided_delete_partial.pm +++ b/tests/disk_guided_delete_partial.pm @@ -18,6 +18,7 @@ sub run { assert_and_click "anaconda_install_destination_reclaim_space_delete_btn"; + # If this fails with a disabled button, we didn't reclaim enough space to perform installation assert_and_click "anaconda_install_destination_reclaim_space_btn"; # Anaconda hub diff --git a/tests/disk_guided_empty.pm b/tests/disk_guided_empty.pm index 96cc440c..d536b7c4 100644 --- a/tests/disk_guided_empty.pm +++ b/tests/disk_guided_empty.pm @@ -18,19 +18,33 @@ sub run { if (get_var('TEST_UPDATES')){ assert_screen "anaconda_install_destination_updates", 30; } - # Here the self identification test code is placed. - my $branched = get_var('VERSION'); - if ($identification eq 'true' or $branched ne "Rawhide") { + # Here the self identification test code is placed. + my $branched = get_var('VERSION'); + if ($identification eq 'true' or $branched ne "Rawhide") { check_top_bar(); # See utils.pm # we don't check version or pre-release because here those # texts appear on the banner which makes the needling # complex and fragile (banner is different between variants, # and has a gradient so for RTL languages the background color # differs; pre-release text is also translated) - } + } assert_and_click "anaconda_spoke_done"; + # if we get the "Reclaim Space" dialog, hit enter to reclaim space + if (check_screen("anaconda_install_destination_reclaim_space_btn", 5)) { + # hit enter to reclaim space + send_key "ret"; + + # select 'delete all' button and hit enter to delete existing data + send_key_until_needlematch("anaconda_install_destination_delete_all_btn_selected", "tab", 5); + send_key "ret"; + + # send tab 5 times to select "Reclaim Space" button + send_key_until_needlematch("anaconda_install_destination_reclaim_space_btn_selected", "tab", 5); + send_key "ret"; + } + # Anaconda hub assert_screen "anaconda_main_hub", 300; #