Skip to content

Commit c79e70a

Browse files
repl: PageElement, PageUrl prettyPrint (#812)
1 parent a508d23 commit c79e70a

3 files changed

Lines changed: 50 additions & 45 deletions

File tree

webtau-browser/src/main/java/org/testingisdocumenting/webtau/browser/page/PageElement.java

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,21 @@
1818
package org.testingisdocumenting.webtau.browser.page;
1919

2020
import org.testingisdocumenting.webtau.browser.page.path.ElementsFinder;
21+
import org.testingisdocumenting.webtau.console.ansi.Color;
22+
import org.testingisdocumenting.webtau.data.render.PrettyPrintable;
2123
import org.testingisdocumenting.webtau.expectation.ActualValueExpectations;
2224
import org.testingisdocumenting.webtau.expectation.ValueMatcher;
2325
import org.testingisdocumenting.webtau.expectation.timer.ExpectationTimer;
24-
import org.testingisdocumenting.webtau.reporter.StepReportOptions;
25-
import org.testingisdocumenting.webtau.reporter.TokenizedMessage;
26-
import org.testingisdocumenting.webtau.reporter.ValueMatcherExpectationSteps;
26+
import org.testingisdocumenting.webtau.reporter.*;
2727
import org.openqa.selenium.WebElement;
2828

2929
import java.util.List;
3030
import java.util.regex.Pattern;
31+
import java.util.stream.Stream;
3132

32-
public interface PageElement extends ActualValueExpectations, WithTokenizedDescription {
33+
import static org.testingisdocumenting.webtau.console.ConsoleOutputs.out;
34+
35+
public interface PageElement extends ActualValueExpectations, WithTokenizedDescription, PrettyPrintable {
3336
PageElementValue<Integer> getCount();
3437

3538
WebElement findElement();
@@ -105,4 +108,27 @@ default void waitToNot(ValueMatcher valueMatcher, ExpectationTimer expectationTi
105108
this.describe(), valueMatcher,
106109
expectationTimer, tickMillis, timeOutMillis);
107110
}
111+
112+
@Override
113+
default void prettyPrint() {
114+
TokenizedMessageToAnsiConverter toAnsiConverter = IntegrationTestsMessageBuilder.getConverter();
115+
116+
if (!isPresent()) {
117+
out(Stream.concat(
118+
Stream.of(Color.RED, "element is not present: "),
119+
toAnsiConverter.convert(locationDescription()).stream()).toArray());
120+
return;
121+
}
122+
123+
out(Stream.concat(
124+
Stream.of(Color.GREEN, "element is found: "),
125+
toAnsiConverter.convert(locationDescription()).stream()).toArray());
126+
127+
out(Color.YELLOW, " getText(): ", Color.GREEN, getText());
128+
out(Color.YELLOW, "getUnderlyingValue(): ", Color.GREEN, getUnderlyingValue());
129+
Integer count = getCount().get();
130+
if (count > 1) {
131+
out(Color.YELLOW, " count: ", Color.GREEN, count);
132+
}
133+
}
108134
}

webtau-browser/src/main/java/org/testingisdocumenting/webtau/browser/page/PageUrl.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,16 @@
1717

1818
package org.testingisdocumenting.webtau.browser.page;
1919

20+
import org.testingisdocumenting.webtau.console.ansi.Color;
21+
import org.testingisdocumenting.webtau.data.render.PrettyPrintable;
22+
2023
import java.net.MalformedURLException;
2124
import java.net.URL;
2225
import java.util.function.Supplier;
2326

24-
public class PageUrl {
27+
import static org.testingisdocumenting.webtau.console.ConsoleOutputs.out;
28+
29+
public class PageUrl implements PrettyPrintable {
2530
private static final BrowserContext browserContext = new BrowserContext();
2631
private final Supplier<String> currentUrlSupplier;
2732

@@ -80,4 +85,12 @@ public String toString() {
8085
", query: " + query +
8186
", ref: " + ref;
8287
}
88+
89+
@Override
90+
public void prettyPrint() {
91+
out(Color.YELLOW, " full: ", Color.GREEN, full.get());
92+
out(Color.YELLOW, " path: ", Color.GREEN, path.get());
93+
out(Color.YELLOW, "query: ", Color.GREEN, query.get());
94+
out(Color.YELLOW, " ref: ", Color.GREEN, ref.get());
95+
}
8396
}

webtau-groovy/src/main/groovy/org/testingisdocumenting/webtau/cli/repl/ReplResultRenderer.groovy

Lines changed: 6 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -18,41 +18,31 @@ package org.testingisdocumenting.webtau.cli.repl
1818

1919
import org.apache.groovy.groovysh.Groovysh
2020
import org.testingisdocumenting.webtau.browser.page.PageElement
21-
import org.testingisdocumenting.webtau.browser.page.PageUrl
2221
import org.testingisdocumenting.webtau.cli.repl.tabledata.ReplTableRenderer
2322
import org.testingisdocumenting.webtau.console.ConsoleOutputs
24-
import org.testingisdocumenting.webtau.console.ansi.Color
2523
import org.testingisdocumenting.webtau.data.render.PrettyPrintable
2624
import org.testingisdocumenting.webtau.db.DbQuery
2725
import org.testingisdocumenting.webtau.fs.FileTextContent
28-
import org.testingisdocumenting.webtau.reporter.IntegrationTestsMessageBuilder
29-
import org.testingisdocumenting.webtau.reporter.TokenizedMessageToAnsiConverter
30-
31-
import java.util.stream.Stream
3226

3327
import static org.testingisdocumenting.webtau.cfg.WebTauConfig.cfg
3428
import static org.testingisdocumenting.webtau.console.ConsoleOutputs.out
3529

3630
class ReplResultRenderer {
3731
private final Groovysh groovysh
38-
private final TokenizedMessageToAnsiConverter toAnsiConverter
3932

4033
ReplResultRenderer(Groovysh groovysh) {
4134
this.groovysh = groovysh
42-
toAnsiConverter = IntegrationTestsMessageBuilder.getConverter()
4335
}
4436

4537
void renderResult(Object result) {
46-
if (result instanceof PrettyPrintable) {
47-
result.prettyPrint()
48-
} else if (result instanceof PageElement) {
49-
renderPageElementResult(result)
38+
if (result instanceof PageElement) {
39+
renderPageElementAndHighlight(result)
5040
} else if (result instanceof DbQuery) {
5141
renderDbQueryResult(result)
52-
} else if (result instanceof PageUrl) {
53-
renderPageUrl(result)
5442
} else if (result instanceof FileTextContent) {
5543
renderTextLimitingSize(result.data)
44+
} else if (result instanceof PrettyPrintable) {
45+
result.prettyPrint()
5646
} else {
5747
groovysh.defaultResultHook(result)
5848
}
@@ -68,32 +58,8 @@ class ReplResultRenderer {
6858
out(ReplTableRenderer.render(queryResult.tableData))
6959
}
7060

71-
private static void renderPageUrl(PageUrl pageUrl) {
72-
out(Color.YELLOW, " full: ", Color.GREEN, pageUrl.full.get())
73-
out(Color.YELLOW, " path: ", Color.GREEN, pageUrl.path.get())
74-
out(Color.YELLOW, "query: ", Color.GREEN, pageUrl.query.get())
75-
out(Color.YELLOW, " ref: ", Color.GREEN, pageUrl.ref.get())
76-
}
77-
78-
private void renderPageElementResult(PageElement pageElement) {
79-
if (!pageElement.isPresent()) {
80-
out(Stream.concat(
81-
Stream.of(Color.RED, "element is not present: "),
82-
toAnsiConverter.convert(pageElement.locationDescription()).stream()).toArray())
83-
return
84-
}
85-
86-
out(Stream.concat(
87-
Stream.of(Color.GREEN, "element is found: "),
88-
toAnsiConverter.convert(pageElement.locationDescription()).stream()).toArray())
89-
90-
out(Color.YELLOW, " getText(): ", Color.GREEN, pageElement.getText())
91-
out(Color.YELLOW, "getUnderlyingValue(): ", Color.GREEN, pageElement.getUnderlyingValue())
92-
def count = pageElement.count.get()
93-
if (count > 1) {
94-
out(Color.YELLOW, " count: ", Color.GREEN, count)
95-
}
96-
61+
private static void renderPageElementAndHighlight(PageElement pageElement) {
62+
pageElement.prettyPrint()
9763
pageElement.highlight()
9864
}
9965
}

0 commit comments

Comments
 (0)