Skip to content

Commit 8898b7d

Browse files
Stabilize devconsole integration tests (#23247)
* stabilize devconsole integration tests
1 parent 4787042 commit 8898b7d

File tree

2 files changed

+38
-7
lines changed

2 files changed

+38
-7
lines changed

tests/e2e/pageobjects/openshift/OcpMainPage.ts

+12-2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { Logger } from '../../utils/Logger';
1616
import { TIMEOUT_CONSTANTS } from '../../constants/TIMEOUT_CONSTANTS';
1717
import { OcpImportFromGitPage } from './OcpImportFromGitPage';
1818
import { e2eContainer } from '../../configs/inversify.config';
19+
import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
1920

2021
@injectable()
2122
export class OcpMainPage {
@@ -29,7 +30,9 @@ export class OcpMainPage {
2930

3031
constructor(
3132
@inject(CLASSES.DriverHelper)
32-
private readonly driverHelper: DriverHelper
33+
private readonly driverHelper: DriverHelper,
34+
@inject(CLASSES.BrowserTabsUtil)
35+
private readonly browserTabsUtil: BrowserTabsUtil
3336
) {}
3437

3538
async waitOpenMainPage(): Promise<void> {
@@ -82,6 +85,14 @@ export class OcpMainPage {
8285
await this.driverHelper.waitAndClick(this.getProjectDropdownItemLocator(projectName));
8386
}
8487

88+
async clickOnAppLauncherAndDevSpaceItem(): Promise<void> {
89+
Logger.debug('click on app launcher menu');
90+
const parentGUID: string = await this.browserTabsUtil.getCurrentWindowHandle();
91+
await this.driverHelper.waitAndClick(By.css('nav[data-test-id="application-launcher"]'));
92+
await this.driverHelper.waitAndClick(By.xpath('//span[contains(.,"Red Hat OpenShift Dev Spaces")]'));
93+
await this.browserTabsUtil.waitAndSwitchToAnotherWindow(parentGUID, TIMEOUT_CONSTANTS.TS_SELENIUM_LOAD_PAGE_TIMEOUT);
94+
}
95+
8596
private getRoleLocator(role: string): By {
8697
return By.xpath(`//a//*[text()="${role}"]`);
8798
}
@@ -95,7 +106,6 @@ export class OcpMainPage {
95106

96107
await this.driverHelper.waitAndClick(this.getRoleLocator(role));
97108
}
98-
99109
private async tryToSkipWebTour(): Promise<void> {
100110
Logger.debug();
101111

tests/e2e/specs/devconsole-intergration/DevConsoleIntegration.spec.ts

+26-5
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,19 @@ import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
2525
import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
2626
import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
2727
import { TIMEOUT_CONSTANTS } from '../../constants/TIMEOUT_CONSTANTS';
28+
import { Logger } from '../../utils/Logger';
29+
import { ShellExecutor } from '../../utils/ShellExecutor';
30+
import { ShellString } from 'shelljs';
2831

2932
suite(`DevConsole Integration ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function (): void {
3033
let ocpImportPage: OcpImportFromGitPage;
3134
let ocpApplicationPage: OcpApplicationPage;
32-
35+
let parentGUID: string = '';
3336
const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
3437
const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
3538
const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
3639
const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
40+
const shellExecutor: ShellExecutor = e2eContainer.get(CLASSES.ShellExecutor);
3741
const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
3842
const ocpMainPage: OcpMainPage = e2eContainer.get(CLASSES.OcpMainPage);
3943
const kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor = e2eContainer.get(
@@ -47,12 +51,18 @@ suite(`DevConsole Integration ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function
4751

4852
suiteSetup('Create new empty project using ocp', function (): void {
4953
kubernetesCommandLineToolsExecutor.loginToOcp();
54+
// delete the test project on a cluster if it has not been deleted properly in the previous run
55+
const expectedProject: ShellString = shellExecutor.executeCommand(`oc get project ${projectName}`);
56+
if (expectedProject.stderr.length === 0) {
57+
kubernetesCommandLineToolsExecutor.deleteProject(projectName);
58+
}
5059
kubernetesCommandLineToolsExecutor.createProject(projectName);
5160
});
5261

5362
loginTests.loginIntoOcpConsole();
5463

5564
test('Select test project and Developer role on DevConsole', async function (): Promise<void> {
65+
parentGUID = await browserTabsUtil.getCurrentWindowHandle();
5666
await ocpMainPage.selectDeveloperRole();
5767
await ocpMainPage.selectProject(projectName);
5868
});
@@ -106,16 +116,27 @@ suite(`DevConsole Integration ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function
106116
).not.undefined;
107117
});
108118

109-
suiteTeardown('Open dashboard and close all other tabs', async function (): Promise<void> {
110-
await dashboard.openDashboard();
119+
test('Check redirection to DevSpaces from App launcher', async function (): Promise<void> {
120+
await browserTabsUtil.switchToWindow(parentGUID);
111121
await browserTabsUtil.closeAllTabsExceptCurrent();
122+
await ocpMainPage.clickOnAppLauncherAndDevSpaceItem();
123+
await loginTests.loginIntoChe();
124+
await dashboard.waitPage();
112125
});
113126

114127
suiteTeardown('Delete project using ocp', function (): void {
115128
kubernetesCommandLineToolsExecutor.workspaceName =
116129
WorkspaceHandlingTests.getWorkspaceName() !== '' ? WorkspaceHandlingTests.getWorkspaceName() : 'spring-music';
117-
kubernetesCommandLineToolsExecutor.deleteDevWorkspace();
118-
kubernetesCommandLineToolsExecutor.deleteProject(projectName);
130+
try {
131+
kubernetesCommandLineToolsExecutor.deleteDevWorkspace();
132+
} catch (err) {
133+
Logger.error(`Error while deleting workspace: ${err}`);
134+
}
135+
try {
136+
kubernetesCommandLineToolsExecutor.deleteProject(projectName);
137+
} catch (err) {
138+
Logger.error(`Cannot delete the project: ${err}`);
139+
}
119140
});
120141

121142
suiteTeardown('Unregister running workspace', function (): void {

0 commit comments

Comments
 (0)