add an Asian (Japanese) language install test

Summary:
Include some basic testing of Japanese input, and split the
input testing (including Russian) into a separate module, since
it's not really part of 'login' testing.

Test Plan:
Run the test, and the Russian and French tests too to
make sure they didn't break. Tested on staging. Note the Japanese
test soft fails, intentionally, at present, as I discovered a bug
while working on it:
https://bugzilla.gnome.org/show_bug.cgi?id=776189

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D1072
This commit is contained in:
Adam Williamson 2016-12-21 08:41:00 -08:00
parent 8e70b4b8a8
commit c4f32ab5ad
59 changed files with 520 additions and 18 deletions

View File

@ -75,12 +75,17 @@ sub console_switch_layout {
} }
} }
# switch to 'native' or 'us' keyboard layout in a graphical desktop # switch to 'native' or 'ascii' input method in a graphical desktop
# usually switched configs have one mode for inputting ascii-ish
# characters (which may be 'us' keyboard layout, or a local layout for
# inputting ascii like 'jp') and one mode for inputting native
# characters (which may be another keyboard layout, like 'ru', or an
# input method for more complex languages)
# 'environment' can be a desktop name or 'anaconda' for anaconda # 'environment' can be a desktop name or 'anaconda' for anaconda
# if not set, will use get_var('DESKTOP') or default 'anaconda' # if not set, will use get_var('DESKTOP') or default 'anaconda'
sub desktop_switch_layout { sub desktop_switch_layout {
my ($layout, $environment) = @_; my ($layout, $environment) = @_;
$layout //= 'us'; $layout //= 'ascii';
$environment //= get_var("DESKTOP", "anaconda"); $environment //= get_var("DESKTOP", "anaconda");
# if already selected, we're good # if already selected, we're good
return if (check_screen "${environment}_layout_${layout}", 3); return if (check_screen "${environment}_layout_${layout}", 3);

View File

@ -183,7 +183,11 @@ sub load_postinstall_tests() {
if (get_var("DESKTOP")) { if (get_var("DESKTOP")) {
autotest::loadtest "tests/_graphical_wait_login.pm"; autotest::loadtest "tests/_graphical_wait_login.pm";
} }
else { # Test non-US input at this point, on language tests
if (get_var("SWITCHED_LAYOUT") || get_var("INPUT_METHOD")) {
autotest::loadtest "tests/_graphical_input.pm";
}
unless (get_var("DESKTOP")) {
autotest::loadtest "tests/_console_wait_login.pm"; autotest::loadtest "tests/_console_wait_login.pm";
} }

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 22,
"ypos": 584,
"width": 136,
"height": 17,
"type": "match"
}
],
"properties": [],
"tags": [
"LANGUAGE-japanese",
"anaconda_install_destination_encrypt_data"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

@ -0,0 +1,16 @@
{
"properties": [],
"tags": [
"LANGUAGE-japanese",
"anaconda_install_destination_save_passphrase"
],
"area": [
{
"xpos": 647,
"ypos": 521,
"width": 118,
"height": 13,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

View File

@ -0,0 +1,24 @@
{
"area": [
{
"height": 14,
"type": "match",
"width": 337,
"xpos": 674,
"ypos": 636
},
{
"height": 14,
"type": "match",
"width": 41,
"xpos": 942,
"ypos": 684
}
],
"properties": [],
"tags": [
"anaconda_install_done",
"ENV-DISTRI-fedora",
"LANGUAGE-japanese"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 212,
"ypos": 125,
"width": 96,
"height": 13,
"type": "match"
}
],
"properties": [],
"tags": [
"LANGUAGE-japanese",
"anaconda_install_root_password_screen"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 382,
"ypos": 214,
"width": 188,
"height": 17,
"type": "match"
}
],
"properties": [],
"tags": [
"LANGUAGE-japanese",
"anaconda_install_user_creation_make_admin"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 267,
"ypos": 155,
"width": 71,
"height": 14,
"type": "match"
}
],
"properties": [],
"tags": [
"LANGUAGE-japanese",
"anaconda_install_user_creation_screen"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

View File

@ -9,6 +9,7 @@
} }
], ],
"tags": [ "tags": [
"anaconda_layout_us" "anaconda_layout_us",
"anaconda_layout_ascii"
] ]
} }

