Skip to content

Commit e3a61c5

Browse files
authored
Merge pull request keycloak#4414 from vmuzikar/KEYCLOAK-5229-dep-update
KEYCLOAK-5229 Update testsuite dependencies
2 parents 9ee8f72 + da9a88c commit e3a61c5

File tree

52 files changed

+407
-309
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+407
-309
lines changed

testsuite/integration-arquillian/HOW-TO-RUN.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -336,19 +336,28 @@ To run the tests run:
336336

337337
#### Mozilla Firefox
338338
* **Supported version:** [latest ESR](https://www.mozilla.org/en-US/firefox/organizations/) (Extended Support Release)
339-
* **Driver download required:** no
339+
* **Driver download required:** no (using the old legacy Firefox driver)
340340
* **Run with:** `-Dbrowser=firefox`; optionally you can specify `-Dfirefox_binary=path/to/firefox/binary`
341341

342+
#### Mozilla Firefox with GeckoDriver
343+
You can also use Firefox automation with modern Marionette protocol and GeckoDriver. However, this is **highly experimental** and the testsuite may not work as expected.
344+
* **Supported version:** as latest as possible (Firefox has better support for Marionette with each version released)
345+
* **Driver download required:** [GeckoDriver](https://github.com/mozilla/geckodriver/releases)
346+
* **Run with:** `-Dbrowser=firefox -DfirefoxLegacyDriver=false -Dwebdriver.gecko.driver=path/to/geckodriver`
347+
342348
#### Google Chrome
343349
* **Supported version:** latest stable
344350
* **Driver download required:** [ChromeDriver](https://sites.google.com/a/chromium.org/chromedriver/) which corresponds with your version of the browser
345351
* **Run with:** `-Dbrowser=chrome -Dwebdriver.chrome.driver=path/to/chromedriver`
346352

347353
#### Internet Explorer
348354
* **Supported version:** 11
349-
* **Driver download required:** [Internet Explorer Driver Server](http://www.seleniumhq.org/download/); recommended version [2.53.1 32-bit](http://selenium-release.storage.googleapis.com/2.53/IEDriverServer_Win32_2.53.1.zip)
355+
* **Driver download required:** [Internet Explorer Driver Server](http://www.seleniumhq.org/download/); recommended version [3.5.1 32-bit](http://selenium-release.storage.googleapis.com/3.5/IEDriverServer_Win32_3.5.1.zip)
350356
* **Run with:** `-Dbrowser=internetExplorer -Dwebdriver.ie.driver=path/to/IEDriverServer.exe`
351-
357+
358+
#### Automatic driver downloads
359+
You can rely on automatic driver downloads which is provided by [Arquillian Drone](http://arquillian.org/arquillian-extension-drone/#_automatic_download). To do so just omit the `-Dwebdriver.{browser}.driver` CLI argument when running the tests.
360+
352361
## Run X.509 tests
353362

354363
To run the X.509 client certificate authentication tests:

testsuite/integration-arquillian/pom.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@
4141
<app.server.java.home>${java.home}</app.server.java.home>
4242

4343
<!--component versions-->
44-
<arquillian-core.version>1.1.11.Final</arquillian-core.version>
45-
<selenium.version>2.53.0</selenium.version>
46-
<arquillian-drone.version>2.0.1.Final</arquillian-drone.version>
47-
<arquillian-graphene.version>2.1.0.Alpha3</arquillian-graphene.version>
44+
<arquillian-core.version>1.1.13.Final</arquillian-core.version>
45+
<selenium.version>3.5.1</selenium.version>
46+
<arquillian-drone.version>2.4.0</arquillian-drone.version>
47+
<arquillian-graphene.version>2.3.1</arquillian-graphene.version>
4848
<arquillian-wildfly-container.version>2.1.0.Beta1</arquillian-wildfly-container.version>
4949
<arquillian-wls-container.version>1.0.1.Final</arquillian-wls-container.version>
50-
<arquillian-infinispan-container.version>1.2.0.Alpha2</arquillian-infinispan-container.version>
51-
<version.shrinkwrap.resolvers>2.2.2</version.shrinkwrap.resolvers>
50+
<arquillian-infinispan-container.version>1.2.0.Beta2</arquillian-infinispan-container.version>
51+
<version.shrinkwrap.resolvers>2.2.6</version.shrinkwrap.resolvers>
5252
<undertow-embedded.version>1.0.0.Alpha2</undertow-embedded.version>
5353

5454
<!--migration properties-->

testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/adapter/page/PhotozClientAuthzTestApp.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,9 @@ public void deleteAlbum(String name) {
9393
}
9494

9595
public void navigateToAdminAlbum() {
96-
URLUtils.navigateToUri(driver, toString() + "/#/admin/album", true);
96+
URLUtils.navigateToUri(toString() + "/#/admin/album", true);
9797
driver.navigate().refresh(); // This is sometimes necessary for loading the new policy settings
98-
waitForPageToLoad(driver);
98+
waitForPageToLoad();
9999
pause(WAIT_AFTER_OPERATION);
100100
}
101101

@@ -136,7 +136,7 @@ public void login(String username, String password, String... scopes) throws Int
136136
scopesValue.append(scope);
137137
}
138138

139-
URLUtils.navigateToUri(driver, this.driver.getCurrentUrl() + " " + scopesValue, true);
139+
URLUtils.navigateToUri(this.driver.getCurrentUrl() + " " + scopesValue, true);
140140
}
141141

142142
this.loginPage.form().login(username, password);
@@ -155,7 +155,7 @@ public boolean wasDenied() {
155155

156156
public void viewAlbum(String name) throws InterruptedException {
157157
this.driver.findElement(By.xpath("//a[text() = '" + name + "']")).click();
158-
waitForPageToLoad(driver);
158+
waitForPageToLoad();
159159
driver.navigate().refresh(); // This is sometimes necessary for loading the new policy settings
160160
pause(WAIT_AFTER_OPERATION);
161161
}
@@ -172,6 +172,6 @@ public void navigateTo(boolean waitForMatch) {
172172

173173
@Override
174174
public boolean isCurrent() {
175-
return URLUtils.currentUrlStartWith(driver, toString());
175+
return URLUtils.currentUrlStartWith(toString());
176176
}
177177
}

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,17 @@
1717

1818
package org.keycloak.testsuite.arquillian;
1919

20-
import org.jboss.arquillian.container.spi.client.container.DeployableContainer;
2120
import org.jboss.arquillian.container.osgi.OSGiApplicationArchiveProcessor;
21+
import org.jboss.arquillian.container.spi.client.container.DeployableContainer;
2222
import org.jboss.arquillian.container.test.impl.enricher.resource.URLResourceProvider;
2323
import org.jboss.arquillian.container.test.spi.client.deployment.ApplicationArchiveProcessor;
2424
import org.jboss.arquillian.container.test.spi.client.deployment.DeploymentScenarioGenerator;
2525
import org.jboss.arquillian.core.spi.LoadableExtension;
2626
import org.jboss.arquillian.drone.spi.Configurator;
27-
import org.jboss.arquillian.drone.spi.Instantiator;
28-
import org.jboss.arquillian.drone.webdriver.factory.HtmlUnitDriverFactory;
2927
import org.jboss.arquillian.drone.webdriver.factory.WebDriverFactory;
3028
import org.jboss.arquillian.graphene.location.ContainerCustomizableURLResourceProvider;
3129
import org.jboss.arquillian.graphene.location.CustomizableURLResourceProvider;
30+
import org.jboss.arquillian.test.spi.TestEnricher;
3231
import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider;
3332
import org.jboss.arquillian.test.spi.execution.TestExecutionDecider;
3433
import org.keycloak.testsuite.arquillian.h2.H2TestEnricher;
@@ -43,9 +42,7 @@
4342
import org.keycloak.testsuite.arquillian.provider.URLProvider;
4443
import org.keycloak.testsuite.drone.HtmlUnitScreenshots;
4544
import org.keycloak.testsuite.drone.KeycloakDronePostSetup;
46-
import org.keycloak.testsuite.drone.KeycloakHtmlUnitInstantiator;
4745
import org.keycloak.testsuite.drone.KeycloakWebDriverConfigurator;
48-
import org.jboss.arquillian.test.spi.TestEnricher;
4946

5047
/**
5148
*
@@ -83,7 +80,6 @@ public void register(ExtensionBuilder builder) {
8380

8481
builder
8582
.override(Configurator.class, WebDriverFactory.class, KeycloakWebDriverConfigurator.class)
86-
.override(Instantiator.class, HtmlUnitDriverFactory.class, KeycloakHtmlUnitInstantiator.class)
8783
.observer(HtmlUnitScreenshots.class)
8884
.observer(KeycloakDronePostSetup.class);
8985

testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/auth/page/account/AccountFields.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public void waitForUsernameInputPresent() {
8383
}
8484

8585
public void waitForUsernameInputNotPresent() {
86-
waitUntilElementIsNotPresent(driver, usernameInput);
86+
waitUntilElementIsNotPresent(usernameInput);
8787
}
8888

8989
}

testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/auth/page/account/AccountManagement.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import javax.ws.rs.core.UriBuilder;
2626

27+
import static org.keycloak.testsuite.util.WaitUtils.waitForPageToLoad;
2728
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
2829

2930
/**
@@ -77,6 +78,7 @@ public void backToReferer() {
7778

7879
public void signOut() {
7980
signOutLink.click();
81+
waitForPageToLoad();
8082
}
8183

8284
@Override
@@ -86,34 +88,36 @@ public void logOut() {
8688

8789
public void account() {
8890
accountLink.click();
91+
waitForPageToLoad();
8992
}
9093

9194
public void password() {
9295
passwordLink.click();
96+
waitForPageToLoad();
9397
}
9498

9599
public void authenticator() {
96100
authenticatorLink.click();
101+
waitForPageToLoad();
97102
}
98103

99104
public void sessions() {
100105
sessionsLink.click();
106+
waitForPageToLoad();
101107
}
102108

103109
public void applications() {
104110
applicationsLink.click();
111+
waitForPageToLoad();
105112
}
106113

107114
public void save() {
108115
save.click();
116+
waitForPageToLoad();
109117
}
110118

111119
// public RealmResource realmResource() {
112120
// return keycloak().realm(getAuthRealm());
113121
// }
114122

115-
public void waitForAccountLinkPresent() {
116-
waitUntilElement(accountLink, "account link should be present").is().present();
117-
}
118-
119123
}

testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/auth/page/login/LoginForm.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import org.openqa.selenium.support.FindBy;
2626

2727
import static org.keycloak.testsuite.admin.Users.getPasswordOf;
28-
import static org.keycloak.testsuite.util.WaitUtils.waitForPageToLoad;
28+
import static org.keycloak.testsuite.util.UIUtils.clickLink;
2929
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
3030
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElementIsNotPresent;
3131

@@ -76,28 +76,24 @@ public void login(String username, String password) {
7676
}
7777

7878
public void register() {
79-
registerLink.click();
80-
waitForPageToLoad(driver);
79+
clickLink(registerLink);
8180
}
8281

8382
public void login() {
8483
labelPassword.click(); // This is a nasty trick for IE; As IE was "moving the cursor" towards the login button
8584
// it opened the internationalization menu (when present) and then clicked
8685
// one of the languages instead of the Login button
87-
loginButton.click();
88-
waitForPageToLoad(driver);
86+
clickLink(loginButton);
8987
}
9088

9189
public void forgotPassword() {
92-
forgottenPassword.click();
93-
waitForPageToLoad(driver);
90+
clickLink(forgottenPassword);
9491
}
9592

9693
public void rememberMe(boolean value) {
9794
boolean selected = rememberMe.isSelected();
9895
if ((value && !selected) || !value && selected) {
9996
rememberMe.click();
100-
waitForPageToLoad(driver);
10197
}
10298
}
10399

@@ -111,7 +107,7 @@ public void waitForUsernameInputPresent() {
111107
}
112108

113109
public void waitForRegisterLinkNotPresent() {
114-
waitUntilElementIsNotPresent(driver, registerLink);
110+
waitUntilElementIsNotPresent(registerLink);
115111
}
116112

117113
public void waitForResetPasswordLinkNotPresent() {
@@ -123,7 +119,7 @@ public void waitForRememberMePresent() {
123119
}
124120

125121
public void waitForRememberMeNotPresent() {
126-
waitUntilElementIsNotPresent(driver, rememberMe);
122+
waitUntilElementIsNotPresent(rememberMe);
127123
}
128124

129125
public void waitForLoginButtonPresent() {
@@ -157,8 +153,7 @@ public String getTotpSecret() {
157153
}
158154

159155
public void submit() {
160-
submit.click();
161-
waitForPageToLoad(driver);
156+
clickLink(submit);
162157
}
163158
}
164159
}

testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/auth/page/login/TermsAndConditions.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,16 @@ public class TermsAndConditions extends LoginActions {
3737

3838
@Override
3939
public boolean isCurrent() {
40-
return UIUtils.currentTitleEquals(driver, "Terms and Conditions");
40+
return UIUtils.currentTitleEquals("Terms and Conditions");
4141
}
4242

4343
public void acceptTerms() {
4444
acceptButton.click();
45-
WaitUtils.waitForPageToLoad(driver);
45+
WaitUtils.waitForPageToLoad();
4646
}
4747
public void declineTerms() {
4848
declineButton.click();
49-
WaitUtils.waitForPageToLoad(driver);
49+
WaitUtils.waitForPageToLoad();
5050
}
5151

5252
public String getAcceptButtonText() {

testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/AbstractMultipleSelect2.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,24 @@
1616
*/
1717
package org.keycloak.testsuite.console.page.fragment;
1818

19-
import java.util.HashSet;
20-
import java.util.List;
21-
import java.util.Set;
22-
import java.util.function.BiFunction;
23-
import java.util.function.Function;
24-
2519
import org.jboss.arquillian.drone.api.annotation.Drone;
2620
import org.jboss.arquillian.graphene.fragment.Root;
27-
import org.keycloak.testsuite.util.WaitUtils;
2821
import org.openqa.selenium.By;
2922
import org.openqa.selenium.JavascriptExecutor;
3023
import org.openqa.selenium.Keys;
3124
import org.openqa.selenium.WebDriver;
3225
import org.openqa.selenium.WebElement;
33-
import org.openqa.selenium.interactions.Actions;
3426
import org.openqa.selenium.support.FindBy;
3527

28+
import java.util.HashSet;
29+
import java.util.List;
30+
import java.util.Set;
31+
import java.util.function.BiFunction;
32+
import java.util.function.Function;
33+
34+
import static org.keycloak.testsuite.util.WaitUtils.pause;
35+
import static org.keycloak.testsuite.util.WaitUtils.waitForPageToLoad;
36+
3637
/**
3738
* @author <a href="mailto:[email protected]">Pedro Igor</a>
3839
*/
@@ -44,7 +45,7 @@ public abstract class AbstractMultipleSelect2<R> {
4445
@Drone
4546
private WebDriver driver;
4647

47-
@FindBy(xpath = ".//input[contains(@class,'select2-input')]")
48+
@FindBy(xpath = "//input[contains(@class,'select2-focused')]")
4849
private WebElement search;
4950

5051
@FindBy(xpath = "//div[contains(@class,'select2-result-label')]")
@@ -76,17 +77,17 @@ public void update(Set<R> values) {
7677
}
7778

7879
public void select(R value) {
80+
pause(500);
7981
root.click();
80-
WaitUtils.pause(500);
82+
pause(500);
8183

8284
String id = identity().apply(value);
8385

84-
Actions actions = new Actions(driver);
85-
actions.sendKeys(id).perform();
86-
WaitUtils.pause(500);
86+
search.sendKeys(id);
87+
waitForPageToLoad();
8788

8889
if (result.isEmpty()) {
89-
actions.sendKeys(Keys.ESCAPE).perform();
90+
search.sendKeys(Keys.ESCAPE);
9091
return;
9192
}
9293

@@ -137,7 +138,7 @@ protected BiFunction<WebElement, R, Boolean> deselect() {
137138
WebElement element = selected.findElement(By.xpath(".//a[contains(@class,'select2-search-choice-close')]"));
138139
JavascriptExecutor executor = (JavascriptExecutor) driver;
139140
executor.executeScript("arguments[0].click();", element);
140-
WaitUtils.pause(500);
141+
pause(500);
141142
return true;
142143
}
143144
return false;

testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/DataTable.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import java.util.List;
2727

28+
import static org.keycloak.testsuite.util.WaitUtils.pause;
2829
import static org.keycloak.testsuite.util.WaitUtils.waitForPageToLoad;
2930
import static org.openqa.selenium.By.xpath;
3031

@@ -59,19 +60,20 @@ public void search(String pattern) {
5960

6061
public void clickHeaderButton(String buttonText) {
6162
header.findElement(By.xpath(".//button[text()='" + buttonText + "']")).click();
62-
waitForPageToLoad(driver);
63+
waitForPageToLoad();
6364
}
6465

6566
public void clickHeaderLink(String linkText) {
6667
header.findElement(By.linkText(linkText)).click();
67-
waitForPageToLoad(driver);
68+
waitForPageToLoad();
6869
}
6970

7071
public WebElement body() {
7172
return body;
7273
}
7374

7475
public List<WebElement> rows() {
76+
pause(500); // wait a bit to ensure the table is no more changing
7577
return rows;
7678
}
7779

0 commit comments

Comments
 (0)