1
0
mirror of https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git synced 2024-11-21 21:43:08 +00:00

gnome-initial-setup: handle keyboard being skipped

We now have a fix for the bug on the new webUI flow where the
language and keyboard screens weren't skipped on the first boot
after install, as intended. language is never *really* skipped -
it just turns into welcome - but keyboard is now being skipped,
which messes up the logic here.

For a short time we need to handle both paths, to get the new
anaconda builds through and new composes built. In a couple of
days we can simplify this to just always assume keyboard will
be skipped on the first boot on Workstation live installs on
F39+.

Also drop handling of auth_required in g-i-s - I'm pretty sure
that bug got fixed years ago - and wait_still_screen for three
seconds on each page, to let animated transitions settle.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
This commit is contained in:
Adam Williamson 2023-09-07 12:38:28 -07:00
parent ccfef0d168
commit 82ae0a3b81

View File

@ -725,6 +725,16 @@ sub gnome_initial_setup {
@_ @_
); );
my $relnum = get_release_number; my $relnum = get_release_number;
# note: when 'language' is "skipped", it's turned into a 'welcome'
# page, which has a "Start Setup" button, not a "Next" button
unless (check_screen ["next_button", "start_setup"], $args{timeout}) {
record_soft_failure "g-i-s taking longer than expected to start up!";
assert_screen ["next_button", "start_setup"], $args{timeout};
}
# GDM 3.24.1 dumps a cursor in the middle of the screen here...
mouse_hide if ($args{prelogin});
# the pages we *may* need to click 'next' on. *NOTE*: 'language' # the pages we *may* need to click 'next' on. *NOTE*: 'language'
# is the 'welcome' page, and is in fact never truly skipped; if # is the 'welcome' page, and is in fact never truly skipped; if
# it's configured to be skipped, it just shows without the language # it's configured to be skipped, it just shows without the language
@ -746,20 +756,23 @@ sub gnome_initial_setup {
# https://fedoraproject.org//wiki/Changes/ReduceInitialSetupRedundancy # https://fedoraproject.org//wiki/Changes/ReduceInitialSetupRedundancy
# https://bugzilla.redhat.com/show_bug.cgi?id=1474787 , # https://bugzilla.redhat.com/show_bug.cgi?id=1474787 ,
# except 'language' was never *really* skipped (see above) # except 'language' was never *really* skipped (see above)
# From gnome-initial-setup 45~beta-3 on, these screens aren't
# skipped in vendor.conf. They should be skipped for live
# installs because they were shown preinstall on the new webUI
# workflow, but this is broken till
# https://github.com/rhinstaller/anaconda/pull/5056 is merged.
# network installs and disk image deployments will show these
# screens (which is good for disk image deployments, but
# redundant for network installs)
# FIXME modify this to drop the pages on F39+ live installs
# once the anaconda PR is merged or addressed some other way
if ($relnum < 39) { if ($relnum < 39) {
@nexts = grep { $_ ne 'keyboard' } @nexts; @nexts = grep { $_ ne 'keyboard' } @nexts;
@nexts = grep { $_ ne 'timezone' } @nexts; @nexts = grep { $_ ne 'timezone' } @nexts;
} }
# From gnome-initial-setup 45~beta-3 on, no screens are
# skipped in vendor.conf. 'language' and 'keyboard' should be
# skipped (meaning 'language' is turned into 'welcome' and
# 'keyboard' is really skipped) on live installs because we saw
# them already, but this only works from anaconda 39.32.2 /
# 40.3 onwards. network installs and disk image deployments
# will show these screens (which is good for disk image
# deployments, but redundant for network installs)
elsif (match_has_tag "start_setup") {
# if we saw start_setup, that means 'language' was skipped
# and we can assume 'keyboard' will also be skipped
@nexts = grep { $_ ne 'keyboard' } @nexts;
}
} }
else { else {
# 'timezone' and 'software' are suppressed for the 'existing user' # 'timezone' and 'software' are suppressed for the 'existing user'
@ -768,29 +781,9 @@ sub gnome_initial_setup {
@nexts = grep { $_ ne 'timezone' } @nexts; @nexts = grep { $_ ne 'timezone' } @nexts;
} }
# note: in g-i-s 3.37.91 and later, the first screen in systemwide
# mode has a "Start Setup" button, not a "Next" button
unless (check_screen ["next_button", "start_setup", "auth_required"], $args{timeout}) {
record_soft_failure "g-i-s taking longer than expected to start up!";
assert_screen ["next_button", "start_setup", "auth_required"], $args{timeout};
}
# workaround auth dialog appearing to change timezone even
# though timezone screen is disabled
if (match_has_tag("auth_required")) {
record_soft_failure "Unexpected authentication required: https://gitlab.gnome.org/GNOME/gnome-initial-setup/-/issues/106";
send_key "esc";
assert_screen ["next_button", "start_setup"];
}
# wait a bit in case of animation
wait_still_screen 3;
# one more check for frickin auth_required
if (check_screen "auth_required") {
record_soft_failure "Unexpected authentication required: https://gitlab.gnome.org/GNOME/gnome-initial-setup/-/issues/106";
send_key "esc";
}
# GDM 3.24.1 dumps a cursor in the middle of the screen here...
mouse_hide if ($args{prelogin});
foreach my $next (@nexts) { foreach my $next (@nexts) {
# give animations a bit to settle down
wait_still_screen 3;
# click 'Next' $nexts times, moving the mouse to avoid # click 'Next' $nexts times, moving the mouse to avoid
# highlight problems, sleeping to give it time to get # highlight problems, sleeping to give it time to get
# to the next screen between clicks # to the next screen between clicks
@ -798,8 +791,8 @@ sub gnome_initial_setup {
if ($next eq 'language') { if ($next eq 'language') {
# only accept start_setup one time, to avoid matching # only accept start_setup one time, to avoid matching
# on it during transition to next screen. also accept # on it during transition to next screen. also accept
# next_button as in per-user mode, first screen has that # next_button as in live and existing user modes, first
# not start_setup # screen has that not start_setup
wait_screen_change { assert_and_click ["next_button", "start_setup"]; }; wait_screen_change { assert_and_click ["next_button", "start_setup"]; };
} }
elsif ($next eq 'timezone') { elsif ($next eq 'timezone') {