Skip to content

Commit c25126f

Browse files
browser: add focusedElement() (#1606)
1 parent b94c584 commit c25126f

File tree

14 files changed

+166
-9
lines changed

14 files changed

+166
-9
lines changed

webtau-browser/src/main/java/org/testingisdocumenting/webtau/browser/Browser.java

+4
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,10 @@ public PageElement element(String css) {
168168
return new PageElement(driver, additionalBrowserInteractions, PageElementPath.css(css), false);
169169
}
170170

171+
public PageElement focusedElement() {
172+
return element(":focus");
173+
}
174+
171175
public PageElement $(String css) {
172176
return element(css);
173177
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Focused Element
2+
3+
Acting on currently focused element:
4+
5+
:include-file: scenarios/ui/focusedElement.groovy {
6+
surroundedBy: "focused-element-send-keys"
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* Add: [browser.focusedElement](browser/element-states)

webtau-docs/znai/toc

+3-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ browser
3434
basic-configuration
3535
page-element-and-value
3636
page-object
37-
element-actions-reference
38-
element-values-reference
3937
forms
4038
tables
4139
asynchronous-page
@@ -47,6 +45,9 @@ browser
4745
navigation
4846
alerts
4947
page-open-handlers
48+
element-states
49+
element-actions-reference
50+
element-values-reference
5051
finders-and-filters
5152
matchers
5253
servers
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package scenarios.ui
2+
3+
import static org.testingisdocumenting.webtau.WebTauGroovyDsl.*
4+
5+
scenario("send text to focused element") {
6+
browser.open("/search")
7+
$("#search-box").click()
8+
// focused-element-send-keys
9+
browser.focusedElement().setValue("search this")
10+
// focused-element-send-keys
11+
browser.focusedElement().sendKeys(browser.keys.enter)
12+
13+
$("#message").should contain("searching for")
14+
}
15+
16+
scenario("send text when no focused element") {
17+
browser.reopen("/search")
18+
browser.focusedElement().sendKeys("search this\n")
19+
}

webtau-feature-testing/examples/scenarios/ui/searchInnerDeclarations.groovy

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ package scenarios.ui
22

33
import static org.testingisdocumenting.webtau.WebTauGroovyDsl.*
44

5-
scenario('search by specific query') {
6-
browser.open('/search')
5+
scenario("search by specific query") {
6+
browser.open("/search")
77

8-
$('#search-box').setValue('search this')
9-
$('#search-box').sendKeys("\n")
8+
$("#search-box").setValue("search this")
9+
$("#search-box").sendKeys(browser.keys.enter)
1010

11-
$('#results .result').count.shouldBe > 1
11+
$("#results .result").count.shouldBe > 1
1212
}

webtau-feature-testing/examples/scenarios/ui/searchOuterDeclarations.groovy

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ package scenarios.ui
33
import static org.testingisdocumenting.webtau.WebTauGroovyDsl.*
44

55
def searchBox = $("#search-box")
6-
def numberOfResults = searchBox.count
6+
def numberOfResults = $("#results .result").count
77

88
scenario("search by specific query") {
99
browser.open("/search")
1010

1111
searchBox.setValue("search this")
12-
searchBox.sendKeys("\n")
12+
searchBox.sendKeys(browser.keys.enter)
1313

1414
numberOfResults.shouldBe > 1
1515
}

webtau-feature-testing/src/test/groovy/org/testingisdocumenting/webtau/featuretesting/WebTauBrowserFeaturesTestBase.groovy

+15
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,21 @@ class WebTauBrowserFeaturesTestBase {
365365
runCli("scrollsNoElement.groovy", "webtau.cfg.groovy")
366366
}
367367

368+
@Test
369+
void "search with page elements in place"() {
370+
runCli("searchInnerDeclarations.groovy", "webtau.cfg.groovy")
371+
}
372+
373+
@Test
374+
void "search with page elements outside"() {
375+
runCli("searchOuterDeclarations.groovy", "webtau.cfg.groovy")
376+
}
377+
378+
@Test
379+
void "focused element"() {
380+
runCli("focusedElement.groovy", "webtau.cfg.groovy")
381+
}
382+
368383
@Test
369384
void "personas searching"() {
370385
runCli("searchWithPersonas.groovy", "webtau.cfg.groovy")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"scenarioDetails" : [ {
3+
"scenario" : "after all tests",
4+
"shortContainerId" : "Teardown",
5+
"stepsSummary" : {
6+
"numberOfSuccessful" : 1
7+
}
8+
}, {
9+
"scenario" : "send text to focused element",
10+
"shortContainerId" : "focusedElement.groovy",
11+
"stepsSummary" : {
12+
"numberOfSuccessful" : 8
13+
}
14+
}, {
15+
"scenario" : "send text when no focused element",
16+
"shortContainerId" : "focusedElement.groovy",
17+
"stepsSummary" : {
18+
"numberOfSuccessful" : 1,
19+
"numberOfFailed" : 1
20+
}
21+
} ],
22+
"exitCode" : 1
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"scenarioDetails" : [ {
3+
"scenario" : "after all tests",
4+
"shortContainerId" : "Teardown",
5+
"stepsSummary" : {
6+
"numberOfSuccessful" : 1
7+
}
8+
}, {
9+
"scenario" : "send text to focused element",
10+
"shortContainerId" : "focusedElement.groovy",
11+
"stepsSummary" : {
12+
"numberOfSuccessful" : 8
13+
}
14+
}, {
15+
"scenario" : "send text when no focused element",
16+
"shortContainerId" : "focusedElement.groovy",
17+
"stepsSummary" : {
18+
"numberOfSuccessful" : 1,
19+
"numberOfFailed" : 1
20+
}
21+
} ],
22+
"exitCode" : 1
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"scenarioDetails" : [ {
3+
"scenario" : "after all tests",
4+
"shortContainerId" : "Teardown",
5+
"stepsSummary" : {
6+
"numberOfSuccessful" : 1
7+
}
8+
}, {
9+
"scenario" : "search by specific query",
10+
"shortContainerId" : "searchInnerDeclarations.groovy",
11+
"stepsSummary" : {
12+
"numberOfSuccessful" : 7
13+
}
14+
} ],
15+
"exitCode" : 0
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"scenarioDetails" : [ {
3+
"scenario" : "after all tests",
4+
"shortContainerId" : "Teardown",
5+
"stepsSummary" : {
6+
"numberOfSuccessful" : 1
7+
}
8+
}, {
9+
"scenario" : "search by specific query",
10+
"shortContainerId" : "searchInnerDeclarations.groovy",
11+
"stepsSummary" : {
12+
"numberOfSuccessful" : 7
13+
}
14+
} ],
15+
"exitCode" : 0
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"scenarioDetails" : [ {
3+
"scenario" : "after all tests",
4+
"shortContainerId" : "Teardown",
5+
"stepsSummary" : {
6+
"numberOfSuccessful" : 1
7+
}
8+
}, {
9+
"scenario" : "search by specific query",
10+
"shortContainerId" : "searchOuterDeclarations.groovy",
11+
"stepsSummary" : {
12+
"numberOfSuccessful" : 7
13+
}
14+
} ],
15+
"exitCode" : 0
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"scenarioDetails" : [ {
3+
"scenario" : "after all tests",
4+
"shortContainerId" : "Teardown",
5+
"stepsSummary" : {
6+
"numberOfSuccessful" : 1
7+
}
8+
}, {
9+
"scenario" : "search by specific query",
10+
"shortContainerId" : "searchOuterDeclarations.groovy",
11+
"stepsSummary" : {
12+
"numberOfSuccessful" : 7
13+
}
14+
} ],
15+
"exitCode" : 0
16+
}

0 commit comments

Comments
 (0)