Hello World!

This tutorial outlines the mental model of creating a page object for a component.

A page object exposes an API that selects and operates on UI elements that you want to test.

Inspect the DOM, Decide What to Test

First let's look at the DOM and decide what to test. Then we model those elements in JSON.

Select Hello, World!, right-click, and select Inspect. You can also click the DOM Tree Viewer.

<body>
    <div class="main">
        <h1>Hello, <span class="world">🌍 🌏 🌎</span>!</h1>
    </div>
</body>

In JSON, Model the DOM You Want to Test

As a simple test, let's assert that the world emojis exists. In the top-left panel, look at our JSON page object, helloWorld.utam.json. We don't have to declare all the DOM in JSON, only what we want to test. In this case, the page object only needs to declare the span element that contains the world emojis.

Select an Element

Each element needs a name and a selector. In this case, we use a CSS class selector, .world.

For web page objects, UTAM supports CSS selectors only. (Mobile page objects support other selectors.)

Why CSS? CSS selector engines are natively supported by all browsers and are governed by specifications.

Generate a Method

Now that we have our DOM modeled, we need to ask UTAM to generate a public method that we can use in a test to select the span element.

In JSON, we simply add "public": true to the element. The name of the method is get<Name>, where <Name> is the value of the name property. The method returns an instance of the selected element, in this case, span.

To see the UTAM compiler in action, watch the top-right panel and change the JSON from "public": true to "public": false. The getWorld() method disappears and reappears when you change it back to true.

Call the Method in Test Code

In test code, call getWorld() from an instance of the page object.

Click Run Test.