@eclipse-che/che-e2e 7.121.0-next-e9dc673 → 7.121.0-next
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/index.ts +5 -5
- package/package.json +1 -1
- package/dist/configs/inversify.config.js +0 -121
- package/dist/configs/inversify.config.js.map +0 -1
- package/dist/configs/inversify.types.js +0 -73
- package/dist/configs/inversify.types.js.map +0 -1
- package/dist/configs/mocharc.js +0 -42
- package/dist/configs/mocharc.js.map +0 -1
- package/dist/constants/API_TEST_CONSTANTS.js +0 -60
- package/dist/constants/API_TEST_CONSTANTS.js.map +0 -1
- package/dist/constants/BASE_TEST_CONSTANTS.js +0 -109
- package/dist/constants/BASE_TEST_CONSTANTS.js.map +0 -1
- package/dist/constants/CHROME_DRIVER_CONSTANTS.js +0 -40
- package/dist/constants/CHROME_DRIVER_CONSTANTS.js.map +0 -1
- package/dist/constants/EDITOR_CONSTANTS.js +0 -114
- package/dist/constants/EDITOR_CONSTANTS.js.map +0 -1
- package/dist/constants/FACTORY_TEST_CONSTANTS.js +0 -87
- package/dist/constants/FACTORY_TEST_CONSTANTS.js.map +0 -1
- package/dist/constants/MOCHA_CONSTANTS.js +0 -24
- package/dist/constants/MOCHA_CONSTANTS.js.map +0 -1
- package/dist/constants/MONACO_CONSTANTS.js +0 -25
- package/dist/constants/MONACO_CONSTANTS.js.map +0 -1
- package/dist/constants/OAUTH_CONSTANTS.js +0 -53
- package/dist/constants/OAUTH_CONSTANTS.js.map +0 -1
- package/dist/constants/PLUGIN_TEST_CONSTANTS.js +0 -19
- package/dist/constants/PLUGIN_TEST_CONSTANTS.js.map +0 -1
- package/dist/constants/REPORTER_CONSTANTS.js +0 -123
- package/dist/constants/REPORTER_CONSTANTS.js.map +0 -1
- package/dist/constants/TIMEOUT_CONSTANTS.js +0 -101
- package/dist/constants/TIMEOUT_CONSTANTS.js.map +0 -1
- package/dist/driver/ChromeDriver.js +0 -77
- package/dist/driver/ChromeDriver.js.map +0 -1
- package/dist/driver/IDriver.js +0 -3
- package/dist/driver/IDriver.js.map +0 -1
- package/dist/index.js +0 -98
- package/dist/index.js.map +0 -1
- package/dist/pageobjects/dashboard/CreateWorkspace.js +0 -181
- package/dist/pageobjects/dashboard/CreateWorkspace.js.map +0 -1
- package/dist/pageobjects/dashboard/Dashboard.js +0 -208
- package/dist/pageobjects/dashboard/Dashboard.js.map +0 -1
- package/dist/pageobjects/dashboard/TrustAuthorPopup.js +0 -61
- package/dist/pageobjects/dashboard/TrustAuthorPopup.js.map +0 -1
- package/dist/pageobjects/dashboard/UserPreferences.js +0 -268
- package/dist/pageobjects/dashboard/UserPreferences.js.map +0 -1
- package/dist/pageobjects/dashboard/Workspaces.js +0 -242
- package/dist/pageobjects/dashboard/Workspaces.js.map +0 -1
- package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +0 -186
- package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +0 -1
- package/dist/pageobjects/git-providers/OauthPage.js +0 -218
- package/dist/pageobjects/git-providers/OauthPage.js.map +0 -1
- package/dist/pageobjects/ide/AiCodeSignInDialog.js +0 -55
- package/dist/pageobjects/ide/AiCodeSignInDialog.js.map +0 -1
- package/dist/pageobjects/ide/CheCodeLocatorLoader.js +0 -108
- package/dist/pageobjects/ide/CheCodeLocatorLoader.js.map +0 -1
- package/dist/pageobjects/ide/CommandPalette.js +0 -117
- package/dist/pageobjects/ide/CommandPalette.js.map +0 -1
- package/dist/pageobjects/ide/ExplorerView.js +0 -108
- package/dist/pageobjects/ide/ExplorerView.js.map +0 -1
- package/dist/pageobjects/ide/ExtensionsView.js +0 -162
- package/dist/pageobjects/ide/ExtensionsView.js.map +0 -1
- package/dist/pageobjects/ide/GitHubExtensionDialog.js +0 -66
- package/dist/pageobjects/ide/GitHubExtensionDialog.js.map +0 -1
- package/dist/pageobjects/ide/NotificationHandler.js +0 -83
- package/dist/pageobjects/ide/NotificationHandler.js.map +0 -1
- package/dist/pageobjects/ide/RestrictedModeButton.js +0 -57
- package/dist/pageobjects/ide/RestrictedModeButton.js.map +0 -1
- package/dist/pageobjects/ide/SourceControlView.js +0 -52
- package/dist/pageobjects/ide/SourceControlView.js.map +0 -1
- package/dist/pageobjects/ide/ViewsMoreActionsButton.js +0 -73
- package/dist/pageobjects/ide/ViewsMoreActionsButton.js.map +0 -1
- package/dist/pageobjects/login/interfaces/ICheLoginPage.js +0 -12
- package/dist/pageobjects/login/interfaces/ICheLoginPage.js.map +0 -1
- package/dist/pageobjects/login/interfaces/IOcpLoginPage.js +0 -12
- package/dist/pageobjects/login/interfaces/IOcpLoginPage.js.map +0 -1
- package/dist/pageobjects/login/kubernetes/DexLoginPage.js +0 -69
- package/dist/pageobjects/login/kubernetes/DexLoginPage.js.map +0 -1
- package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js +0 -50
- package/dist/pageobjects/login/kubernetes/KubernetesLoginPage.js.map +0 -1
- package/dist/pageobjects/login/openshift/OcpLoginPage.js +0 -88
- package/dist/pageobjects/login/openshift/OcpLoginPage.js.map +0 -1
- package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js +0 -73
- package/dist/pageobjects/login/openshift/OcpRedHatLoginPage.js.map +0 -1
- package/dist/pageobjects/login/openshift/OcpUserLoginPage.js +0 -53
- package/dist/pageobjects/login/openshift/OcpUserLoginPage.js.map +0 -1
- package/dist/pageobjects/login/openshift/RedHatLoginPage.js +0 -85
- package/dist/pageobjects/login/openshift/RedHatLoginPage.js.map +0 -1
- package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js +0 -65
- package/dist/pageobjects/login/openshift/RegularUserOcpCheLoginPage.js.map +0 -1
- package/dist/pageobjects/openshift/OcpApplicationPage.js +0 -60
- package/dist/pageobjects/openshift/OcpApplicationPage.js.map +0 -1
- package/dist/pageobjects/openshift/OcpImportFromGitPage.js +0 -92
- package/dist/pageobjects/openshift/OcpImportFromGitPage.js.map +0 -1
- package/dist/pageobjects/openshift/OcpMainPage.js +0 -140
- package/dist/pageobjects/openshift/OcpMainPage.js.map +0 -1
- package/dist/pageobjects/webterminal/WebTerminalPage.js +0 -182
- package/dist/pageobjects/webterminal/WebTerminalPage.js.map +0 -1
- package/dist/specs/MochaHooks.js +0 -142
- package/dist/specs/MochaHooks.js.map +0 -1
- package/dist/specs/SmokeTest.spec.js +0 -58
- package/dist/specs/SmokeTest.spec.js.map +0 -1
- package/dist/specs/api/AnsibleDevFileAPI.spec.js +0 -256
- package/dist/specs/api/AnsibleDevFileAPI.spec.js.map +0 -1
- package/dist/specs/api/BuildPushRunPodmanContainerAPI.spec.js +0 -147
- package/dist/specs/api/BuildPushRunPodmanContainerAPI.spec.js.map +0 -1
- package/dist/specs/api/ContainerOverridesAPI.spec.js +0 -40
- package/dist/specs/api/ContainerOverridesAPI.spec.js.map +0 -1
- package/dist/specs/api/CppDevFileAPI.spec.js +0 -87
- package/dist/specs/api/CppDevFileAPI.spec.js.map +0 -1
- package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js +0 -99
- package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js.map +0 -1
- package/dist/specs/api/DotnetDevFileAPI.spec.js +0 -89
- package/dist/specs/api/DotnetDevFileAPI.spec.js.map +0 -1
- package/dist/specs/api/EmptyWorkspaceAPI.spec.js +0 -60
- package/dist/specs/api/EmptyWorkspaceAPI.spec.js.map +0 -1
- package/dist/specs/api/GoDevFileAPI.spec.js +0 -82
- package/dist/specs/api/GoDevFileAPI.spec.js.map +0 -1
- package/dist/specs/api/InbuiltApplicationDevWorkspacesAPI.spec.js +0 -97
- package/dist/specs/api/InbuiltApplicationDevWorkspacesAPI.spec.js.map +0 -1
- package/dist/specs/api/JBossEapDevFileAPI.spec.js +0 -127
- package/dist/specs/api/JBossEapDevFileAPI.spec.js.map +0 -1
- package/dist/specs/api/LombokDevFileAPI.spec.js +0 -81
- package/dist/specs/api/LombokDevFileAPI.spec.js.map +0 -1
- package/dist/specs/api/NodeJSMongoDBDevFileAPI.spec.js +0 -81
- package/dist/specs/api/NodeJSMongoDBDevFileAPI.spec.js.map +0 -1
- package/dist/specs/api/NodeJsExpressDevFileAPI.spec.js +0 -130
- package/dist/specs/api/NodeJsExpressDevFileAPI.spec.js.map +0 -1
- package/dist/specs/api/PhpDevFileAPI.spec.js +0 -71
- package/dist/specs/api/PhpDevFileAPI.spec.js.map +0 -1
- package/dist/specs/api/PodOverridesAPI.spec.js +0 -46
- package/dist/specs/api/PodOverridesAPI.spec.js.map +0 -1
- package/dist/specs/api/PythonDevFileAPI.spec.js +0 -71
- package/dist/specs/api/PythonDevFileAPI.spec.js.map +0 -1
- package/dist/specs/api/QuarkusDevFileAPI.spec.js +0 -97
- package/dist/specs/api/QuarkusDevFileAPI.spec.js.map +0 -1
- package/dist/specs/dashboard-samples/Documentation.spec.js +0 -118
- package/dist/specs/dashboard-samples/Documentation.spec.js.map +0 -1
- package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js +0 -60
- package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js.map +0 -1
- package/dist/specs/dashboard-samples/Quarkus.spec.js +0 -64
- package/dist/specs/dashboard-samples/Quarkus.spec.js.map +0 -1
- package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js +0 -345
- package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js.map +0 -1
- package/dist/specs/dashboard-samples/StartWorkspaceUsingDesktopEditors.spec.js +0 -171
- package/dist/specs/dashboard-samples/StartWorkspaceUsingDesktopEditors.spec.js.map +0 -1
- package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js +0 -155
- package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js.map +0 -1
- package/dist/specs/factory/Factory.spec.js +0 -183
- package/dist/specs/factory/Factory.spec.js.map +0 -1
- package/dist/specs/factory/FactoryWithGitRepoOptions.spec.js +0 -63
- package/dist/specs/factory/FactoryWithGitRepoOptions.spec.js.map +0 -1
- package/dist/specs/factory/NoSetupRepoFactory.spec.js +0 -212
- package/dist/specs/factory/NoSetupRepoFactory.spec.js.map +0 -1
- package/dist/specs/factory/RefusedOAuthFactory.spec.js +0 -239
- package/dist/specs/factory/RefusedOAuthFactory.spec.js.map +0 -1
- package/dist/specs/factory/SshUrlNoOauthPatFactory.spec.js +0 -202
- package/dist/specs/factory/SshUrlNoOauthPatFactory.spec.js.map +0 -1
- package/dist/specs/miscellaneous/CreateWorkspaceWithExistedName.spec.js +0 -77
- package/dist/specs/miscellaneous/CreateWorkspaceWithExistedName.spec.js.map +0 -1
- package/dist/specs/miscellaneous/CreateWorkspaceWithExistingNameFromEmptyWorkspaceSample.spec.js +0 -106
- package/dist/specs/miscellaneous/CreateWorkspaceWithExistingNameFromEmptyWorkspaceSample.spec.js.map +0 -1
- package/dist/specs/miscellaneous/CreateWorkspaceWithExistingNameFromGitUrl.spec.js +0 -113
- package/dist/specs/miscellaneous/CreateWorkspaceWithExistingNameFromGitUrl.spec.js.map +0 -1
- package/dist/specs/miscellaneous/CreateWorkspaceWithExistingNameFromSample.spec.js +0 -116
- package/dist/specs/miscellaneous/CreateWorkspaceWithExistingNameFromSample.spec.js.map +0 -1
- package/dist/specs/miscellaneous/CustomOpenVSXRegistry.spec.js +0 -205
- package/dist/specs/miscellaneous/CustomOpenVSXRegistry.spec.js.map +0 -1
- package/dist/specs/miscellaneous/ExtensionActivationTest.spec.js +0 -129
- package/dist/specs/miscellaneous/ExtensionActivationTest.spec.js.map +0 -1
- package/dist/specs/miscellaneous/KubedockPodmanPersistUserHomeTest.spec.js +0 -121
- package/dist/specs/miscellaneous/KubedockPodmanPersistUserHomeTest.spec.js.map +0 -1
- package/dist/specs/miscellaneous/KubedockPodmanTest.spec.js +0 -103
- package/dist/specs/miscellaneous/KubedockPodmanTest.spec.js.map +0 -1
- package/dist/specs/miscellaneous/PredefinedNamespace.spec.js +0 -111
- package/dist/specs/miscellaneous/PredefinedNamespace.spec.js.map +0 -1
- package/dist/specs/miscellaneous/RenameWorkspace.spec.js +0 -116
- package/dist/specs/miscellaneous/RenameWorkspace.spec.js.map +0 -1
- package/dist/specs/miscellaneous/RevokeOauth.spec.js +0 -29
- package/dist/specs/miscellaneous/RevokeOauth.spec.js.map +0 -1
- package/dist/specs/miscellaneous/UserPreferencesTest.spec.js +0 -26
- package/dist/specs/miscellaneous/UserPreferencesTest.spec.js.map +0 -1
- package/dist/specs/miscellaneous/UserSecretsInWorkspace.spec.js +0 -78
- package/dist/specs/miscellaneous/UserSecretsInWorkspace.spec.js.map +0 -1
- package/dist/specs/miscellaneous/VsixInstallationDisableTest.spec.js +0 -196
- package/dist/specs/miscellaneous/VsixInstallationDisableTest.spec.js.map +0 -1
- package/dist/specs/miscellaneous/WorkspaceBackupRestore.spec.js +0 -208
- package/dist/specs/miscellaneous/WorkspaceBackupRestore.spec.js.map +0 -1
- package/dist/specs/miscellaneous/WorkspaceIdleTimeout.spec.js +0 -84
- package/dist/specs/miscellaneous/WorkspaceIdleTimeout.spec.js.map +0 -1
- package/dist/specs/miscellaneous/WorkspaceRunTimeout.spec.js +0 -84
- package/dist/specs/miscellaneous/WorkspaceRunTimeout.spec.js.map +0 -1
- package/dist/specs/miscellaneous/WorkspaceWithParent.spec.js +0 -101
- package/dist/specs/miscellaneous/WorkspaceWithParent.spec.js.map +0 -1
- package/dist/specs/web-terminal/WebTerminalTest.spec.js +0 -47
- package/dist/specs/web-terminal/WebTerminalTest.spec.js.map +0 -1
- package/dist/specs/web-terminal/WebTerminalUnderAdmin.spec.js +0 -82
- package/dist/specs/web-terminal/WebTerminalUnderAdmin.spec.js.map +0 -1
- package/dist/specs/web-terminal/WebTerminalUnderRegularUser.spec.js +0 -78
- package/dist/specs/web-terminal/WebTerminalUnderRegularUser.spec.js.map +0 -1
- package/dist/suites/devfile-acceptance-test-suite/DynamicallyGeneratingAPITest.suite.js +0 -13
- package/dist/suites/devfile-acceptance-test-suite/DynamicallyGeneratingAPITest.suite.js.map +0 -1
- package/dist/suites/disconnected-ocp/APITest.suite.js +0 -14
- package/dist/suites/disconnected-ocp/APITest.suite.js.map +0 -1
- package/dist/suites/disconnected-ocp/DynamicallyGeneratingAPITest.suite.js +0 -13
- package/dist/suites/disconnected-ocp/DynamicallyGeneratingAPITest.suite.js.map +0 -1
- package/dist/suites/disconnected-ocp/UITest.suite.js +0 -19
- package/dist/suites/disconnected-ocp/UITest.suite.js.map +0 -1
- package/dist/suites/online-ocp/APITest.suite.js +0 -15
- package/dist/suites/online-ocp/APITest.suite.js.map +0 -1
- package/dist/suites/online-ocp/DynamicallyGeneratingAPITest.suite.js +0 -13
- package/dist/suites/online-ocp/DynamicallyGeneratingAPITest.suite.js.map +0 -1
- package/dist/suites/online-ocp/UITest.suite.js +0 -23
- package/dist/suites/online-ocp/UITest.suite.js.map +0 -1
- package/dist/tests-library/LoginTests.js +0 -76
- package/dist/tests-library/LoginTests.js.map +0 -1
- package/dist/tests-library/ProjectAndFileTests.js +0 -230
- package/dist/tests-library/ProjectAndFileTests.js.map +0 -1
- package/dist/tests-library/WorkspaceHandlingTests.js +0 -219
- package/dist/tests-library/WorkspaceHandlingTests.js.map +0 -1
- package/dist/utils/BrowserTabsUtil.js +0 -124
- package/dist/utils/BrowserTabsUtil.js.map +0 -1
- package/dist/utils/CheReporter.js +0 -238
- package/dist/utils/CheReporter.js.map +0 -1
- package/dist/utils/DevWorkspaceConfigurationHelper.js +0 -145
- package/dist/utils/DevWorkspaceConfigurationHelper.js.map +0 -1
- package/dist/utils/DevfilesHelper.js +0 -177
- package/dist/utils/DevfilesHelper.js.map +0 -1
- package/dist/utils/DriverHelper.js +0 -609
- package/dist/utils/DriverHelper.js.map +0 -1
- package/dist/utils/IContextParams.js +0 -12
- package/dist/utils/IContextParams.js.map +0 -1
- package/dist/utils/IKubernetesCommandLineToolsExecutor.js +0 -3
- package/dist/utils/IKubernetesCommandLineToolsExecutor.js.map +0 -1
- package/dist/utils/KubernetesCommandLineToolsExecutor.js +0 -338
- package/dist/utils/KubernetesCommandLineToolsExecutor.js.map +0 -1
- package/dist/utils/Logger.js +0 -146
- package/dist/utils/Logger.js.map +0 -1
- package/dist/utils/ScreenCatcher.js +0 -114
- package/dist/utils/ScreenCatcher.js.map +0 -1
- package/dist/utils/ShellExecutor.js +0 -47
- package/dist/utils/ShellExecutor.js.map +0 -1
- package/dist/utils/StringUtil.js +0 -107
- package/dist/utils/StringUtil.js.map +0 -1
- package/dist/utils/request-handlers/CheApiRequestHandler.js +0 -128
- package/dist/utils/request-handlers/CheApiRequestHandler.js.map +0 -1
- package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js +0 -55
- package/dist/utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +0 -1
- package/dist/utils/request-handlers/headers/IAuthorizationHeaderHandler.js +0 -12
- package/dist/utils/request-handlers/headers/IAuthorizationHeaderHandler.js.map +0 -1
- package/dist/utils/workspace/ApiUrlResolver.js +0 -117
- package/dist/utils/workspace/ApiUrlResolver.js.map +0 -1
- package/dist/utils/workspace/ITestWorkspaceUtil.js +0 -12
- package/dist/utils/workspace/ITestWorkspaceUtil.js.map +0 -1
- package/dist/utils/workspace/TestWorkspaceUtil.js +0 -202
- package/dist/utils/workspace/TestWorkspaceUtil.js.map +0 -1
- package/dist/utils/workspace/WorkspaceStatus.js +0 -19
- package/dist/utils/workspace/WorkspaceStatus.js.map +0 -1
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/** *******************************************************************
|
|
4
|
-
* copyright (c) 2020-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 inversify_config_1 = require("../../configs/inversify.config");
|
|
13
|
-
const monaco_page_objects_1 = require("monaco-page-objects");
|
|
14
|
-
const inversify_types_1 = require("../../configs/inversify.types");
|
|
15
|
-
const WorkspaceHandlingTests_1 = require("../../tests-library/WorkspaceHandlingTests");
|
|
16
|
-
const Logger_1 = require("../../utils/Logger");
|
|
17
|
-
const MochaHooks_1 = require("../MochaHooks");
|
|
18
|
-
const BASE_TEST_CONSTANTS_1 = require("../../constants/BASE_TEST_CONSTANTS");
|
|
19
|
-
const stackName = 'Empty Workspace';
|
|
20
|
-
suite(`${stackName} test ${BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function () {
|
|
21
|
-
const workspaceHandlingTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceHandlingTests);
|
|
22
|
-
const projectAndFileTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ProjectAndFileTests);
|
|
23
|
-
const loginTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.LoginTests);
|
|
24
|
-
const browserTabsUtil = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.BrowserTabsUtil);
|
|
25
|
-
const testWorkspaceUtil = inversify_config_1.e2eContainer.get(inversify_types_1.TYPES.WorkspaceUtil);
|
|
26
|
-
const dashboard = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.Dashboard);
|
|
27
|
-
suiteSetup('Login', async function () {
|
|
28
|
-
await loginTests.loginIntoChe();
|
|
29
|
-
});
|
|
30
|
-
test(`Create and open new workspace, stack:${stackName}`, async function () {
|
|
31
|
-
await workspaceHandlingTests.createAndOpenWorkspace(stackName);
|
|
32
|
-
});
|
|
33
|
-
test('Obtain workspace name from workspace loader page', async function () {
|
|
34
|
-
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
35
|
-
});
|
|
36
|
-
test('Register running workspace', function () {
|
|
37
|
-
(0, MochaHooks_1.registerRunningWorkspace)(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
38
|
-
});
|
|
39
|
-
test('Wait workspace readiness', async function () {
|
|
40
|
-
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
41
|
-
const workbench = new monaco_page_objects_1.Workbench();
|
|
42
|
-
const activityBar = workbench.getActivityBar();
|
|
43
|
-
const activityBarControls = await activityBar.getViewControls();
|
|
44
|
-
Logger_1.Logger.debug('Editor sections:');
|
|
45
|
-
for (const control of activityBarControls) {
|
|
46
|
-
Logger_1.Logger.debug(`${await control.getTitle()}`);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
suiteTeardown('Open dashboard and close all other tabs', async function () {
|
|
50
|
-
await dashboard.openDashboard();
|
|
51
|
-
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
52
|
-
});
|
|
53
|
-
suiteTeardown('Stop and delete the workspace by API', async function () {
|
|
54
|
-
await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
55
|
-
});
|
|
56
|
-
suiteTeardown('Unregister running workspace', function () {
|
|
57
|
-
(0, MochaHooks_1.registerRunningWorkspace)('');
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
//# sourceMappingURL=EmptyWorkspace.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyWorkspace.spec.js","sourceRoot":"","sources":["../../../specs/dashboard-samples/EmptyWorkspace.spec.ts"],"names":[],"mappings":";;AAAA;;;;;;;;wEAQwE;AACxE,qEAA8D;AAC9D,6DAA0E;AAC1E,mEAA+D;AAC/D,uFAAoF;AACpF,+CAA4C;AAG5C,8CAAyD;AAEzD,6EAA0E;AAI1E,MAAM,SAAS,GAAW,iBAAiB,CAAC;AAE5C,KAAK,CAAC,GAAG,SAAS,SAAS,yCAAmB,CAAC,gBAAgB,EAAE,EAAE;IAClE,MAAM,sBAAsB,GAA2B,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,sBAAsB,CAAC,CAAC;IACxG,MAAM,mBAAmB,GAAwB,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,mBAAmB,CAAC,CAAC;IAC/F,MAAM,UAAU,GAAe,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,eAAe,GAAoB,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,eAAe,CAAC,CAAC;IACnF,MAAM,iBAAiB,GAAuB,+BAAY,CAAC,GAAG,CAAC,uBAAK,CAAC,aAAa,CAAC,CAAC;IACpF,MAAM,SAAS,GAAc,+BAAY,CAAC,GAAG,CAAC,yBAAO,CAAC,SAAS,CAAC,CAAC;IAEjE,UAAU,CAAC,OAAO,EAAE,KAAK;QACxB,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,wCAAwC,SAAS,EAAE,EAAE,KAAK;QAC9D,MAAM,sBAAsB,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,KAAK;QAC7D,MAAM,sBAAsB,CAAC,mCAAmC,EAAE,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4BAA4B,EAAE;QAClC,IAAA,qCAAwB,EAAC,+CAAsB,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,KAAK;QACrC,MAAM,mBAAmB,CAAC,sCAAsC,EAAE,CAAC;QAEnE,MAAM,SAAS,GAAc,IAAI,+BAAS,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAgB,SAAS,CAAC,cAAc,EAAE,CAAC;QAC5D,MAAM,mBAAmB,GAAkB,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC;QAE/E,eAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACjC,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE;YAC1C,eAAM,CAAC,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SAC5C;IACF,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,yCAAyC,EAAE,KAAK;QAC7D,MAAM,SAAS,CAAC,aAAa,EAAE,CAAC;QAChC,MAAM,eAAe,CAAC,yBAAyB,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,sCAAsC,EAAE,KAAK;QAC1D,MAAM,iBAAiB,CAAC,4BAA4B,CAAC,+CAAsB,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,8BAA8B,EAAE;QAC7C,IAAA,qCAAwB,EAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/** *******************************************************************
|
|
3
|
-
* copyright (c) 2019 Red Hat, Inc.
|
|
4
|
-
*
|
|
5
|
-
* This program and the accompanying materials are made
|
|
6
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
7
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
8
|
-
*
|
|
9
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
10
|
-
**********************************************************************/
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const MochaHooks_1 = require("../MochaHooks");
|
|
13
|
-
const inversify_config_1 = require("../../configs/inversify.config");
|
|
14
|
-
const inversify_types_1 = require("../../configs/inversify.types");
|
|
15
|
-
const WorkspaceHandlingTests_1 = require("../../tests-library/WorkspaceHandlingTests");
|
|
16
|
-
const BASE_TEST_CONSTANTS_1 = require("../../constants/BASE_TEST_CONSTANTS");
|
|
17
|
-
const chai_1 = require("chai");
|
|
18
|
-
const stackName = 'Quarkus REST API';
|
|
19
|
-
suite(`The ${stackName} userstory ${BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function () {
|
|
20
|
-
const projectAndFileTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ProjectAndFileTests);
|
|
21
|
-
const workspaceHandlingTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceHandlingTests);
|
|
22
|
-
const loginTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.LoginTests);
|
|
23
|
-
const browserTabsUtil = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.BrowserTabsUtil);
|
|
24
|
-
const testWorkspaceUtil = inversify_config_1.e2eContainer.get(inversify_types_1.TYPES.WorkspaceUtil);
|
|
25
|
-
const dashboard = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.Dashboard);
|
|
26
|
-
let projectSection;
|
|
27
|
-
const projectName = 'quarkus-quickstarts';
|
|
28
|
-
suiteSetup('Login', async function () {
|
|
29
|
-
await loginTests.loginIntoChe();
|
|
30
|
-
});
|
|
31
|
-
test(`Create and open new workspace, stack:${stackName}`, async function () {
|
|
32
|
-
await workspaceHandlingTests.createAndOpenWorkspace(stackName);
|
|
33
|
-
});
|
|
34
|
-
test('Obtain workspace name from workspace loader page', async function () {
|
|
35
|
-
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
36
|
-
});
|
|
37
|
-
test('Register running workspace', function () {
|
|
38
|
-
(0, MochaHooks_1.registerRunningWorkspace)(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
39
|
-
});
|
|
40
|
-
test('Wait workspace readiness', async function () {
|
|
41
|
-
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
42
|
-
});
|
|
43
|
-
test('Check a project folder has been created', async function () {
|
|
44
|
-
projectSection = await projectAndFileTests.getProjectViewSession();
|
|
45
|
-
(0, chai_1.expect)(await projectAndFileTests.getProjectTreeItem(projectSection, projectName), 'Project folder was not imported').not.undefined;
|
|
46
|
-
});
|
|
47
|
-
test('Accept the project as a trusted one', async function () {
|
|
48
|
-
await projectAndFileTests.performTrustDialogs();
|
|
49
|
-
});
|
|
50
|
-
test('Check the project files was imported', async function () {
|
|
51
|
-
(0, chai_1.expect)(await projectAndFileTests.getProjectTreeItem(projectSection, BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TS_SELENIUM_PROJECT_ROOT_FILE_NAME, 2), 'Project files were not imported').not.undefined;
|
|
52
|
-
});
|
|
53
|
-
suiteTeardown('Open dashboard and close all other tabs', async function () {
|
|
54
|
-
await dashboard.openDashboard();
|
|
55
|
-
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
56
|
-
});
|
|
57
|
-
suiteTeardown('Stop and delete the workspace by API', async function () {
|
|
58
|
-
await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
59
|
-
});
|
|
60
|
-
suiteTeardown('Unregister running workspace', function () {
|
|
61
|
-
(0, MochaHooks_1.registerRunningWorkspace)('');
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
//# sourceMappingURL=Quarkus.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Quarkus.spec.js","sourceRoot":"","sources":["../../../specs/dashboard-samples/Quarkus.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,345 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/** *******************************************************************
|
|
3
|
-
* copyright (c) 2019-2025 Red Hat, Inc.
|
|
4
|
-
*
|
|
5
|
-
* This program and the accompanying materials are made
|
|
6
|
-
* available under the terms of the Eclipse Public License 2.0
|
|
7
|
-
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
8
|
-
*
|
|
9
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
10
|
-
**********************************************************************/
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const monaco_page_objects_1 = require("monaco-page-objects");
|
|
13
|
-
const MochaHooks_1 = require("../MochaHooks");
|
|
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 Logger_1 = require("../../utils/Logger");
|
|
18
|
-
const chai_1 = require("chai");
|
|
19
|
-
const TIMEOUT_CONSTANTS_1 = require("../../constants/TIMEOUT_CONSTANTS");
|
|
20
|
-
const PLUGIN_TEST_CONSTANTS_1 = require("../../constants/PLUGIN_TEST_CONSTANTS");
|
|
21
|
-
const BASE_TEST_CONSTANTS_1 = require("../../constants/BASE_TEST_CONSTANTS");
|
|
22
|
-
const samples = PLUGIN_TEST_CONSTANTS_1.PLUGIN_TEST_CONSTANTS.TS_SAMPLE_LIST.split(',');
|
|
23
|
-
// get text from editor
|
|
24
|
-
async function getText() {
|
|
25
|
-
const driverHelper = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.DriverHelper);
|
|
26
|
-
Logger_1.Logger.debug('Select and copy all text in the editor');
|
|
27
|
-
await driverHelper.getDriver().actions().keyDown(monaco_page_objects_1.Key.CONTROL).sendKeys('a').keyUp(monaco_page_objects_1.Key.CONTROL).perform();
|
|
28
|
-
await driverHelper.getDriver().actions().keyDown(monaco_page_objects_1.Key.CONTROL).sendKeys('c').keyUp(monaco_page_objects_1.Key.CONTROL).perform();
|
|
29
|
-
Logger_1.Logger.debug('Read the text');
|
|
30
|
-
Logger_1.Logger.info('Create a hidden buffer');
|
|
31
|
-
await driverHelper.getDriver().executeScript(`
|
|
32
|
-
let input = document.createElement('textarea');
|
|
33
|
-
input.setAttribute('id', 'clipboard-buffer');
|
|
34
|
-
document.body.appendChild(input);
|
|
35
|
-
input.focus();
|
|
36
|
-
`);
|
|
37
|
-
Logger_1.Logger.info('Paste the text to the buffer');
|
|
38
|
-
await driverHelper.getDriver().actions().keyDown(monaco_page_objects_1.Key.CONTROL).sendKeys('v').keyUp(monaco_page_objects_1.Key.CONTROL).perform();
|
|
39
|
-
Logger_1.Logger.info('Get the text from the buffer');
|
|
40
|
-
const text = await driverHelper.getDriver().executeScript(`
|
|
41
|
-
let input = document.getElementById('clipboard-buffer');
|
|
42
|
-
let text = input.value;
|
|
43
|
-
input.remove();
|
|
44
|
-
return text;
|
|
45
|
-
`);
|
|
46
|
-
console.log('Raw text:', text);
|
|
47
|
-
return text;
|
|
48
|
-
}
|
|
49
|
-
// helper function to determine section based on category
|
|
50
|
-
function getSectionForCategory(title) {
|
|
51
|
-
const category = title.split(' ')[0].toLowerCase();
|
|
52
|
-
switch (category) {
|
|
53
|
-
case '@disabled':
|
|
54
|
-
return 'Disabled';
|
|
55
|
-
case '@enabled':
|
|
56
|
-
return 'Enabled';
|
|
57
|
-
case '@installed':
|
|
58
|
-
return 'Installed';
|
|
59
|
-
case '@outdated':
|
|
60
|
-
return 'Outdated';
|
|
61
|
-
case '@recommended':
|
|
62
|
-
return 'WORKSPACE RECOMMENDATIONS';
|
|
63
|
-
default:
|
|
64
|
-
return 'Marketplace';
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
// search for an extension by title
|
|
68
|
-
async function findItem(extSection, title) {
|
|
69
|
-
const driverHelper = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.DriverHelper);
|
|
70
|
-
Logger_1.Logger.debug(`Finding extension item with filter: "${title}"`);
|
|
71
|
-
const enclosingItem = extSection.getEnclosingElement();
|
|
72
|
-
const progress = await enclosingItem.findElement(extSection.constructor.locators.ViewContent.progress);
|
|
73
|
-
const searchField = await enclosingItem.findElement(extSection.constructor.locators.ExtensionsViewSection.searchBox);
|
|
74
|
-
Logger_1.Logger.debug('Clearing search field with Ctrl+A');
|
|
75
|
-
await driverHelper.getDriver().actions().click(searchField).keyDown(monaco_page_objects_1.Key.CONTROL).sendKeys('a').keyUp(monaco_page_objects_1.Key.CONTROL).perform();
|
|
76
|
-
await driverHelper.wait(500);
|
|
77
|
-
Logger_1.Logger.debug('Deleting selected text');
|
|
78
|
-
await driverHelper.getDriver().actions().sendKeys(monaco_page_objects_1.Key.DELETE).perform();
|
|
79
|
-
await driverHelper.wait(500);
|
|
80
|
-
Logger_1.Logger.debug(`Entering search text: "${title}"`);
|
|
81
|
-
await driverHelper.getDriver().actions().click(searchField).sendKeys(title).perform();
|
|
82
|
-
try {
|
|
83
|
-
Logger_1.Logger.debug('Waiting for progress indicator to appear');
|
|
84
|
-
await driverHelper.getDriver().wait(monaco_page_objects_1.until.elementIsVisible(progress), 3000);
|
|
85
|
-
}
|
|
86
|
-
catch (err) {
|
|
87
|
-
if (err.name !== 'TimeoutError') {
|
|
88
|
-
throw err;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
Logger_1.Logger.debug('Waiting for progress indicator to disappear');
|
|
92
|
-
await driverHelper.getDriver().wait(monaco_page_objects_1.until.elementIsNotVisible(progress));
|
|
93
|
-
const sectionTitle = getSectionForCategory(title);
|
|
94
|
-
Logger_1.Logger.debug(`Looking for section with title: "${sectionTitle}"`);
|
|
95
|
-
const sections = await enclosingItem.findElements(extSection.constructor.locators.ViewContent.section);
|
|
96
|
-
Logger_1.Logger.debug(`Found ${sections.length} sections`);
|
|
97
|
-
// debug: Log all available section titles
|
|
98
|
-
const availableSections = [];
|
|
99
|
-
for (const sec of sections) {
|
|
100
|
-
const titleElement = await sec.findElement(extSection.constructor.locators.ViewSection.title);
|
|
101
|
-
const sectionTitleText = await titleElement.getText();
|
|
102
|
-
availableSections.push(sectionTitleText);
|
|
103
|
-
}
|
|
104
|
-
Logger_1.Logger.debug(`Available sections: ${availableSections.join(', ')}`);
|
|
105
|
-
let targetSection;
|
|
106
|
-
for (const sec of sections) {
|
|
107
|
-
const titleElement = await sec.findElement(extSection.constructor.locators.ViewSection.title);
|
|
108
|
-
const sectionTitleText = await titleElement.getText();
|
|
109
|
-
if (sectionTitleText === sectionTitle) {
|
|
110
|
-
targetSection = sec;
|
|
111
|
-
Logger_1.Logger.debug(`Found target section: "${sectionTitle}"`);
|
|
112
|
-
break;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
if (!targetSection) {
|
|
116
|
-
Logger_1.Logger.debug(`Section "${sectionTitle}" not found. Available sections: ${availableSections.join(', ')}`);
|
|
117
|
-
return undefined;
|
|
118
|
-
}
|
|
119
|
-
const titleParts = title.split(' ');
|
|
120
|
-
let searchTitle = title;
|
|
121
|
-
if (titleParts[0].startsWith('@')) {
|
|
122
|
-
searchTitle = titleParts.slice(1).join(' ');
|
|
123
|
-
}
|
|
124
|
-
Logger_1.Logger.debug(`Searching for extension with title: "${searchTitle}"`);
|
|
125
|
-
const extensionRows = await targetSection.findElements(extSection.constructor.locators.ExtensionsViewSection.itemRow);
|
|
126
|
-
Logger_1.Logger.debug(`Found ${extensionRows.length} extension rows in section`);
|
|
127
|
-
for (const row of extensionRows) {
|
|
128
|
-
const extension = new monaco_page_objects_1.ExtensionsViewItem(row, extSection);
|
|
129
|
-
const extensionTitle = await extension.getTitle();
|
|
130
|
-
if (extensionTitle === searchTitle) {
|
|
131
|
-
Logger_1.Logger.debug(`Found matching extension: "${extensionTitle}"`);
|
|
132
|
-
return extension;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
Logger_1.Logger.debug(`Extension with title "${searchTitle}" not found in section "${sectionTitle}"`);
|
|
136
|
-
return undefined;
|
|
137
|
-
}
|
|
138
|
-
// get visible items from Extension view, transform this from array to sorted string and compares it with existed recommended extensions
|
|
139
|
-
async function getVisibleFilteredItemsAndCompareWithRecommended(recommendations) {
|
|
140
|
-
const extensionsView = await (await new monaco_page_objects_1.ActivityBar().getViewControl('Extensions'))?.openView();
|
|
141
|
-
const [marketplaceSection] = (await extensionsView?.getContent().getSections());
|
|
142
|
-
const sections = await extensionsView?.getContent().getSections();
|
|
143
|
-
// if we have a big recommender extension list it can be overlapped by other recommendations panel,
|
|
144
|
-
// in this case we need to collapse it for instance: it is actual for Quarkus example
|
|
145
|
-
if (sections !== undefined) {
|
|
146
|
-
for (let i = 0; i < sections.length; i++) {
|
|
147
|
-
const currentSection = sections[i];
|
|
148
|
-
const isOtherRecommendedSectionPresent = (await currentSection.getTitle()) === 'Other Recommendations';
|
|
149
|
-
const isOtherRecommendationExpanded = await sections[i].isExpanded();
|
|
150
|
-
if (isOtherRecommendedSectionPresent && isOtherRecommendationExpanded) {
|
|
151
|
-
await currentSection.collapse();
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
Logger_1.Logger.debug('marketplaceSection.getVisibleItems()');
|
|
156
|
-
// debug: Log all found recommended items
|
|
157
|
-
try {
|
|
158
|
-
const allFoundRecommendedItems = await marketplaceSection.getVisibleItems();
|
|
159
|
-
const itemTitles = await Promise.all(allFoundRecommendedItems.map(async (item) => await item.getTitle()));
|
|
160
|
-
const allFoundRecommendedAuthors = await Promise.all(allFoundRecommendedItems.map(async (item) => await item.getAuthor()));
|
|
161
|
-
Logger_1.Logger.debug(`Found ${allFoundRecommendedItems.length} recommended items: ${itemTitles.join(', ')}`);
|
|
162
|
-
Logger_1.Logger.debug(`Found authors: ${allFoundRecommendedAuthors.join(', ')}`);
|
|
163
|
-
Logger_1.Logger.debug(`Expected authors: ${recommendations.join(', ')}`);
|
|
164
|
-
const allFoundAuthorsAsSortedString = allFoundRecommendedAuthors.sort().toString();
|
|
165
|
-
const allPublisherNamesAsSortedString = recommendations.sort().toString();
|
|
166
|
-
Logger_1.Logger.debug(`Sorted found authors: ${allFoundAuthorsAsSortedString}`);
|
|
167
|
-
Logger_1.Logger.debug(`Sorted expected authors: ${allPublisherNamesAsSortedString}`);
|
|
168
|
-
const result = allFoundAuthorsAsSortedString === allPublisherNamesAsSortedString;
|
|
169
|
-
Logger_1.Logger.debug(`Authors match: ${result}`);
|
|
170
|
-
return result;
|
|
171
|
-
}
|
|
172
|
-
catch (error) {
|
|
173
|
-
Logger_1.Logger.error(`Error getting item titles: ${error}`);
|
|
174
|
-
return false;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
// get visible items from Extension view, transform this from array to sorted string and compares it with existed installed extensions
|
|
178
|
-
async function getVisibleFilteredItemsAndCompareWithInstalled(recommendations) {
|
|
179
|
-
const extensionsView = await (await new monaco_page_objects_1.ActivityBar().getViewControl('Extensions'))?.openView();
|
|
180
|
-
const [marketplaceSection] = (await extensionsView?.getContent().getSections());
|
|
181
|
-
Logger_1.Logger.debug('marketplaceSection.getVisibleItems()');
|
|
182
|
-
const allFoundRecommendedItems = await marketplaceSection.getVisibleItems();
|
|
183
|
-
const allFoundRecommendedAuthors = await Promise.all(allFoundRecommendedItems.map(async (item) => await item.getAuthor()));
|
|
184
|
-
const allFoundAuthorsAsSortedString = allFoundRecommendedAuthors.sort().toString();
|
|
185
|
-
const allPublisherNamesAsSortString = recommendations.sort().toString();
|
|
186
|
-
// in some cases we can have installed not only recommended extensions with some samples (for example .Net)
|
|
187
|
-
return allFoundAuthorsAsSortedString.includes(allPublisherNamesAsSortString);
|
|
188
|
-
}
|
|
189
|
-
for (const sample of samples) {
|
|
190
|
-
suite(`Check if recommended extensions installed for ${sample} ${BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function () {
|
|
191
|
-
const projectAndFileTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ProjectAndFileTests);
|
|
192
|
-
const workspaceHandlingTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceHandlingTests);
|
|
193
|
-
const loginTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.LoginTests);
|
|
194
|
-
const driverHelper = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.DriverHelper);
|
|
195
|
-
const browserTabsUtil = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.BrowserTabsUtil);
|
|
196
|
-
const cheCodeLocatorLoader = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.CheCodeLocatorLoader);
|
|
197
|
-
const webCheCodeLocators = cheCodeLocatorLoader.webCheCodeLocators;
|
|
198
|
-
const testWorkspaceUtil = inversify_config_1.e2eContainer.get(inversify_types_1.TYPES.WorkspaceUtil);
|
|
199
|
-
const dashboard = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.Dashboard);
|
|
200
|
-
let projectSection;
|
|
201
|
-
let extensionSection;
|
|
202
|
-
let extensionsView;
|
|
203
|
-
let publisherNames;
|
|
204
|
-
const skipSuite = false;
|
|
205
|
-
const [pathToExtensionsListFileName, extensionsListFileName] = ['.vscode', 'extensions.json'];
|
|
206
|
-
let vsCodeFolderItemLevel = 2;
|
|
207
|
-
let recommendedExtensions = {
|
|
208
|
-
recommendations: []
|
|
209
|
-
};
|
|
210
|
-
let parsedRecommendations;
|
|
211
|
-
suiteSetup('Login', async function () {
|
|
212
|
-
await loginTests.loginIntoChe();
|
|
213
|
-
});
|
|
214
|
-
setup('Skip follow-up tests if flagged', function () {
|
|
215
|
-
if (skipSuite) {
|
|
216
|
-
this.skip();
|
|
217
|
-
}
|
|
218
|
-
});
|
|
219
|
-
test(`Create and open new workspace, stack:${sample}`, async function () {
|
|
220
|
-
await workspaceHandlingTests.createAndOpenWorkspace(sample);
|
|
221
|
-
});
|
|
222
|
-
test('Obtain workspace name from workspace loader page', async function () {
|
|
223
|
-
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
224
|
-
(0, chai_1.expect)(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName(), 'Workspace name was not fetched from the loading page').not.undefined;
|
|
225
|
-
});
|
|
226
|
-
test('Registering the running workspace', function () {
|
|
227
|
-
(0, MochaHooks_1.registerRunningWorkspace)(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
228
|
-
});
|
|
229
|
-
test('Wait workspace readiness', async function () {
|
|
230
|
-
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
231
|
-
});
|
|
232
|
-
test('Accept the project as a trusted one', async function () {
|
|
233
|
-
await projectAndFileTests.performTrustDialogs();
|
|
234
|
-
});
|
|
235
|
-
test('Check the project files were imported', async function () {
|
|
236
|
-
// add TS_IDE_LOAD_TIMEOUT timeout for waiting for finishing animation of all IDE parts (Welcome parts. bottom widgets. etc.)
|
|
237
|
-
// using TS_IDE_LOAD_TIMEOUT easier than performing of finishing animation all elements
|
|
238
|
-
await driverHelper.wait(TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_IDE_LOAD_TIMEOUT);
|
|
239
|
-
projectSection = await projectAndFileTests.getProjectViewSession();
|
|
240
|
-
try {
|
|
241
|
-
// try using project level 2, as in samples from https://github.com/devspaces-samples/
|
|
242
|
-
(0, chai_1.expect)(await projectAndFileTests.getProjectTreeItem(projectSection, pathToExtensionsListFileName, vsCodeFolderItemLevel), 'Files not imported').not.undefined;
|
|
243
|
-
}
|
|
244
|
-
catch (err) {
|
|
245
|
-
Logger_1.Logger.debug('Try using project level 1, as in samples with a defined metadata.projectType in the devfile.yaml, such as JBoss EAP.');
|
|
246
|
-
vsCodeFolderItemLevel = vsCodeFolderItemLevel - 1;
|
|
247
|
-
(0, chai_1.expect)(await projectAndFileTests.getProjectTreeItem(projectSection, pathToExtensionsListFileName, vsCodeFolderItemLevel), 'Files not imported').not.undefined;
|
|
248
|
-
}
|
|
249
|
-
});
|
|
250
|
-
test(`Get recommended extensions list from ${extensionsListFileName}`, async function () {
|
|
251
|
-
await (await projectAndFileTests.getProjectTreeItem(projectSection, pathToExtensionsListFileName, vsCodeFolderItemLevel))?.select();
|
|
252
|
-
await (await projectAndFileTests.getProjectTreeItem(projectSection, extensionsListFileName, vsCodeFolderItemLevel + 1))?.select();
|
|
253
|
-
Logger_1.Logger.debug(`EditorView().openEditor(${extensionsListFileName})`);
|
|
254
|
-
await new monaco_page_objects_1.EditorView().openEditor(extensionsListFileName);
|
|
255
|
-
await driverHelper.waitVisibility(webCheCodeLocators.Editor.inputArea);
|
|
256
|
-
Logger_1.Logger.debug('Select and copy all text in the editor');
|
|
257
|
-
const text = await getText();
|
|
258
|
-
recommendedExtensions = JSON.parse(text.replace(/\/\*[\s\S]*?\*\/|(?<=[^:])\/\/.*|^\/\/.*/g, '').trim());
|
|
259
|
-
Logger_1.Logger.debug('recommendedExtensions.recommendations: Get recommendations clear names using map().');
|
|
260
|
-
parsedRecommendations = recommendedExtensions.recommendations.map((rec) => {
|
|
261
|
-
const [publisher, name] = rec.split('.');
|
|
262
|
-
return { publisher, name };
|
|
263
|
-
});
|
|
264
|
-
Logger_1.Logger.debug(`Recommended extension for this workspace:\n${JSON.stringify(parsedRecommendations)}.`);
|
|
265
|
-
publisherNames = parsedRecommendations.map((rec) => rec.publisher);
|
|
266
|
-
(0, chai_1.expect)(parsedRecommendations, 'Recommendations not found').not.empty;
|
|
267
|
-
});
|
|
268
|
-
test('Open "Extensions" view section', async function () {
|
|
269
|
-
Logger_1.Logger.debug('ActivityBar().getViewControl("Extensions"))?.openView(): open Extensions view.');
|
|
270
|
-
extensionsView = await (await new monaco_page_objects_1.ActivityBar().getViewControl('Extensions'))?.openView();
|
|
271
|
-
(0, chai_1.expect)(extensionsView, 'Can`t find Extension section').not.undefined;
|
|
272
|
-
});
|
|
273
|
-
test('Let extensions complete installation', async function () {
|
|
274
|
-
this.test?.retries(0);
|
|
275
|
-
Logger_1.Logger.debug(`Time for extensions installation TimeoutConstants.TS_COMMON_PLUGIN_TEST_TIMEOUT=${TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_COMMON_PLUGIN_TEST_TIMEOUT}`);
|
|
276
|
-
await driverHelper.wait(TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_COMMON_PLUGIN_TEST_TIMEOUT);
|
|
277
|
-
});
|
|
278
|
-
test('Check if extensions are installed and enabled', async function () {
|
|
279
|
-
// timeout 15 seconds per extensions
|
|
280
|
-
this.timeout(TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_FIND_EXTENSION_TEST_TIMEOUT * parsedRecommendations.length);
|
|
281
|
-
Logger_1.Logger.debug('ActivityBar().getViewControl("Extensions"))?.openView(): open Extensions view.');
|
|
282
|
-
extensionsView = await (await new monaco_page_objects_1.ActivityBar().getViewControl('Extensions'))?.openView();
|
|
283
|
-
Logger_1.Logger.debug('extensionsView?.getContent().getSections(): get current section.');
|
|
284
|
-
[extensionSection] = (await extensionsView?.getContent().getSections());
|
|
285
|
-
(0, chai_1.expect)(extensionSection, 'Can`t find Extension section').not.undefined;
|
|
286
|
-
await driverHelper.waitVisibility(webCheCodeLocators.ExtensionsViewSection.itemTitle, TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_EDITOR_TAB_INTERACTION_TIMEOUT);
|
|
287
|
-
Logger_1.Logger.debug('extensionSection.findItem by @recommended filter');
|
|
288
|
-
try {
|
|
289
|
-
await findItem(extensionSection, '@recommended');
|
|
290
|
-
}
|
|
291
|
-
catch (err) {
|
|
292
|
-
await driverHelper.wait(TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_EXPAND_PROJECT_TREE_ITEM_TIMEOUT);
|
|
293
|
-
await findItem(extensionSection, '@recommended');
|
|
294
|
-
}
|
|
295
|
-
const isReloadRequired = await driverHelper.isVisible(webCheCodeLocators.ExtensionsViewSection.requireReloadButton);
|
|
296
|
-
Logger_1.Logger.debug(`Is extensions require reload the editor: ${isReloadRequired}`);
|
|
297
|
-
if (isReloadRequired) {
|
|
298
|
-
Logger_1.Logger.debug('Refreshing the page..');
|
|
299
|
-
await browserTabsUtil.refreshPage();
|
|
300
|
-
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
301
|
-
await driverHelper.waitVisibility(webCheCodeLocators.ActivityBar.viewContainer, TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_EDITOR_TAB_INTERACTION_TIMEOUT);
|
|
302
|
-
Logger_1.Logger.debug('ActivityBar().getViewControl("Extensions"))?.openView(): reopen Extensions view.');
|
|
303
|
-
extensionsView = await (await new monaco_page_objects_1.ActivityBar().getViewControl('Extensions'))?.openView();
|
|
304
|
-
await driverHelper.waitVisibility(webCheCodeLocators.ExtensionsViewSection.itemTitle, TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_EDITOR_TAB_INTERACTION_TIMEOUT);
|
|
305
|
-
(0, chai_1.expect)(extensionsView, 'Can`t find Extension View section').not.undefined;
|
|
306
|
-
[extensionSection] = (await extensionsView?.getContent().getSections());
|
|
307
|
-
(0, chai_1.expect)(extensionSection, 'Can`t find Extension section').not.undefined;
|
|
308
|
-
await findItem(extensionSection, '@recommended ');
|
|
309
|
-
}
|
|
310
|
-
Logger_1.Logger.debug('extensionSection.findItem by @recommended filter');
|
|
311
|
-
try {
|
|
312
|
-
Logger_1.Logger.debug(`Expected publisher names: ${publisherNames.join(', ')}`);
|
|
313
|
-
const comparisonResult = await getVisibleFilteredItemsAndCompareWithRecommended(publisherNames);
|
|
314
|
-
Logger_1.Logger.debug(`Comparison result: ${comparisonResult}`);
|
|
315
|
-
(0, chai_1.expect)(comparisonResult).to.be.true;
|
|
316
|
-
Logger_1.Logger.debug(`All recommended extensions were found by @recommended filter: ---- ${publisherNames} ----`);
|
|
317
|
-
}
|
|
318
|
-
catch (error) {
|
|
319
|
-
Logger_1.Logger.error(`Error in getVisibleFilteredItemsAndCompareWithRecommended: ${error}`);
|
|
320
|
-
throw error;
|
|
321
|
-
}
|
|
322
|
-
Logger_1.Logger.debug('extensionSection.findItem by @installed filter');
|
|
323
|
-
try {
|
|
324
|
-
await findItem(extensionSection, '@installed ');
|
|
325
|
-
}
|
|
326
|
-
catch (err) {
|
|
327
|
-
await driverHelper.wait(TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_EXPAND_PROJECT_TREE_ITEM_TIMEOUT);
|
|
328
|
-
await findItem(extensionSection, '@installed ');
|
|
329
|
-
}
|
|
330
|
-
(0, chai_1.expect)(await getVisibleFilteredItemsAndCompareWithInstalled(publisherNames)).to.be.true;
|
|
331
|
-
Logger_1.Logger.debug(`All recommended extensions were found by @installed filter: ---- ${publisherNames} ----`);
|
|
332
|
-
});
|
|
333
|
-
suiteTeardown('Open dashboard and close all other tabs', async function () {
|
|
334
|
-
await dashboard.openDashboard();
|
|
335
|
-
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
336
|
-
});
|
|
337
|
-
suiteTeardown('Stop and delete the workspace by API', async function () {
|
|
338
|
-
await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
339
|
-
});
|
|
340
|
-
suiteTeardown('Unregister running workspace', function () {
|
|
341
|
-
(0, MochaHooks_1.registerRunningWorkspace)('');
|
|
342
|
-
});
|
|
343
|
-
});
|
|
344
|
-
}
|
|
345
|
-
//# sourceMappingURL=RecommendedExtensions.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendedExtensions.spec.js","sourceRoot":"","sources":["../../../specs/dashboard-samples/RecommendedExtensions.spec.ts"],"names":[],"mappings":"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"}
|