@eclipse-che/che-e2e 7.110.0-next-c48fae0 → 7.110.0-next-5d75852

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/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
 
@@ -1,10 +1,33 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
2
18
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
19
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
20
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
21
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
22
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
23
  };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
8
31
  var __metadata = (this && this.__metadata) || function (k, v) {
9
32
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
33
  };
@@ -15,7 +38,7 @@ var UserPreferences_1;
15
38
  Object.defineProperty(exports, "__esModule", { value: true });
16
39
  exports.UserPreferences = void 0;
17
40
  /** *******************************************************************
18
- * copyright (c) 2019-2023 Red Hat, Inc.
41
+ * copyright (c) 2019-2025 Red Hat, Inc.
19
42
  *
20
43
  * This program and the accompanying materials are made
21
44
  * available under the terms of the Eclipse Public License 2.0
@@ -25,6 +48,8 @@ exports.UserPreferences = void 0;
25
48
  **********************************************************************/
26
49
  const inversify_1 = require("inversify");
27
50
  require("reflect-metadata");
51
+ const fs = __importStar(require("fs"));
52
+ const path = __importStar(require("path"));
28
53
  const inversify_types_1 = require("../../configs/inversify.types");
29
54
  const selenium_webdriver_1 = require("selenium-webdriver");
30
55
  const DriverHelper_1 = require("../../utils/DriverHelper");
@@ -47,7 +72,7 @@ let UserPreferences = UserPreferences_1 = class UserPreferences {
47
72
  await this.openGitServicesTab();
48
73
  await this.openPatTab();
49
74
  await this.openGitConfigPage();
50
- await this.openSshKeyTab();
75
+ await this.checkAddSshKeyButtonAvailability();
51
76
  }
