@eclipse-che/che-e2e 7.76.0-next-3240700 → 7.76.0-next-220e13e

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.
Files changed (81) hide show
  1. package/configs/sh-scripts/runFunctionalTests.sh +3 -0
  2. package/constants/BASE_TEST_CONSTANTS.ts +6 -0
  3. package/constants/FACTORY_TEST_CONSTANTS.ts +3 -1
  4. package/dist/constants/BASE_TEST_CONSTANTS.js +4 -0
  5. package/dist/constants/BASE_TEST_CONSTANTS.js.map +1 -1
  6. package/dist/constants/FACTORY_TEST_CONSTANTS.js +3 -1
  7. package/dist/constants/FACTORY_TEST_CONSTANTS.js.map +1 -1
  8. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +1 -1
  9. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +1 -1
  10. package/dist/pageobjects/git-providers/OauthPage.js +22 -3
  11. package/dist/pageobjects/git-providers/OauthPage.js.map +1 -1
  12. package/dist/pageobjects/ide/CheCodeLocatorLoader.js +4 -1
  13. package/dist/pageobjects/ide/CheCodeLocatorLoader.js.map +1 -1
  14. package/dist/specs/MochaHooks.js +23 -5
  15. package/dist/specs/MochaHooks.js.map +1 -1
  16. package/dist/specs/SmokeTest.spec.js +8 -4
  17. package/dist/specs/SmokeTest.spec.js.map +1 -1
  18. package/dist/specs/dashboard-samples/Documentation.spec.js +7 -2
  19. package/dist/specs/dashboard-samples/Documentation.spec.js.map +1 -1
  20. package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js +12 -6
  21. package/dist/specs/dashboard-samples/EmptyWorkspace.spec.js.map +1 -1
  22. package/dist/specs/dashboard-samples/Quarkus.spec.js +12 -6
  23. package/dist/specs/dashboard-samples/Quarkus.spec.js.map +1 -1
  24. package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js +12 -6
  25. package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js.map +1 -1
  26. package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js +18 -5
  27. package/dist/specs/devconsole-intergration/DevConsoleIntegration.spec.js.map +1 -1
  28. package/dist/specs/factory/Factory.spec.js +12 -6
  29. package/dist/specs/factory/Factory.spec.js.map +1 -1
  30. package/dist/specs/factory/NoSetupRepoFactory.spec.js +12 -8
  31. package/dist/specs/factory/NoSetupRepoFactory.spec.js.map +1 -1
  32. package/dist/specs/factory/RefusedOAuthFactory.spec.js +33 -31
  33. package/dist/specs/factory/RefusedOAuthFactory.spec.js.map +1 -1
  34. package/dist/specs/miscellaneous/CreateWorkspaceWithExistedName.spec.js +12 -7
  35. package/dist/specs/miscellaneous/CreateWorkspaceWithExistedName.spec.js.map +1 -1
  36. package/dist/specs/miscellaneous/KubedockPodmanTest.spec.js +12 -6
  37. package/dist/specs/miscellaneous/KubedockPodmanTest.spec.js.map +1 -1
  38. package/dist/specs/miscellaneous/PredefinedNamespace.spec.js +45 -12
  39. package/dist/specs/miscellaneous/PredefinedNamespace.spec.js.map +1 -1
  40. package/dist/specs/miscellaneous/WorkspaceIdleTimeout.spec.js +15 -5
  41. package/dist/specs/miscellaneous/WorkspaceIdleTimeout.spec.js.map +1 -1
  42. package/dist/specs/miscellaneous/WorkspaceWithParent.spec.js +9 -4
  43. package/dist/specs/miscellaneous/WorkspaceWithParent.spec.js.map +1 -1
  44. package/dist/suites/disconnected-ocp/UITest.suite.js +1 -1
  45. package/dist/suites/online-ocp/UITest.suite.js +1 -1
  46. package/dist/tests-library/LoginTests.js +14 -10
  47. package/dist/tests-library/LoginTests.js.map +1 -1
  48. package/dist/tests-library/ProjectAndFileTests.js +0 -2
  49. package/dist/tests-library/ProjectAndFileTests.js.map +1 -1
  50. package/dist/tests-library/WorkspaceHandlingTests.js +2 -5
  51. package/dist/tests-library/WorkspaceHandlingTests.js.map +1 -1
  52. package/dist/utils/BrowserTabsUtil.js +8 -1
  53. package/dist/utils/BrowserTabsUtil.js.map +1 -1
  54. package/dist/utils/Logger.js +1 -1
  55. package/package.json +1 -1
  56. package/pageobjects/dashboard/workspace-details/WorkspaceDetails.ts +1 -1
  57. package/pageobjects/git-providers/OauthPage.ts +24 -3
  58. package/pageobjects/ide/CheCodeLocatorLoader.ts +4 -1
  59. package/specs/MochaHooks.ts +26 -5
  60. package/specs/SmokeTest.spec.ts +8 -4
  61. package/specs/dashboard-samples/Documentation.spec.ts +8 -3
  62. package/specs/dashboard-samples/EmptyWorkspace.spec.ts +15 -8
  63. package/specs/dashboard-samples/Quarkus.spec.ts +15 -7
  64. package/specs/dashboard-samples/RecommendedExtensions.spec.ts +15 -7
  65. package/specs/devconsole-intergration/DevConsoleIntegration.spec.ts +20 -8
  66. package/specs/factory/Factory.spec.ts +15 -7
  67. package/specs/factory/NoSetupRepoFactory.spec.ts +15 -11
  68. package/specs/factory/RefusedOAuthFactory.spec.ts +42 -35
  69. package/specs/miscellaneous/CreateWorkspaceWithExistedName.spec.ts +15 -8
  70. package/specs/miscellaneous/KubedockPodmanTest.spec.ts +16 -7
  71. package/specs/miscellaneous/PredefinedNamespace.spec.ts +51 -14
  72. package/specs/miscellaneous/WorkspaceIdleTimeout.spec.ts +19 -6
  73. package/specs/miscellaneous/WorkspaceWithParent.spec.ts +9 -4
  74. package/suites/disconnected-ocp/UITest.suite.ts +1 -1
  75. package/suites/online-ocp/UITest.suite.ts +1 -1
  76. package/tests-library/LoginTests.ts +17 -10
  77. package/tests-library/ProjectAndFileTests.ts +0 -6
  78. package/tests-library/WorkspaceHandlingTests.ts +2 -6
  79. package/utils/BrowserTabsUtil.ts +8 -1
  80. package/utils/Logger.ts +1 -1
  81. package/utils/workspace/ITestWorkspaceUtil.ts +7 -7
