che-server/tests/e2e/pageobjects/ide/OpenshiftPlugin.ts

83 lines
3.7 KiB
TypeScript

/*********************************************************************
* Copyright (c) 2019 Red Hat, Inc.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
import { injectable, inject } from 'inversify';
import { CLASSES } from '../../inversify.types';
import { DriverHelper } from '../../utils/DriverHelper';
import { Ide, LeftToolbarButton } from './Ide';
import { Logger } from '../../utils/Logger';
import { By } from 'selenium-webdriver';
import { ContextMenu } from './ContextMenu';
import { TimeoutConstants } from '../../TimeoutConstants';
export enum OpenshiftAppExplorerToolbar {
ReportExtensionIssueOnGitHub = 'Report Extension Issue on GitHub',
RefreshView = 'Refresh View',
SwitchContexts = 'Switch Contexts',
LogIntoCluster = 'Login into Cluster'
}
export enum OpenshiftContextMenuItems {
NewComponent = 'New Component',
Push = 'Push'
}
@injectable()
export class OpenshiftPlugin {
constructor(@inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper,
@inject(CLASSES.Ide) private readonly ide: Ide,
@inject(CLASSES.ContextMenu) private readonly contextMenu: ContextMenu
) {
}
async clickOnOpenshiftToollBarIcon(timeout: number = TimeoutConstants.TS_SELENIUM_CLICK_ON_VISIBLE_ITEM) {
Logger.debug(`OpenshiftPlugin.clickOnOpenshiftTollBar`);
await this.ide.waitAndClickLeftToolbarButton(LeftToolbarButton.Openshift, timeout);
}
async waitOpenshiftConnectorTree(timeout: number = TimeoutConstants.TS_WAIT_OPENSHIFT_CONNECTOR_TREE_TIMEOUT) {
Logger.debug(`OpenshiftPlugin.waitOpenshiftConnectorTree`);
await this.driverHelper.waitPresence(By.id('openshiftProjectExplorer'), timeout);
}
async clickOnApplicationToolbarItem(item: OpenshiftAppExplorerToolbar, timeout: number = TimeoutConstants.TS_SELENIUM_CLICK_ON_VISIBLE_ITEM) {
Logger.debug(`OpenshiftPlugin.clickOnApplicationToolbarItem`);
await this.driverHelper.waitAndClick(By.css(`div [title='${item}']`), timeout);
}
async getClusterIP(timeout: number = TimeoutConstants.TS_GET_CLUSTER_IP_TIMEOUT): Promise<string> {
Logger.debug(`OpenshiftPlugin.getClusterIP`);
return await this.driverHelper.waitAndGetText(By.xpath('//div[@id=\'openshiftProjectExplorer\']//div[@title [contains(text(), https)]]'), timeout);
}
async waitItemInTree(item: string, timeout: number = TimeoutConstants.TS_SELENIUM_TERMINAL_DEFAULT_TIMEOUT) {
Logger.debug(`OpenshiftPlugin.waitItemInTree`);
await this.driverHelper.waitPresence(By.xpath(`//div[contains(@id, ':${item}')]`), timeout);
}
async clickOnItemInTree(item: string, timeout: number = TimeoutConstants.TS_SELENIUM_CLICK_ON_VISIBLE_ITEM) {
Logger.debug(`OpenshiftPlugin.clickOnItemInTree`);
await this.driverHelper.waitAndClick(By.xpath(`//div[contains(@id, ':${item}')]`), timeout);
}
async invokeContextMenuOnItem(treeItem: string) {
Logger.debug(`OpenshiftPlugin.invokeContextMenuOnItem`);
await this.contextMenu.invokeContextMenuOnTheElementWithMouse(By.xpath(`//div[contains(@id, ':${treeItem}')]`));
}
async invokeContextMenuCommandOnItem(treeItem: string, menuItem: OpenshiftContextMenuItems) {
Logger.debug(`OpenshiftPlugin.clickOnItemInTree`);
await this.contextMenu.invokeContextMenuOnTheElementWithMouse(By.xpath(`//div[contains(@id, ':${treeItem}')]`));
await this.contextMenu.waitContextMenuAndClickOnItem(menuItem);
}
}