@eclipse-che/che-e2e 7.90.0 → 7.90.1-next-af69ec4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configs/inversify.config.ts +3 -0
- package/configs/inversify.types.ts +2 -1
- package/constants/BASE_TEST_CONSTANTS.ts +1 -1
- package/dist/configs/inversify.config.js +3 -0
- package/dist/configs/inversify.config.js.map +1 -1
- package/dist/configs/inversify.types.js +2 -1
- package/dist/configs/inversify.types.js.map +1 -1
- package/dist/constants/BASE_TEST_CONSTANTS.js +1 -1
- package/dist/constants/BASE_TEST_CONSTANTS.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/pageobjects/dashboard/CreateWorkspace.js +16 -2
- package/dist/pageobjects/dashboard/CreateWorkspace.js.map +1 -1
- package/dist/pageobjects/dashboard/TrustAuthorPopup.js +55 -0
- package/dist/pageobjects/dashboard/TrustAuthorPopup.js.map +1 -0
- package/dist/pageobjects/ide/CheCodeLocatorLoader.js +1 -1
- package/dist/pageobjects/ide/CheCodeLocatorLoader.js.map +1 -1
- package/dist/specs/factory/Factory.spec.js +4 -0
- package/dist/specs/factory/Factory.spec.js.map +1 -1
- package/dist/specs/factory/NoSetupRepoFactory.spec.js +4 -0
- package/dist/specs/factory/NoSetupRepoFactory.spec.js.map +1 -1
- package/dist/specs/factory/RefusedOAuthFactory.spec.js +6 -2
- package/dist/specs/factory/RefusedOAuthFactory.spec.js.map +1 -1
- package/dist/specs/miscellaneous/CustomOpenVSXRegistry.spec.js +201 -0
- package/dist/specs/miscellaneous/CustomOpenVSXRegistry.spec.js.map +1 -0
- package/dist/specs/miscellaneous/WorkspaceWithParent.spec.js +2 -0
- package/dist/specs/miscellaneous/WorkspaceWithParent.spec.js.map +1 -1
- package/index.ts +1 -0
- package/package.json +1 -1
- package/pageobjects/dashboard/CreateWorkspace.ts +17 -1
- package/pageobjects/dashboard/TrustAuthorPopup.ts +42 -0
- package/pageobjects/ide/CheCodeLocatorLoader.ts +1 -1
- package/specs/factory/Factory.spec.ts +5 -0
- package/specs/factory/NoSetupRepoFactory.spec.ts +5 -0
- package/specs/factory/RefusedOAuthFactory.spec.ts +7 -4
- package/specs/miscellaneous/CustomOpenVSXRegistry.spec.ts +226 -0
- package/specs/miscellaneous/WorkspaceWithParent.spec.ts +3 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/** *******************************************************************
|
|
4
|
+
* copyright (c) 2023 Red Hat, Inc.
|
|
5
|
+
*
|
|
6
|
+
* This program and the accompanying materials are made
|
|
7
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
8
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
9
|
+
*
|
|
10
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
11
|
+
**********************************************************************/
|
|
12
|
+
const FACTORY_TEST_CONSTANTS_1 = require("../../constants/FACTORY_TEST_CONSTANTS");
|
|
13
|
+
const BASE_TEST_CONSTANTS_1 = require("../../constants/BASE_TEST_CONSTANTS");
|
|
14
|
+
const inversify_config_1 = require("../../configs/inversify.config");
|
|
15
|
+
const inversify_types_1 = require("../../configs/inversify.types");
|
|
16
|
+
const WorkspaceHandlingTests_1 = require("../../tests-library/WorkspaceHandlingTests");
|
|
17
|
+
const monaco_page_objects_1 = require("monaco-page-objects");
|
|
18
|
+
const MochaHooks_1 = require("../MochaHooks");
|
|
19
|
+
const Logger_1 = require("../../utils/Logger");
|
|
20
|
+
const chai_1 = require("chai");
|
|
21
|
+
const TIMEOUT_CONSTANTS_1 = require("../../constants/TIMEOUT_CONSTANTS");
|
|
22
|
+
const selenium_webdriver_1 = require("selenium-webdriver");
|
|
23
|
+
suite(`Create a workspace via launching a factory from the ${FACTORY_TEST_CONSTANTS_1.FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL} repository`, function () {
|
|
24
|
+
const browserTabsUtil = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.BrowserTabsUtil);
|
|
25
|
+
const workspaceHandlingTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceHandlingTests);
|
|
26
|
+
const projectAndFileTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ProjectAndFileTests);
|
|
27
|
+
const loginTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.LoginTests);
|
|
28
|
+
const pathToPluginRegistry = '/projects/devspaces/dependencies/che-plugin-registry/';
|
|
29
|
+
const internalRegistry = 'image-registry.openshift-image-registry.svc:5000';
|
|
30
|
+
const testWorkspaceUtil = inversify_config_1.e2eContainer.get(inversify_types_1.TYPES.WorkspaceUtil);
|
|
31
|
+
const driverHelper = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.DriverHelper);
|
|
32
|
+
const viewItems = [];
|
|
33
|
+
const testRepoProjectName = 'devspaces';
|
|
34
|
+
const appVersion = BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TESTING_APPLICATION_VERSION
|
|
35
|
+
? BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TESTING_APPLICATION_VERSION.split('.').slice(0, 2).join('.')
|
|
36
|
+
: 'next';
|
|
37
|
+
let currentNamespace = '';
|
|
38
|
+
let cheClusterNamespace = '';
|
|
39
|
+
let cheClusterName = '';
|
|
40
|
+
let projectSection;
|
|
41
|
+
let kubernetesCommandLineToolsExecutor;
|
|
42
|
+
let workspaceName = '';
|
|
43
|
+
suiteSetup('Login', async function () {
|
|
44
|
+
await loginTests.loginIntoChe();
|
|
45
|
+
});
|
|
46
|
+
test('Navigate to the factory URL', async function () {
|
|
47
|
+
await browserTabsUtil.navigateTo(FACTORY_TEST_CONSTANTS_1.FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_URL() || 'https://github.com/redhat-developer/devspaces/');
|
|
48
|
+
});
|
|
49
|
+
test('Obtain workspace name from workspace loader page', async function () {
|
|
50
|
+
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
51
|
+
workspaceName = WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName();
|
|
52
|
+
(0, chai_1.expect)(workspaceName, 'Workspace name was not fetched from the loading page').not.undefined;
|
|
53
|
+
});
|
|
54
|
+
test('Registering the running workspace', function () {
|
|
55
|
+
(0, MochaHooks_1.registerRunningWorkspace)(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
56
|
+
});
|
|
57
|
+
test('Wait the workspace readiness', async function () {
|
|
58
|
+
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
59
|
+
});
|
|
60
|
+
test('Check if a project folder has been created', async function () {
|
|
61
|
+
Logger_1.Logger.debug(`new SideBarView().getContent().getSection: get ${testRepoProjectName}`);
|
|
62
|
+
projectSection = await projectAndFileTests.getProjectViewSession();
|
|
63
|
+
(0, chai_1.expect)(await projectAndFileTests.getProjectTreeItem(projectSection, testRepoProjectName), 'Project folder was not imported').not
|
|
64
|
+
.undefined;
|
|
65
|
+
});
|
|
66
|
+
test('Accept the project as a trusted one', async function () {
|
|
67
|
+
await projectAndFileTests.performTrustAuthorDialog();
|
|
68
|
+
});
|
|
69
|
+
test('Remove VSX plugins and set redhat.vscode-xml', function () {
|
|
70
|
+
// modify the openvsx-sync.json file with just one item - for speeding up the build an image
|
|
71
|
+
kubernetesCommandLineToolsExecutor = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.KubernetesCommandLineToolsExecutor);
|
|
72
|
+
kubernetesCommandLineToolsExecutor.workspaceName = workspaceName;
|
|
73
|
+
kubernetesCommandLineToolsExecutor.loginToOcp('admin');
|
|
74
|
+
kubernetesCommandLineToolsExecutor.getPodAndContainerNames();
|
|
75
|
+
const pathToOpenVSXOriginFile = `${pathToPluginRegistry}openvsx-sync.json`;
|
|
76
|
+
const pathToOpenVSXTmpFile = `${pathToPluginRegistry}temp.json`;
|
|
77
|
+
const editVSCListCommand = `jq "[.[] | select(.id == \\"redhat.vscode-xml\\")]" ${pathToOpenVSXOriginFile} > ${pathToOpenVSXTmpFile} && mv ${pathToOpenVSXTmpFile} ${pathToOpenVSXOriginFile}`;
|
|
78
|
+
const output = kubernetesCommandLineToolsExecutor.execInContainerCommand(editVSCListCommand);
|
|
79
|
+
(0, chai_1.expect)(output.code).to.equals(0);
|
|
80
|
+
const getCheClusterNamespaceCommand = 'oc get checluster --all-namespaces -o json | jq -r ".items[0].metadata.name"';
|
|
81
|
+
const getCheClusterNameSpace = 'oc get checluster --all-namespaces -o json | jq -r ".items[0].metadata.namespace"';
|
|
82
|
+
// get che cluster name and namespace and init variables
|
|
83
|
+
cheClusterName = kubernetesCommandLineToolsExecutor.execInContainerCommand(getCheClusterNamespaceCommand).replace('\n', '');
|
|
84
|
+
cheClusterNamespace = kubernetesCommandLineToolsExecutor.execInContainerCommand(getCheClusterNameSpace).replace('\n', '');
|
|
85
|
+
});
|
|
86
|
+
test('Login podman into official registry', function () {
|
|
87
|
+
const commandToAuthenticateInRegistry = `podman login -u \"${process.env.REGISTRY_LOGIN}\" -p ${process.env.REGISTRY_PASSWORD} registry.redhat.io`;
|
|
88
|
+
const output = kubernetesCommandLineToolsExecutor.execInContainerCommand(commandToAuthenticateInRegistry);
|
|
89
|
+
(0, chai_1.expect)(output).contains('Login Succeeded!');
|
|
90
|
+
});
|
|
91
|
+
test('Build and push custom image', function () {
|
|
92
|
+
currentNamespace = kubernetesCommandLineToolsExecutor.namespace;
|
|
93
|
+
const podmanPushCommand = `podman push ${internalRegistry}/${currentNamespace}/che-plugin-registry:${appVersion}`;
|
|
94
|
+
const commandToBuildCustomVSXImage = `cd ${pathToPluginRegistry} && yes | ./build.sh`;
|
|
95
|
+
const commandLoginIntoInternalRegistry = 'podman login -u $(oc whoami | tr -d :) -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000';
|
|
96
|
+
const retagImageCommand = `podman tag quay.io/devspaces/pluginregistry-rhel8:next ${internalRegistry}/${currentNamespace}/che-plugin-registry:${appVersion}`;
|
|
97
|
+
const output = kubernetesCommandLineToolsExecutor.execInContainerCommand(commandToBuildCustomVSXImage);
|
|
98
|
+
(0, chai_1.expect)(output.code).equals(0);
|
|
99
|
+
const outputRetagCommand = kubernetesCommandLineToolsExecutor.execInContainerCommand(retagImageCommand);
|
|
100
|
+
(0, chai_1.expect)(outputRetagCommand.code).equals(0);
|
|
101
|
+
const loginIntoInternalRegistryOutput = kubernetesCommandLineToolsExecutor.execInContainerCommand(commandLoginIntoInternalRegistry);
|
|
102
|
+
(0, chai_1.expect)(loginIntoInternalRegistryOutput).contains('Login Succeeded!');
|
|
103
|
+
const outputPushCommand = kubernetesCommandLineToolsExecutor.execInContainerCommand(podmanPushCommand);
|
|
104
|
+
(0, chai_1.expect)(outputPushCommand.code).equals(0);
|
|
105
|
+
});
|
|
106
|
+
test('Configure Che to use the embedded Eclipse Open VSX server', function () {
|
|
107
|
+
// create secret for using internal registry
|
|
108
|
+
const createRegistrySecretCommand = `oc create secret -n ${cheClusterNamespace} docker-registry regcred --docker-server=${internalRegistry} --docker-username=\$(oc whoami | tr -d :) --docker-password=\$(oc whoami -t)`;
|
|
109
|
+
const createSecretOutput = kubernetesCommandLineToolsExecutor.execInContainerCommand(createRegistrySecretCommand);
|
|
110
|
+
(0, chai_1.expect)(createSecretOutput).contains('regcred created');
|
|
111
|
+
// add secret to service account
|
|
112
|
+
const patchPart = '{\\"imagePullSecrets\\": [{\\"name\\": \\"regcred\\"}]}';
|
|
113
|
+
const addSecretToServiceAccountCommand = `oc patch serviceaccount default -n ${cheClusterNamespace} -p "${patchPart}"`;
|
|
114
|
+
const addSecretOutput = kubernetesCommandLineToolsExecutor.execInContainerCommand(addSecretToServiceAccountCommand);
|
|
115
|
+
(0, chai_1.expect)(addSecretOutput).contains('default patched');
|
|
116
|
+
// patch che cluster with custom plugin registry
|
|
117
|
+
const patchVSXRegistryCommand = `cd ${pathToPluginRegistry} && ./patch-cluster.sh ${internalRegistry}/${currentNamespace}/che-plugin-registry:${appVersion}`;
|
|
118
|
+
const patchVSXOutput = kubernetesCommandLineToolsExecutor.execInContainerCommand(patchVSXRegistryCommand);
|
|
119
|
+
(0, chai_1.expect)(patchVSXOutput).contains('Patched CheCluster ');
|
|
120
|
+
// wait for deployment readiness after patching CHE cluster
|
|
121
|
+
const waitDeploymentReadiness = `oc rollout status deployment plugin-registry -n ${cheClusterNamespace} --timeout=120s`;
|
|
122
|
+
const waitDeploymentOutput = kubernetesCommandLineToolsExecutor.execInContainerCommand(waitDeploymentReadiness);
|
|
123
|
+
(0, chai_1.expect)(waitDeploymentOutput).contains('successfully rolled out');
|
|
124
|
+
});
|
|
125
|
+
test('Recreate workspace and check VSX custom plugin ', async function () {
|
|
126
|
+
await testWorkspaceUtil.deleteWorkspaceByName(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
127
|
+
(0, MochaHooks_1.registerRunningWorkspace)('');
|
|
128
|
+
await browserTabsUtil.navigateTo(FACTORY_TEST_CONSTANTS_1.FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_URL());
|
|
129
|
+
});
|
|
130
|
+
test('Registering the running workspace', function () {
|
|
131
|
+
(0, MochaHooks_1.registerRunningWorkspace)(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
132
|
+
});
|
|
133
|
+
test('Check Custom VSX plugin', async function () {
|
|
134
|
+
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
135
|
+
Logger_1.Logger.debug(`new SideBarView().getContent().getSection: get ${testRepoProjectName}`);
|
|
136
|
+
projectSection = await projectAndFileTests.getProjectViewSession();
|
|
137
|
+
(0, chai_1.expect)(await projectAndFileTests.getProjectTreeItem(projectSection, testRepoProjectName), 'Project folder was not imported').not
|
|
138
|
+
.undefined;
|
|
139
|
+
await projectAndFileTests.performTrustAuthorDialog();
|
|
140
|
+
const extensionsView = await (await new monaco_page_objects_1.ActivityBar().getViewControl('Extensions'))?.openView();
|
|
141
|
+
await driverHelper.wait(TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT);
|
|
142
|
+
const sections = await extensionsView?.getContent().getSections();
|
|
143
|
+
if (sections !== undefined) {
|
|
144
|
+
for (const section of sections) {
|
|
145
|
+
let currentItem = [];
|
|
146
|
+
// sometimes the item (not related with custom VSX) can be empty or not extended, but it is not an error for the test
|
|
147
|
+
// we do not need to control none VSX items
|
|
148
|
+
try {
|
|
149
|
+
currentItem = await section.getVisibleItems();
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
if (err instanceof selenium_webdriver_1.error.ElementNotInteractableError) {
|
|
153
|
+
Logger_1.Logger.error('Current item is not interactable but test will continue');
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
throw err;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (currentItem.length > 0) {
|
|
160
|
+
viewItems?.push(...currentItem);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
(0, chai_1.expect)(viewItems.length).equals(1);
|
|
165
|
+
(0, chai_1.expect)(await viewItems[0].getText()).contains('XML Language Support by Red Hat');
|
|
166
|
+
});
|
|
167
|
+
suiteTeardown('Clean up resources and restore default CHE cluster CR', async function () {
|
|
168
|
+
try {
|
|
169
|
+
kubernetesCommandLineToolsExecutor.execInContainerCommand(`oc delete secret regcred -n ${cheClusterNamespace}`);
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
Logger_1.Logger.error(`Error during deleting the secret: ${error}`);
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
const patch = '[{"op": "remove", "path": "/imagePullSecrets", "value": {"name": "regcred"}}]';
|
|
176
|
+
const commandForRestoreServiceAccount = `oc patch serviceaccount default -n ${cheClusterNamespace} --type=json -p="${patch}"`;
|
|
177
|
+
kubernetesCommandLineToolsExecutor.execInContainerCommand(commandForRestoreServiceAccount);
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
Logger_1.Logger.error(`Error during restoring the service account: ${error}`);
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
const patchDeployment = '[{"op": "remove", "path": "/spec/components/pluginRegistry/deployment"}]';
|
|
184
|
+
const patchPluginRegistry = '[{"op": "remove", "path": "/spec/components/pluginRegistry/openVSXURL"}]';
|
|
185
|
+
const restoreDefaultDeploymentPluginRegistry = `oc patch checluster ${cheClusterName} --type=json -p="${patchDeployment}" -n ${cheClusterNamespace}`;
|
|
186
|
+
const restoreOpenVSXRegistry = `oc patch checluster ${cheClusterName} --type=json -p="${patchPluginRegistry}" -n ${cheClusterNamespace}`;
|
|
187
|
+
kubernetesCommandLineToolsExecutor.execInContainerCommand(restoreDefaultDeploymentPluginRegistry);
|
|
188
|
+
kubernetesCommandLineToolsExecutor.execInContainerCommand(restoreOpenVSXRegistry);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
Logger_1.Logger.error(`Error during restoring the VSX registry: ${error}`);
|
|
192
|
+
}
|
|
193
|
+
try {
|
|
194
|
+
await testWorkspaceUtil.deleteWorkspaceByName(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
Logger_1.Logger.error(`Cannot delete the workspace by API deleting the workspace: ${error}`);
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
//# sourceMappingURL=CustomOpenVSXRegistry.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomOpenVSXRegistry.spec.js","sourceRoot":"","sources":["../../../specs/miscellaneous/CustomOpenVSXRegistry.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ suite(`Workspace using a parent test suite ${BASE_TEST_CONSTANTS_1.BASE_TEST_CON
|
|
|
29
29
|
const workspaceHandlingTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceHandlingTests);
|
|
30
30
|
const kubernetesCommandLineToolsExecutor = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.KubernetesCommandLineToolsExecutor);
|
|
31
31
|
const driverHelper = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.DriverHelper);
|
|
32
|
+
const createWorkspace = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.CreateWorkspace);
|
|
32
33
|
let podName = '';
|
|
33
34
|
suiteSetup(function () {
|
|
34
35
|
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
@@ -42,6 +43,7 @@ suite(`Workspace using a parent test suite ${BASE_TEST_CONSTANTS_1.BASE_TEST_CON
|
|
|
42
43
|
: BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TS_SELENIUM_BASE_URL + '/dashboard/#/' + FACTORY_TEST_CONSTANTS_1.FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL;
|
|
43
44
|
await dashboard.waitPage();
|
|
44
45
|
await browserTabsUtil.navigateTo(factoryUrl);
|
|
46
|
+
await createWorkspace.performTrustAuthorPopup();
|
|
45
47
|
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
46
48
|
(0, MochaHooks_1.registerRunningWorkspace)(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
47
49
|
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceWithParent.spec.js","sourceRoot":"","sources":["../../../specs/miscellaneous/WorkspaceWithParent.spec.ts"],"names":[],"mappings":";;AAAA;;;;;;;;wEAQwE;AACxE,qEAA8D;AAE9D,6DAA8G;AAC9G,mEAA+D;AAK/D,6EAA0E;AAC1E,+BAA8B;AAC9B,2EAAwE;AACxE,uFAAoF;AACpF,8CAAyD;AAIzD,yEAAsE;AACtE,mFAAgF;
|
|
1
|
+
{"version":3,"file":"WorkspaceWithParent.spec.js","sourceRoot":"","sources":["../../../specs/miscellaneous/WorkspaceWithParent.spec.ts"],"names":[],"mappings":"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"}
|
package/index.ts
CHANGED
|
@@ -24,6 +24,7 @@ export * from './utils/workspace/TestWorkspaceUtil';
|
|
|
24
24
|
export * from './utils/workspace/WorkspaceStatus';
|
|
25
25
|
export * from './pageobjects/dashboard/CreateWorkspace';
|
|
26
26
|
export * from './pageobjects/dashboard/Dashboard';
|
|
27
|
+
export * from './pageobjects/dashboard/TrustAuthorPopup';
|
|
27
28
|
export * from './pageobjects/dashboard/UserPreferences';
|
|
28
29
|
export * from './pageobjects/dashboard/Workspaces';
|
|
29
30
|
export * from './pageobjects/dashboard/workspace-details/WorkspaceDetails';
|
package/package.json
CHANGED
|
@@ -15,6 +15,7 @@ import { By, Key } from 'selenium-webdriver';
|
|
|
15
15
|
import { Logger } from '../../utils/Logger';
|
|
16
16
|
import { TIMEOUT_CONSTANTS } from '../../constants/TIMEOUT_CONSTANTS';
|
|
17
17
|
import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
|
|
18
|
+
import { TrustAuthorPopup } from './TrustAuthorPopup';
|
|
18
19
|
|
|
19
20
|
@injectable()
|
|
20
21
|
export class CreateWorkspace {
|
|
@@ -26,7 +27,10 @@ export class CreateWorkspace {
|
|
|
26
27
|
|
|
27
28
|
constructor(
|
|
28
29
|
@inject(CLASSES.DriverHelper)
|
|
29
|
-
private readonly driverHelper: DriverHelper
|
|
30
|
+
private readonly driverHelper: DriverHelper,
|
|
31
|
+
|
|
32
|
+
@inject(CLASSES.TrustAuthorPopup)
|
|
33
|
+
private readonly trustAuthorPopup: TrustAuthorPopup
|
|
30
34
|
) {}
|
|
31
35
|
|
|
32
36
|
async waitTitleContains(expectedText: string, timeout: number = TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT): Promise<void> {
|
|
@@ -84,6 +88,8 @@ export class CreateWorkspace {
|
|
|
84
88
|
}
|
|
85
89
|
|
|
86
90
|
await this.driverHelper.waitAndClick(CreateWorkspace.CREATE_AND_OPEN_BUTTON, timeout);
|
|
91
|
+
|
|
92
|
+
await this.performTrustAuthorPopup();
|
|
87
93
|
}
|
|
88
94
|
|
|
89
95
|
async clickOnEditorsDropdownListButton(sampleName: string, timeout: number): Promise<void> {
|
|
@@ -93,6 +99,16 @@ export class CreateWorkspace {
|
|
|
93
99
|
await this.driverHelper.waitAndClick(editorDropdownListLocator, timeout);
|
|
94
100
|
}
|
|
95
101
|
|
|
102
|
+
async performTrustAuthorPopup(): Promise<void> {
|
|
103
|
+
Logger.debug();
|
|
104
|
+
|
|
105
|
+
try {
|
|
106
|
+
await this.trustAuthorPopup.clickContinue();
|
|
107
|
+
} catch (e) {
|
|
108
|
+
Logger.info('"Trust author" popup was not shown');
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
96
112
|
private getEditorsDropdownListLocator(sampleName: string): By {
|
|
97
113
|
return By.xpath(`//div[text()=\'${sampleName}\']//parent::article//button`);
|
|
98
114
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 2019-2023 Red Hat, Inc.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made
|
|
5
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
**********************************************************************/
|
|
10
|
+
import { inject, injectable } from 'inversify';
|
|
11
|
+
import 'reflect-metadata';
|
|
12
|
+
import { CLASSES } from '../../configs/inversify.types';
|
|
13
|
+
import { By } from 'selenium-webdriver';
|
|
14
|
+
import { DriverHelper } from '../../utils/DriverHelper';
|
|
15
|
+
import { Logger } from '../../utils/Logger';
|
|
16
|
+
import { TIMEOUT_CONSTANTS } from '../../constants/TIMEOUT_CONSTANTS';
|
|
17
|
+
|
|
18
|
+
@injectable()
|
|
19
|
+
export class TrustAuthorPopup {
|
|
20
|
+
private static readonly CONTINUE_BUTTON: By = By.xpath('//button[text()="Continue"]');
|
|
21
|
+
private static readonly TRUST_AUTHOR_POPUP_PAGE: By = By.xpath(
|
|
22
|
+
'//span[contains(text(), "Do you trust the authors of this repository?")]'
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
constructor(
|
|
26
|
+
@inject(CLASSES.DriverHelper)
|
|
27
|
+
readonly driverHelper: DriverHelper
|
|
28
|
+
) {}
|
|
29
|
+
|
|
30
|
+
async clickContinue(timeout: number = TIMEOUT_CONSTANTS.TS_SELENIUM_CLICK_ON_VISIBLE_ITEM): Promise<void> {
|
|
31
|
+
Logger.debug();
|
|
32
|
+
|
|
33
|
+
await this.waitPopupIsOpened();
|
|
34
|
+
await this.driverHelper.waitAndClick(TrustAuthorPopup.CONTINUE_BUTTON, timeout);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
async waitPopupIsOpened(timeout: number = TIMEOUT_CONSTANTS.TS_SELENIUM_CLICK_ON_VISIBLE_ITEM): Promise<void> {
|
|
38
|
+
Logger.debug();
|
|
39
|
+
|
|
40
|
+
await this.driverHelper.waitVisibility(TrustAuthorPopup.TRUST_AUTHOR_POPUP_PAGE, timeout);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -53,7 +53,7 @@ export class CheCodeLocatorLoader extends LocatorLoader {
|
|
|
53
53
|
requireReloadButton: By.xpath('//a[text()="Reload Required"]')
|
|
54
54
|
},
|
|
55
55
|
TreeItem: {
|
|
56
|
-
projectFolderItem: By.
|
|
56
|
+
projectFolderItem: By.className('pane-header expanded')
|
|
57
57
|
},
|
|
58
58
|
ScmView: {
|
|
59
59
|
manageWorkspaceTrust: By.xpath('.//a[@class="monaco-button monaco-text-button"]'),
|
|
@@ -39,6 +39,7 @@ import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
|
|
|
39
39
|
import { FACTORY_TEST_CONSTANTS } from '../../constants/FACTORY_TEST_CONSTANTS';
|
|
40
40
|
import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
|
|
41
41
|
import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
|
|
42
|
+
import { CreateWorkspace } from '../../pageobjects/dashboard/CreateWorkspace';
|
|
42
43
|
|
|
43
44
|
suite(
|
|
44
45
|
`Create a workspace via launching a factory from the ${FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_PROVIDER} repository ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`,
|
|
@@ -53,6 +54,7 @@ suite(
|
|
|
53
54
|
const oauthPage: OauthPage = e2eContainer.get(CLASSES.OauthPage);
|
|
54
55
|
const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
|
|
55
56
|
const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
|
|
57
|
+
const createWorkspace: CreateWorkspace = e2eContainer.get(CLASSES.CreateWorkspace);
|
|
56
58
|
|
|
57
59
|
let projectSection: ViewSection;
|
|
58
60
|
let scmProvider: SingleScmProvider;
|
|
@@ -72,6 +74,7 @@ suite(
|
|
|
72
74
|
});
|
|
73
75
|
test('Navigate to the factory URL', async function (): Promise<void> {
|
|
74
76
|
await browserTabsUtil.navigateTo(FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_URL());
|
|
77
|
+
await createWorkspace.performTrustAuthorPopup();
|
|
75
78
|
});
|
|
76
79
|
|
|
77
80
|
if (OAUTH_CONSTANTS.TS_SELENIUM_GIT_PROVIDER_OAUTH) {
|
|
@@ -200,6 +203,8 @@ suite(
|
|
|
200
203
|
});
|
|
201
204
|
|
|
202
205
|
suiteTeardown('Stop and delete the workspace by API', async function (): Promise<void> {
|
|
206
|
+
// to avoid a possible creating workspace which is not appeared on Dashboard yet. TODO: implement a better solution.
|
|
207
|
+
await driverHelper.wait(30000);
|
|
203
208
|
await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
|
|
204
209
|
});
|
|
205
210
|
|
|
@@ -40,6 +40,7 @@ import { FACTORY_TEST_CONSTANTS, GitProviderType } from '../../constants/FACTORY
|
|
|
40
40
|
import { OAUTH_CONSTANTS } from '../../constants/OAUTH_CONSTANTS';
|
|
41
41
|
import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
|
|
42
42
|
import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
|
|
43
|
+
import { CreateWorkspace } from '../../pageobjects/dashboard/CreateWorkspace';
|
|
43
44
|
|
|
44
45
|
suite(
|
|
45
46
|
`Create a workspace via launching a factory from the ${FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_PROVIDER} repository without PAT/OAuth setup ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`,
|
|
@@ -54,6 +55,7 @@ suite(
|
|
|
54
55
|
const workspaces: Workspaces = e2eContainer.get(CLASSES.Workspaces);
|
|
55
56
|
const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
|
|
56
57
|
const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
|
|
58
|
+
const createWorkspace: CreateWorkspace = e2eContainer.get(CLASSES.CreateWorkspace);
|
|
57
59
|
|
|
58
60
|
let projectSection: ViewSection;
|
|
59
61
|
let scmProvider: SingleScmProvider;
|
|
@@ -83,6 +85,7 @@ suite(
|
|
|
83
85
|
|
|
84
86
|
test(`Navigate to the ${isPrivateRepo} repository factory URL`, async function (): Promise<void> {
|
|
85
87
|
await browserTabsUtil.navigateTo(FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_URL());
|
|
88
|
+
await createWorkspace.performTrustAuthorPopup();
|
|
86
89
|
});
|
|
87
90
|
|
|
88
91
|
if (FACTORY_TEST_CONSTANTS.TS_SELENIUM_IS_PRIVATE_FACTORY_GIT_REPO) {
|
|
@@ -253,6 +256,8 @@ suite(
|
|
|
253
256
|
});
|
|
254
257
|
|
|
255
258
|
suiteTeardown('Stop and delete the workspace by API', async function (): Promise<void> {
|
|
259
|
+
// to avoid a possible creating workspace which is not appeared on Dashboard yet. TODO: implement a better solution.
|
|
260
|
+
await driverHelper.wait(30000);
|
|
256
261
|
await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
|
|
257
262
|
});
|
|
258
263
|
}
|
|
@@ -39,6 +39,7 @@ import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
|
|
|
39
39
|
import { FACTORY_TEST_CONSTANTS, GitProviderType } from '../../constants/FACTORY_TEST_CONSTANTS';
|
|
40
40
|
import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
|
|
41
41
|
import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
|
|
42
|
+
import { CreateWorkspace } from '../../pageobjects/dashboard/CreateWorkspace';
|
|
42
43
|
|
|
43
44
|
suite(
|
|
44
45
|
`Create a workspace via launching a factory from the ${FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_PROVIDER} repository and deny the access ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`,
|
|
@@ -53,6 +54,7 @@ suite(
|
|
|
53
54
|
const oauthPage: OauthPage = e2eContainer.get(CLASSES.OauthPage);
|
|
54
55
|
const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
|
|
55
56
|
const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
|
|
57
|
+
const createWorkspace: CreateWorkspace = e2eContainer.get(CLASSES.CreateWorkspace);
|
|
56
58
|
|
|
57
59
|
let projectSection: ViewSection;
|
|
58
60
|
let scmProvider: SingleScmProvider;
|
|
@@ -76,6 +78,7 @@ suite(
|
|
|
76
78
|
|
|
77
79
|
test(`Navigate to the ${isPrivateRepo} repository factory URL`, async function (): Promise<void> {
|
|
78
80
|
await browserTabsUtil.navigateTo(FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_URL());
|
|
81
|
+
await createWorkspace.performTrustAuthorPopup();
|
|
79
82
|
});
|
|
80
83
|
|
|
81
84
|
test(`Authorize with a ${FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_PROVIDER} OAuth and deny access`, async function (): Promise<void> {
|
|
@@ -103,15 +106,13 @@ suite(
|
|
|
103
106
|
if (FACTORY_TEST_CONSTANTS.TS_SELENIUM_IS_PRIVATE_FACTORY_GIT_REPO) {
|
|
104
107
|
test('Check that a project folder has not been cloned', async function (): Promise<void> {
|
|
105
108
|
testRepoProjectName = StringUtil.getProjectNameFromGitUrl(FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL);
|
|
106
|
-
await driverHelper.waitVisibility(webCheCodeLocators.
|
|
109
|
+
await driverHelper.waitVisibility(webCheCodeLocators.TitleBar.itemElement);
|
|
107
110
|
await projectAndFileTests.performTrustAuthorDialog();
|
|
108
111
|
const isProjectFolderUnable: string = await driverHelper.waitAndGetElementAttribute(
|
|
109
112
|
(webCheCodeLocators.TreeItem as any).projectFolderItem,
|
|
110
113
|
'aria-label'
|
|
111
114
|
);
|
|
112
|
-
expect(isProjectFolderUnable).to.contain(
|
|
113
|
-
'/projects/' + testRepoProjectName + ' • Unable to resolve workspace folder (Unable to resolve nonexistent file'
|
|
114
|
-
);
|
|
115
|
+
expect(isProjectFolderUnable).to.contain('No Folder Opened Section');
|
|
115
116
|
});
|
|
116
117
|
} else {
|
|
117
118
|
test('Check if a project folder has been created', async function (): Promise<void> {
|
|
@@ -247,6 +248,8 @@ suite(
|
|
|
247
248
|
});
|
|
248
249
|
|
|
249
250
|
suiteTeardown('Stop and delete the workspace by API', async function (): Promise<void> {
|
|
251
|
+
// to avoid a possible creating workspace which is not appeared on Dashboard yet. TODO: implement a better solution.
|
|
252
|
+
await driverHelper.wait(30000);
|
|
250
253
|
await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
|
|
251
254
|
});
|
|
252
255
|
|