@@ -12,12 +12,14 @@ import { ViewSection } from 'monaco-page-objects';
12
12
  import { registerRunningWorkspace } from '../MochaHooks';
13
13
  import { LoginTests } from '../../tests-library/LoginTests';
14
14
  import { e2eContainer } from '../../configs/inversify.config';
15
- import { CLASSES } from '../../configs/inversify.types';
15
+ import { CLASSES, TYPES } from '../../configs/inversify.types';
16
16
  import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
17
17
  import { ProjectAndFileTests } from '../../tests-library/ProjectAndFileTests';
18
18
  import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
19
19
  import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
20
20
  import { expect } from 'chai';
21
+ import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
22
+ import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
21
23
 
22
24
  const stackName: string = 'Java 11 with Quarkus';
23
25
 
@@ -26,11 +28,15 @@ suite(`The ${stackName} userstory ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, func
26
28
  const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
27
29
  const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
28
30
  const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
31
+ const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
32
+ const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
29
33
 
30
34
  let projectSection: ViewSection;
31
35
  const projectName: string = 'quarkus-quickstarts';
32
36
 
33
- loginTests.loginIntoChe();
37
+ suiteSetup('Login', async function (): Promise<void> {
38
+ await loginTests.loginIntoChe();
39
+ });
34
40
 
35
41
  test(`Create and open new workspace, stack:${stackName}`, async function (): Promise<void> {
36
42
  await workspaceHandlingTests.createAndOpenWorkspace(stackName);
@@ -64,14 +70,16 @@ suite(`The ${stackName} userstory ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, func
64
70
  ).not.undefined;
65
71
  });
66
72
 
