Skip to content

Commit

Permalink
Hub framework steps
Browse files Browse the repository at this point in the history
  • Loading branch information
AnkitCLI committed Oct 27, 2023
1 parent fa28114 commit a147e95
Show file tree
Hide file tree
Showing 3 changed files with 265 additions and 0 deletions.
107 changes: 107 additions & 0 deletions src/main/java/io/cdap/e2e/pages/actions/CdfHubActions.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
/*
* Copyright © 2023 Cask Data, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package io.cdap.e2e.pages.actions;

import io.cdap.e2e.pages.locators.CdfHubLocators;
import io.cdap.e2e.pages.locators.CdfPluginPropertiesLocators;
import io.cdap.e2e.utils.AssertionHelper;
import io.cdap.e2e.utils.ElementHelper;
import io.cdap.e2e.utils.PluginPropertyUtils;
import io.cdap.e2e.utils.SeleniumHelper;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* CDF hub related actions.
*/
public class CdfHubActions {

private static final Logger logger = LoggerFactory.getLogger(CdfHubActions.class);
static {
SeleniumHelper.getPropertiesLocators(CdfHubLocators.class);
}

public static void clickOnHub() {
ElementHelper.clickOnElement(CdfHubLocators.hubPage);
}
public static void clickOnPlugin(String pluginName) {
ElementHelper.clickOnElement(CdfHubLocators.locatePlugin(pluginName));
}
public static void clickOnHomePage() {
ElementHelper.clickOnElement(CdfHubLocators.toHomePage);
}
public static void clickOnDeploy() {
ElementHelper.clickOnElement(CdfHubLocators.deployButton);
}
public static void clickOnFinish() {
ElementHelper.clickOnElement(CdfHubLocators.finishButton);
}
public static void clickOnOptions(String option) {
ElementHelper.clickOnElement(CdfHubLocators.locateOptions(option));
}
public static void clickOnCloseButton() {
ElementHelper.clickOnElement(CdfHubLocators.closeButton);
}
public static void clickOnSearchTab(String message) {
ElementHelper.sendKeys(CdfHubLocators.searchTab, message);
}
public static void verifyErrorMessageOnHeader(String errorMessageLocation) {
String expectedErrorMessage = PluginPropertyUtils.errorProp(errorMessageLocation);
AssertionHelper.verifyElementContainsText(CdfHubLocators.errorMessage, expectedErrorMessage);
}
public static void verifyElementIsDisplayed() {
ElementHelper.isElementDisplayed(CdfHubLocators.locateHub);
}
public static void verifyPluginIsDeleted() {
ElementHelper.isElementDisplayed(CdfHubLocators.deletedElementStatus);
}
public static void clickOnDeleteButton() {
ElementHelper.clickOnElement(CdfHubLocators.deleteButton);
}
public static void deletePluginControlCenter() {
ElementHelper.clickOnElement(CdfHubLocators.deleteIconControlCenter);
clickOnDeleteButton();
}
public static void verifyPluginIsDeployed(String pluginName) {
String pluginPropertyDataCyAttribute = PluginPropertyUtils.getPluginPropertyDataCyAttribute(pluginName);
if (pluginPropertyDataCyAttribute == null) {
pluginPropertyDataCyAttribute = pluginName;
}
ElementHelper.isElementDisplayed(CdfHubLocators.locatePluginName(pluginPropertyDataCyAttribute));
}
public static void selectFilterDropdownOption(String pluginProperty, String option) {
String pluginPropertyDataCyAttribute = PluginPropertyUtils.getPluginPropertyDataCyAttribute(pluginProperty);
if (pluginPropertyDataCyAttribute == null) {
pluginPropertyDataCyAttribute = pluginProperty;
}

String optionFromPluginPropertiesFile = PluginPropertyUtils.pluginProp(option);
if (optionFromPluginPropertiesFile == null) {
ElementHelper.selectDropdownOption(CdfPluginPropertiesLocators
.locatePropertyElement(pluginPropertyDataCyAttribute),
CdfHubLocators.locateDropdownListItem(option));
return;
}

ElementHelper.selectDropdownOption(CdfPluginPropertiesLocators.locatePropertyElement(pluginPropertyDataCyAttribute),
CdfHubLocators.locateDropdownListItem(
optionFromPluginPropertiesFile));
}
public static void clickOnSearchTabControlCenter(String message) {
ElementHelper.sendKeys(CdfHubLocators.searchTabControlCenter, message);
}
}
68 changes: 68 additions & 0 deletions src/main/java/io/cdap/e2e/pages/locators/CdfHubLocators.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/*
* Copyright © 2023 Cask Data, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package io.cdap.e2e.pages.locators;

import io.cdap.e2e.utils.SeleniumDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;

/**
* CDF hub related locators.
*/
public class CdfHubLocators {

@FindBy(how = How.XPATH, using = "//input[@class='search-input form-control'][@placeholder='Search by name']")
public static WebElement searchTab;
@FindBy(how = How.XPATH, using = "//input[@class='search-input form-control'][@placeholder='Search']")
public static WebElement searchTabControlCenter;
@FindBy(how = How.XPATH, using = "//*[@data-cy='hub-close-btn']")
public static WebElement closeButton;
@FindBy(how = How.XPATH, using = "//button[@data-cy='one_step_deploy_plugin-btn']")
public static WebElement deployButton;
@FindBy(how = How.XPATH, using = "//button[@data-cy='wizard-finish-btn']")
public static WebElement finishButton;
@FindBy(how = How.XPATH, using = "//*[contains(text(),'No entities found')]")
public static WebElement errorMessage;
@FindBy(how = How.XPATH, using = "//span[contains(text(),'Hub')]")
public static WebElement locateHub;
@FindBy(how = How.XPATH, using = "//*[contains(text(),'Go to homepage')]")
public static WebElement toHomePage;
@FindBy(how = How.XPATH, using = "//button[@data-cy='Delete']")
public static WebElement deleteButton;
@FindBy(how = How.XPATH, using = "//button[@id='navbar-hub']")
public static WebElement hubPage;
@FindBy(how = How.XPATH, using = "//*[contains(text(),'No entities found in namespace \"default\"')]")
public static WebElement deletedElementStatus;
@FindBy(how = How.XPATH, using = "//div[@class='entities-all-list-container']//button[@class='btn btn-link']" +
"//*[@class='icon-svg icon-trash']")
public static WebElement deleteIconControlCenter;

public static WebElement locatePlugin(String pluginName) {
return SeleniumDriver.getDriver()
.findElement(By.xpath("//*[contains(text(),'" + pluginName + "')]"));
}
public static WebElement locateOptions(String featureName) {
return SeleniumDriver.getDriver().findElement(By.xpath("//span[@title='" + featureName + "']"));
}
public static WebElement locatePluginName(String pluginName) {
return SeleniumDriver.getDriver().findElement(By.xpath("//*[contains(text(),'" + pluginName + "')]"));
}
public static By locateDropdownListItem(String option) {
return By.xpath("//input[@data-cy='" + option + "']");
}
}
90 changes: 90 additions & 0 deletions src/main/java/stepsdesign/CdfHubSteps.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
/*
* Copyright © 2023 Cask Data, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package stepsdesign;

import io.cdap.e2e.pages.actions.CdfHubActions;
import io.cdap.e2e.pages.locators.CdfHubLocators;
import io.cdap.e2e.utils.CdfHelper;
import io.cdap.e2e.utils.SeleniumHelper;
import io.cucumber.java.en.Then;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* CDF hub related step design.
*/
public class CdfHubSteps implements CdfHelper {
private static final Logger logger = LoggerFactory.getLogger(CdfHubSteps.class);
static {
SeleniumHelper.getPropertiesLocators(CdfHubLocators.class);
}

@Then("Click on Hub Menu")
public static void openHub() {
CdfHubActions.clickOnHub();
}
@Then("Click on {string} plugin")
public static void openPlugin(String pluginName) {
CdfHubActions.clickOnPlugin(pluginName);
}
@Then("Click on {string} option")
public static void openOptions(String option) {
CdfHubActions.clickOnOptions(option);
}
@Then("Click on close button")
public static void closeButton() {
CdfHubActions.clickOnCloseButton();
}
@Then("Deploy the plugin")
public static void deployPlugin() {
CdfHubActions.clickOnDeploy();
CdfHubActions.clickOnFinish();
CdfHubActions.clickOnHomePage();
}
@Then("Enter the text in search tab {string}")
public static void openSearch(String value) {
CdfHubActions.clickOnSearchTab(value);
}
@Then("Verify that search displaying an error message: {string} on the header")
public void verifyErrorMessageDisplayedOnPluginHeader(String errorMessageLocation) {
CdfHubActions.verifyErrorMessageOnHeader(errorMessageLocation);
}
@Then("Verify that user is navigated to hub page successfully")
public void verifyThatHubPageIsSuccessfullyOpened() {
CdfHubActions.verifyElementIsDisplayed();
}
@Then("Verify that {string} plugin is successfully deployed")
public void verifyThatPluginIsSuccessfullyDeployed(String pluginName) {
CdfHubActions.verifyPluginIsDeployed(pluginName);
}
@Then("Click on delete button to delete the plugin")
public void deleteControlCenterPlugin() {
CdfHubActions.deletePluginControlCenter();
}
@Then("Select dropdown : {string} with option value: {string} in control center")
public void selectDropdownFilterOptionValue(String pluginProperty, String option) {
CdfHubActions.selectFilterDropdownOption(pluginProperty, option);
}
@Then("Enter the text in search tab {string} in control center")
public static void openSearchControlCenter(String value) {
CdfHubActions.clickOnSearchTabControlCenter(value);
}
@Then("Verify that plugin is successfully deleted")
public static void verifyPluginIsDeleted() {
CdfHubActions.verifyPluginIsDeleted();
}
}

0 comments on commit a147e95

Please sign in to comment.