Complete Test Example
Below is a complete UI test, used to test a multi-level model CRUD page. Note that only a single method is annotated with @Test, because JUnit 4 does not guarantee test method execution order, and order is generally important for UI tests.
public class ModelCRUDUITest extends AbstractUITest { private static final PlatformLogger LOG = PlatformLogger.get(ModelCRUDUITest.class); public static CommandCenter cc; private static Tab tab; private String name = "" + System.currentTimeMillis(); @BeforeClass public static void setUp() { cc = new CommandCenter(); cc.login("ShowcaseUser", "password"); } @Test public void test() { openCreatePage(); setFieldValues(); addMilestones(); createTask(); verifyFieldValues(); deleteMilestone(); deleteTask(); } protected void openCreatePage() { tab = cc.openTabFromMenu("Advanced Components", "ModelCRUD", "Custom Layout Create"); } protected void setFieldValues() { context.waitUntilUnmask(); ((TextField) tab.getFieldByLabel("Summary")).setValue(name); ((StringEnumerationField) tab.getFieldByLabel("Priority")).setValue("Medium"); ((ModelLinkField) tab.getFieldByLabel("Assigned User")).setValue("ShowcaseUser", true); ((com.onenetwork.platform.tools.test.ui.components.TextField) tab.getFieldByLabel("Estimated Effort Days")).setValue("4"); } protected void addMilestones() { Hyperlink addLink = (Hyperlink) tab.getLink("Add"); addLink.click(); Grid grid = tab.getGrid(); ((TextField) grid.startEditing(0, "Milestone Description").getEditor()).setValue("Milestone A"); ((StringEnumerationField) grid.startEditing(0, "Milestone Status").getEditor()).setValue("In Progress"); } protected void createTask() { Button btn = tab.getButton("Create Task Full"); btn.click(); tab.waitForSuccessMessage(); } protected void verifyFieldValues() { Assert.assertEquals(name, ((DisplayField) tab.getFieldByLabel("Summary")).getValue()); Assert.assertEquals("ShowcaseUser", ((DisplayField) tab.getFieldByLabel("Assigned User")).getValue()); Assert.assertEquals("Medium", ((DisplayField) tab.getFieldByLabel("Priority")).getValue()); Assert.assertEquals("4", ((DisplayField) tab.getFieldByLabel("Estimated Effort Days")).getValue()); } protected void deleteMilestone() { Grid grid = tab.getGrid(); List<WebElement> rows = grid.getRows(); Assert.assertEquals(1, rows.size()); tab.clickMenuItem("Actions", "Update Task"); context.waitUntilUnmask(); // delete the row context.waitUntilElementExists(tab.getGrid().getRows().get(0), By.className("model-form-grid-delete-icon")).click(); tab.getButton("Submit").click(); tab.waitForSuccessMessage(); cc.refreshTab(); Assert.assertEquals(0, tab.getGrid().getRowCount()); } protected void deleteTask() { tab.clickMenuItem("Actions", "Delete Task"); tab.getWindow().getButton("Yes").click(); tab.waitForSuccessMessage(); } @AfterClass public static void tearDown() { cc.logout(); } }Here's a screenshot of the page in Showcase that this test is used on, for reference: