Должно быть очевидно, что написание фреймворка с нуля на каждом новом проекте одного и то же типа - трата времени. Вероятно дожно быть какое то ядро которое можно переиспользовать с целью быть более эффективным. Но где же та граница между ядром и супер-супер кухонным комбайном который в конце концов будет ограничивать переиспользование. В этом докладе мы попробуем определить тот минимальный набор фич такого ядра на примере построения фреймворка для автоматизации веб приложений.
16. SuperPlatypusElement? vs Widgets
public class RegistrationTest extends BaseTest {
@Test
public void registers() {
!!...
new Box("#first-name").set("Iakiv");
new Box("#last-name").set("Kramarenko");
new Radio("#sex").set("Mail");
new Select("#country").set("Ukraine");
…
}
}
17. SuperPlatypusElement? vs Widgets
public class RegistrationTest extends BaseTest {
@Test
public void registers() {
!!...
form.box(“#first-name").set("Iakiv");
form.box(“#last-name").set("Kramarenko");
form.radio(“#sex").set("Mail");
form.select(“#country").set("Ukraine");
…
}
}
18. SuperPlatypusElement? vs Freedom
public class RegistrationTest extends BaseTest {
@Test
public void registers() {
!!...
new SuperElement(“#first-name").setValue("Iakiv");
new SuperElement(“#last-name").setValue("Kramarenko");
new SuperElement(“#sex").selectRadio("Mail");
new SuperElement(“#country").selectOption("Ukraine");
…
}
}
19. SuperPlatypusElement? vs Freedom
public class RegistrationTest extends BaseTest {
@Test
public void registers() {
!!...
_(“#first-name”).setValue("Iakiv");
_(“#last-name”).setValue("Kramarenko");
_(“#sex”).selectRadio("Mail");
_(“#country”).selectOption("Ukraine");
…
}
}
20. Library
Browser automation tool
fast, standard,
powerful, low level
Lacks:
lazy elements
implicit waits for visibility
readability
handy assertions
Informative errors
Custom action hooks
Framework
TEST automation tool
slower, pretty powerful, user oriented
Has:
lazy elements
implicit waits for visibility
readability
handy assertions
~ “Informative errors”
Some hooks…
Limits:…
Opinionated:
Static Driver
SuperRadioSelectEtcElement
MUF?
21. LibraryFramework
MUF?
TEST automation tool
lazy elements
implicit waits for action succeeded
handy assertions
informative errors
readable
consistent
natural (PlatypusElement)
user oriented
As less opinionated as possible