Я пытаюсь написать тест пользовательского интерфейса для учебного приложения Vaadin 8, который будет подсчитывать строки в таблице.Использование селенидов и селекторов CSS для теста.
Таблица прокручивается и создается следующим образом:
override fun init(vaadinRequest: VaadinRequest) {
layout = VerticalLayout()
grid = Grid(Customer::class.java)
grid.id = "table.customers"
grid.setColumns("firstName","lastName","email")
layout.addComponents(grid)
populateGrid()
this.content = layout
}
private fun populateGrid() {
val customers = customerService.findAll()
grid.setItems(customers)
}
Этот тест здесь:
@Test
fun displaysAllData(){
//given
val expectedCustomers = customerService.findAll()
open("/customers")
//when
val displayedCustomers = $(byId("table.customers"))
.find("tbody:first-of-type")
.findAll("tr")
displayedCustomers.forEach{ println(it)}
//then
assertThat(displayedCustomers.size).isEqualTo(expectedCustomers.size)
}
дает мне
<tr class="v-grid-row v-grid-row-focused v-grid-row-has-data">Bernard Nilsen bernard@nilsen.com</tr>
<tr class="v-grid-row v-grid-row-stripe v-grid-row-has-data">Jaydan Jackson jaydan@jackson.com</tr>
<tr class="v-grid-row v-grid-row-has-data">Solomon Olsen solomon@olsen.com</tr>
<tr class="v-grid-row v-grid-row-stripe v-grid-row-has-data">Elvis Olsen elvis@olsen.com</tr>
<tr class="v-grid-row v-grid-row-has-data">Rene Carlsson rene@carlsson.com</tr>
<tr class="v-grid-row v-grid-row-stripe v-grid-row-has-data">Remington Andersson remington@andersson.com</tr>
<tr class="v-grid-row v-grid-row-has-data">Ann Andersson ann@andersson.com</tr>
<tr class="v-grid-row v-grid-row-stripe v-grid-row-has-data">Lara Martin lara@martin.com</tr>
<tr class="v-grid-row v-grid-row-has-data">Jamar Olsson jamar@olsson.com</tr>
<tr class="v-grid-row v-grid-row-stripe v-grid-row-has-data">Gunner Karlsen gunner@karlsen.com</tr>
<tr class="v-grid-row v-grid-row-has-data" displayed:false></tr>
org.opentest4j.AssertionFailedError:
Expecting:
<11>
to be equal to:
<30>
but was not.
Expected :30
Actual :11
Я все же посчитал вручную, и в этой таблице 30 строк, если вы прокрутите ее.
Я также попытался добавить Thread.sleep
после open(...)
в случае, если модульный тест слишком нетерпелив и не читает всю таблицу.
Это селекторы CSS.Как получить все строки в таблице, отображаемые или нет?