Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ public interface Browser {

void doubleClickOnElementContainingText(String htmlElementType, String text);

void doubleClickOnElementById(String id);

void rightClickOnElementById(String id);

void rightClickOnElementContainingText(HtmlElementType htmlElementType, String text);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,12 @@
return Selectors.byCssSelector(cssSelector);
}

@Override
public void doubleClickOnElementById(String id) {
By by = Selectors.byId(id);
handleElementInAllFrames(by, this::doubleClickElement, Condition.visible, Condition.enabled);
}

@Override
public void close() {
Selenide.closeWebDriver();
Expand Down Expand Up @@ -468,7 +474,7 @@
}

@Override
public void clickOnElementByAttributePatternAndText(String elementType, String attribute, String pattern, String text) {
By by = constructCssSelectorByTypeAndAttribute(elementType, attribute, pattern);

SelenideElement element = findElementInAllFrames(by, Condition.visible, Condition.enabled, Condition.exactText(text));
Expand All @@ -480,6 +486,11 @@
.click();
}

private void doubleClickElement(SelenideElement element) {
element.scrollIntoView(true)

Check notice

Code scanning / CodeQL

Deprecated method or constructor invocation Note test

Invoking
SelenideElement.scrollIntoView
should be avoided because it has been deprecated.
.doubleClick();
}

@Override
public void assertElementExistByAttributePatternAndText(HtmlElementType elementType, HtmlAttribute attribute, String pattern,
String text) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,30 @@ public class IDE {
private final WorkbenchFactory workbenchFactory;
private final DatabasePerspectiveFactory databasePerspectiveFactory;
private final GitPerspectiveFactory gitPerspectiveFactory;
private final OperationsPerspectiveFactory operationsPerspectiveFactory;

@Autowired
IDE(Browser browser, RestAssuredExecutor restAssuredExecutor, WorkbenchFactory workbenchFactory,
DatabasePerspectiveFactory databasePerspectiveFactory, GitPerspectiveFactory gitPerspectiveFactory) {
DatabasePerspectiveFactory databasePerspectiveFactory, GitPerspectiveFactory gitPerspectiveFactory,
OperationsPerspectiveFactory operationsPerspectiveFactory) {
this(browser, DirigibleTestTenant.createDefaultTenant()
.getUsername(),
DirigibleTestTenant.createDefaultTenant()
.getPassword(),
restAssuredExecutor, workbenchFactory, databasePerspectiveFactory, gitPerspectiveFactory);
restAssuredExecutor, workbenchFactory, databasePerspectiveFactory, gitPerspectiveFactory, operationsPerspectiveFactory);
}

IDE(Browser browser, String username, String password, RestAssuredExecutor restAssuredExecutor, WorkbenchFactory workbenchFactory,
DatabasePerspectiveFactory databasePerspectiveFactory, GitPerspectiveFactory gitPerspectiveFactory) {
DatabasePerspectiveFactory databasePerspectiveFactory, GitPerspectiveFactory gitPerspectiveFactory,
OperationsPerspectiveFactory operationsPerspectiveFactory) {
this.browser = browser;
this.restAssuredExecutor = restAssuredExecutor;
this.username = username;
this.password = password;
this.workbenchFactory = workbenchFactory;
this.databasePerspectiveFactory = databasePerspectiveFactory;
this.gitPerspectiveFactory = gitPerspectiveFactory;
this.operationsPerspectiveFactory = operationsPerspectiveFactory;
}

