Overview
In this tutorial, we will create a JUnit Test in Java, using LeanFT for browser automation.
Description
package com.microfocus.demo; import static org.junit.Assert.*; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import com.hp.lft.sdk.*; import com.hp.lft.sdk.web.*; import com.hp.lft.verifications.*; import unittesting.*; public class LeanFtTest extends UnitTestClassBase { public LeanFtTest() { //Change this constructor to private if you supply your own public constructor } @BeforeClass public static void setUpBeforeClass() throws Exception { instance = new LeanFtTest(); globalSetup(LeanFtTest.class); } @AfterClass public static void tearDownAfterClass() throws Exception { globalTearDown(); } @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void totalPriceTest() throws GeneralLeanFtException, InterruptedException { //Launch Chrome and navigate to the online store application Browser browser = BrowserFactory.launch(BrowserType.CHROME); browser.navigate("http://www.advantageonlineshopping.com"); //Click the "Tablets" category Link tabletsLink = browser.describe(Link.class, new LinkDescription.Builder() .id("TabletsImg").build()); tabletsLink.setDisplayName("Tablets"); tabletsLink.click(); //Click a specific tablet Image tabletElitePad = browser.describe(Image.class, new ImageDescription.Builder() .src("http://www.advantageonlineshopping.com/catalog/fetchImage?image_id=3100") .className("imgProduct").build()); tabletElitePad.setDisplayName("Tablet ElitePad"); tabletElitePad.click(); //Add it to the cart browser.describe(Button.class, new ButtonDescription.Builder() .name("ADD TO CART").build()).click(); //Store its price String tabletPrice = browser.describe(WebElement.class, new WebElementDescription.Builder() .className("roboto-medium cart-total ng-binding").build()).getInnerText(); //Check out browser.describe(Button.class, new ButtonDescription.Builder() .className("roboto-medium ng-binding").build()).click(); //Verify that the total price presented in the purchase summary page, is exactly the price of the selected tablet String totalPrice = browser.describe(WebElement.class, new WebElementDescription.Builder() .className("roboto-medium totalValue ng-binding") .innerText(new RegExpProperty("\\$.*")).build()).getInnerText(); Verify.areEqual(tabletPrice, totalPrice, "Verify total price"); } }
After running successfuly the Test Case and generating the JUnit XML report (e.g. TEST-testing.LeanFtTest.xml), it can be imported to Xray (either by the REST API or through "Import Execution Results" action within the Test Execution).
JUnit's Test Case is mapped to a Generic Test in JIRA, and the "Generic Test Definition" field contains "testing" followed by the name of the class and the method name that implements the Test Case.
The Execution Details of the Generic Test contains information about the Test Suite, which in this case corresponds to "testing" followed by the Test Case class.