67
- test('Stop the workspace', async function (): Promise<void> {
68
- await workspaceHandlingTests.stopWorkspace(WorkspaceHandlingTests.getWorkspaceName());
73
+ suiteTeardown('Open dashboard and close all other tabs', async function (): Promise<void> {
74
+ await dashboard.openDashboard();
69
75
  await browserTabsUtil.closeAllTabsExceptCurrent();
70
76
  });
71
77
 
72
- test('Delete the workspace', async function (): Promise<void> {
73
- await workspaceHandlingTests.removeWorkspace(WorkspaceHandlingTests.getWorkspaceName());
78
+ suiteTeardown('Stop and delete the workspace by API', async function (): Promise<void> {
79
+ await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
74
80
  });
75
81
 
76
- loginTests.logoutFromChe();
82
+ suiteTeardown('Unregister running workspace', function (): void {
83
+ registerRunningWorkspace('');
84
+ });
77
85
  });
@@ -23,7 +23,7 @@ import {
23
23
  import { registerRunningWorkspace } from '../MochaHooks';
24
24
  import { LoginTests } from '../../tests-library/LoginTests';
25
25
  import { e2eContainer } from '../../configs/inversify.config';
26
- import { CLASSES } from '../../configs/inversify.types';
26
+ import { CLASSES, TYPES } from '../../configs/inversify.types';
27
27
  import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
28
28
  import { ProjectAndFileTests } from '../../tests-library/ProjectAndFileTests';
29
29
  import { Logger } from '../../utils/Logger';
@@ -34,6 +34,8 @@ import { TIMEOUT_CONSTANTS } from '../../constants/TIMEOUT_CONSTANTS';
34
34
  import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
35
35
  import { PLUGIN_TEST_CONSTANTS } from '../../constants/PLUGIN_TEST_CONSTANTS';
36
36
  import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
37
+ import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
38
+ import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
37
39
 
38
40
  const samples: string[] = PLUGIN_TEST_CONSTANTS.TS_SAMPLE_LIST.split(',');
39
41
 
@@ -46,6 +48,8 @@ for (const sample of samples) {
46
48
  const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
47
49
  const cheCodeLocatorLoader: CheCodeLocatorLoader = e2eContainer.get(CLASSES.CheCodeLocatorLoader);
48
50
  const webCheCodeLocators: Locators = cheCodeLocatorLoader.webCheCodeLocators;
51
+ const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
52
+ const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
49
53
 
50
54
  let projectSection: ViewSection;
51
55
  let extensionSection: ExtensionsViewSection;
@@ -56,7 +60,9 @@ for (const sample of samples) {
56
60
  recommendations: []
57
61
  };
58
62
 
59
- loginTests.loginIntoChe();
63
+ suiteSetup('Login', async function (): Promise<void> {
64
+ await loginTests.loginIntoChe();
65
+ });
60
66
 
61
67
  test(`Create and open new workspace, stack:${sample}`, async function (): Promise<void> {
62
68
  await workspaceHandlingTests.createAndOpenWorkspace(sample);
@@ -202,15 +208,17 @@ for (const sample of samples) {
202
208
  }
203
209
  });
204
210
 
205
- test('Stop the workspace', async function (): Promise<void> {
206
- await workspaceHandlingTests.stopWorkspace(WorkspaceHandlingTests.getWorkspaceName());
211
+ suiteTeardown('Open dashboard and close all other tabs', async function (): Promise<void> {
212
+ await dashboard.openDashboard();
207
213
  await browserTabsUtil.closeAllTabsExceptCurrent();
208
214
  });
209
215
 
210
- test('Delete the workspace', async function (): Promise<void> {
211
- await workspaceHandlingTests.removeWorkspace(WorkspaceHandlingTests.getWorkspaceName());
216
+ suiteTeardown('Stop and delete the workspace by API', async function (): Promise<void> {
217
+ await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
212
218
  });
213
219
 
214
- loginTests.logoutFromChe();
220
+ suiteTeardown('Unregister running workspace', function (): void {
221
+ registerRunningWorkspace('');
222
+ });
215
223
  });
216
224
  }
@@ -12,7 +12,7 @@ import { ViewSection } from 'monaco-page-objects';
12
12
  import { registerRunningWorkspace } from '../MochaHooks';
13
13
  import { LoginTests } from '../../tests-library/LoginTests';
14
14
  import { e2eContainer } from '../../configs/inversify.config';
15
- import { CLASSES, TYPES } from '../../configs/inversify.types';
15
+ import { CLASSES } from '../../configs/inversify.types';
16
16
  import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
17
17
  import { ProjectAndFileTests } from '../../tests-library/ProjectAndFileTests';
18
18
  import { expect } from 'chai';
@@ -22,19 +22,20 @@ import { KubernetesCommandLineToolsExecutor } from '../../utils/KubernetesComman
22
22
  import { StringUtil } from '../../utils/StringUtil';
23
23
  import { OcpApplicationPage } from '../../pageobjects/openshift/OcpApplicationPage';
24
24
  import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
25
- import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
26
25
  import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
26
+ import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
27
+ import { TIMEOUT_CONSTANTS } from '../../constants/TIMEOUT_CONSTANTS';
27
28
 
28
29
  suite(`DevConsole Integration ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function (): void {
29
30
  let ocpImportPage: OcpImportFromGitPage;
30
31
  let ocpApplicationPage: OcpApplicationPage;
31
32
 
32
33
  const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
34
+ const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
33
35
  const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
34
36
  const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
35
37
  const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
36
38
  const ocpMainPage: OcpMainPage = e2eContainer.get(CLASSES.OcpMainPage);
37
- const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
38
39
  const kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor = e2eContainer.get(
39
40
  CLASSES.KubernetesCommandLineToolsExecutor
40
41
  );
@@ -72,7 +73,13 @@ suite(`DevConsole Integration ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function
72
73
  await ocpApplicationPage.waitAndOpenEditSourceCodeIcon();
73
74
  });
74
75
 
75
- loginTests.loginIntoChe();
76
+ test('Login', async function (): Promise<void> {
77
+ try {
78
+ await dashboard.waitLoader(TIMEOUT_CONSTANTS.TS_WAIT_LOADER_PRESENCE_TIMEOUT);
79
+ } catch (e) {
80
+ await loginTests.loginIntoChe();
81
+ }
82
+ });
76
83
 
77
84
  test('Obtain workspace name from workspace loader page', async function (): Promise<void> {
78
85
  await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
@@ -99,14 +106,19 @@ suite(`DevConsole Integration ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function
99
106
  ).not.undefined;
100
107
  });
101
108
 
102
- test('Stop and delete the workspace by API', async function (): Promise<void> {
109
+ suiteTeardown('Open dashboard and close all other tabs', async function (): Promise<void> {
110
+ await dashboard.openDashboard();
103
111
  await browserTabsUtil.closeAllTabsExceptCurrent();
104
- testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
105
112
  });
106
113
 
107
- loginTests.logoutFromChe();
108
-
109
114
  suiteTeardown('Delete project using ocp', function (): void {
115
+ kubernetesCommandLineToolsExecutor.workspaceName =
116
+ WorkspaceHandlingTests.getWorkspaceName() !== '' ? WorkspaceHandlingTests.getWorkspaceName() : 'spring-music';
117
+ kubernetesCommandLineToolsExecutor.deleteDevWorkspace();
110
118
  kubernetesCommandLineToolsExecutor.deleteProject(projectName);
111
119
  });
120
+
121
+ suiteTeardown('Unregister running workspace', function (): void {
122
+ registerRunningWorkspace('');
123
+ });
112
124
  });
@@ -29,7 +29,7 @@ import { CheCodeLocatorLoader } from '../../pageobjects/ide/CheCodeLocatorLoader
29
29
  import { registerRunningWorkspace } from '../MochaHooks';
30
30
  import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
31
31
  import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
32
- import { CLASSES } from '../../configs/inversify.types';
32
+ import { CLASSES, TYPES } from '../../configs/inversify.types';
33
33
  import { DriverHelper } from '../../utils/DriverHelper';
34
34
  import { ProjectAndFileTests } from '../../tests-library/ProjectAndFileTests';
35
35
  import { Logger } from '../../utils/Logger';
@@ -37,6 +37,8 @@ import { LoginTests } from '../../tests-library/LoginTests';
37
37
  import { OAUTH_CONSTANTS } from '../../constants/OAUTH_CONSTANTS';
38
38
  import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
39
39
  import { FACTORY_TEST_CONSTANTS } from '../../constants/FACTORY_TEST_CONSTANTS';
40
+ import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
41
+ import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
40
42
 
41
43
  suite(
42
44
  `Create a workspace via launching a factory from the ${FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_PROVIDER} repository ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`,
@@ -49,6 +51,8 @@ suite(
49
51
  const cheCodeLocatorLoader: CheCodeLocatorLoader = e2eContainer.get(CLASSES.CheCodeLocatorLoader);
50
52
  const webCheCodeLocators: Locators = cheCodeLocatorLoader.webCheCodeLocators;
51
53
  const oauthPage: OauthPage = e2eContainer.get(CLASSES.OauthPage);
54
+ const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
55
+ const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
52
56
 
53
57
  let projectSection: ViewSection;
54
58
  let scmProvider: SingleScmProvider;
@@ -64,7 +68,9 @@ suite(
64
68
  const pushItemLabel: string = 'Push';
65
69
  let testRepoProjectName: string;
66
70
 
67
- loginTests.loginIntoChe();
71
+ suiteSetup('Login', async function (): Promise<void> {
72
+ await loginTests.loginIntoChe();
73
+ });
68
74
  test('Navigate to the factory URL', async function (): Promise<void> {
69
75
  await browserTabsUtil.navigateTo(FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_URL());
70
76
  });
@@ -189,15 +195,17 @@ suite(
189
195
  expect(isCommitButtonDisabled).to.equal('true');
190
196
  });
191
197
 
192
- test('Stop the workspace', async function (): Promise<void> {
193
- await workspaceHandlingTests.stopWorkspace(WorkspaceHandlingTests.getWorkspaceName());
198
+ suiteTeardown('Open dashboard and close all other tabs', async function (): Promise<void> {
199
+ await dashboard.openDashboard();
194
200
  await browserTabsUtil.closeAllTabsExceptCurrent();
195
201
  });
196
202
 
197
- test('Delete the workspace', async function (): Promise<void> {
198
- await workspaceHandlingTests.removeWorkspace(WorkspaceHandlingTests.getWorkspaceName());
203
+ suiteTeardown('Stop and delete the workspace by API', async function (): Promise<void> {
204
+ await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
199
205
  });
200
206
 
201
- loginTests.logoutFromChe();
207
+ suiteTeardown('Unregister running workspace', function (): void {
208
+ registerRunningWorkspace('');
209
+ });
202
210
  }
203
211
  );
@@ -28,7 +28,7 @@ import { StringUtil } from '../../utils/StringUtil';
28
28
  import { CheCodeLocatorLoader } from '../../pageobjects/ide/CheCodeLocatorLoader';
29
29
  import { registerRunningWorkspace } from '../MochaHooks';
30
30
  import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
31
- import { CLASSES } from '../../configs/inversify.types';
31
+ import { CLASSES, TYPES } from '../../configs/inversify.types';
32
32
  import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
33
33
  import { ProjectAndFileTests } from '../../tests-library/ProjectAndFileTests';
34
34
  import { DriverHelper } from '../../utils/DriverHelper';
@@ -39,6 +39,7 @@ import { LoginTests } from '../../tests-library/LoginTests';
39
39
  import { FACTORY_TEST_CONSTANTS, GitProviderType } from '../../constants/FACTORY_TEST_CONSTANTS';
40
40
  import { OAUTH_CONSTANTS } from '../../constants/OAUTH_CONSTANTS';
41
41
  import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
42
+ import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
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 without PAT/OAuth setup ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`,
@@ -52,6 +53,7 @@ suite(
52
53
  const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
53
54
  const workspaces: Workspaces = e2eContainer.get(CLASSES.Workspaces);
54
55
  const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
56
+ const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
55
57
 
56
58
  let projectSection: ViewSection;
57
59
  let scmProvider: SingleScmProvider;
@@ -69,7 +71,9 @@ suite(
69
71
  let testRepoProjectName: string;
70
72
  const isPrivateRepo: string = FACTORY_TEST_CONSTANTS.TS_SELENIUM_IS_PRIVATE_FACTORY_GIT_REPO ? 'private' : 'public';
71
73
 
72
- loginTests.loginIntoChe();
74
+ suiteSetup('Login', async function (): Promise<void> {
75
+ await loginTests.loginIntoChe();
76
+ });
73
77
 
74
78
  test('Get number of previously created workspaces', async function (): Promise<void> {
75
79
  await dashboard.clickWorkspacesButton();
@@ -82,7 +86,7 @@ suite(
82
86
  });
83
87
 
84
88
  if (FACTORY_TEST_CONSTANTS.TS_SELENIUM_IS_PRIVATE_FACTORY_GIT_REPO) {
85
- test(`Check that workspace cannot be created without OAuth for ${isPrivateRepo} repo`, async function (): Promise<void> {
89
+ test(`Check that workspace cannot be created without PAT/OAuth for ${isPrivateRepo} repo`, async function (): Promise<void> {
86
90
  await dashboard.waitLoader();
87
91
  const loaderAlert: string = await dashboard.getLoaderAlert();
88
92
  expect(loaderAlert).to.contain('Cause: Could not reach devfile at');
@@ -95,8 +99,6 @@ suite(
95
99
  const allCreatedWorkspacesNames: string[] = await workspaces.getAllCreatedWorkspacesNames();
96
100
  expect(allCreatedWorkspacesNames).has.length(numberOfCreatedWorkspaces);
97
101
  });
98
-
99
- loginTests.logoutFromChe();
100
102
  } else {
101
103
  test('Obtain workspace name from workspace loader page', async function (): Promise<void> {
102
104
  await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
@@ -241,16 +243,18 @@ suite(
241
243
  expect(isCommitButtonDisabled).to.be.true;
242
244
  });
243
245
 
244
- test('Stop the workspace', async function (): Promise<void> {
245
- await workspaceHandlingTests.stopWorkspace(WorkspaceHandlingTests.getWorkspaceName());
246
+ suiteTeardown('Open dashboard and close all other tabs', async function (): Promise<void> {
247
+ await dashboard.openDashboard();
246
248
  await browserTabsUtil.closeAllTabsExceptCurrent();
247
249
  });
248
250
 
249
- test('Delete the workspace', async function (): Promise<void> {
250
- await workspaceHandlingTests.removeWorkspace(WorkspaceHandlingTests.getWorkspaceName());
251
+ suiteTeardown('Stop and delete the workspace by API', async function (): Promise<void> {
252
+ await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
251
253
  });
252
-
253
- loginTests.logoutFromChe();
254
254
  }
255
+
256
+ suiteTeardown('Unregister running workspace', function (): void {
257
+ registerRunningWorkspace('');
258
+ });
255
259
  }
256
260
  );
@@ -16,7 +16,6 @@ import {
16
16
  EditorView,
17
17
  InputBox,
18
18
  Locators,
19
- ModalDialog,
20
19
  NewScmView,
21
20
  SingleScmProvider,
22
21
  TextEditor,
@@ -26,7 +25,7 @@ import {
26
25
  import { expect } from 'chai';
27
26
  import { registerRunningWorkspace } from '../MochaHooks';
28
27
  import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
29
- import { CLASSES } from '../../configs/inversify.types';
28
+ import { CLASSES, TYPES } from '../../configs/inversify.types';
30
29
  import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
31
30
  import { CheCodeLocatorLoader } from '../../pageobjects/ide/CheCodeLocatorLoader';
32
31
  import { ProjectAndFileTests } from '../../tests-library/ProjectAndFileTests';
@@ -38,6 +37,8 @@ import { LoginTests } from '../../tests-library/LoginTests';
38
37
  import { OAUTH_CONSTANTS } from '../../constants/OAUTH_CONSTANTS';
39
38
  import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
40
39
  import { FACTORY_TEST_CONSTANTS, GitProviderType } from '../../constants/FACTORY_TEST_CONSTANTS';
40
+ import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
41
+ import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
41
42
 
42
43
  suite(
43
44
  `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}`,
@@ -50,9 +51,12 @@ suite(
50
51
  const driverHelper: DriverHelper = e2eContainer.get(CLASSES.DriverHelper);
51
52
  const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
52
53
  const oauthPage: OauthPage = e2eContainer.get(CLASSES.OauthPage);
54
+ const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
55
+ const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
53
56
 
54
57
  let projectSection: ViewSection;
55
58
  let scmProvider: SingleScmProvider;
59
+ let rest: SingleScmProvider[];
56
60
  let scmContextMenu: ContextMenu;
57
61
 
58
62
  // test specific data
@@ -66,19 +70,19 @@ suite(
66
70
  let testRepoProjectName: string;
67
71
  const isPrivateRepo: string = FACTORY_TEST_CONSTANTS.TS_SELENIUM_IS_PRIVATE_FACTORY_GIT_REPO ? 'private' : 'public';
68
72
 
69
- loginTests.loginIntoChe();
73
+ suiteSetup('Login', async function (): Promise<void> {
74
+ await loginTests.loginIntoChe();
75
+ });
70
76
 
71
77
  test(`Navigate to the ${isPrivateRepo} repository factory URL`, async function (): Promise<void> {
72
78
  await browserTabsUtil.navigateTo(FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_URL());
73
79
  });
74
80
 
75
- if (OAUTH_CONSTANTS.TS_SELENIUM_GIT_PROVIDER_OAUTH) {
76
- test(`Authorize with a ${FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_PROVIDER} OAuth and deny access`, async function (): Promise<void> {
77
- await oauthPage.login();
78
- await oauthPage.waitOauthPage();
79
- await oauthPage.denyAccess();
80
- });
81
- }
81
+ test(`Authorize with a ${FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_PROVIDER} OAuth and deny access`, async function (): Promise<void> {
82
+ await oauthPage.login();
83
+ await oauthPage.waitOauthPage();
84
+ await oauthPage.denyAccess();
85
+ });
82
86
 
83
87
  test('Obtain workspace name from workspace loader page', async function (): Promise<void> {
84
88
  await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
@@ -96,29 +100,31 @@ suite(
96
100
  await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
97
101
  });
98
102
 
99
- test('Check if a project folder has been created', async function (): Promise<void> {
100
- testRepoProjectName = StringUtil.getProjectNameFromGitUrl(FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL);
101
- projectSection = await projectAndFileTests.getProjectViewSession();
102
- expect(await projectAndFileTests.getProjectTreeItem(projectSection, testRepoProjectName), 'Project folder was not imported').not
103
- .undefined;
104
- });
105
-
106
- test('Accept the project as a trusted one', async function (): Promise<void> {
107
- await projectAndFileTests.performTrustAuthorDialog();
108
- });
109
-
110
103
  if (FACTORY_TEST_CONSTANTS.TS_SELENIUM_IS_PRIVATE_FACTORY_GIT_REPO) {
111
- test('Check that project can not be cloned', async function (): Promise<void> {
112
- await driverHelper.waitVisibility(webCheCodeLocators.Dialog.message);
113
- const workspaceDoesNotExistDialog: ModalDialog = new ModalDialog();
114
- const message: string = await workspaceDoesNotExistDialog.getMessage();
115
- expect(message).contains('space does not exist');
104
+ test('Check that a project folder has not been cloned', async function (): Promise<void> {
105
+ testRepoProjectName = StringUtil.getProjectNameFromGitUrl(FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL);
106
+ await driverHelper.waitVisibility(webCheCodeLocators.ScmView.multiProviderItem);
107
+ await projectAndFileTests.performTrustAuthorDialog();
108
+ const isProjectFolderUnable: string = await driverHelper.waitAndGetElementAttribute(
109
+ (webCheCodeLocators.TreeItem as any).projectFolderItem,
110
+ 'aria-label'
111
+ );
112
+ expect(isProjectFolderUnable).to.contain(
113
+ '/projects/' + testRepoProjectName + ' • Unable to resolve workspace folder (Unable to resolve nonexistent file'
114
+ );
115
+ });
116
+ } else {
117
+ test('Check if a project folder has been created', async function (): Promise<void> {
118
+ testRepoProjectName = StringUtil.getProjectNameFromGitUrl(FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL);
119
+ projectSection = await projectAndFileTests.getProjectViewSession();
120
+ expect(await projectAndFileTests.getProjectTreeItem(projectSection, testRepoProjectName), 'Project folder was not imported')
121
+ .not.undefined;
116
122
  });
117
123
 
118
- test('Check that project files were not imported', async function (): Promise<void> {
119
- expect(await projectAndFileTests.getProjectTreeItem(projectSection, label), 'Project files were found').to.be.undefined;
124
+ test('Accept the project as a trusted one', async function (): Promise<void> {
125
+ await projectAndFileTests.performTrustAuthorDialog();
120
126
  });
121
- } else {
127
+
122
128
  test('Check if the project files were imported', async function (): Promise<void> {
123
129
  expect(await projectAndFileTests.getProjectTreeItem(projectSection, label), 'Project files were not imported').not
124
130
  .undefined;
@@ -142,7 +148,6 @@ suite(
142
148
  await sourceControl.openView();
143
149
  const scmView: NewScmView = new NewScmView();
144
150
  await driverHelper.waitVisibility(webCheCodeLocators.ScmView.inputField);
145
- let rest: SingleScmProvider[];
146
151
  [scmProvider, ...rest] = await scmView.getProviders();
147
152
  Logger.debug(`scmView.getProviders: "${JSON.stringify(scmProvider)}, ${rest}"`);
148
153
  });
@@ -232,15 +237,17 @@ suite(
232
237
  });
233
238
  }
234
239
 
235
- test('Stop the workspace', async function (): Promise<void> {
236
- await workspaceHandlingTests.stopWorkspace(WorkspaceHandlingTests.getWorkspaceName());
240
+ suiteTeardown('Open dashboard and close all other tabs', async function (): Promise<void> {
241
+ await dashboard.openDashboard();
237
242
  await browserTabsUtil.closeAllTabsExceptCurrent();
238
243
  });
239
244
 
240
- test('Delete the workspace', async function (): Promise<void> {
241
- await workspaceHandlingTests.removeWorkspace(WorkspaceHandlingTests.getWorkspaceName());
245
+ suiteTeardown('Stop and delete the workspace by API', async function (): Promise<void> {
246
+ await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
242
247
  });
243
248
 
244
- loginTests.logoutFromChe();
249
+ suiteTeardown('Unregister running workspace', function (): void {
250
+ registerRunningWorkspace('');
251
+ });
245
252
  }
246
253
  );
@@ -9,7 +9,7 @@
9
9
  **********************************************************************/
10
10
  import { e2eContainer } from '../../configs/inversify.config';
11
11
  import { ViewSection } from 'monaco-page-objects';
12
- import { CLASSES } from '../../configs/inversify.types';
12
+ import { CLASSES, TYPES } from '../../configs/inversify.types';
13
13
  import { expect } from 'chai';
14
14
  import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
15
15
  import { ProjectAndFileTests } from '../../tests-library/ProjectAndFileTests';
@@ -19,6 +19,7 @@ import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
19
19
  import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
20
20
  import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
21
21
  import { FACTORY_TEST_CONSTANTS } from '../../constants/FACTORY_TEST_CONSTANTS';
22
+ import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
22
23
 
23
24
  const stackName: string = BASE_TEST_CONSTANTS.TS_SELENIUM_DASHBOARD_SAMPLE_NAME || 'Python';
24
25
  const projectName: string = FACTORY_TEST_CONSTANTS.TS_SELENIUM_PROJECT_NAME || 'python-hello-world';
@@ -29,10 +30,14 @@ suite(`"Start workspace with existed workspace name" test ${BASE_TEST_CONSTANTS.
29
30
  const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
30
31
  const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
31
32
  const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
33
+ const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
34
+
32
35
  let projectSection: ViewSection;
33
36
  let existedWorkspaceName: string;
34
37
 
35
- loginTests.loginIntoChe();
38
+ suiteSetup('Login', async function (): Promise<void> {
39
+ await loginTests.loginIntoChe();
40
+ });
36
41
 
37
42
  test(`Create and open new workspace, stack:${stackName}`, async function (): Promise<void> {
38
43
  await workspaceHandlingTests.createAndOpenWorkspace(stackName);
@@ -76,15 +81,17 @@ suite(`"Start workspace with existed workspace name" test ${BASE_TEST_CONSTANTS.
76
81
  ).not.undefined;
77
82
  });
78
83
 
79
- test(`Stop all created ${stackName} workspaces`, async function (): Promise<void> {
80
- await workspaceHandlingTests.stopWorkspace(WorkspaceHandlingTests.getWorkspaceName());
84
+ suiteTeardown('Open dashboard and close all other tabs', async function (): Promise<void> {
85
+ await dashboard.openDashboard();
81
86
  await browserTabsUtil.closeAllTabsExceptCurrent();
82
87
  });
83
88
 
84
- test(`Delete all created ${stackName} workspaces`, async function (): Promise<void> {
85
- await workspaceHandlingTests.removeWorkspace(WorkspaceHandlingTests.getWorkspaceName());
86
- await workspaceHandlingTests.removeWorkspace(existedWorkspaceName);
89
+ suiteTeardown(`Stop and delete all created ${stackName} workspaces by API`, async function (): Promise<void> {
90
+ await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
91
+ await testWorkspaceUtil.stopAndDeleteWorkspaceByName(existedWorkspaceName);
87
92
  });
88
93
 
89
- loginTests.logoutFromChe();
94
+ suiteTeardown('Unregister running workspace', function (): void {
95
+ registerRunningWorkspace('');
96
+ });
90
97
  });
@@ -9,7 +9,7 @@
9
9
  **********************************************************************/
10
10
  import { ViewSection } from 'monaco-page-objects';
11
11
  import { ProjectAndFileTests } from '../../tests-library/ProjectAndFileTests';
12
- import { CLASSES } from '../../configs/inversify.types';
12
+ import { CLASSES, TYPES } from '../../configs/inversify.types';
13
13
  import { e2eContainer } from '../../configs/inversify.config';
14
14
  import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
15
15
  import { registerRunningWorkspace } from '../MochaHooks';
@@ -19,6 +19,8 @@ import { expect } from 'chai';
19
19
  import { KubernetesCommandLineToolsExecutor } from '../../utils/KubernetesCommandLineToolsExecutor';
20
20
  import { ShellString } from 'shelljs';
21
21
  import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
22
+ import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
23
+ import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
22
24
 
23
25
  suite(
24
26
  `Check possibility to manage containers within a workspace with kubedock and podman ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`,
@@ -27,6 +29,9 @@ suite(
27
29
  const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
28
30
  const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
29
31
  const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
32
+ const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
33
+ const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
34
+
30
35
  let kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor;
31
36
  let workspaceName: string = '';
32
37
 
@@ -48,7 +53,9 @@ suite(
48
53
 
49
54
  const factoryUrl: string = 'https://github.com/l0rd/dockerfile-hello-world';
50
55
 
51
- loginTests.loginIntoChe();
56
+ suiteSetup('Login', async function (): Promise<void> {
57
+ await loginTests.loginIntoChe();
58
+ });
52
59
 
53
60
  test(`Create and open new workspace from factory:${factoryUrl}`, async function (): Promise<void> {
54
61
  await workspaceHandlingTests.createAndOpenWorkspaceFromGitRepository(factoryUrl);
@@ -82,15 +89,17 @@ suite(
82
89
  expect(output, 'Podman test script failed').contains('Hello from Kubedock!');
83
90
  });
84
91
 
85
- test('Stop the workspace', async function (): Promise<void> {
86
- await workspaceHandlingTests.stopWorkspace(workspaceName);
92
+ suiteTeardown('Open dashboard and close all other tabs', async function (): Promise<void> {
93
+ await dashboard.openDashboard();
87
94
  await browserTabsUtil.closeAllTabsExceptCurrent();
88
95
  });
89
96
 
90
- test('Delete the workspace', async function (): Promise<void> {
91
- await workspaceHandlingTests.removeWorkspace(workspaceName);
97
+ suiteTeardown('Stop and delete the workspace by API', async function (): Promise<void> {
98
+ await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
92
99
  });
93
100
 
94
- loginTests.logoutFromChe();
101
+ suiteTeardown('Unregister running workspace', function (): void {
102
+ registerRunningWorkspace('');
103
+ });
95
104
  }
96
105
  );