View File

@ -11,6 +11,7 @@
"properties": [], "properties": [],
"tags": [ "tags": [
"LANGUAGE-russian", "LANGUAGE-russian",
"LANGUAGE-japanese",
"anaconda_install_user_created" "anaconda_install_user_created"
] ]
} }

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 950,
"ypos": 736,
"width": 27,
"height": 15,
"type": "match"
}
],
"properties": [],
"tags": [
"LANGUAGE-japanese",
"anaconda_select_install_lang_continue"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@ -0,0 +1,23 @@
{
"area": [
{
"xpos": 223,
"ypos": 187,
"width": 50,
"height": 32,
"type": "match"
},
{
"xpos": 475,
"ypos": 187,
"width": 75,
"height": 36,
"type": "match"
}
],
"properties": [],
"tags": [
"LANGUAGE-japanese",
"anaconda_select_install_lang_filtered"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@ -0,0 +1,16 @@
{
"tags": [
"LANGUAGE-japanese",
"anaconda_select_install_lang_selected"
],
"properties": [],
"area": [
{
"xpos": 608,
"ypos": 201,
"width": 93,
"height": 16,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@ -0,0 +1,16 @@
{
"tags": [
"LANGUAGE-japanese",
"anaconda_main_hub_begin_installation"
],
"properties": [],
"area": [
{
"xpos": 864,
"ypos": 709,
"width": 116,
"height": 12,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

@ -0,0 +1,16 @@
{
"properties": [],
"tags": [
"LANGUAGE-japanese",
"anaconda_rawhide_accept_fate"
],
"area": [
{
"xpos": 613,
"ypos": 469,
"width": 118,
"height": 14,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

View File

@ -0,0 +1,16 @@
{
"tags": [
"LANGUAGE-japanese",
"anaconda_spoke_done"
],
"properties": [],
"area": [
{
"xpos": 34,
"ypos": 55,
"width": 27,
"height": 13,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

View File

@ -0,0 +1,24 @@
{
"tags": [
"DESKTOP-gnome",
"LANGUAGE-japanese",
"graphical_desktop_clean"
],
"properties": [],
"area": [
{
"height": 15,
"xpos": 14,
"type": "match",
"ypos": 6,
"width": 107
},
{
"xpos": 968,
"type": "match",
"ypos": 4,
"width": 43,
"height": 18
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 455,
"ypos": 34,
"width": 112,
"height": 15,
"type": "match"
}
],
"properties": [],
"tags": [
"LANGUAGE-japanese",
"getting_started"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"height": 15,
"type": "match",
"width": 121,
"xpos": 266,
"ypos": 315
}
],
"tags": [
"initial_setup_kana_kanji",
"LANGUAGE-japanese"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"height": 15,
"type": "match",
"width": 396,
"xpos": 266,
"ypos": 315
}
],
"tags": [
"initial_setup_kana_kanji_selected",
"LANGUAGE-japanese"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"height": 13,
"type": "match",
"width": 33,
"xpos": 853,
"ypos": 7
}
],
"tags": [
"gnome_layout_ascii",
"LANGUAGE-japanese"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"height": 15,
"type": "match",
"width": 33,
"xpos": 853,
"ypos": 5
}
],
"tags": [
"gnome_layout_native",
"LANGUAGE-japanese"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 342,
"ypos": 377,
"width": 338,
"height": 55,
"type": "match"
}
],
"tags": [
"LANGUAGE-japanese",
"graphical_login_input"
],
"properties": []
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

View File

@ -0,0 +1,16 @@
{
"properties": [],
"tags": [
"LANGUAGE-japanese",
"next_button"
],
"area": [
{
"xpos": 945,
"ypos": 43,
"width": 33,
"height": 14,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 921,
"ypos": 42,
"width": 60,
"height": 15,
"type": "match"
}
],
"properties": [],
"tags": [
"LANGUAGE-japanese",
"skip_button"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@ -0,0 +1,31 @@
{
"area": [
{
"xpos": 380,
"ypos": 208,
"width": 10,
"height": 71,
"type": "match"
},
{
"xpos": 387,
"ypos": 380,
"width": 12,
"height": 12,
"type": "match"
},
{
"xpos": 422,
"ypos": 380,
"width": 14,
"height": 12,
"type": "match"
}
],
"properties": [],
"tags": [
"DESKTOP-gnome",
"LANGUAGE-japanese",
"desktop_yama_chooser"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

View File

@ -0,0 +1,17 @@
{
"tags": [
"DESKTOP-gnome",
"LANGUAGE-japanese",
"desktop_yama_hiragana"
],
"properties": [],
"area": [
{
"xpos": 384,
"ypos": 61,
"width": 29,
"height": 14,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

View File

@ -0,0 +1,17 @@
{
"properties": [],
"tags": [
"DESKTOP-gnome",
"LANGUAGE-japanese",
"desktop_yama_kanji"
],
"area": [
{
"xpos": 385,
"ypos": 61,
"width": 13,
"height": 16,
"type": "match"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

View File

@ -10,6 +10,7 @@
], ],
"properties": [], "properties": [],
"tags": [ "tags": [
"gnome_layout_us" "gnome_layout_us",
"gnome_layout_ascii"
] ]
} }

View File

@ -9,6 +9,7 @@
} }
], ],
"tags": [ "tags": [
"gnome_layout_us" "gnome_layout_us",
"gnome_layout_ascii"
] ]
} }

View File

@ -1117,6 +1117,17 @@
}, },
test_suite => { name => "install_cyrillic_language" }, test_suite => { name => "install_cyrillic_language" },
}, },
{
machine => { name => "64bit" },
prio => 40,
product => {
arch => "x86_64",
distri => "fedora",
flavor => "universal",
version => "*",
},
test_suite => { name => "install_asian_language" },
},
{ {
machine => { name => "64bit" }, machine => { name => "64bit" },
prio => 40, prio => 40,
@ -1956,6 +1967,20 @@
{ key => "REPOSITORY_VARIATION", value => "%LOCATION%" }, { key => "REPOSITORY_VARIATION", value => "%LOCATION%" },
], ],
}, },
{
name => "install_asian_language",
settings => [
{ key => "LANGUAGE", value => "japanese" },
{ key => "DESKTOP", value => "gnome" },
{ key => "PACKAGE_SET", value => "workstation" },
{ key => "INPUT_METHOD", value => "1" },
{ key => "USER_LOGIN", value => "qwerty" },
{ key => "ROOT_PASSWORD", value => "weakpassword" },
{ key => "ENCRYPT_PASSWORD", value => "weakpassword" },
{ key => "POSTINSTALL", value => "_console_login" },
{ key => "REPOSITORY_VARIATION", value => "%LOCATION%" },
],
},
{ {
name => "install_xfs", name => "install_xfs",
settings => [ settings => [

View File

@ -8,8 +8,8 @@ sub type_user_password {
my $user_password = get_var("USER_PASSWORD") || "weakpassword"; my $user_password = get_var("USER_PASSWORD") || "weakpassword";
if (get_var("SWITCHED_LAYOUT")) { if (get_var("SWITCHED_LAYOUT")) {
# we double the password, the second time using the native # we double the password, the second time using the native
# layout, so the password has both US and native characters # layout, so the password has both ASCII and native characters
desktop_switch_layout "us", "anaconda"; desktop_switch_layout "ascii", "anaconda";
type_very_safely $user_password; type_very_safely $user_password;
desktop_switch_layout "native", "anaconda"; desktop_switch_layout "native", "anaconda";
type_very_safely $user_password; type_very_safely $user_password;
@ -37,7 +37,7 @@ sub run {
assert_screen "anaconda_install_root_password_screen"; assert_screen "anaconda_install_root_password_screen";
# wait out animation # wait out animation
wait_still_screen 2; wait_still_screen 2;
desktop_switch_layout("us", "anaconda") if (get_var("SWITCHED_LAYOUT")); desktop_switch_layout("ascii", "anaconda") if (get_var("SWITCHED_LAYOUT"));
if (get_var("IMAGETYPE") eq 'dvd-ostree') { if (get_var("IMAGETYPE") eq 'dvd-ostree') {
# we can't type SUPER safely for ostree installer tests, as # we can't type SUPER safely for ostree installer tests, as
# the install completes quite fast and if we type too slow # the install completes quite fast and if we type too slow

41
tests/_graphical_input.pm Normal file
View File

@ -0,0 +1,41 @@
use base "installedtest";
use strict;
use testapi;
use main_common;
sub run {
# check both layouts are available at the desktop; here,
# we can expect input method switching to work too
desktop_switch_layout 'ascii';
desktop_switch_layout 'native';
# special testing for Japanese to ensure input method actually
# works. If we ever test other input-method based languages we can
# generalize this out, for now we just inline Japanese
if (get_var("LANGUAGE") eq 'japanese') {
# assume we can test input from whatever 'alt-f1' opens
send_key "alt-f1";
type_safely "yama";
assert_screen "desktop_yama_hiragana";
send_key "spc";
assert_screen "desktop_yama_kanji";
send_key "spc";
assert_screen "desktop_yama_chooser";
send_key "esc";
send_key "esc";
send_key "esc";
send_key "esc";
assert_screen "graphical_desktop_clean";
}
}
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:

View File

@ -27,7 +27,7 @@ sub run {
# see _do_install_and_reboot; when layout is switched # see _do_install_and_reboot; when layout is switched
# user password is doubled to contain both US and native # user password is doubled to contain both US and native
# chars # chars
desktop_switch_layout 'us'; desktop_switch_layout 'ascii';
type_very_safely $password; type_very_safely $password;
desktop_switch_layout 'native'; desktop_switch_layout 'native';
type_very_safely $password; type_very_safely $password;
@ -49,6 +49,14 @@ sub run {
# to the next screen between clicks # to the next screen between clicks
mouse_set(100, 100); mouse_set(100, 100);
wait_screen_change { assert_and_click "next_button"; }; wait_screen_change { assert_and_click "next_button"; };
# for Japanese, we need to workaround a bug on the keyboard
# selection screen
if ($n == 1 && get_var("LANGUAGE") eq 'japanese') {
if (!check_screen 'initial_setup_kana_kanji_selected', 5) {
record_soft_failure 'kana kanji not selected: bgo#776189';
assert_and_click 'initial_setup_kana_kanji';
}
}
} }
# click 'Skip' one time # click 'Skip' one time
mouse_set(100,100); mouse_set(100,100);
@ -64,11 +72,6 @@ sub run {
mouse_set(300, 200); mouse_set(300, 200);
# KDE can take ages to start up # KDE can take ages to start up
assert_screen "graphical_desktop_clean", 120; assert_screen "graphical_desktop_clean", 120;
if (get_var("SWITCHED_LAYOUT")) {
# check both layouts are available at the desktop
desktop_switch_layout 'us';
desktop_switch_layout 'native';
}
} }
} }

View File

@ -16,7 +16,7 @@ sub run {
# type password for disk encryption # type password for disk encryption
wait_idle 5; wait_idle 5;
if (get_var("SWITCHED_LAYOUT")) { if (get_var("SWITCHED_LAYOUT")) {
desktop_switch_layout "us", "anaconda"; desktop_switch_layout "ascii", "anaconda";
} }
type_safely get_var("ENCRYPT_PASSWORD"); type_safely get_var("ENCRYPT_PASSWORD");
wait_screen_change { send_key "tab"; }; wait_screen_change { send_key "tab"; };