@eclipse-che/che-e2e 7.117.0 → 7.118.0-next-0c4c925

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.
@@ -152,6 +152,7 @@ Classes must follow this order:
152
152
  ### Test File Conventions
153
153
 
154
154
  1. **Naming**
155
+
155
156
  - UI tests: `*.spec.ts` (e.g., `Factory.spec.ts`)
156
157
  - API-only tests: `*API.spec.ts` (e.g., `EmptyWorkspaceAPI.spec.ts`)
157
158
 
@@ -216,10 +217,12 @@ async function doSomething(param, timeout) {
216
217
  ```
217
218
 
218
219
  2. **Naming Conventions**
220
+
219
221
  - Variables: camelCase or UPPER_CASE
220
222
  - No leading/trailing underscores
221
223
 
222
224
  3. **String Quotes**
225
+
223
226
  - Use single quotes for strings
224
227
 
225
228
  4. **Comments**
package/CODE_STYLE.md CHANGED
@@ -28,6 +28,7 @@ Automated lint checking and code format performs with ESLint and Prettier tools
28
28
  ### Preferable code style
29
29
 
30
30
  1. Page-object and util classes
31
+
31
32
  1. ✔ Class declaration using dependency injection (inversify library)
32
33
 
33
34
  ```
@@ -37,6 +38,7 @@ Automated lint checking and code format performs with ESLint and Prettier tools
37
38
  ```
38
39
 
39
40
  2. Public methods
41
+
40
42
  - ✔ Declare public methods without "public "keyword
41
43
  - ✔ Add Logger.debug() inside method to log its name (with optional message)
42
44
 
@@ -49,6 +51,7 @@ Automated lint checking and code format performs with ESLint and Prettier tools
49
51
  ```
50
52
 
51
53
  3. Locators
54
+
52
55
  - ✔ For static locators - private static readonly fields type of By
53
56
 
54
57
  ```
@@ -102,6 +105,7 @@ Automated lint checking and code format performs with ESLint and Prettier tools
102
105
  ```
103
106
 
104
107
  2. Mocha framework
108
+
105
109
  - ✔ TDD framework (`suite()`, `test()`)
106
110
  - ✔ Inject class instances, declare all test data inside test `suit()` function to avoid unnecessary code execution if test suit will not be run
107
111
 
@@ -118,6 +122,7 @@ Automated lint checking and code format performs with ESLint and Prettier tools
118
122
  - ✔ Use test [./constants](constants) to make test flexible
119
123
 
120
124
  3. Packages
125
+
121
126
  1. Add packages as dev dependencies
122
127
  2. If any changes re-create package-lock.json before push
123
128
 
@@ -8,31 +8,25 @@
8
8
  *
9
9
  * SPDX-License-Identifier: EPL-2.0
10
10
  **********************************************************************/
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const fs_1 = __importDefault(require("fs"));
16
- const path_1 = __importDefault(require("path"));
17
- const yaml_1 = __importDefault(require("yaml"));
18
12
  const inversify_config_1 = require("../../configs/inversify.config");
19
13
  const inversify_types_1 = require("../../configs/inversify.types");
20
14
  const WorkspaceHandlingTests_1 = require("../../tests-library/WorkspaceHandlingTests");
21
15
  const chai_1 = require("chai");
22
16
  const Logger_1 = require("../../utils/Logger");
23
17
  const BASE_TEST_CONSTANTS_1 = require("../../constants/BASE_TEST_CONSTANTS");
18
+ const selenium_webdriver_1 = require("selenium-webdriver");
24
19
  suite('Check Visual Studio Code (desktop) (SSH) with all samples', function () {
25
20
  this.timeout(6000000);
26
21
  const workspaceHandlingTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceHandlingTests);
27
- const pathToSampleFile = path_1.default.resolve('resources/default-devfile.yaml');
28
- const workspaceName = yaml_1.default.parse(fs_1.default.readFileSync(pathToSampleFile, 'utf8')).metadata.name;
29
- const kubernetesCommandLineToolsExecutor = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.KubernetesCommandLineToolsExecutor);
30
- kubernetesCommandLineToolsExecutor.workspaceName = workspaceName;
31
22
  const loginTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.LoginTests);
