@eclipse-che/che-e2e 7.120.0-next-176265c → 7.120.0-next-2d52216
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/.claude/settings.local.json +5 -2
- package/.claude/skills/explore-and-generate-tests/SKILL.md +361 -0
- package/.mcp.json +10 -0
- package/configs/inversify.config.ts +2 -0
- package/configs/inversify.types.ts +2 -1
- package/constants/EDITOR_CONSTANTS.ts +120 -0
- package/dist/configs/inversify.config.js +2 -0
- package/dist/configs/inversify.config.js.map +1 -1
- package/dist/configs/inversify.types.js +2 -1
- package/dist/configs/inversify.types.js.map +1 -1
- package/dist/constants/EDITOR_CONSTANTS.js +114 -0
- package/dist/constants/EDITOR_CONSTANTS.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/pageobjects/ide/AiCodeSignInDialog.js +55 -0
- package/dist/pageobjects/ide/AiCodeSignInDialog.js.map +1 -0
- package/dist/specs/dashboard-samples/{StartWorkspaceUsingVSCodeDesktopSshEditor.spec.js → StartWorkspaceUsingDesktopEditors.spec.js} +82 -45
- package/dist/specs/dashboard-samples/StartWorkspaceUsingDesktopEditors.spec.js.map +1 -0
- package/dist/tests-library/ProjectAndFileTests.js +21 -2
- package/dist/tests-library/ProjectAndFileTests.js.map +1 -1
- package/index.ts +2 -0
- package/package.json +1 -1
- package/pageobjects/ide/AiCodeSignInDialog.ts +40 -0
- package/specs/dashboard-samples/{StartWorkspaceUsingVSCodeDesktopSshEditor.spec.ts → StartWorkspaceUsingDesktopEditors.spec.ts} +102 -56
- package/tests-library/ProjectAndFileTests.ts +20 -1
- package/dist/specs/dashboard-samples/StartWorkspaceUsingIntellijIdeaEditor.spec.js +0 -127
- package/dist/specs/dashboard-samples/StartWorkspaceUsingIntellijIdeaEditor.spec.js.map +0 -1
- package/dist/specs/dashboard-samples/StartWorkspaceUsingVSCodeDesktopSshEditor.spec.js.map +0 -1
- package/specs/dashboard-samples/StartWorkspaceUsingIntellijIdeaEditor.spec.ts +0 -154
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: explore-and-generate-tests
|
|
3
|
+
description: Explore a web page with new functionality using Playwright, record UI interactions, develop a test plan, and generate E2E Mocha/Selenium test code following the project's code style and patterns.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Explore and Generate E2E Tests
|
|
7
|
+
|
|
8
|
+
You are a Software Quality Engineer exploring new functionality in Eclipse Che / Red Hat OpenShift Dev Spaces. Your job is to explore a web page, record what you find, develop a test plan, and write production-ready E2E test code.
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
|
|
12
|
+
- Playwright MCP server must be configured (see `.mcp.json` in this repo)
|
|
13
|
+
- Read `CODE_STYLE.md` before generating any code
|
|
14
|
+
|
|
15
|
+
## Input Parameters
|
|
16
|
+
|
|
17
|
+
The user provides:
|
|
18
|
+
|
|
19
|
+
- **page** - URL or route to explore (e.g., `/#/create-workspace`, `/#/user-preferences`, a full URL)
|
|
20
|
+
- **scope** - (optional) What to focus on: a specific feature, button, form, or "everything"
|
|
21
|
+
- **test-cases-repo** - (optional) Path to the test-cases repo for generating Polarion test case markdown (default: `/home/ndp/projects/cci/test-cases`)
|
|
22
|
+
|
|
23
|
+
## Workflow
|
|
24
|
+
|
|
25
|
+
### Phase 0: Authenticate
|
|
26
|
+
|
|
27
|
+
Before exploring, ensure you have an authenticated browser session.
|
|
28
|
+
|
|
29
|
+
1. **Determine the target URL:**
|
|
30
|
+
|
|
31
|
+
- If the user provided a full URL, extract the base URL
|
|
32
|
+
- If the user provided only a route (e.g., `/#/create-workspace`), ask for the base URL
|
|
33
|
+
|
|
34
|
+
2. **Ask for credentials** (if not already provided):
|
|
35
|
+
|
|
36
|
+
- Use AskUserQuestion to collect:
|
|
37
|
+
- **URL** (if not provided) — Dev Spaces or Eclipse Che base URL
|
|
38
|
+
- **Platform** — `openshift` or `kubernetes` (auto-detect from URL: `devspaces` in URL → openshift; `che` on localhost/minikube → kubernetes)
|
|
39
|
+
- **Username** — login username
|
|
40
|
+
- **Password** — login password
|
|
41
|
+
- **Identity Provider** — (OpenShift only, default: `htpasswd`)
|
|
42
|
+
|
|
43
|
+
3. **Login via Playwright MCP:**
|
|
44
|
+
|
|
45
|
+
Navigate to the base URL using `browser_navigate`, then take a `browser_snapshot` to see the login page state. The login flow depends on the platform:
|
|
46
|
+
|
|
47
|
+
#### OpenShift (Dev Spaces / Eclipse Che on OpenShift)
|
|
48
|
+
|
|
49
|
+
- Click the identity provider link (e.g., "htpasswd") using `browser_click`
|
|
50
|
+
- Take a `browser_snapshot` to see the login form
|
|
51
|
+
- Type username into the username field using `browser_type`
|
|
52
|
+
- Type password into the password field using `browser_type`
|
|
53
|
+
- Click the "Log in" button using `browser_click`
|
|
54
|
+
- If an authorization page appears ("Allow selected permissions"), click to approve using `browser_click`
|
|
55
|
+
|
|
56
|
+
#### Kubernetes / Minikube (Eclipse Che with Dex)
|
|
57
|
+
|
|
58
|
+
- The login page is a Dex login form — take a `browser_snapshot` to confirm
|
|
59
|
+
- Click "Log in with Email" if multiple login options are shown
|
|
60
|
+
- Type email/username into the email field using `browser_type`
|
|
61
|
+
- Type password into the password field using `browser_type`
|
|
62
|
+
- Click the "Login" button using `browser_click`
|
|
63
|
+
- If a grant access page appears, click "Grant Access" using `browser_click`
|
|
64
|
+
|
|
65
|
+
#### Common post-login steps
|
|
66
|
+
|
|
67
|
+
- Take a `browser_snapshot` to confirm the dashboard loaded successfully
|
|
68
|
+
- If login fails, report the error and stop
|
|
69
|
+
|
|
70
|
+
4. **Set environment context** for later use in generated test code:
|
|
71
|
+
- Remember the base URL as `TS_SELENIUM_BASE_URL`
|
|
72
|
+
- Remember the platform as `TS_PLATFORM` (`openshift` or `kubernetes`)
|
|
73
|
+
- For OpenShift: remember username as `TS_SELENIUM_OCP_USERNAME`, identity provider as `TS_OCP_LOGIN_PAGE_PROVIDER_TITLE`
|
|
74
|
+
- For Kubernetes: remember username as `TS_SELENIUM_K8S_USERNAME`
|
|
75
|
+
|
|
76
|
+
### Phase 1: Explore the Page
|
|
77
|
+
|
|
78
|
+
Use Playwright MCP tools to systematically explore the target page.
|
|
79
|
+
|
|
80
|
+
1. **Navigate** to the target page using `browser_navigate`
|
|
81
|
+
2. **Take a snapshot** using `browser_snapshot` to capture the full accessibility tree
|
|
82
|
+
3. **Identify all interactive elements**: buttons, links, forms, dropdowns, toggles, tabs, modals
|
|
83
|
+
4. **Explore each interactive element**:
|
|
84
|
+
- Click tabs/navigation items to discover sub-pages
|
|
85
|
+
- Open dropdowns to see options
|
|
86
|
+
- Hover over elements to discover tooltips or hidden UI
|
|
87
|
+
- Check for conditional UI (elements that appear/disappear based on state)
|
|
88
|
+
5. **Document the page structure** as you go:
|
|
89
|
+
- Page layout and sections
|
|
90
|
+
- Navigation flows (what leads where)
|
|
91
|
+
- Forms and their fields (required vs optional, validation rules)
|
|
92
|
+
- Action buttons and their effects
|
|
93
|
+
- Error states and edge cases visible in the UI
|
|
94
|
+
|
|
95
|
+
**Important:**
|
|
96
|
+
|
|
97
|
+
- Use `browser_snapshot` (accessibility tree) as the primary exploration method
|
|
98
|
+
- Use `browser_click`, `browser_fill_form`, `browser_hover` to interact with elements
|
|
99
|
+
- Use `browser_wait_for` when pages need time to load
|
|
100
|
+
- Take snapshots AFTER each interaction to see the resulting state
|
|
101
|
+
- Do NOT use screenshots — use snapshots for structured data
|
|
102
|
+
|
|
103
|
+
### Phase 2: Record the Interactions
|
|
104
|
+
|
|
105
|
+
After exploring, produce a structured record of the functionality:
|
|
106
|
+
|
|
107
|
+
```markdown
|
|
108
|
+
## Page: [Page Name]
|
|
109
|
+
|
|
110
|
+
URL: [full URL or route]
|
|
111
|
+
|
|
112
|
+
### UI Elements
|
|
113
|
+
|
|
114
|
+
| Element | Type | Locator Strategy | Behavior |
|
|
115
|
+
| ----------------------- | ---------- | ----------------------------------------------- | ----------------------------- |
|
|
116
|
+
| Create Workspace button | button | By.xpath('//button[text()="Create Workspace"]') | Opens workspace creation form |
|
|
117
|
+
| Git Repo URL input | text input | By.id('git-repo-url') | Accepts git repository URL |
|
|
118
|
+
| ... | ... | ... | ... |
|
|
119
|
+
|
|
120
|
+
### User Workflows
|
|
121
|
+
|
|
122
|
+
1. **[Workflow Name]** (e.g., "Create workspace from git repo")
|
|
123
|
+
|
|
124
|
+
- Step 1: [action] → [expected result]
|
|
125
|
+
- Step 2: [action] → [expected result]
|
|
126
|
+
- ...
|
|
127
|
+
|
|
128
|
+
2. **[Workflow Name]** (e.g., "Cancel workspace creation")
|
|
129
|
+
- Step 1: ...
|
|
130
|
+
|
|
131
|
+
### Edge Cases & Error States
|
|
132
|
+
|
|
133
|
+
- [What happens when invalid input is provided]
|
|
134
|
+
- [What happens when network is slow]
|
|
135
|
+
- [Empty states, loading states]
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Phase 3: Develop Test Plan
|
|
139
|
+
|
|
140
|
+
Based on the recorded interactions, create a comprehensive test plan:
|
|
141
|
+
|
|
142
|
+
1. **Categorize test scenarios** by priority:
|
|
143
|
+
|
|
144
|
+
- **P1 (High)**: Core happy-path workflows that must work
|
|
145
|
+
- **P2 (Medium)**: Alternative flows, input validation, error handling
|
|
146
|
+
- **P3 (Low)**: Edge cases, cosmetic checks, accessibility
|
|
147
|
+
|
|
148
|
+
2. **Define test cases** using this structure:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
Test ID: [CATEGORY_LETTER][NUMBER]
|
|
152
|
+
Title: [descriptive title]
|
|
153
|
+
Type: positive | negative
|
|
154
|
+
Priority: high | medium | low
|
|
155
|
+
Preconditions: [what must be true before the test]
|
|
156
|
+
Steps:
|
|
157
|
+
1. [action] → Expected: [result]
|
|
158
|
+
2. [action] → Expected: [result]
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
3. **Group tests into suites** by feature area or workflow
|
|
162
|
+
|
|
163
|
+
4. **Present the test plan to the user** and ask for approval before proceeding to code generation. The user may want to:
|
|
164
|
+
- Add or remove test cases
|
|
165
|
+
- Change priorities
|
|
166
|
+
- Modify the scope
|
|
167
|
+
- Split into multiple specs
|
|
168
|
+
|
|
169
|
+
### Phase 4: Generate E2E Test Code
|
|
170
|
+
|
|
171
|
+
After the user approves the test plan, generate production-ready test code.
|
|
172
|
+
|
|
173
|
+
#### Step 4.1: Read Required Reference Files
|
|
174
|
+
|
|
175
|
+
Before writing any code, read these files to understand current patterns:
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
CODE_STYLE.md # Coding standards
|
|
179
|
+
configs/inversify.types.ts # Existing class registry
|
|
180
|
+
configs/inversify.config.ts # Existing DI bindings
|
|
181
|
+
constants/TIMEOUT_CONSTANTS.ts # Available timeout constants
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Also read 1-2 existing specs and page objects similar to what you're generating, to match the exact style.
|
|
185
|
+
|
|
186
|
+
#### Step 4.2: Generate Page Objects (if needed)
|
|
187
|
+
|
|
188
|
+
For each new page or component that needs interaction, create a page object:
|
|
189
|
+
|
|
190
|
+
**File:** `pageobjects/<category>/NewPage.ts`
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
/** *******************************************************************
|
|
194
|
+
* copyright (c) 2026 Red Hat, Inc.
|
|
195
|
+
*
|
|
196
|
+
* This program and the accompanying materials are made
|
|
197
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
198
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
199
|
+
*
|
|
200
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
201
|
+
**********************************************************************/
|
|
202
|
+
|
|
203
|
+
import { inject, injectable } from 'inversify';
|
|
204
|
+
import 'reflect-metadata';
|
|
205
|
+
import { By } from 'selenium-webdriver';
|
|
206
|
+
import { CLASSES } from '../../configs/inversify.types';
|
|
207
|
+
import { DriverHelper } from '../../utils/DriverHelper';
|
|
208
|
+
import { Logger } from '../../utils/Logger';
|
|
209
|
+
import { TIMEOUT_CONSTANTS } from '../../constants/TIMEOUT_CONSTANTS';
|
|
210
|
+
|
|
211
|
+
@injectable()
|
|
212
|
+
export class NewPage {
|
|
213
|
+
private static readonly ELEMENT_LOCATOR: By = By.xpath('//...');
|
|
214
|
+
|
|
215
|
+
constructor(@inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper) {}
|
|
216
|
+
|
|
217
|
+
async waitPage(timeout: number = TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT): Promise<void> {
|
|
218
|
+
Logger.debug();
|
|
219
|
+
await this.driverHelper.waitVisibility(NewPage.ELEMENT_LOCATOR, timeout);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
private getDynamicLocator(name: string): By {
|
|
223
|
+
return By.xpath(`//div[text()="${name}"]`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
**Rules for page objects:**
|
|
229
|
+
|
|
230
|
+
- `@injectable()` decorator on the class
|
|
231
|
+
- `Logger.debug()` at the start of every public method
|
|
232
|
+
- Static locators as `private static readonly NAME: By`
|
|
233
|
+
- Dynamic locators as `private` methods returning `By`
|
|
234
|
+
- Constructor injection with `@inject()` decorators
|
|
235
|
+
- Explicit return types on ALL methods
|
|
236
|
+
- NO `public` keyword on public methods
|
|
237
|
+
- Use XPath as primary locator strategy (matching existing patterns)
|
|
238
|
+
- Use timeout constants from `TIMEOUT_CONSTANTS`, not hardcoded values
|
|
239
|
+
|
|
240
|
+
#### Step 4.3: Generate Test Spec
|
|
241
|
+
|
|
242
|
+
**File:** `specs/<category>/NewFeature.spec.ts`
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
/** *******************************************************************
|
|
246
|
+
* copyright (c) 2026 Red Hat, Inc.
|
|
247
|
+
*
|
|
248
|
+
* This program and the accompanying materials are made
|
|
249
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
250
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
251
|
+
*
|
|
252
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
253
|
+
**********************************************************************/
|
|
254
|
+
|
|
255
|
+
import { e2eContainer } from '../../configs/inversify.config';
|
|
256
|
+
import { CLASSES, TYPES } from '../../configs/inversify.types';
|
|
257
|
+
import { LoginTests } from '../../tests-library/LoginTests';
|
|
258
|
+
import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
|
|
259
|
+
import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
|
|
260
|
+
// ... other imports
|
|
261
|
+
|
|
262
|
+
suite(`New Feature ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function (): void {
|
|
263
|
+
const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
|
|
264
|
+
// ... other DI injections
|
|
265
|
+
|
|
266
|
+
suiteSetup('Login', async function (): Promise<void> {
|
|
267
|
+
await loginTests.loginIntoChe();
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
test('Test case description', async function (): Promise<void> {
|
|
271
|
+
// test implementation
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
suiteTeardown('Cleanup', async function (): Promise<void> {
|
|
275
|
+
// cleanup code
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
**Rules for test specs:**
|
|
281
|
+
|
|
282
|
+
- Mocha TDD style: `suite()`, `test()`, `suiteSetup()`, `suiteTeardown()`
|
|
283
|
+
- NEVER use arrow functions in Mocha declarations
|
|
284
|
+
- Get DI instances inside `suite()` function body
|
|
285
|
+
- Always include login in `suiteSetup`
|
|
286
|
+
- Always include cleanup in `suiteTeardown`
|
|
287
|
+
- Use `function (): void` (not arrow functions) for all callbacks
|
|
288
|
+
|
|
289
|
+
#### Step 4.4: Register New Components
|
|
290
|
+
|
|
291
|
+
If you created new page objects, update:
|
|
292
|
+
|
|
293
|
+
1. **`configs/inversify.types.ts`** - Add class name to `CLASSES` object
|
|
294
|
+
2. **`configs/inversify.config.ts`** - Add import and `e2eContainer.bind<>()` call
|
|
295
|
+
|
|
296
|
+
#### Step 4.5: Generate Polarion Test Case Markdown (optional)
|
|
297
|
+
|
|
298
|
+
If the user wants test cases synced to Polarion, also generate markdown files in the test-cases repo:
|
|
299
|
+
|
|
300
|
+
**File:** `<test-cases-repo>/tests/<functional|operational>/<category>/<id>-<title>.md`
|
|
301
|
+
|
|
302
|
+
```yaml
|
|
303
|
+
---
|
|
304
|
+
arch:
|
|
305
|
+
- value: x86_64
|
|
306
|
+
assignee: <ask user>
|
|
307
|
+
caseposneg: positive | negative
|
|
308
|
+
caseautomation: automated
|
|
309
|
+
caseimportance: high | medium | low
|
|
310
|
+
customerscenario: false
|
|
311
|
+
estimate: 1h
|
|
312
|
+
---
|
|
313
|
+
# <ID> - <Test Title>
|
|
314
|
+
|
|
315
|
+
## Description
|
|
316
|
+
- Test script: <link to the generated spec file in GitHub>
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Use the test-cases repo's `npm run rename` to validate filenames after generating.
|
|
320
|
+
|
|
321
|
+
### Phase 5: Validate
|
|
322
|
+
|
|
323
|
+
After generating all code:
|
|
324
|
+
|
|
325
|
+
1. **Run TypeScript compilation**: `npm run tsc` to catch type errors
|
|
326
|
+
2. **Run linter**: `npm run lint` to catch style violations
|
|
327
|
+
3. **Run prettier**: `npm run prettier` to fix formatting
|
|
328
|
+
4. **Review the generated code** against `CODE_STYLE.md` rules
|
|
329
|
+
5. **Present a summary** to the user:
|
|
330
|
+
- List of files created/modified
|
|
331
|
+
- Test cases and their priorities
|
|
332
|
+
- Any manual steps needed (e.g., running the tests, updating Polarion)
|
|
333
|
+
|
|
334
|
+
## Locator Strategy Guide
|
|
335
|
+
|
|
336
|
+
When translating Playwright MCP snapshot elements to Selenium locators:
|
|
337
|
+
|
|
338
|
+
| Playwright Snapshot | Selenium Locator |
|
|
339
|
+
| ------------------------------ | --------------------------------------------------------- |
|
|
340
|
+
| `role="button" name="Create"` | `By.xpath('//button[text()="Create"]')` |
|
|
341
|
+
| `role="textbox" name="URL"` | `By.xpath('//input[@aria-label="URL"]')` |
|
|
342
|
+
| `role="link" name="Settings"` | `By.xpath('//a[text()="Settings"]')` |
|
|
343
|
+
| `role="tab" name="Git Repo"` | `By.xpath('//button[@role="tab" and text()="Git Repo"]')` |
|
|
344
|
+
| `data-testid="workspace-name"` | `By.css('[data-testid="workspace-name"]')` |
|
|
345
|
+
| `id="input-field"` | `By.id('input-field')` |
|
|
346
|
+
|
|
347
|
+
**Prefer this locator priority:**
|
|
348
|
+
|
|
349
|
+
1. `data-testid` attributes (most stable)
|
|
350
|
+
2. `id` attributes
|
|
351
|
+
3. XPath with text content (for buttons, links)
|
|
352
|
+
4. XPath with `aria-label` (for inputs, form fields)
|
|
353
|
+
5. XPath with structural path (last resort — fragile)
|
|
354
|
+
|
|
355
|
+
## Example Invocations
|
|
356
|
+
|
|
357
|
+
```
|
|
358
|
+
explore and generate tests for /#/create-workspace
|
|
359
|
+
explore /#/user-preferences and write E2E tests for the settings page
|
|
360
|
+
generate tests for the new workspace sharing feature at /#/workspaces
|
|
361
|
+
```
|
package/.mcp.json
ADDED
|
@@ -62,6 +62,7 @@ import { ExplorerView } from '../pageobjects/ide/ExplorerView';
|
|
|
62
62
|
import { NotificationHandler } from '../pageobjects/ide/NotificationHandler';
|
|
63
63
|
import { SourceControlView } from '../pageobjects/ide/SourceControlView';
|
|
64
64
|
import { GitHubExtensionDialog } from '../pageobjects/ide/GitHubExtensionDialog';
|
|
65
|
+
import { AiCodeSignInDialog } from '../pageobjects/ide/AiCodeSignInDialog';
|
|
65
66
|
|
|
66
67
|
const e2eContainer: Container = new Container({ defaultScope: 'Transient', skipBaseClassChecks: true });
|
|
67
68
|
|
|
@@ -109,6 +110,7 @@ e2eContainer.bind<ExplorerView>(CLASSES.ExplorerView).to(ExplorerView);
|
|
|
109
110
|
e2eContainer.bind<NotificationHandler>(CLASSES.NotificationHandler).to(NotificationHandler);
|
|
110
111
|
e2eContainer.bind<SourceControlView>(CLASSES.SourceControlView).to(SourceControlView);
|
|
111
112
|
e2eContainer.bind<GitHubExtensionDialog>(CLASSES.GitHubExtensionDialog).to(GitHubExtensionDialog);
|
|
113
|
+
e2eContainer.bind<AiCodeSignInDialog>(CLASSES.AiCodeSignInDialog).to(AiCodeSignInDialog);
|
|
112
114
|
|
|
113
115
|
if (BASE_TEST_CONSTANTS.TS_PLATFORM === Platform.OPENSHIFT) {
|
|
114
116
|
if (OAUTH_CONSTANTS.TS_SELENIUM_VALUE_OPENSHIFT_OAUTH) {
|
|
@@ -59,7 +59,8 @@ const CLASSES: any = {
|
|
|
59
59
|
ExplorerView: 'ExplorerView',
|
|
60
60
|
NotificationHandler: 'NotificationHandler',
|
|
61
61
|
SourceControlView: 'SourceControlView',
|
|
62
|
-
GitHubExtensionDialog: 'GitHubExtensionDialog'
|
|
62
|
+
GitHubExtensionDialog: 'GitHubExtensionDialog',
|
|
63
|
+
AiCodeSignInDialog: 'AiCodeSignInDialog'
|
|
63
64
|
};
|
|
64
65
|
|
|
65
66
|
const EXTERNAL_CLASSES: any = {
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 2026 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
|
+
export type EditorType = 'vscode' | 'intellij';
|
|
12
|
+
|
|
13
|
+
export interface EditorConfig {
|
|
14
|
+
readonly environmentId: string;
|
|
15
|
+
readonly xpath: string;
|
|
16
|
+
readonly name: string;
|
|
17
|
+
readonly type: EditorType;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const ALL_EDITORS: Map<string, EditorConfig> = new Map([
|
|
21
|
+
[
|
|
22
|
+
'VSCODE_DESKTOP_SSH_EDITOR',
|
|
23
|
+
{
|
|
24
|
+
environmentId: 'VSCODE_DESKTOP_SSH_EDITOR',
|
|
25
|
+
xpath: '//*[@id="editor-selector-card-che-incubator/che-code-sshd/latest"]',
|
|
26
|
+
name: 'VSCode Desktop SSH',
|
|
27
|
+
type: 'vscode'
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
[
|
|
31
|
+
'CLION_EDITOR',
|
|
32
|
+
{
|
|
33
|
+
environmentId: 'CLION_EDITOR',
|
|
34
|
+
xpath: '//*[@id="editor-selector-card-che-incubator/che-clion-server/latest"]',
|
|
35
|
+
name: 'CLion',
|
|
36
|
+
type: 'intellij'
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
'GOLAND_EDITOR',
|
|
41
|
+
{
|
|
42
|
+
environmentId: 'GOLAND_EDITOR',
|
|
43
|
+
xpath: '//*[@id="editor-selector-card-che-incubator/che-goland-server/latest"]',
|
|
44
|
+
name: 'GoLand',
|
|
45
|
+
type: 'intellij'
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
[
|
|
49
|
+
'INTELLIJ_IDEA_EDITOR',
|
|
50
|
+
{
|
|
51
|
+
environmentId: 'INTELLIJ_IDEA_EDITOR',
|
|
52
|
+
xpath: '//*[@id="editor-selector-card-che-incubator/che-idea-server/latest"]',
|
|
53
|
+
name: 'IntelliJ IDEA',
|
|
54
|
+
type: 'intellij'
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
[
|
|
58
|
+
'PHPSTORM_EDITOR',
|
|
59
|
+
{
|
|
60
|
+
environmentId: 'PHPSTORM_EDITOR',
|
|
61
|
+
xpath: '//*[@id="editor-selector-card-che-incubator/che-phpstorm-server/latest"]',
|
|
62
|
+
name: 'PhpStorm',
|
|
63
|
+
type: 'intellij'
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
[
|
|
67
|
+
'PYCHARM_EDITOR',
|
|
68
|
+
{
|
|
69
|
+
environmentId: 'PYCHARM_EDITOR',
|
|
70
|
+
xpath: '//*[@id="editor-selector-card-che-incubator/che-pycharm-server/latest"]',
|
|
71
|
+
name: 'PyCharm',
|
|
72
|
+
type: 'intellij'
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
[
|
|
76
|
+
'RIDER_EDITOR',
|
|
77
|
+
{
|
|
78
|
+
environmentId: 'RIDER_EDITOR',
|
|
79
|
+
xpath: '//*[@id="editor-selector-card-che-incubator/che-rider-server/latest"]',
|
|
80
|
+
name: 'Rider',
|
|
81
|
+
type: 'intellij'
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
[
|
|
85
|
+
'RUBYMINE_EDITOR',
|
|
86
|
+
{
|
|
87
|
+
environmentId: 'RUBYMINE_EDITOR',
|
|
88
|
+
xpath: '//*[@id="editor-selector-card-che-incubator/che-rubymine-server/latest"]',
|
|
89
|
+
name: 'RubyMine',
|
|
90
|
+
type: 'intellij'
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
[
|
|
94
|
+
'WEBSTORM_EDITOR',
|
|
95
|
+
{
|
|
96
|
+
environmentId: 'WEBSTORM_EDITOR',
|
|
97
|
+
xpath: '//*[@id="editor-selector-card-che-incubator/che-webstorm-server/latest"]',
|
|
98
|
+
name: 'WebStorm',
|
|
99
|
+
type: 'intellij'
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
[
|
|
103
|
+
'KIRO_EDITOR',
|
|
104
|
+
{
|
|
105
|
+
environmentId: 'KIRO_EDITOR',
|
|
106
|
+
xpath: '//*[@id="editor-selector-card-che-incubator/che-code-sshd-kiro/latest"]',
|
|
107
|
+
name: 'Kiro',
|
|
108
|
+
type: 'vscode'
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
[
|
|
112
|
+
'JETBRAINS_SSH_EDITOR',
|
|
113
|
+
{
|
|
114
|
+
environmentId: 'JETBRAINS_SSH_EDITOR',
|
|
115
|
+
xpath: '//*[@id="editor-selector-card-che-incubator/jetbrains-sshd/latest"]',
|
|
116
|
+
name: 'JetBrains Toolbox App',
|
|
117
|
+
type: 'intellij'
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
]);
|
|
@@ -59,6 +59,7 @@ const ExplorerView_1 = require("../pageobjects/ide/ExplorerView");
|
|
|
59
59
|
const NotificationHandler_1 = require("../pageobjects/ide/NotificationHandler");
|
|
60
60
|
const SourceControlView_1 = require("../pageobjects/ide/SourceControlView");
|
|
61
61
|
const GitHubExtensionDialog_1 = require("../pageobjects/ide/GitHubExtensionDialog");
|
|
62
|
+
const AiCodeSignInDialog_1 = require("../pageobjects/ide/AiCodeSignInDialog");
|
|
62
63
|
const e2eContainer = new inversify_1.Container({ defaultScope: 'Transient', skipBaseClassChecks: true });
|
|
63
64
|
exports.e2eContainer = e2eContainer;
|
|
64
65
|
e2eContainer.bind(inversify_types_1.TYPES.Driver).to(ChromeDriver_1.ChromeDriver).inSingletonScope();
|
|
@@ -105,6 +106,7 @@ e2eContainer.bind(inversify_types_1.CLASSES.ExplorerView).to(ExplorerView_1.Expl
|
|
|
105
106
|
e2eContainer.bind(inversify_types_1.CLASSES.NotificationHandler).to(NotificationHandler_1.NotificationHandler);
|
|
106
107
|
e2eContainer.bind(inversify_types_1.CLASSES.SourceControlView).to(SourceControlView_1.SourceControlView);
|
|
107
108
|
e2eContainer.bind(inversify_types_1.CLASSES.GitHubExtensionDialog).to(GitHubExtensionDialog_1.GitHubExtensionDialog);
|
|
109
|
+
e2eContainer.bind(inversify_types_1.CLASSES.AiCodeSignInDialog).to(AiCodeSignInDialog_1.AiCodeSignInDialog);
|
|
108
110
|
if (BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TS_PLATFORM === BASE_TEST_CONSTANTS_1.Platform.OPENSHIFT) {
|
|
109
111
|
if (OAUTH_CONSTANTS_1.OAUTH_CONSTANTS.TS_SELENIUM_VALUE_OPENSHIFT_OAUTH) {
|
|
110
112
|
e2eContainer.bind(inversify_types_1.TYPES.CheLogin).to(RegularUserOcpCheLoginPage_1.RegularUserOcpCheLoginPage);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inversify.config.js","sourceRoot":"","sources":["../../configs/inversify.config.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;;AAExE,4BAA0B;AAC1B,yCAAsC;AAEtC,yDAAsD;AACtD,uDAAqE;AACrE,4EAAyE;AAEzE,sFAAmF;AAEnF,0GAAuG;AACvG,wDAAqD;AACrD,kEAA+D;AAC/D,oEAAiE;AACjE,kGAA+F;AAC/F,0DAAuD;AACvD,8EAA2E;AAE3E,qIAAkI;AAClI,yFAAsF;AACtF,8EAA2E;AAC3E,8DAA2D;AAC3D,oFAAiF;AACjF,sEAAmE;AAEnE,8EAA2E;AAC3E,4DAAyD;AACzD,oFAAiF;AACjF,0FAAuF;AACvF,sEAAmE;AACnE,wFAAqF;AACrF,oFAAiF;AACjF,oDAAiD;AACjD,6FAA0F;AAC1F,+EAA4E;AAC5E,kEAA+D;AAC/D,0EAAiF;AACjF,kFAA+E;AAC/E,oEAAwE;AACxE,sEAAmE;AACnE,4DAAyD;AACzD,2EAAqF;AACrF,oGAAoH;AACpH,0DAAuD;AACvD,8EAA2E;AAC3E,gFAA6E;AAC7E,gFAA6E;AAC7E,sFAAmF;AACnF,kFAA+E;AAC/E,sEAAmE;AACnE,sEAAmE;AACnE,kEAA+D;AAC/D,gFAA6E;AAC7E,4EAAyE;AACzE,oFAAiF;
|
|
1
|
+
{"version":3,"file":"inversify.config.js","sourceRoot":"","sources":["../../configs/inversify.config.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,7 +61,8 @@ const CLASSES = {
|
|
|
61
61
|
ExplorerView: 'ExplorerView',
|
|
62
62
|
NotificationHandler: 'NotificationHandler',
|
|
63
63
|
SourceControlView: 'SourceControlView',
|
|
64
|
-
GitHubExtensionDialog: 'GitHubExtensionDialog'
|
|
64
|
+
GitHubExtensionDialog: 'GitHubExtensionDialog',
|
|
65
|
+
AiCodeSignInDialog: 'AiCodeSignInDialog'
|
|
65
66
|
};
|
|
66
67
|
exports.CLASSES = CLASSES;
|
|
67
68
|
const EXTERNAL_CLASSES = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inversify.types.js","sourceRoot":"","sources":["../../configs/inversify.types.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;;AAExE,MAAM,KAAK,GAAQ;IAClB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IAC1C,2BAA2B,EAAE,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC;IACtE,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IAC1C,mCAAmC,EAAE,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC;IACtF,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;CAC5C,CAAC;
|
|
1
|
+
{"version":3,"file":"inversify.types.js","sourceRoot":"","sources":["../../configs/inversify.types.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;;AAExE,MAAM,KAAK,GAAQ;IAClB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IAC1C,2BAA2B,EAAE,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC;IACtE,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IAC1C,mCAAmC,EAAE,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC;IACtF,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;CAC5C,CAAC;AAmDO,sBAAK;AAjDd,MAAM,OAAO,GAAQ;IACpB,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAC5B,oBAAoB,EAAE,sBAAsB;IAC5C,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,mBAAmB,EAAE,qBAAqB;IAC1C,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,gBAAgB;IAChC,UAAU,EAAE,YAAY;IACxB,sBAAsB,EAAE,wBAAwB;IAChD,eAAe,EAAE,iBAAiB;IAClC,mBAAmB,EAAE,qBAAqB;IAC1C,YAAY,EAAE,cAAc;IAC5B,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,WAAW,EAAE,aAAa;IAC1B,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,WAAW;IACtB,sBAAsB,EAAE,wBAAwB;IAChD,kCAAkC,EAAE,oCAAoC;IACxE,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,sBAAsB,EAAE,wBAAwB;IAChD,oBAAoB,EAAE,sBAAsB;IAC5C,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;CACxC,CAAC;AAOc,0BAAO;AALvB,MAAM,gBAAgB,GAAQ;IAC7B,SAAS,EAAE,WAAW;IACtB,aAAa,EAAE,eAAe;CAC9B,CAAC;AAEuB,4CAAgB"}
|