public Browser getBrowser() {
Expand Down Expand Up @@ -96,6 +100,14 @@ public DatabasePerspective openDatabasePerspective() {
return databasePerspectiveFactory.create(browser);
}

public OperationsPerspective openOperationsPerspective() {
openHomePage();

browser.clickOnElementById("perspective-operations");

return operationsPerspectiveFactory.create(browser);
}

public void openHomePage() {
browser.openPath(ROOT_PATH);
login(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,17 @@ public class IDEFactory {
private final WorkbenchFactory workbenchFactory;
private final DatabasePerspectiveFactory databasePerspectiveFactory;
private final GitPerspectiveFactory gitPerspectiveFactory;
private final OperationsPerspectiveFactory operationsPerspectiveFactory;

protected IDEFactory(BrowserFactory browserFactory, RestAssuredExecutor restAssuredExecutor, WorkbenchFactory workbenchFactory,
DatabasePerspectiveFactory databasePerspectiveFactory, GitPerspectiveFactory gitPerspectiveFactory) {
DatabasePerspectiveFactory databasePerspectiveFactory, GitPerspectiveFactory gitPerspectiveFactory,
OperationsPerspectiveFactory operationsPerspectiveFactory) {
this.browserFactory = browserFactory;
this.restAssuredExecutor = restAssuredExecutor;
this.workbenchFactory = workbenchFactory;
this.databasePerspectiveFactory = databasePerspectiveFactory;
this.gitPerspectiveFactory = gitPerspectiveFactory;
this.operationsPerspectiveFactory = operationsPerspectiveFactory;
}

public IDE create() {
Expand All @@ -46,11 +49,11 @@ public IDE create(String username, String password) {

public IDE create(Browser browser, String username, String password) {
return new IDE(browser, username, password, restAssuredExecutor, workbenchFactory, databasePerspectiveFactory,
gitPerspectiveFactory);
gitPerspectiveFactory, operationsPerspectiveFactory);
}

public IDE create(String host, String username, String password) {
return new IDE(browserFactory.createByHost(host), username, password, restAssuredExecutor, workbenchFactory,
databasePerspectiveFactory, gitPerspectiveFactory);
databasePerspectiveFactory, gitPerspectiveFactory, operationsPerspectiveFactory);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.eclipse.dirigible.tests.framework.ide;

import org.eclipse.dirigible.tests.framework.browser.Browser;
import org.eclipse.dirigible.tests.framework.browser.HtmlElementType;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;

@Lazy
@Component
public class OperationsPerspective {
private final Browser browser;

protected OperationsPerspective(Browser browser) {
this.browser = browser;
}

public void assertExtensionPointIsPresent(String extensionPointFileName, String extensionFileName) {
browser.doubleClickOnElementContainingText(HtmlElementType.ANCHOR, "CreateExtensionPointIT");
browser.assertElementExistsByTypeAndText(HtmlElementType.ANCHOR, extensionPointFileName);
browser.assertElementExistsByTypeAndText(HtmlElementType.ANCHOR, extensionFileName);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.eclipse.dirigible.tests.framework.ide;

import org.eclipse.dirigible.tests.framework.browser.Browser;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;


@Lazy
@Component
public class OperationsPerspectiveFactory {
private final Browser browser;

protected OperationsPerspectiveFactory(Browser browser) {
this.browser = browser;
}

public OperationsPerspective create() {
return create(browser);
}

public OperationsPerspective create(Browser browser) {
return new OperationsPerspective(browser);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,20 @@
*/
package org.eclipse.dirigible.tests.framework.ide;

import org.apache.commons.lang3.SystemUtils;
import org.eclipse.dirigible.tests.framework.browser.Browser;
import org.eclipse.dirigible.tests.framework.browser.HtmlAttribute;
import org.eclipse.dirigible.tests.framework.browser.HtmlElementType;
import org.eclipse.dirigible.tests.framework.util.SynchronizationUtil;
import org.openqa.selenium.Keys;

public class Workbench {

public static final String PROJECTS_VIEW_ID = "pvtree";
public static final String PROJECT_NAME_INPUT_ID = "pgfi1";
private static final String FILE_NAME_INPUT_ID = "fdti1";
private static final String PROJECTS_CONTEXT_MENU_NEW_PROJECT = "New Project";
private static final String CREATE_PROJECT_BUTTON_TEXT = "Create";
private static final String CREATE_BUTTON_TEXT = "Create";

private final Browser browser;
private final WelcomeViewFactory welcomeViewFactory;
Expand Down Expand Up @@ -66,7 +69,7 @@ public void createNewProject(String projectName) {

browser.enterTextInElementById(PROJECT_NAME_INPUT_ID, projectName);

browser.clickOnElementWithText(HtmlElementType.BUTTON, CREATE_PROJECT_BUTTON_TEXT);
browser.clickOnElementWithText(HtmlElementType.BUTTON, CREATE_BUTTON_TEXT);
}

public void createFileInProject(String projectName, String newFileType) {
Expand Down Expand Up @@ -95,4 +98,31 @@ public Terminal openTerminal() {
return terminalFactory.create(browser);
}

public void createCustomElement(String fileName, String elementType) {
browser.clickOnElementByAttributePatternAndText(HtmlElementType.SPAN, HtmlAttribute.CLASS, "fd-menu__title", elementType);
browser.enterTextInElementById(FILE_NAME_INPUT_ID, fileName);
browser.clickOnElementWithText(HtmlElementType.BUTTON, CREATE_BUTTON_TEXT);
}

public void createCustomElementInProject(String projectName, String fileName, String elementType) {
browser.rightClickOnElementContainingText(HtmlElementType.ANCHOR, projectName);
createCustomElement(fileName, elementType);
}

public void selectAll() {
if (SystemUtils.IS_OS_MAC)
browser.pressMultipleKeys(Keys.COMMAND, "a");
else
browser.pressMultipleKeys(Keys.CONTROL, "a");
}

public void saveAll() {
browser.clickOnElementByAttributeValue(HtmlElementType.BUTTON, HtmlAttribute.GLYPH, "sap-icon--save");
}

public void addContentToField(String fieldId, String fieldContent) {
browser.clickOnElementById(fieldId);
selectAll();
browser.type(fieldContent);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package org.eclipse.dirigible.integration.tests.ui.tests;

import org.eclipse.dirigible.tests.base.UserInterfaceIntegrationTest;
import org.eclipse.dirigible.tests.framework.browser.HtmlAttribute;
import org.eclipse.dirigible.tests.framework.browser.HtmlElementType;
import org.eclipse.dirigible.tests.framework.ide.OperationsPerspective;
import org.eclipse.dirigible.tests.framework.ide.Workbench;
import org.junit.jupiter.api.Test;

public class CreateExtensionPointIT extends UserInterfaceIntegrationTest {

private static final String PROJECT_NAME = "CreateExtensionPointIT";
private static final String EXTENSION_POINT_FILE_NAME = "test1.extensionpoint";
private static final String JS_FILE_NAME = "test1.mjs";
private static final String EXTENSION_FILE_NAME = "test1.extension";
private static final String EXTENSION_POINT_NAME = "test1";

@Test
void test() {
Workbench workbench = ide.openWorkbench();
workbench.createNewProject(this.getClass()
.getSimpleName());

workbench.createCustomElementInProject(PROJECT_NAME, EXTENSION_POINT_FILE_NAME, "Extension Point");
workbench.openFile(EXTENSION_POINT_FILE_NAME);
assertFileTabIsOpen(EXTENSION_POINT_FILE_NAME);

addExtensionPointName(workbench);

workbench.saveAll();
workbench.publishAll(true);

workbench.createCustomElementInProject(PROJECT_NAME, JS_FILE_NAME, "JavaScript Service");
workbench.openFile(JS_FILE_NAME);
assertFileTabIsOpen(JS_FILE_NAME);
workbench.publishAll(true);

workbench.createCustomElementInProject(PROJECT_NAME, EXTENSION_FILE_NAME, "Extension");
browser.doubleClickOnElementById("j1_6_anchor");
assertFileTabIsOpen(EXTENSION_FILE_NAME);

configureExtensionFields(workbench);

workbench.saveAll();
workbench.publishAll(true);

OperationsPerspective operationsPerspective = ide.openOperationsPerspective();
operationsPerspective.assertExtensionPointIsPresent(EXTENSION_POINT_FILE_NAME, EXTENSION_FILE_NAME);
}

private void configureExtensionFields(Workbench workbench) {
browser.clickOnElementByAttributePattern(HtmlElementType.BUTTON, HtmlAttribute.GLYPH, "sap-icon--navigation-down-arrow");
browser.clickOnElementWithText(HtmlElementType.SPAN, EXTENSION_POINT_NAME);

workbench.addContentToField("idModule", "/CreateExtensionPointIT/test1.mjs");

}

private void addExtensionPointName(Workbench workbench) {
browser.clickOnElementByAttributePattern(HtmlElementType.INPUT, HtmlAttribute.ID, "idName");
workbench.selectAll();
browser.type(EXTENSION_POINT_NAME);
}

private void assertFileTabIsOpen(String fileName) {
browser.assertElementExistByAttributePatternAndText(HtmlElementType.SPAN, HtmlAttribute.CLASS, "fd-icon-tab-bar__tag", fileName);
}
}
Loading