Skip to content

Commit 27c8d24

Browse files
committed
add required
1 parent a90a737 commit 27c8d24

File tree

5 files changed

+52
-1
lines changed

5 files changed

+52
-1
lines changed

README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,21 @@ driver.user.selectOptions(driver.findElement(ByRole("listbox")), "C")
6161

6262
ℹ️ _user-event's JavaScript only loads if it's used._
6363

64+
## jest-dom matchers
65+
66+
[jest-dom](https://testing-library.com/docs/ecosystem-jest-dom) matchers are mapped:
67+
68+
```kotlin
69+
val input = driver.findElements(ByTestId("test1"))
70+
assertTrue(input.isInTheDocument)
71+
assertFalse(input.isEmptyDomElement)
72+
73+
// alternative API:
74+
expect(input).not.toBeInvalid()
75+
expect(input).toBeInTheDocument()
76+
77+
```
78+
6479
---
6580

6681
ℹ️ _Want to know about the creation process? Read more about it

lib/src/main/kotlin/seleniumtestinglib/coreapi/Api.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ enum class MatchType {
4848
}
4949

5050
/**
51-
* https://testing-library.com/docs/queries/about
51+
* https://testing-library.com/docs/dom-testing-library/intro
5252
*/
5353
private fun RemoteWebDriver.executeTLScript(script: String, vararg args: Any?): Any? {
5454
ensureScript("testing-library.js", "screen?.getAllByAltText")

lib/src/main/kotlin/seleniumtestinglib/jestdom/Api.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,8 @@ class JestDomExpect(
3737
fun toBeInvalid() {
3838
assert(webElement?.isInvalid)
3939
}
40+
41+
fun toBeRequired() {
42+
assert(webElement?.isRequired)
43+
}
4044
}

lib/src/main/kotlin/seleniumtestinglib/jestdom/JestDom.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ val WebElement.isDisabled get() = executeJestDomQuery("toBeDisabled")
1010
val WebElement.isEmptyDomElement get() = executeJestDomQuery("toBeEmptyDOMElement")
1111
val WebElement.isInTheDocument get() = executeJestDomQuery("toBeInTheDocument")
1212
val WebElement.isInvalid get() = executeJestDomQuery("toBeInvalid")
13+
val WebElement.isRequired get() = executeJestDomQuery("toBeRequired")
1314

1415
private fun WebElement.executeJestDomQuery(domFunction: String): Boolean {
1516
val driver = (this as RemoteWebElement).wrappedDriver as RemoteWebDriver
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package seleniumtestinglib.jestdom
2+
3+
import org.junit.jupiter.api.extension.ExtendWith
4+
import org.openqa.selenium.By
5+
import org.openqa.selenium.remote.RemoteWebDriver
6+
import seleniumtestinglib.DriverLifeCycle
7+
import seleniumtestinglib.render
8+
import kotlin.test.Test
9+
import kotlin.test.assertFalse
10+
import kotlin.test.assertTrue
11+
12+
@ExtendWith(DriverLifeCycle::class)
13+
class RequiredTest(private val driver: RemoteWebDriver) {
14+
15+
@Test
16+
fun required() {
17+
driver.render(
18+
"""
19+
<input required />
20+
<input />
21+
"""
22+
)
23+
24+
val required = driver.findElements(By.tagName("input")).first()
25+
assertTrue(required.isRequired)
26+
expect(required).toBeRequired()
27+
val notRequired = driver.findElements(By.tagName("input")).last()
28+
assertFalse(notRequired.isRequired)
29+
expect(notRequired).not.toBeRequired()
30+
}
31+
}

0 commit comments

Comments
 (0)