Skip to content

Commit 4036324

Browse files
author
Jay Linski
authored
Improve a11y by providing the current language (keycloak#20213)
1 parent 8aeee92 commit 4036324

File tree

4 files changed

+20
-5
lines changed

4 files changed

+20
-5
lines changed

testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/pages/LoginPage.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ public class LoginPage extends LanguageComboboxAwarePage {
3838
@ArquillianResource
3939
protected OAuthClient oauth;
4040

41+
@FindBy(xpath = "//html")
42+
protected WebElement htmlRoot;
43+
4144
@FindBy(id = "username")
4245
protected WebElement usernameInput;
4346

@@ -68,7 +71,6 @@ public class LoginPage extends LanguageComboboxAwarePage {
6871
@FindBy(className = "alert-success")
6972
private WebElement loginSuccessMessage;
7073

71-
7274
@FindBy(className = "alert-info")
7375
private WebElement loginInfoMessage;
7476

@@ -109,12 +111,15 @@ public void missingPassword(String username) {
109111
usernameInput.sendKeys(username);
110112
passwordInput.clear();
111113
clickLink(submitButton);
112-
113114
}
115+
114116
public void missingUsername() {
115117
clearUsernameInputAndWaitIfNecessary();
116118
clickLink(submitButton);
119+
}
117120

121+
public String getHtmlLanguage() {
122+
return htmlRoot.getAttribute("lang");
118123
}
119124

120125
public String getUsername() {
@@ -168,6 +173,7 @@ public String getInstruction() {
168173
public String getSuccessMessage() {
169174
return loginSuccessMessage != null ? loginSuccessMessage.getText() : null;
170175
}
176+
171177
public String getInfoMessage() {
172178
try {
173179
return getTextFromElement(loginInfoMessage);
@@ -176,7 +182,6 @@ public String getInfoMessage() {
176182
}
177183
}
178184

179-
180185
public boolean isCurrent() {
181186
String realm = "test";
182187
return isCurrent(realm);

testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/i18n/LoginPageTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,16 @@ public void uiLocalesParameter() {
120120
assertEquals("Deutsch", loginPage.getLanguageDropdownText());
121121
}
122122

123+
@Test
124+
public void htmlLangAttribute() {
125+
loginPage.open();
126+
assertEquals("en", loginPage.getHtmlLanguage());
127+
128+
oauth.uiLocales("de");
129+
loginPage.open();
130+
assertEquals("de", loginPage.getHtmlLanguage());
131+
}
132+
123133
@Test
124134
public void acceptLanguageHeader() throws IOException {
125135
try(CloseableHttpClient httpClient = (CloseableHttpClient) new HttpClientBuilder().build()) {

themes/src/main/resources/theme/base/account/template.ftl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<#macro mainLayout active bodyClass>
22
<!doctype html>
3-
<html>
3+
<html<#if realm.internationalizationEnabled> lang="${locale.currentLanguageTag}"</#if>>
44
<head>
55
<meta charset="utf-8">
66
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

themes/src/main/resources/theme/base/login/template.ftl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<#macro registrationLayout bodyClass="" displayInfo=false displayMessage=true displayRequiredFields=false>
22
<!DOCTYPE html>
3-
<html class="${properties.kcHtmlClass!}">
3+
<html class="${properties.kcHtmlClass!}"<#if realm.internationalizationEnabled> lang="${locale.currentLanguageTag}"</#if>>
44

55
<head>
66
<meta charset="utf-8">

0 commit comments

Comments
 (0)