Skip to content
This repository has been archived by the owner on Nov 23, 2021. It is now read-only.

Summary

Mikołaj Mański edited this page Jul 26, 2016 · 4 revisions

Summary

And this is it! We've written a simple test case which is checking whether adding and configuring is working properly. The entire code can be found below:

package com.cognifide.test.summer;

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;

import com.cognifide.qa.bb.aem.AemLogin;
import com.cognifide.qa.bb.aem.dialog.classic.field.AemTextField;
import com.cognifide.qa.bb.aem.ui.AemDialog;
import com.cognifide.qa.bb.aem.ui.parsys.AemParsys;
import com.cognifide.qa.bb.junit.Modules;
import com.cognifide.qa.bb.junit.TestRunner;
import com.cognifide.test.GuiceModule;
import com.google.inject.Inject;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(TestRunner.class)
@Modules(GuiceModule.class)
public class AddComponentTest {

	private static final String TEST_VALUE = "Bobcat test";

	@Inject
	private SummerBlockbusterHitsPage summerBlockbusterHitsPage;

	@Inject
	private AemLogin aemLogin;

	private AemParsys parsys;

	@Before
	public void openSiteadminPage() {
		aemLogin.authorLogin();
		summerBlockbusterHitsPage.open();
		assertTrue(summerBlockbusterHitsPage.isDisplayed());
		parsys = summerBlockbusterHitsPage.getTopParsys().clear();
	}

	@Test
	public void testAddingAndEditingSectionHeader() {
		SectionHeaderComponent sectionHeaderComponent = parsys.insertComponent(SectionHeaderComponent.class);
		AemDialog dialog = sectionHeaderComponent.getDialog();
		dialog.open();
		AemTextField title = sectionHeaderComponent.getHeaderText();
		title.setValue(TEST_VALUE);
		dialog.ok();

		//wait until page reloads after modifying the component
		assertTrue(summerBlockbusterHitsPage.isDisplayed());
		sectionHeaderComponent = parsys.getFirstComponentOfType(SectionHeaderComponent.class);

		assertThat(sectionHeaderComponent.getText(), is(TEST_VALUE));
	}

	@After
	public void cleanUp() {
		parsys.clear();
	}

}

Modified SummerBlockbusterHitsPage class:

package com.cognifide.test.summer;

import org.openqa.selenium.support.FindBy;

import com.cognifide.qa.bb.aem.AbstractPage;
import com.cognifide.qa.bb.aem.ui.parsys.AemParsys;
import com.cognifide.qa.bb.qualifier.Frame;
import com.cognifide.qa.bb.qualifier.PageObject;

/**
 * This class represents a page from Geometrixx project.
 * <p/>
 * Frame annotation determines default frame for all methods in this class.
 */
@PageObject
@Frame("$cq")
public class SummerBlockbusterHitsPage extends AbstractPage {

	private static final String PAGE_TITLE = "Summer Blockbuster Hits and Misses";

	private static final String URL = "/cf#/content/geometrixx-media/en/entertainment/summer-blockbuster-hits-and-misses.html";


	@FindBy(xpath = "//div[contains(@class, 'cq-placeholder-article-content-par_47article_47par1_47_42')]/..")
	private AemParsys topParsys;

	@FindBy(xpath = "//div[contains(@class, 'cq-element-article-content-par_47image')]/...")
	private ImageComponent imageComponent;

	@FindBy(className = "cq-element-right-panel-par_47section_95header")
	private SectionHeaderComponent sectionHeader;


	public ImageComponent getImageComponent() {
		return imageComponent;
	}

	public SectionHeaderComponent getSectionHeader() {
		return sectionHeader;
	}

	public AemParsys getTopParsys() {
		return topParsys;
	}

	@Override
	public String getContentPath() {
		return URL;
	}

	@Override
	public String getPageTitle() {
		return PAGE_TITLE;
	}
}

This is a part of AEM Authoring tutorial, please refer to other tutorial steps:

Getting started with Bobcat

  1. Getting started

AEM Related Features

  1. Authoring tutorial - Classic
  1. AEM Classic Authoring Advanced usage
  1. Authoring tutorial - Touch UI
Clone this wiki locally