Skip to content
This repository was archived by the owner on Mar 25, 2025. It is now read-only.

Commit 8f6e645

Browse files
authored
Merge pull request #11 from slu-it/test-optimization
Test optimization and Wait API Tuning
2 parents 4fa5c14 + 7489085 commit 8f6e645

File tree

73 files changed

+3834
-919
lines changed

Some content is hidden

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

73 files changed

+3834
-919
lines changed

webtester-core/src/main/java/info/novatec/testit/webtester/WebTesterException.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,8 @@ protected WebTesterException(String message, Throwable cause) {
1616
super(message, cause);
1717
}
1818

19+
protected WebTesterException(Throwable cause) {
20+
super(cause);
21+
}
22+
1923
}

webtester-core/src/main/java/info/novatec/testit/webtester/adhoc/AdHocFinder.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import org.openqa.selenium.By;
44
import org.openqa.selenium.SearchContext;
55

6+
import lombok.AccessLevel;
7+
import lombok.Getter;
8+
69
import info.novatec.testit.webtester.browser.Browser;
710
import info.novatec.testit.webtester.internal.PageFragmentFactory;
811
import info.novatec.testit.webtester.pagefragments.GenericElement;
@@ -25,10 +28,11 @@
2528
* @see Browser#finder()
2629
* @since 2.0
2730
*/
31+
@Getter(AccessLevel.PACKAGE)
2832
public final class AdHocFinder {
2933

30-
private final SearchContext searchContext;
3134
private final PageFragmentFactory factory;
35+
private final SearchContext searchContext;
3236

3337
/**
3438
* Creates a new {@link AdHocFinder finder} instance using the given {@link Browser browser} as a base. The
@@ -42,7 +46,8 @@ public final class AdHocFinder {
4246
* @since 2.0
4347
*/
4448
public AdHocFinder(Browser browser) {
45-
this(browser, browser.webDriver());
49+
this.factory = new PageFragmentFactory(browser);
50+
this.searchContext = browser.webDriver();
4651
}
4752

4853
/**
@@ -56,12 +61,14 @@ public AdHocFinder(Browser browser) {
5661
* @since 2.0
5762
*/
5863
public AdHocFinder(PageFragment parent) {
59-
this(parent.getBrowser(), parent.webElement());
64+
this.factory = new PageFragmentFactory(parent.getBrowser());
65+
this.searchContext = parent.webElement();
6066
}
6167

62-
private AdHocFinder(Browser browser, SearchContext searchContext) {
68+
// Constructor used for unit tests.
69+
AdHocFinder(PageFragmentFactory factory, SearchContext searchContext) {
70+
this.factory = factory;
6371
this.searchContext = searchContext;
64-
this.factory = new PageFragmentFactory(browser);
6572
}
6673

6774
/**
@@ -95,7 +102,7 @@ public ByFinder find(String cssSelector) {
95102
* @since 2.0
96103
*/
97104
public ByFinder findBy(By by) {
98-
return new ByFinder(searchContext, by, factory);
105+
return new ByFinder(factory, searchContext, by);
99106
}
100107

101108
/**
@@ -110,7 +117,7 @@ public ByFinder findBy(By by) {
110117
* @since 2.0
111118
*/
112119
public TypeFinder<GenericElement> findGeneric() {
113-
return new TypeFinder<>(searchContext, GenericElement.class, factory);
120+
return new TypeFinder<>(factory, searchContext, GenericElement.class);
114121
}
115122

116123
/**
@@ -125,7 +132,7 @@ public TypeFinder<GenericElement> findGeneric() {
125132
* @since 2.0
126133
*/
127134
public <T extends PageFragment> TypeFinder<T> find(Class<T> fragmentClass) {
128-
return new TypeFinder<>(searchContext, fragmentClass, factory);
135+
return new TypeFinder<>(factory, searchContext, fragmentClass);
129136
}
130137

131138
}

webtester-core/src/main/java/info/novatec/testit/webtester/adhoc/ByFinder.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import org.openqa.selenium.SearchContext;
77
import org.openqa.selenium.WebElement;
88

9+
import lombok.AccessLevel;
10+
import lombok.Getter;
11+
912
import info.novatec.testit.webtester.internal.PageFragmentFactory;
1013
import info.novatec.testit.webtester.pagefragments.GenericElement;
1114
import info.novatec.testit.webtester.pagefragments.PageFragment;
@@ -26,16 +29,17 @@
2629
* @see ByFinder#asManyGenerics()
2730
* @since 2.0
2831
*/
32+
@Getter(AccessLevel.PACKAGE)
2933
public class ByFinder {
3034

35+
private final PageFragmentFactory factory;
3136
private final SearchContext searchContext;
3237
private final By by;
33-
private final PageFragmentFactory factory;
3438

35-
public ByFinder(SearchContext searchContext, By by, PageFragmentFactory factory) {
39+
public ByFinder(PageFragmentFactory factory, SearchContext searchContext, By by) {
40+
this.factory = factory;
3641
this.searchContext = searchContext;
3742
this.by = by;
38-
this.factory = factory;
3943
}
4044

4145
/**
@@ -92,9 +96,7 @@ public Stream<GenericElement> asManyGenerics() {
9296
* @since 2.0
9397
*/
9498
public <T extends PageFragment> Stream<T> asMany(Class<T> fragmentClass) {
95-
return searchContext.findElements(by)
96-
.stream()
97-
.map(webElement -> factory.pageFragment(fragmentClass, webElement));
99+
return searchContext.findElements(by).stream().map(webElement -> factory.pageFragment(fragmentClass, webElement));
98100
}
99101

100102
}

webtester-core/src/main/java/info/novatec/testit/webtester/adhoc/TypeFinder.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import org.openqa.selenium.SearchContext;
77
import org.openqa.selenium.WebElement;
88

9+
import lombok.AccessLevel;
10+
import lombok.Getter;
11+
912
import info.novatec.testit.webtester.internal.PageFragmentFactory;
1013
import info.novatec.testit.webtester.pagefragments.PageFragment;
1114
import info.novatec.testit.webtester.pagefragments.identification.ByProducers;
@@ -26,16 +29,17 @@
2629
* @see TypeFinder#manyBy(By)
2730
* @since 2.0
2831
*/
32+
@Getter(AccessLevel.PACKAGE)
2933
public class TypeFinder<T extends PageFragment> {
3034

35+
private final PageFragmentFactory factory;
3136
private final SearchContext searchContext;
3237
private final Class<T> fragmentClass;
33-
private final PageFragmentFactory factory;
3438

35-
public TypeFinder(SearchContext searchContext, Class<T> fragmentClass, PageFragmentFactory factory) {
39+
public TypeFinder(PageFragmentFactory factory, SearchContext searchContext, Class<T> fragmentClass) {
40+
this.factory = factory;
3641
this.searchContext = searchContext;
3742
this.fragmentClass = fragmentClass;
38-
this.factory = factory;
3943
}
4044

4145
/**

webtester-core/src/main/java/info/novatec/testit/webtester/browser/WebDriverBrowser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public Browser build() {
218218
if (customConfiguration != null) {
219219
configuration = customConfiguration;
220220
} else {
221-
configuration = DefaultConfigurationBuilder.create();
221+
configuration = new DefaultConfigurationBuilder().build();
222222
}
223223
return new WebDriverBrowser(configuration, webDriver);
224224
}

webtester-core/src/main/java/info/novatec/testit/webtester/browser/operations/FocusSetter.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ public void onFrame(int index) throws NoSuchFrameException {
5151
log.debug("focused on frame with index: {}", index);
5252
}
5353

54-
private WebDriver doOnFrame(Browser browser, int index) {
55-
return browser.webDriver().switchTo().frame(index);
54+
private void doOnFrame(Browser browser, int index) {
55+
browser.webDriver().switchTo().frame(index);
5656
}
5757

5858
/**
@@ -70,8 +70,8 @@ public void onFrame(String nameOrId) throws NoSuchFrameException {
7070
log.debug("focused on frame with name or ID: {}", nameOrId);
7171
}
7272

73-
private WebDriver doOnFrame(Browser browser, String nameOrId) {
74-
return browser.webDriver().switchTo().frame(nameOrId);
73+
private void doOnFrame(Browser browser, String nameOrId) {
74+
browser.webDriver().switchTo().frame(nameOrId);
7575
}
7676

7777
/**
@@ -89,8 +89,8 @@ public void onFrame(PageFragment frame) throws NoSuchFrameException {
8989
log.debug("focused on frame page fragment: {}", frame);
9090
}
9191

92-
private WebDriver doOnFrame(Browser browser, PageFragment frame) {
93-
return browser.webDriver().switchTo().frame(frame.webElement());
92+
private void doOnFrame(Browser browser, PageFragment frame) {
93+
browser.webDriver().switchTo().frame(frame.webElement());
9494
}
9595

9696
/**

webtester-core/src/main/java/info/novatec/testit/webtester/browser/operations/PageSourceSaver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ public Optional<File> save(File targetFolder, String fileNameWithoutSuffix) {
183183
} catch (IOException | RuntimeException e) {
184184
log.warn("Exception while saving page source, returning null.", e);
185185
}
186-
return Optional.ofNullable(file).filter(File::isFile);
186+
return Optional.ofNullable(file);
187187
}
188188

189189
private File doSavePageSource(File targetFolder, String fileNameWithoutSuffix) throws IOException {

webtester-core/src/main/java/info/novatec/testit/webtester/conditions/Condition.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package info.novatec.testit.webtester.conditions;
22

3-
import java.util.Objects;
43
import java.util.function.Predicate;
54

65

@@ -23,13 +22,11 @@ default Condition<T> negate() {
2322

2423
@Override
2524
default Condition<T> and(Predicate<? super T> other) {
26-
Objects.requireNonNull(other);
2725
return (t) -> test(t) && other.test(t);
2826
}
2927

3028
@Override
3129
default Condition<T> or(Predicate<? super T> other) {
32-
Objects.requireNonNull(other);
3330
return (t) -> test(t) || other.test(t);
3431
}
3532

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package info.novatec.testit.webtester.conditions.pagefragments;
22

3+
import lombok.Getter;
4+
35
import info.novatec.testit.webtester.conditions.Condition;
46
import info.novatec.testit.webtester.pagefragments.PageFragment;
57

@@ -11,27 +13,28 @@
1113
* @see PageFragment#getAttribute(String)
1214
* @since 2.0
1315
*/
16+
@Getter
1417
public class Attribute implements Condition<PageFragment> {
1518

16-
private final String attributeName;
19+
private final String expectedAttributeName;
1720

1821
/**
1922
* Creates a new {@link Attribute} condition. Using the given attribute.
2023
*
21-
* @param attributeName the name of the attribute to check
24+
* @param expectedAttributeName the name of the attribute to check
2225
*/
23-
public Attribute(String attributeName) {
24-
this.attributeName = attributeName;
26+
public Attribute(String expectedAttributeName) {
27+
this.expectedAttributeName = expectedAttributeName;
2528
}
2629

2730
@Override
2831
public boolean test(PageFragment pageFragment) {
29-
return pageFragment.getAttribute(attributeName).isPresent();
32+
return pageFragment.getAttribute(expectedAttributeName).isPresent();
3033
}
3134

3235
@Override
3336
public String toString() {
34-
return String.format("attribute '%s'", attributeName);
37+
return String.format("attribute '%s'", expectedAttributeName);
3538
}
3639

3740
}

webtester-core/src/main/java/info/novatec/testit/webtester/conditions/pagefragments/AttributeWithValue.java

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

33
import java.util.Objects;
44

5+
import lombok.Getter;
6+
57
import info.novatec.testit.webtester.conditions.Condition;
68
import info.novatec.testit.webtester.pagefragments.PageFragment;
79

@@ -14,26 +16,27 @@
1416
* @see PageFragment#getAttribute(String)
1517
* @since 2.0
1618
*/
19+
@Getter
1720
public class AttributeWithValue implements Condition<PageFragment> {
1821

19-
private final String attributeName;
22+
private final String expectedAttributeName;
2023
private final String expectedValue;
2124

2225
/**
2326
* Creates a new {@link AttributeWithValue} condition. Using the given attribute name and expected value.
2427
* The value is an Object and it's toString method will be used to extract the value for the comparison.
2528
*
26-
* @param attributeName the name of the attribute to check
29+
* @param expectedAttributeName the name of the attribute to check
2730
* @param expectedValue the value to check
2831
*/
29-
public AttributeWithValue(String attributeName, Object expectedValue) {
30-
this.attributeName = attributeName;
32+
public AttributeWithValue(String expectedAttributeName, Object expectedValue) {
33+
this.expectedAttributeName = expectedAttributeName;
3134
this.expectedValue = String.valueOf(expectedValue);
3235
}
3336

3437
@Override
3538
public boolean test(PageFragment pageFragment) {
36-
return pageFragment.getAttribute(attributeName).filter(this::isExpectedValue).isPresent();
39+
return pageFragment.getAttribute(expectedAttributeName).filter(this::isExpectedValue).isPresent();
3740
}
3841

3942
private boolean isExpectedValue(String value) {
@@ -42,7 +45,7 @@ private boolean isExpectedValue(String value) {
4245

4346
@Override
4447
public String toString() {
45-
return String.format("attribute '%s' with value '%s'", attributeName, expectedValue);
48+
return String.format("attribute '%s' with value '%s'", expectedAttributeName, expectedValue);
4649
}
4750

4851
}

webtester-core/src/main/java/info/novatec/testit/webtester/conditions/pagefragments/SelectedIndex.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package info.novatec.testit.webtester.conditions.pagefragments;
22

3+
import lombok.Getter;
4+
35
import info.novatec.testit.webtester.conditions.Condition;
46
import info.novatec.testit.webtester.pagefragments.SingleSelect;
57

@@ -12,6 +14,7 @@
1214
* @see SingleSelect#getSelectionIndex()
1315
* @since 2.0
1416
*/
17+
@Getter
1518
public class SelectedIndex implements Condition<SingleSelect> {
1619

1720
private final Integer expectedIndex;

webtester-core/src/main/java/info/novatec/testit/webtester/conditions/pagefragments/SelectedIndices.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
import org.apache.commons.lang.StringUtils;
1010

11+
import lombok.Getter;
12+
1113
import info.novatec.testit.webtester.conditions.Condition;
1214
import info.novatec.testit.webtester.pagefragments.MultiSelect;
1315

@@ -21,20 +23,21 @@
2123
* @see MultiSelect#getSelectionIndices()
2224
* @since 2.0
2325
*/
26+
@Getter
2427
public class SelectedIndices implements Condition<MultiSelect> {
2528

2629
private final Set<Integer> expectedIndices = new HashSet<>();
2730

28-
public SelectedIndices(Integer index) {
29-
this.expectedIndices.add(index);
31+
public SelectedIndices(Integer expectedIndex) {
32+
this.expectedIndices.add(expectedIndex);
3033
}
3134

32-
public SelectedIndices(Integer... indices) {
33-
this.expectedIndices.addAll(Arrays.asList(indices));
35+
public SelectedIndices(Integer... expectedIndices) {
36+
this.expectedIndices.addAll(Arrays.asList(expectedIndices));
3437
}
3538

36-
public SelectedIndices(Collection<Integer> indices) {
37-
this.expectedIndices.addAll(indices);
39+
public SelectedIndices(Collection<Integer> expectedIndices) {
40+
this.expectedIndices.addAll(expectedIndices);
3841
}
3942

4043
@Override

webtester-core/src/main/java/info/novatec/testit/webtester/conditions/pagefragments/SelectedText.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package info.novatec.testit.webtester.conditions.pagefragments;
22

3+
import lombok.Getter;
4+
35
import info.novatec.testit.webtester.conditions.Condition;
46
import info.novatec.testit.webtester.pagefragments.SingleSelect;
57

@@ -12,6 +14,7 @@
1214
* @see SingleSelect#getSelectionText()
1315
* @since 2.0
1416
*/
17+
@Getter
1518
public class SelectedText implements Condition<SingleSelect> {
1619

1720
private final String expectedText;

0 commit comments

Comments
 (0)