Skip to content

Commit 7bc4917

Browse files
appium#846: finished
1 parent 2da0108 commit 7bc4917

File tree

10 files changed

+44
-48
lines changed

10 files changed

+44
-48
lines changed

src/main/java/io/appium/java_client/AppiumFluentWait.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,19 @@
1616

1717
package io.appium.java_client;
1818

19+
import static java.time.Duration.ofMillis;
20+
1921
import com.google.common.base.Throwables;
2022

2123
import org.openqa.selenium.TimeoutException;
2224
import org.openqa.selenium.WebDriverException;
2325
import org.openqa.selenium.support.ui.Clock;
24-
import org.openqa.selenium.support.ui.Duration;
2526
import org.openqa.selenium.support.ui.FluentWait;
2627
import org.openqa.selenium.support.ui.Sleeper;
2728

2829
import java.lang.reflect.Field;
30+
import java.time.Duration;
2931
import java.util.List;
30-
import java.util.concurrent.TimeUnit;
3132
import java.util.function.Function;
3233
import java.util.function.Supplier;
3334

@@ -167,7 +168,7 @@ protected T getInput() {
167168
/**
168169
* Sets the strategy for polling. The default strategy is null,
169170
* which means, that polling interval is always a constant value and is
170-
* set by {@link #pollingEvery(long, TimeUnit)} method. Otherwise the value set by that
171+
* set by {@link #pollingEvery(Duration)} method. Otherwise the value set by that
171172
* method might be just a helper to calculate the actual interval.
172173
* Although, by setting an alternative polling strategy you may flexibly control
173174
* the duration of this interval for each polling round.
@@ -228,7 +229,7 @@ public AppiumFluentWait<T> withPollingStrategy(Function<IterationInfo, Duration>
228229
@Override
229230
public <V> V until(Function<? super T, V> isTrue) {
230231
final long start = getClock().now();
231-
final long end = getClock().laterBy(getTimeout().in(TimeUnit.MILLISECONDS));
232+
final long end = getClock().laterBy(getTimeout().toMillis());
232233
long iterationNumber = 1;
233234
Throwable lastException;
234235
while (true) {
@@ -254,15 +255,15 @@ public <V> V until(Function<? super T, V> isTrue) {
254255
String timeoutMessage = String.format(
255256
"Expected condition failed: %s (tried for %d second(s) with %s interval)",
256257
message == null ? "waiting for " + isTrue : message,
257-
getTimeout().in(TimeUnit.SECONDS), getInterval());
258+
getTimeout().getSeconds(), getInterval());
258259
throw timeoutException(timeoutMessage, lastException);
259260
}
260261

261262
try {
262263
Duration interval = getInterval();
263264
if (pollingStrategy != null) {
264265
final IterationInfo info = new IterationInfo(iterationNumber,
265-
new Duration(getClock().now() - start, TimeUnit.MILLISECONDS), getTimeout(),
266+
ofMillis(getClock().now() - start), getTimeout(),
266267
interval);
267268
interval = pollingStrategy.apply(info);
268269
}

src/main/java/io/appium/java_client/pagefactory/AppiumElementLocatorFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public class AppiumElementLocatorFactory implements CacheableElementLocatorFacto
4444
* @param duration is a POJO which contains timeout parameters for the elements to be found
4545
* @param builder is handler of Appium-specific page object annotations
4646
* @deprecated This constructor is going to be
47-
* removed. Use {@link #AppiumElementLocatorFactory(SearchContext, Duration, AppiumByBuilder)} instead.
47+
* removed. Use {@link #AppiumElementLocatorFactory(SearchContext, Duration, AppiumByBuilder)} instead.
4848
*/
4949
@Deprecated
5050
public AppiumElementLocatorFactory(SearchContext searchContext, TimeOutDuration duration,

src/main/java/io/appium/java_client/pagefactory/AppiumFieldDecorator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public AppiumFieldDecorator(SearchContext context, long timeout,
9393
* {@link Widget} or some other user's extension/implementation.
9494
* @param duration is a desired duration of the waiting for an element presence.
9595
* @deprecated This constructor is going to be removed. Use {@link #AppiumFieldDecorator(SearchContext, Duration)}
96-
* instead.
96+
* instead.
9797
*/
9898
@Deprecated
9999
public AppiumFieldDecorator(SearchContext context, TimeOutDuration duration) {

src/main/java/io/appium/java_client/pagefactory/TimeOutDuration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
* Represents an duration of waiting for element rendering.
2626
*
2727
* @deprecated this class is going to be removed in favour of {@link java.time.Duration}
28-
* usage.
28+
* usage.
2929
*/
3030
@Deprecated
3131
public class TimeOutDuration {

src/main/java/io/appium/java_client/pagefactory/WithTimeout.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616

1717
package io.appium.java_client.pagefactory;
1818

19+
import static java.time.temporal.ChronoUnit.FOREVER;
20+
import static java.time.temporal.ChronoUnit.MILLIS;
21+
import static java.util.concurrent.TimeUnit.MILLISECONDS;
22+
import static java.util.concurrent.TimeUnit.NANOSECONDS;
23+
1924
import java.lang.annotation.ElementType;
2025
import java.lang.annotation.Retention;
2126
import java.lang.annotation.RetentionPolicy;
@@ -24,11 +29,6 @@
2429
import java.time.temporal.ChronoUnit;
2530
import java.util.concurrent.TimeUnit;
2631

27-
import static java.time.temporal.ChronoUnit.FOREVER;
28-
import static java.time.temporal.ChronoUnit.MILLIS;
29-
import static java.util.concurrent.TimeUnit.MILLISECONDS;
30-
import static java.util.concurrent.TimeUnit.NANOSECONDS;
31-
3232
/**
3333
* This annotation is used when some element waits for time
3434
* that differs from defined by default.
@@ -45,8 +45,7 @@
4545
/**
4646
* Desired time unit.
4747
*
48-
* @deprecated use {@link #chronoUnit()} instead.
49-
* This property is going to be removed.
48+
* @deprecated use {@link #chronoUnit()} instead. This property is going to be removed.
5049
* @return time unit
5150
*/
5251
@Deprecated
@@ -56,7 +55,7 @@
5655
* Desired time unit.
5756
*
5857
* @return time unit. Default value {@link java.time.temporal.ChronoUnit#FOREVER} was added
59-
* for backward compatibility temporary.
58+
* for backward compatibility temporary.
6059
*/
6160
ChronoUnit chronoUnit() default FOREVER;
6261

src/test/java/io/appium/java_client/android/AndroidFunctionTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.appium.java_client.android;
22

3+
import static java.time.Duration.ofMillis;
4+
import static java.time.Duration.ofSeconds;
35
import static org.hamcrest.core.Is.is;
46
import static org.hamcrest.core.StringContains.containsString;
57
import static org.junit.Assert.assertThat;
@@ -20,7 +22,6 @@
2022
import java.util.ArrayList;
2123
import java.util.List;
2224
import java.util.Set;
23-
import java.util.concurrent.TimeUnit;
2425
import java.util.regex.Matcher;
2526
import java.util.regex.Pattern;
2627

@@ -80,7 +81,7 @@ public class AndroidFunctionTest extends BaseAndroidTest {
8081
searchingFunction.compose(contextFunction);
8182

8283
Wait<Pattern> wait = new FluentWait<>(Pattern.compile("WEBVIEW"))
83-
.withTimeout(30, TimeUnit.SECONDS);
84+
.withTimeout(ofSeconds(30));
8485
List<WebElement> elements = wait.until(compositeFunction);
8586

8687
assertThat("Element size should be 1", elements.size(), is(1));
@@ -115,7 +116,7 @@ public class AndroidFunctionTest extends BaseAndroidTest {
115116
});
116117

117118
Wait<Pattern> wait = new FluentWait<>(Pattern.compile("WEBVIEW"))
118-
.withTimeout(30, TimeUnit.SECONDS);
119+
.withTimeout(ofSeconds(30));
119120
List<WebElement> elements = wait.until(compositeFunction);
120121
assertThat("Element size should be 1", elements.size(), is(1));
121122
assertThat("WebView is expected", driver.getContext(), containsString("WEBVIEW"));
@@ -124,13 +125,13 @@ public class AndroidFunctionTest extends BaseAndroidTest {
124125

125126
@Test(expected = TimeoutException.class) public void nullPointerExceptionSafetyTestWithPrecondition() {
126127
Wait<Pattern> wait = new FluentWait<>(Pattern.compile("Fake_context"))
127-
.withTimeout(30, TimeUnit.SECONDS).pollingEvery(500, TimeUnit.MILLISECONDS);
128+
.withTimeout(ofSeconds(30)).pollingEvery(ofMillis(500));
128129
assertTrue(wait.until(searchingFunction.compose(contextFunction)).size() > 0);
129130
}
130131

131132
@Test(expected = TimeoutException.class) public void nullPointerExceptionSafetyTestWithPostConditions() {
132133
Wait<Pattern> wait = new FluentWait<>(Pattern.compile("Fake_context"))
133-
.withTimeout(30, TimeUnit.SECONDS).pollingEvery(500, TimeUnit.MILLISECONDS);
134+
.withTimeout(ofSeconds(30)).pollingEvery(ofMillis(500));
134135
assertTrue(wait.until(contextFunction.andThen(searchingFunction).andThen(filteringFunction)).size() > 0);
135136
}
136137
}

src/test/java/io/appium/java_client/android/BaseAndroidTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public class BaseAndroidTest {
4848
File appDir = new File("src/test/java/io/appium/java_client");
4949
File app = new File(appDir, "ApiDemos-debug.apk");
5050
DesiredCapabilities capabilities = new DesiredCapabilities();
51-
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.ANDROID_UIAUTOMATOR2);
51+
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.APPIUM);
5252
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
5353
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
5454
driver = new AndroidDriver<>(service.getUrl(), capabilities);

src/test/java/io/appium/java_client/appium/AppiumFluentWaitTest.java

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package io.appium.java_client.appium;
1818

19+
import static java.time.Duration.ofSeconds;
1920
import static org.hamcrest.MatcherAssert.assertThat;
2021
import static org.hamcrest.core.Is.is;
2122
import static org.hamcrest.core.IsEqual.equalTo;
@@ -25,17 +26,14 @@
2526
import org.junit.Assert;
2627
import org.junit.Test;
2728
import org.openqa.selenium.TimeoutException;
28-
import org.openqa.selenium.support.ui.Duration;
2929
import org.openqa.selenium.support.ui.SystemClock;
3030
import org.openqa.selenium.support.ui.Wait;
3131

32-
import java.util.concurrent.TimeUnit;
3332
import java.util.concurrent.atomic.AtomicInteger;
3433
import java.util.function.Function;
3534

3635
public class AppiumFluentWaitTest {
37-
38-
/*
36+
3937
private static class FakeElement {
4038
public boolean isDisplayed() {
4139
return false;
@@ -46,11 +44,11 @@ public boolean isDisplayed() {
4644
public void testDefaultStrategy() {
4745
final FakeElement el = new FakeElement();
4846
final Wait<FakeElement> wait = new AppiumFluentWait<>(el, new SystemClock(), duration -> {
49-
assertThat(duration.in(TimeUnit.SECONDS), is(equalTo(1L)));
50-
Thread.sleep(duration.in(TimeUnit.MILLISECONDS));
47+
assertThat(duration.getSeconds(), is(equalTo(1L)));
48+
Thread.sleep(duration.toMillis());
5149
}).withPollingStrategy(AppiumFluentWait.IterationInfo::getInterval)
52-
.withTimeout(3, TimeUnit.SECONDS)
53-
.pollingEvery(1, TimeUnit.SECONDS);
50+
.withTimeout(ofSeconds(3))
51+
.pollingEvery(ofSeconds(1));
5452
wait.until(FakeElement::isDisplayed);
5553
Assert.fail("TimeoutException is expected");
5654
}
@@ -61,11 +59,11 @@ public void testCustomStrategyOverridesDefaultInterval() {
6159
final AtomicInteger callsCounter = new AtomicInteger(0);
6260
final Wait<FakeElement> wait = new AppiumFluentWait<>(el, new SystemClock(), duration -> {
6361
callsCounter.incrementAndGet();
64-
assertThat(duration.in(TimeUnit.SECONDS), is(equalTo(2L)));
65-
Thread.sleep(duration.in(TimeUnit.MILLISECONDS));
66-
}).withPollingStrategy(info -> new Duration(2, TimeUnit.SECONDS))
67-
.withTimeout(3, TimeUnit.SECONDS)
68-
.pollingEvery(1, TimeUnit.SECONDS);
62+
assertThat(duration.getSeconds(), is(equalTo(2L)));
63+
Thread.sleep(duration.toMillis());
64+
}).withPollingStrategy(info -> ofSeconds(2))
65+
.withTimeout(ofSeconds(3))
66+
.pollingEvery(ofSeconds(1));
6967
try {
7068
wait.until(FakeElement::isDisplayed);
7169
Assert.fail("TimeoutException is expected");
@@ -83,11 +81,11 @@ public void testIntervalCalculationForCustomStrategy() {
8381
final Function<Long, Long> pollingStrategy = x -> x * 2;
8482
final Wait<FakeElement> wait = new AppiumFluentWait<>(el, new SystemClock(), duration -> {
8583
int callNumber = callsCounter.incrementAndGet();
86-
assertThat(duration.in(TimeUnit.SECONDS), is(equalTo(pollingStrategy.apply((long) callNumber))));
87-
Thread.sleep(duration.in(TimeUnit.MILLISECONDS));
88-
}).withPollingStrategy(info -> new Duration(pollingStrategy.apply(info.getNumber()), TimeUnit.SECONDS))
89-
.withTimeout(4, TimeUnit.SECONDS)
90-
.pollingEvery(1, TimeUnit.SECONDS);
84+
assertThat(duration.getSeconds(), is(equalTo(pollingStrategy.apply((long) callNumber))));
85+
Thread.sleep(duration.toMillis());
86+
}).withPollingStrategy(info -> ofSeconds(pollingStrategy.apply(info.getNumber())))
87+
.withTimeout(ofSeconds(4))
88+
.pollingEvery(ofSeconds(1));
9189
try {
9290
wait.until(FakeElement::isDisplayed);
9391
Assert.fail("TimeoutException is expected");
@@ -96,5 +94,4 @@ public void testIntervalCalculationForCustomStrategy() {
9694
assertThat(callsCounter.get(), is(equalTo(2)));
9795
}
9896
}
99-
*/
10097
}

src/test/java/io/appium/java_client/pagefactory_tests/IOSMobileBrowserCompatibilityTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package io.appium.java_client.pagefactory_tests;
1818

19+
import static java.time.Duration.ofSeconds;
20+
1921
import io.appium.java_client.ios.IOSDriver;
2022
import io.appium.java_client.pagefactory.AndroidFindBy;
2123
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
@@ -37,8 +39,6 @@
3739

3840
import java.util.List;
3941

40-
import static java.time.Duration.ofSeconds;
41-
4242
public class IOSMobileBrowserCompatibilityTest {
4343

4444
private WebDriver driver;

src/test/java/io/appium/java_client/pagefactory_tests/MobileBrowserCompatibilityTest.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package io.appium.java_client.pagefactory_tests;
1818

19+
import static java.time.Duration.ofSeconds;
20+
1921
import io.appium.java_client.android.AndroidDriver;
2022
import io.appium.java_client.pagefactory.AndroidFindBy;
2123
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
@@ -34,11 +36,7 @@
3436
import org.openqa.selenium.support.FindBys;
3537
import org.openqa.selenium.support.PageFactory;
3638

37-
import java.time.Duration;
3839
import java.util.List;
39-
import java.util.concurrent.TimeUnit;
40-
41-
import static java.time.Duration.ofSeconds;
4240

4341
public class MobileBrowserCompatibilityTest {
4442

0 commit comments

Comments
 (0)