32
23
  const dashboard = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.Dashboard);
33
24
  const browserTabsUtil = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.BrowserTabsUtil);
25
+ const driverHelper = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.DriverHelper);
34
26
  const vsCodeDesktopSshEditor = '//*[@id="editor-selector-card-che-incubator/che-code-sshd/latest"]';
35
- const titlexPath = '/html/body/h1';
27
+ const useExtensionSwitcher = '//label[@class="switch"]';
28
+ const useExtensionPageId = '//div[@id="docs-parent"]';
29
+ const titlexPath = '//div[@class="header-title"]';
36
30
  const ocPortForwardxPath = '//*[@id="port-forward"]';
37
31
  const sshKeyxPath = '//*[@id="key"]';
38
32
  const sshKonfigxPath = '//*[@id="config"]';
@@ -57,23 +51,26 @@ suite('Check Visual Studio Code (desktop) (SSH) with all samples', function () {
57
51
  'https://gh.crw-qe.com/test-automation-only/ubi8/tree/ubi8-latest',
58
52
  'https://gh.crw-qe.com/test-automation-only/ubi9-based-sample-public/tree/ubi9-minimal'
59
53
  ];
60
- async function deleteWorkspace() {
61
- await dashboard.openDashboard();
62
- await browserTabsUtil.closeAllTabsExceptCurrent();
63
- await dashboard.stopAndRemoveWorkspaceByUI(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
64
- WorkspaceHandlingTests_1.WorkspaceHandlingTests.clearWorkspaceName();
65
- }
66
54
  suiteSetup('Login into Che', async function () {
67
55
  await loginTests.loginIntoChe();
68
56
  });
57
+ async function clickOnElementByXpath(xpath) {
58
+ Logger_1.Logger.debug();
59
+ await driverHelper.waitAndClick(selenium_webdriver_1.By.xpath(xpath));
60
+ }
69
61
  async function testWorkspaceStartup(sampleNameOrUrl, isUrl) {
70
62
  await dashboard.openDashboard();
63
+ await dashboard.clickCreateWorkspaceButton();
71
64
  if (isUrl) {
72
65
  await workspaceHandlingTests.createAndOpenWorkspaceWithSpecificEditorAndGitUrl(vsCodeDesktopSshEditor, sampleNameOrUrl, titlexPath);
73
66
  }
74
67
  else {
75
68
  await workspaceHandlingTests.createAndOpenWorkspaceWithSpecificEditorAndSample(vsCodeDesktopSshEditor, sampleNameOrUrl, titlexPath);
76
69
  }
70
+ const useExtensionPageText = await workspaceHandlingTests.getTextFromUIElementByXpath(useExtensionPageId);
71
+ (0, chai_1.expect)(useExtensionPageText).contains('Install the following VS Code extensions');
72
+ // toggle UseExtension switcher
73
+ await clickOnElementByXpath(useExtensionSwitcher);
77
74
  // check title
78
75
  const headerText = await workspaceHandlingTests.getTextFromUIElementByXpath(titlexPath);
79
76
  (0, chai_1.expect)('Workspace ' + WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName() + ' is running').equal(headerText);
@@ -91,7 +88,6 @@ suite('Check Visual Studio Code (desktop) (SSH) with all samples', function () {
91
88
  .and.contains('Port')
92
89
  .and.contains('IdentityFile')
93
90
  .and.contains('UserKnownHostsFile');
94
- await deleteWorkspace();
95
91
  }
96
92
  test('Test start of VSCode (desktop) (SSH) with default Samples', async function () {
97
93
  for (const sampleName of samplesForCheck) {
@@ -111,13 +107,15 @@ suite('Check Visual Studio Code (desktop) (SSH) with all samples', function () {
111
107
  }
112
108
  }
113
109
  });
114
- suiteTeardown('Delete DevWorkspace', async function () {
115
- Logger_1.Logger.info('Deleting DevWorkspace... After all.');
110
+ teardown('Delete DevWorkspace', async function () {
111
+ Logger_1.Logger.info('Delete DevWorkspace. After each test.');
116
112
  await dashboard.openDashboard();
117
113
  await browserTabsUtil.closeAllTabsExceptCurrent();
118
114
  if (WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName() !== 'undefined') {
115
+ Logger_1.Logger.info('Workspace name is defined. Deleting workspace...');
119
116
  await dashboard.deleteStoppedWorkspaceByUI(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
120
117
  }
118
+ WorkspaceHandlingTests_1.WorkspaceHandlingTests.clearWorkspaceName();
121
119
  });
122
120
  });
123
121
  //# sourceMappingURL=StartWorkspaceUsingVSCodeDesktopSshEditor.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StartWorkspaceUsingVSCodeDesktopSshEditor.spec.js","sourceRoot":"","sources":["../../../specs/dashboard-samples/StartWorkspaceUsingVSCodeDesktopSshEditor.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StartWorkspaceUsingVSCodeDesktopSshEditor.spec.js","sourceRoot":"","sources":["../../../specs/dashboard-samples/StartWorkspaceUsingVSCodeDesktopSshEditor.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-che/che-e2e",
3
- "version": "7.117.0",
3
+ "version": "7.118.0-next-0c4c925",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -66,8 +66,7 @@
66
66
  "dependencies": {
67
67
  "@eclipse-che/api": "latest",
68
68
  "inversify": "6.0.1",
69
- "reflect-metadata": "0.1.13",
70
- "@eclipse-che/che-devworkspace-generator": "7.117.0"
69
+ "reflect-metadata": "0.1.13"
71
70
  },
72
71
  "resolutions": {
73
72
  "minimist": "^1.2.5"
@@ -8,10 +8,6 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  **********************************************************************/
10
10
 
11
- import { KubernetesCommandLineToolsExecutor } from '../../utils/KubernetesCommandLineToolsExecutor';
12
- import fs from 'fs';
13
- import path from 'path';
14
- import YAML from 'yaml';
15
11
  import { e2eContainer } from '../../configs/inversify.config';
16
12
  import { CLASSES } from '../../configs/inversify.types';
17
13
  import { LoginTests } from '../../tests-library/LoginTests';
@@ -21,22 +17,23 @@ import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTes
21
17
  import { expect } from 'chai';
22
18
  import { Logger } from '../../utils/Logger';
23
19
  import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
20
+ import { DriverHelper } from '../../utils/DriverHelper';
21
+ import { By } from 'selenium-webdriver';
24
22
 
25
23
  suite('Check Visual Studio Code (desktop) (SSH) with all samples', function (): void {
26
24
  this.timeout(6000000);
27
25
  const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
28
- const pathToSampleFile: string = path.resolve('resources/default-devfile.yaml');
29
- const workspaceName: string = YAML.parse(fs.readFileSync(pathToSampleFile, 'utf8')).metadata.name;
30
- const kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor = e2eContainer.get(
31
- CLASSES.KubernetesCommandLineToolsExecutor
32
- );
33
- kubernetesCommandLineToolsExecutor.workspaceName = workspaceName;
34
26
  const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
35
27
  const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
36
28
  const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
29
+ const driverHelper: DriverHelper = e2eContainer.get(CLASSES.DriverHelper);
37
30
 
38
31
  const vsCodeDesktopSshEditor: string = '//*[@id="editor-selector-card-che-incubator/che-code-sshd/latest"]';
39
- const titlexPath: string = '/html/body/h1';
32
+
33
+ const useExtensionSwitcher: string = '//label[@class="switch"]';
34
+ const useExtensionPageId: string = '//div[@id="docs-parent"]';
35
+
36
+ const titlexPath: string = '//div[@class="header-title"]';
40
37
  const ocPortForwardxPath: string = '//*[@id="port-forward"]';
41
38
  const sshKeyxPath: string = '//*[@id="key"]';
42
39
  const sshKonfigxPath: string = '//*[@id="config"]';
@@ -65,19 +62,19 @@ suite('Check Visual Studio Code (desktop) (SSH) with all samples', function ():
65
62
  'https://gh.crw-qe.com/test-automation-only/ubi9-based-sample-public/tree/ubi9-minimal'
66
63
  ];
67
64
 
68
- async function deleteWorkspace(): Promise<void> {
69
- await dashboard.openDashboard();
70
- await browserTabsUtil.closeAllTabsExceptCurrent();
71
- await dashboard.stopAndRemoveWorkspaceByUI(WorkspaceHandlingTests.getWorkspaceName());
72
- WorkspaceHandlingTests.clearWorkspaceName();
73
- }
74
-
75
65
  suiteSetup('Login into Che', async function (): Promise<void> {
76
66
  await loginTests.loginIntoChe();
77
67
  });
78
68
 
69
+ async function clickOnElementByXpath(xpath: string): Promise<void> {
70
+ Logger.debug();
71
+ await driverHelper.waitAndClick(By.xpath(xpath));
72
+ }
73
+
79
74
  async function testWorkspaceStartup(sampleNameOrUrl: string, isUrl: boolean): Promise<void> {
80
75
  await dashboard.openDashboard();
76
+ await dashboard.clickCreateWorkspaceButton();
77
+
81
78
  if (isUrl) {
82
79
  await workspaceHandlingTests.createAndOpenWorkspaceWithSpecificEditorAndGitUrl(
83
80
  vsCodeDesktopSshEditor,
@@ -92,6 +89,10 @@ suite('Check Visual Studio Code (desktop) (SSH) with all samples', function ():
92
89
  );
93
90
  }
94
91
 
92
+ const useExtensionPageText: string = await workspaceHandlingTests.getTextFromUIElementByXpath(useExtensionPageId);
93
+ expect(useExtensionPageText).contains('Install the following VS Code extensions');
94
+ // toggle UseExtension switcher
95
+ await clickOnElementByXpath(useExtensionSwitcher);
95
96
  // check title
96
97
  const headerText: string = await workspaceHandlingTests.getTextFromUIElementByXpath(titlexPath);
97
98
  expect('Workspace ' + WorkspaceHandlingTests.getWorkspaceName() + ' is running').equal(headerText);
@@ -109,8 +110,6 @@ suite('Check Visual Studio Code (desktop) (SSH) with all samples', function ():
109
110
  .and.contains('Port')
110
111
  .and.contains('IdentityFile')
111
112
  .and.contains('UserKnownHostsFile');
112
-
113
- await deleteWorkspace();
114
113
  }
115
114
 
116
115
  test('Test start of VSCode (desktop) (SSH) with default Samples', async function (): Promise<void> {
@@ -132,12 +131,17 @@ suite('Check Visual Studio Code (desktop) (SSH) with all samples', function ():
132
131
  }
133
132
  });
134
133
 
135
- suiteTeardown('Delete DevWorkspace', async function (): Promise<void> {
136
- Logger.info('Deleting DevWorkspace... After all.');
134
+ teardown('Delete DevWorkspace', async function (): Promise<void> {
135
+ Logger.info('Delete DevWorkspace. After each test.');
136
+
137
137
  await dashboard.openDashboard();
138
138
  await browserTabsUtil.closeAllTabsExceptCurrent();
139
+
139
140
  if (WorkspaceHandlingTests.getWorkspaceName() !== 'undefined') {
141
+ Logger.info('Workspace name is defined. Deleting workspace...');
140
142
  await dashboard.deleteStoppedWorkspaceByUI(WorkspaceHandlingTests.getWorkspaceName());
141
143
  }
144
+
145
+ WorkspaceHandlingTests.clearWorkspaceName();
142
146
  });
143
147
  });