Skip to content

Commit c041fa9

Browse files
committed
make API chainable
1 parent 6960173 commit c041fa9

Some content is hidden

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

43 files changed

+244
-219
lines changed

lib/src/main/kotlin/com/luissoares/JavaScriptScript.kt renamed to lib/src/main/kotlin/seleniumtestinglib/JavaScriptScript.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.luissoares
1+
package seleniumtestinglib
22

33
import org.openqa.selenium.JavascriptExecutor
44

lib/src/main/kotlin/com/luissoares/RemoteWebDriver.kt renamed to lib/src/main/kotlin/seleniumtestinglib/RemoteWebDriver.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.luissoares
1+
package seleniumtestinglib
22

33
import org.openqa.selenium.remote.RemoteWebDriver
44

lib/src/main/kotlin/com/luissoares/WebElement.kt renamed to lib/src/main/kotlin/seleniumtestinglib/WebElement.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.luissoares
1+
package seleniumtestinglib
22

33
import org.openqa.selenium.WebElement
44
import org.openqa.selenium.remote.RemoteWebDriver
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
1-
package com.luissoares.interactions
1+
package seleniumtestinglib.interactions
22

33
/**
44
* https://testing-library.com/docs/user-event/clipboard
55
*/
6-
fun User.copy() {
6+
fun User.copy(): User {
77
javascriptExecutor.executeScript("await user.copy()")
8+
return this
89
}
910

10-
fun User.cut() {
11+
fun User.cut(): User {
1112
javascriptExecutor.executeScript("await user.cut()")
13+
return this
1214
}
1315

1416
// TODO receive DataTransfer
15-
fun User.paste(clipboardData: String? = null) {
17+
fun User.paste(clipboardData: String? = null): User {
1618
javascriptExecutor.executeScript("await user.paste(arguments[0])", clipboardData)
19+
return this
1720
}
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1-
package com.luissoares.interactions
1+
package seleniumtestinglib.interactions
22

33
/**
44
* https://testing-library.com/docs/user-event/keyboard
55
*/
6-
fun User.keyboard(input: String) {
6+
fun User.keyboard(input: String): User {
77
javascriptExecutor.executeScript("await user.keyboard(arguments[0])", input)
8+
return this
89
}
910

1011
/**
1112
* https://testing-library.com/docs/user-event/convenience#tab
1213
*/
13-
fun User.tab(shift: Boolean = false) {
14+
fun User.tab(shift: Boolean = false): User {
1415
javascriptExecutor.executeScript("await user.tab(arguments[0])", mapOf("shift" to shift))
16+
return this
1517
}
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,62 @@
1-
package com.luissoares.interactions
1+
package seleniumtestinglib.interactions
22

33
import org.openqa.selenium.WebElement
44

55
/**
66
* https://testing-library.com/docs/user-event/pointer
77
*/
8-
fun User.pointer(vararg inputs: String) {
8+
fun User.pointer(vararg inputs: String): User {
99
javascriptExecutor.executeScript("await user.pointer(arguments[0])", inputs)
10+
return this
1011
}
1112

1213
private val pointerValidOptions = setOf("target", "keys", "offset", "pointerName", "node")
13-
fun User.pointer(vararg inputs: Map<String, Any>) {
14+
fun User.pointer(vararg inputs: Map<String, Any>): User {
1415
inputs.forEach { input ->
1516
input.forEach {
1617
require(it.key in pointerValidOptions) { "${it.key} is not valid (valid keys are $pointerValidOptions)" }
1718
}
1819
}
1920
javascriptExecutor.executeScript("await user.pointer(arguments[0])", inputs)
21+
return this
2022
}
2123

2224
/**
2325
* https://testing-library.com/docs/user-event/convenience#click
2426
*/
25-
fun User.click(element: WebElement) {
27+
fun User.click(element: WebElement): User {
2628
javascriptExecutor.executeScript("await user.click(arguments[0])", element)
29+
return this
2730
}
2831

2932
/**
3033
* https://testing-library.com/docs/user-event/convenience#dblclick
3134
*/
32-
fun User.dblClick(element: WebElement) {
35+
fun User.dblClick(element: WebElement): User {
3336
javascriptExecutor.executeScript("await user.dblClick(arguments[0])", element)
37+
return this
3438
}
3539

3640
/**
3741
* https://testing-library.com/docs/user-event/convenience#tripleclick
3842
*/
39-
fun User.tripleClick(element: WebElement) {
43+
fun User.tripleClick(element: WebElement): User {
4044
javascriptExecutor.executeScript("await user.tripleClick(arguments[0])", element)
45+
return this
4146
}
4247

4348
/**
4449
* https://testing-library.com/docs/user-event/convenience#hover
4550
*/
46-
fun User.hover(element: WebElement) {
51+
fun User.hover(element: WebElement): User {
4752
javascriptExecutor.executeScript("await user.hover(arguments[0])", element)
53+
return this
4854
}
4955

5056
/**
5157
* https://testing-library.com/docs/user-event/convenience#unhover
5258
*/
53-
fun User.unhover(element: WebElement) {
59+
fun User.unhover(element: WebElement): User {
5460
javascriptExecutor.executeScript("await user.unhover(arguments[0])", element)
61+
return this
5562
}

lib/src/main/kotlin/com/luissoares/interactions/User.kt renamed to lib/src/main/kotlin/seleniumtestinglib/interactions/User.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
package com.luissoares.interactions
1+
package seleniumtestinglib.interactions
22

3-
import com.luissoares.ensureScript
43
import org.openqa.selenium.JavascriptExecutor
54
import org.openqa.selenium.remote.RemoteWebDriver
5+
import seleniumtestinglib.ensureScript
66

77
class User(val javascriptExecutor: JavascriptExecutor)
88

lib/src/main/kotlin/com/luissoares/interactions/Utility.kt renamed to lib/src/main/kotlin/seleniumtestinglib/interactions/Utility.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,35 @@
1-
package com.luissoares.interactions
1+
package seleniumtestinglib.interactions
22

33
import org.openqa.selenium.WebElement
44

55
/**
66
* https://testing-library.com/docs/user-event/utility#clear
77
*/
8-
fun User.clear(element: WebElement) {
8+
fun User.clear(element: WebElement): User {
99
javascriptExecutor.executeScript("await user.clear(arguments[0])", element)
10+
return this
1011
}
1112

1213
/**
1314
* https://testing-library.com/docs/user-event/utility#-selectoptions-deselectoptions
1415
*/
15-
fun User.selectOptions(element: WebElement, vararg values: SelectOption) {
16+
fun User.selectOptions(element: WebElement, vararg values: SelectOption): User {
1617
javascriptExecutor.executeScript(
1718
"await user.selectOptions(arguments[0], arguments[1])", element,
1819
values.map(SelectOption::value)
1920
)
21+
return this
2022
}
2123

2224
/**
2325
* https://testing-library.com/docs/user-event/utility#-selectoptions-deselectoptions
2426
*/
25-
fun User.deselectOptions(element: WebElement, vararg values: SelectOption) {
27+
fun User.deselectOptions(element: WebElement, vararg values: SelectOption): User {
2628
javascriptExecutor.executeScript(
2729
"await user.deselectOptions(arguments[0], arguments[1])", element,
2830
values.map(SelectOption::value)
2931
)
32+
return this
3033
}
3134

3235
sealed class SelectOption(open val value: Any) {
@@ -44,7 +47,7 @@ fun User.type(
4447
skipAutoClose: Boolean? = null,
4548
initialSelectionStart: Int? = null,
4649
initialSelectionEnd: Int? = null,
47-
) {
50+
): User {
4851
javascriptExecutor.executeScript(
4952
"await user.type(arguments[0], arguments[1], arguments[2])",
5053
element,
@@ -56,19 +59,21 @@ fun User.type(
5659
"initialSelectionEnd" to initialSelectionEnd,
5760
).filterValues { it != null }
5861
)
62+
return this
5963
}
6064

6165
/**
6266
* https://testing-library.com/docs/user-event/utility#upload
6367
*/
64-
fun User.upload(input: WebElement, file: File) {
68+
fun User.upload(input: WebElement, file: File): User {
6569
javascriptExecutor.executeScript(
6670
"await user.upload(arguments[0], new File(arguments[1], arguments[2], arguments[3]))",
6771
input,
6872
file.bits,
6973
file.name,
7074
file.options
7175
)
76+
return this
7277
}
7378

7479
data class File(val bits: List<String>, val name: String, val options: Map<String, String> = emptyMap())

lib/src/main/kotlin/com/luissoares/locators/ByAltText.kt renamed to lib/src/main/kotlin/seleniumtestinglib/locators/ByAltText.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.luissoares.locators
1+
package seleniumtestinglib.locators
22

33
/**
44
* https://testing-library.com/docs/queries/byalttext

lib/src/main/kotlin/com/luissoares/locators/ByDisplayValue.kt renamed to lib/src/main/kotlin/seleniumtestinglib/locators/ByDisplayValue.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.luissoares.locators
1+
package seleniumtestinglib.locators
22

33
/**
44
* https://testing-library.com/docs/queries/bydisplayvalue

0 commit comments

Comments
 (0)