52
77
  async openContainerRegistriesTab() {
53
78
  Logger_1.Logger.debug();
@@ -82,8 +107,49 @@ let UserPreferences = UserPreferences_1 = class UserPreferences {
82
107
  async openSshKeyTab() {
83
108
  Logger_1.Logger.debug();
84
109
  await this.driverHelper.waitAndClick(UserPreferences_1.SSH_KEY_TAB);
110
+ }
111
+ async checkAddSshKeyButtonAvailability() {
112
+ Logger_1.Logger.debug();
113
+ await this.openSshKeyTab();
85
114
  await this.driverHelper.waitVisibility(UserPreferences_1.ADD_NEW_SSH_KEY_BUTTON);
86
115
  }
116
+ async addSshKeys(privateSshKeyPath, publicSshKeyPath) {
117
+ Logger_1.Logger.debug();
118
+ Logger_1.Logger.info('Adding new SSH keys');
119
+ await this.driverHelper.waitAndClick(UserPreferences_1.ADD_NEW_SSH_KEY_BUTTON);
120
+ await this.driverHelper.waitVisibility(UserPreferences_1.ADD_SSH_KEYS_POPUP);
121
+ await this.uploadSshKeys(privateSshKeyPath, publicSshKeyPath);
122
+ await this.driverHelper.waitAndClick(UserPreferences_1.ADD_SSH_KEYS_BUTTON);
123
+ await this.driverHelper.waitVisibility(UserPreferences_1.GIT_SSH_KEY_NAME);
124
+ Logger_1.Logger.info('SSH keys have been added');
125
+ }
126
+ async uploadSshKeys(privateSshKeyPath, publicSshKeyPath) {
127
+ Logger_1.Logger.debug();
128
+ const privateSshKey = Buffer.from(fs.readFileSync(path.resolve(privateSshKeyPath), 'utf-8'), 'base64').toString('utf-8');
129
+ const publicSshKey = Buffer.from(fs.readFileSync(path.resolve(publicSshKeyPath), 'utf-8'), 'base64').toString('utf-8');
130
+ Logger_1.Logger.info('Pasting private SSH key');
131
+ await this.driverHelper.waitAndClick(UserPreferences_1.PASTE_PRIVATE_SSH_KEY_FIELD);
132
+ await this.driverHelper.getAction().sendKeys(privateSshKey).perform();
133
+ Logger_1.Logger.info('Pasting public SSH key');
134
+ await this.driverHelper.waitAndClick(UserPreferences_1.PASTE_PUBLIC_SSH_KEY_FIELD);
135
+ await this.driverHelper.getAction().sendKeys(publicSshKey).perform();
136
+ }
137
+ async isSshKeyPresent() {
138
+ Logger_1.Logger.debug();
139
+ return this.driverHelper.isVisible(UserPreferences_1.GIT_SSH_KEY_NAME);
140
+ }
141
+ async deleteSshKeys() {
142
+ Logger_1.Logger.debug();
143
+ Logger_1.Logger.info('Deleting SSH keys');
144
+ await this.openSshKeyTab();
145
+ await this.driverHelper.waitAndClick(UserPreferences_1.GIT_SSH_KEY_ACTIONS_BUTTON, TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT);
146
+ await this.driverHelper.waitAndClick(UserPreferences_1.DELETE_BUTTON);
147
+ await this.driverHelper.waitVisibility(UserPreferences_1.CONFIRM_DELETE_SSH_KEYS_POPUP);
148
+ await this.driverHelper.waitAndClick(UserPreferences_1.CONFIRM_DELETE_SSH_KEYS_CHECKBOX);
149
+ await this.driverHelper.waitAndClick(UserPreferences_1.DELETE_BUTTON);
150
+ await this.driverHelper.waitDisappearance(UserPreferences_1.GIT_SSH_KEY_NAME);
151
+ Logger_1.Logger.info('SSH keys have been deleted');
152
+ }
87
153
  getServiceConfig(service) {
88
154
  const gitService = {
89
155
  [FACTORY_TEST_CONSTANTS_1.GitProviderType.GITHUB]: 'GitHub',
@@ -110,6 +176,15 @@ UserPreferences.ADD_NEW_PAT_BUTTON = selenium_webdriver_1.By.xpath('//button[tex
110
176
  UserPreferences.GIT_CONFIG_PAGE = selenium_webdriver_1.By.xpath('//button[text()="Gitconfig"]');
111
177
  UserPreferences.SSH_KEY_TAB = selenium_webdriver_1.By.xpath('//button[text()="SSH Keys"]');
112
178
  UserPreferences.ADD_NEW_SSH_KEY_BUTTON = selenium_webdriver_1.By.xpath('//button[text()="Add SSH Key"]');
179
+ UserPreferences.ADD_SSH_KEYS_POPUP = selenium_webdriver_1.By.xpath('//span[text()="Add SSH Keys"]');
180
+ UserPreferences.PASTE_PRIVATE_SSH_KEY_FIELD = selenium_webdriver_1.By.css('textarea[name="ssh-private-key"]');
181
+ UserPreferences.PASTE_PUBLIC_SSH_KEY_FIELD = selenium_webdriver_1.By.css('textarea[name="ssh-public-key"]');
182
+ UserPreferences.ADD_SSH_KEYS_BUTTON = selenium_webdriver_1.By.css('.pf-c-button.pf-m-primary');
183
+ UserPreferences.GIT_SSH_KEY_NAME = selenium_webdriver_1.By.css('[data-testid="title"]');
184
+ UserPreferences.GIT_SSH_KEY_ACTIONS_BUTTON = selenium_webdriver_1.By.css('section[id*="SshKeys-user-preferences"] button[aria-label="Actions"]');
185
+ UserPreferences.DELETE_BUTTON = selenium_webdriver_1.By.xpath('//button[text()="Delete"]');
186
+ UserPreferences.CONFIRM_DELETE_SSH_KEYS_POPUP = selenium_webdriver_1.By.css('div[id^="pf-modal-part"][role="dialog"]');
187
+ UserPreferences.CONFIRM_DELETE_SSH_KEYS_CHECKBOX = selenium_webdriver_1.By.id('delete-ssh-keys-warning-checkbox');
113
188
  UserPreferences.CONFIRMATION_WINDOW = selenium_webdriver_1.By.xpath('//span[text()="Revoke Git Services"]');
114
189
  UserPreferences.DELETE_CONFIRMATION_CHECKBOX = selenium_webdriver_1.By.xpath('//input[@data-testid="warning-info-checkbox"]');
115
190
  UserPreferences.DELETE_ITEM_BUTTON_ENABLED = selenium_webdriver_1.By.xpath('//button[@data-testid="revoke-button" and not(@disabled)]');
@@ -1 +1 @@
1
- {"version":3,"file":"UserPreferences.js","sourceRoot":"","sources":["../../../pageobjects/dashboard/UserPreferences.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserPreferences.js","sourceRoot":"","sources":["../../../pageobjects/dashboard/UserPreferences.ts"],"names":[],"mappings":"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"}
@@ -37,7 +37,7 @@ suite(`Check links to documentation page in Dashboard ${BASE_TEST_CONSTANTS_1.BA
37
37
  });
38
38
  suiteSetup('Get links from product version github branch', function () {
39
39
  try {
40
- ({ docs, links, productVersion } = JSON.parse(shellExecutor.executeCommand(`oc exec deploy/devspaces-dashboard -n openshift-devspaces -- cat /public/dashboard/assets/branding/product.json`)));
40
+ ({ docs, links, productVersion } = JSON.parse(shellExecutor.executeCommand('oc exec deploy/devspaces-dashboard -n openshift-devspaces -- cat /public/dashboard/assets/branding/product.json')));
41
41
  }
42
42
  catch (e) {
43
43
  Logger_1.Logger.error('Cannot fetch documentation links');
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /** *******************************************************************
3
+ * copyright (c) 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 inversify_types_1 = require("../../configs/inversify.types");
13
+ const inversify_config_1 = require("../../configs/inversify.config");
14
+ const WorkspaceHandlingTests_1 = require("../../tests-library/WorkspaceHandlingTests");
15
+ const MochaHooks_1 = require("../MochaHooks");
16
+ const StringUtil_1 = require("../../utils/StringUtil");
17
+ const FACTORY_TEST_CONSTANTS_1 = require("../../constants/FACTORY_TEST_CONSTANTS");
18
+ const chai_1 = require("chai");
19
+ const BASE_TEST_CONSTANTS_1 = require("../../constants/BASE_TEST_CONSTANTS");
20
+ const Logger_1 = require("../../utils/Logger");
21
+ suite(`The SshUrlNoOauthPatFactory userstory ${BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function () {
22
+ const projectAndFileTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ProjectAndFileTests);
23
+ const workspaceHandlingTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceHandlingTests);
24
+ const loginTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.LoginTests);
25
+ const browserTabsUtil = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.BrowserTabsUtil);
26
+ const userPreferences = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.UserPreferences);
27
+ const dashboard = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.Dashboard);
28
+ const testWorkspaceUtil = inversify_config_1.e2eContainer.get(inversify_types_1.TYPES.WorkspaceUtil);
29
+ const factoryUrl = FACTORY_TEST_CONSTANTS_1.FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL ||
30
+ 'ssh://git@bitbucket-ssh.apps.ds-airgap2-v15.crw-qe.com/~admin/private-bb-repo.git';
31
+ const privateSshKeyPath = 'resources/factory/pr-k.txt';
32
+ const publicSshKeyPath = 'resources/factory/pub-k.txt';
33
+ let projectSection;
34
+ async function deleteSshKeys() {
35
+ Logger_1.Logger.debug('Deleting SSH keys if they are present');
36
+ await userPreferences.openUserPreferencesPage();
37
+ await userPreferences.openSshKeyTab();
38
+ if (await userPreferences.isSshKeyPresent()) {
39
+ await userPreferences.deleteSshKeys();
40
+ }
41
+ }
42
+ suite(`Create workspace from factory:${factoryUrl}`, function () {
43
+ suiteSetup('Login', async function () {
44
+ await loginTests.loginIntoChe();
45
+ await deleteSshKeys();
46
+ });
47
+ test('Add SSH keys', async function () {
48
+ await userPreferences.openUserPreferencesPage();
49
+ await userPreferences.openSshKeyTab();
50
+ await userPreferences.addSshKeys(privateSshKeyPath, publicSshKeyPath);
51
+ });
52
+ test(`Create and open new workspace from factory:${factoryUrl}`, async function () {
53
+ await workspaceHandlingTests.createAndOpenWorkspaceFromGitRepository(factoryUrl);
54
+ });
55
+ test('Obtain workspace name from workspace loader page', async function () {
56
+ await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
57
+ });
58
+ test('Register running workspace', function () {
59
+ (0, MochaHooks_1.registerRunningWorkspace)(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
60
+ });
61
+ test('Wait workspace readiness', async function () {
62
+ await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
63
+ });
64
+ test('Check a project folder has been created', async function () {
65
+ const projectName = FACTORY_TEST_CONSTANTS_1.FACTORY_TEST_CONSTANTS.TS_SELENIUM_PROJECT_NAME || StringUtil_1.StringUtil.getProjectNameFromGitUrl(factoryUrl);
66
+ projectSection = await projectAndFileTests.getProjectViewSession();
67
+ (0, chai_1.expect)(await projectAndFileTests.getProjectTreeItem(projectSection, projectName), 'Project folder was not imported').not
68
+ .undefined;
69
+ });
70
+ test('Accept the project as a trusted one', async function () {
71
+ await projectAndFileTests.performTrustAuthorDialog();
72
+ });
73
+ test('Check the project files was imported', async function () {
74
+ (0, chai_1.expect)(await projectAndFileTests.getProjectTreeItem(projectSection, BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TS_SELENIUM_PROJECT_ROOT_FILE_NAME), 'Project files were not imported').not.undefined;
75
+ });
76
+ suiteTeardown('Delete SSH keys', async function () {
77
+ await dashboard.openDashboard();
78
+ await deleteSshKeys();
79
+ });
80
+ suiteTeardown('Stop and delete the workspace by APII', async function () {
81
+ await browserTabsUtil.closeAllTabsExceptCurrent();
82
+ await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
83
+ });
84
+ suiteTeardown('Unregister running workspace', function () {
85
+ (0, MochaHooks_1.registerRunningWorkspace)('');
86
+ });
87
+ });
88
+ });
89
+ //# sourceMappingURL=SshUrlNoOauthPatFactory.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SshUrlNoOauthPatFactory.spec.js","sourceRoot":"","sources":["../../../specs/factory/SshUrlNoOauthPatFactory.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.110.0-next-c48fae0",
3
+ "version": "7.110.0-next-5d75852",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -1,5 +1,5 @@
1
1
  /** *******************************************************************
2
- * copyright (c) 2019-2023 Red Hat, Inc.
2
+ * copyright (c) 2019-2025 Red Hat, Inc.
3
3
  *
4
4
  * This program and the accompanying materials are made
5
5
  * available under the terms of the Eclipse Public License 2.0
@@ -9,6 +9,8 @@
9
9
  **********************************************************************/
10
10
  import { inject, injectable } from 'inversify';
11
11
  import 'reflect-metadata';
12
+ import * as fs from 'fs';
13
+ import * as path from 'path';
12
14
  import { CLASSES } from '../../configs/inversify.types';
13
15
  import { By } from 'selenium-webdriver';
14
16
  import { DriverHelper } from '../../utils/DriverHelper';
@@ -34,6 +36,15 @@ export class UserPreferences {
34
36
 
35
37
  private static readonly SSH_KEY_TAB: By = By.xpath('//button[text()="SSH Keys"]');
36
38
  private static readonly ADD_NEW_SSH_KEY_BUTTON: By = By.xpath('//button[text()="Add SSH Key"]');
39
+ private static readonly ADD_SSH_KEYS_POPUP: By = By.xpath('//span[text()="Add SSH Keys"]');
40
+ private static readonly PASTE_PRIVATE_SSH_KEY_FIELD: By = By.css('textarea[name="ssh-private-key"]');
41
+ private static readonly PASTE_PUBLIC_SSH_KEY_FIELD: By = By.css('textarea[name="ssh-public-key"]');
42
+ private static readonly ADD_SSH_KEYS_BUTTON: By = By.css('.pf-c-button.pf-m-primary');
43
+ private static readonly GIT_SSH_KEY_NAME: By = By.css('[data-testid="title"]');
44
+ private static readonly GIT_SSH_KEY_ACTIONS_BUTTON: By = By.css('section[id*="SshKeys-user-preferences"] button[aria-label="Actions"]');
45
+ private static readonly DELETE_BUTTON: By = By.xpath('//button[text()="Delete"]');
46
+ private static readonly CONFIRM_DELETE_SSH_KEYS_POPUP: By = By.css('div[id^="pf-modal-part"][role="dialog"]');
47
+ private static readonly CONFIRM_DELETE_SSH_KEYS_CHECKBOX: By = By.id('delete-ssh-keys-warning-checkbox');
37
48
 
38
49
  private static readonly CONFIRMATION_WINDOW: By = By.xpath('//span[text()="Revoke Git Services"]');
39
50
  private static readonly DELETE_CONFIRMATION_CHECKBOX: By = By.xpath('//input[@data-testid="warning-info-checkbox"]');
@@ -60,7 +71,7 @@ export class UserPreferences {
60
71
  await this.openGitServicesTab();
61
72
  await this.openPatTab();
62
73
  await this.openGitConfigPage();
63
- await this.openSshKeyTab();
74
+ await this.checkAddSshKeyButtonAvailability();
64
75
  }
65
76
 
66
77
  async openContainerRegistriesTab(): Promise<void> {
@@ -116,9 +127,64 @@ export class UserPreferences {
116
127
  Logger.debug();
117
128
 
118
129
  await this.driverHelper.waitAndClick(UserPreferences.SSH_KEY_TAB);
130
+ }
131
+
132
+ async checkAddSshKeyButtonAvailability(): Promise<void> {
133
+ Logger.debug();
134
+
135
+ await this.openSshKeyTab();
119
136
  await this.driverHelper.waitVisibility(UserPreferences.ADD_NEW_SSH_KEY_BUTTON);
120
137
  }
121
138
 
139
+ async addSshKeys(privateSshKeyPath: string, publicSshKeyPath: string): Promise<void> {
140
+ Logger.debug();
141
+
142
+ Logger.info('Adding new SSH keys');
143
+ await this.driverHelper.waitAndClick(UserPreferences.ADD_NEW_SSH_KEY_BUTTON);
144
+ await this.driverHelper.waitVisibility(UserPreferences.ADD_SSH_KEYS_POPUP);
145
+ await this.uploadSshKeys(privateSshKeyPath, publicSshKeyPath);
146
+ await this.driverHelper.waitAndClick(UserPreferences.ADD_SSH_KEYS_BUTTON);
147
+ await this.driverHelper.waitVisibility(UserPreferences.GIT_SSH_KEY_NAME);
148
+ Logger.info('SSH keys have been added');
149
+ }
150
+
151
+ async uploadSshKeys(privateSshKeyPath: string, publicSshKeyPath: string): Promise<void> {
152
+ Logger.debug();
153
+ const privateSshKey: string = Buffer.from(fs.readFileSync(path.resolve(privateSshKeyPath), 'utf-8'), 'base64').toString('utf-8');
154
+ const publicSshKey: string = Buffer.from(fs.readFileSync(path.resolve(publicSshKeyPath), 'utf-8'), 'base64').toString('utf-8');
155
+
156
+ Logger.info('Pasting private SSH key');
157
+ await this.driverHelper.waitAndClick(UserPreferences.PASTE_PRIVATE_SSH_KEY_FIELD);
158
+ await this.driverHelper.getAction().sendKeys(privateSshKey).perform();
159
+
160
+ Logger.info('Pasting public SSH key');
161
+ await this.driverHelper.waitAndClick(UserPreferences.PASTE_PUBLIC_SSH_KEY_FIELD);
162
+ await this.driverHelper.getAction().sendKeys(publicSshKey).perform();
163
+ }
164
+
165
+ async isSshKeyPresent(): Promise<boolean> {
166
+ Logger.debug();
167
+
168
+ return this.driverHelper.isVisible(UserPreferences.GIT_SSH_KEY_NAME);
169
+ }
170
+
171
+ async deleteSshKeys(): Promise<void> {
172
+ Logger.debug();
173
+
174
+ Logger.info('Deleting SSH keys');
175
+ await this.openSshKeyTab();
176
+ await this.driverHelper.waitAndClick(
177
+ UserPreferences.GIT_SSH_KEY_ACTIONS_BUTTON,
178
+ TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT
179
+ );
180
+ await this.driverHelper.waitAndClick(UserPreferences.DELETE_BUTTON);
181
+ await this.driverHelper.waitVisibility(UserPreferences.CONFIRM_DELETE_SSH_KEYS_POPUP);
182
+ await this.driverHelper.waitAndClick(UserPreferences.CONFIRM_DELETE_SSH_KEYS_CHECKBOX);
183
+ await this.driverHelper.waitAndClick(UserPreferences.DELETE_BUTTON);
184
+ await this.driverHelper.waitDisappearance(UserPreferences.GIT_SSH_KEY_NAME);
185
+ Logger.info('SSH keys have been deleted');
186
+ }
187
+
122
188
  getServiceConfig(service: string): string {
123
189
  const gitService: { [key: string]: string } = {
124
190
  [GitProviderType.GITHUB]: 'GitHub',
@@ -0,0 +1 @@
1
+ LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFNd0FBQUF0emMyZ3RaVwpReU5UVXhPUUFBQUNBUkFYazVMM3ZLdGl1cStYdUIzd1J3R21VWlV3eVJKOC9iYTRLQjVzZWR3QUFBQUpnTnUyT0NEYnRqCmdnQUFBQXR6YzJndFpXUXlOVFV4T1FBQUFDQVJBWGs1TDN2S3RpdXErWHVCM3dSd0dtVVpVd3lSSjgvYmE0S0I1c2Vkd0EKQUFBRUFBQ3pOVjdKUVpFUFNaVUZSQjU3c25oczZKZHlJSEhkUWk2cFBBRkNDUU5SRUJlVGt2ZThxMks2cjVlNEhmQkhBYQpaUmxUREpFbno5dHJnb0hteDUzQUFBQUFGV05vWlhCMWJHeHlaWEV4UUdkdFlXbHNMbU52YlE9PQotLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0K
@@ -0,0 +1 @@
1
+ c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUJFQmVUa3ZlOHEySzZyNWU0SGZCSEFhWlJsVERKRW56OXRyZ29IbXg1M0EgY2hlcHVsbHJlcTFAZ21haWwuY29t
@@ -55,7 +55,7 @@ suite(`Check links to documentation page in Dashboard ${BASE_TEST_CONSTANTS.TEST
55
55
  try {
56
56
  ({ docs, links, productVersion } = JSON.parse(
57
57
  shellExecutor.executeCommand(
58
- `oc exec deploy/devspaces-dashboard -n openshift-devspaces -- cat /public/dashboard/assets/branding/product.json`
58
+ 'oc exec deploy/devspaces-dashboard -n openshift-devspaces -- cat /public/dashboard/assets/branding/product.json'
59
59
  )
60
60
  ));
61
61
  } catch (e) {
@@ -0,0 +1,101 @@
1
+ /** *******************************************************************
2
+ * copyright (c) 2025 Red Hat, Inc.
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ **********************************************************************/
10
+
11
+ import { ViewSection } from 'monaco-page-objects';
12
+ import { ProjectAndFileTests } from '../../tests-library/ProjectAndFileTests';
13
+ import { CLASSES, TYPES } from '../../configs/inversify.types';
14
+ import { e2eContainer } from '../../configs/inversify.config';
15
+ import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
16
+ import { registerRunningWorkspace } from '../MochaHooks';
17
+ import { LoginTests } from '../../tests-library/LoginTests';
18
+ import { StringUtil } from '../../utils/StringUtil';
19
+ import { FACTORY_TEST_CONSTANTS } from '../../constants/FACTORY_TEST_CONSTANTS';
20
+ import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
21
+ import { expect } from 'chai';
22
+ import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
23
+ import { UserPreferences } from '../../pageobjects/dashboard/UserPreferences';
24
+ import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
25
+ import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
26
+ import { Logger } from '../../utils/Logger';
27
+
28
+ suite(`The SshUrlNoOauthPatFactory userstory ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function (): void {
29
+ const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
30
+ const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
31
+ const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
32
+ const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
33
+ const userPreferences: UserPreferences = e2eContainer.get(CLASSES.UserPreferences);
34
+ const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
35
+ const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
36
+ const factoryUrl: string =
37
+ FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL ||
38
+ 'ssh://git@bitbucket-ssh.apps.ds-airgap2-v15.crw-qe.com/~admin/private-bb-repo.git';
39
+ const privateSshKeyPath: string = 'resources/factory/pr-k.txt';
40
+ const publicSshKeyPath: string = 'resources/factory/pub-k.txt';
41
+ let projectSection: ViewSection;
42
+
43
+ async function deleteSshKeys(): Promise<void> {
44
+ Logger.debug('Deleting SSH keys if they are present');
45
+ await userPreferences.openUserPreferencesPage();
46
+ await userPreferences.openSshKeyTab();
47
+ if (await userPreferences.isSshKeyPresent()) {
48
+ await userPreferences.deleteSshKeys();
49
+ }
50
+ }
51
+
52
+ suite(`Create workspace from factory:${factoryUrl}`, function (): void {
53
+ suiteSetup('Login', async function (): Promise<void> {
54
+ await loginTests.loginIntoChe();
55
+ await deleteSshKeys();
56
+ });
57
+ test('Add SSH keys', async function (): Promise<void> {
58
+ await userPreferences.openUserPreferencesPage();
59
+ await userPreferences.openSshKeyTab();
60
+ await userPreferences.addSshKeys(privateSshKeyPath, publicSshKeyPath);
61
+ });
62
+ test(`Create and open new workspace from factory:${factoryUrl}`, async function (): Promise<void> {
63
+ await workspaceHandlingTests.createAndOpenWorkspaceFromGitRepository(factoryUrl);
64
+ });
65
+ test('Obtain workspace name from workspace loader page', async function (): Promise<void> {
66
+ await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
67
+ });
68
+ test('Register running workspace', function (): void {
69
+ registerRunningWorkspace(WorkspaceHandlingTests.getWorkspaceName());
70
+ });
71
+ test('Wait workspace readiness', async function (): Promise<void> {
72
+ await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
73
+ });
74
+ test('Check a project folder has been created', async function (): Promise<void> {
75
+ const projectName: string = FACTORY_TEST_CONSTANTS.TS_SELENIUM_PROJECT_NAME || StringUtil.getProjectNameFromGitUrl(factoryUrl);
76
+ projectSection = await projectAndFileTests.getProjectViewSession();
77
+ expect(await projectAndFileTests.getProjectTreeItem(projectSection, projectName), 'Project folder was not imported').not
78
+ .undefined;
79
+ });
80
+ test('Accept the project as a trusted one', async function (): Promise<void> {
81
+ await projectAndFileTests.performTrustAuthorDialog();
82
+ });
83
+ test('Check the project files was imported', async function (): Promise<void> {
84
+ expect(
85
+ await projectAndFileTests.getProjectTreeItem(projectSection, BASE_TEST_CONSTANTS.TS_SELENIUM_PROJECT_ROOT_FILE_NAME),
86
+ 'Project files were not imported'
87
+ ).not.undefined;
88
+ });
89
+ suiteTeardown('Delete SSH keys', async function (): Promise<void> {
90
+ await dashboard.openDashboard();
91
+ await deleteSshKeys();
92
+ });
93
+ suiteTeardown('Stop and delete the workspace by APII', async function (): Promise<void> {
94
+ await browserTabsUtil.closeAllTabsExceptCurrent();
95
+ await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
96
+ });
97
+ suiteTeardown('Unregister running workspace', function (): void {
98
+ registerRunningWorkspace('');
99
+ });
100
+ });
101
+ });