@eclipse-che/che-e2e 7.56.1-dev-bc892b9 → 7.56.1-dev-6dff8fe

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 (108) hide show
  1. package/TestConstants.ts +12 -7
  2. package/build/dockerfiles/Dockerfile +4 -3
  3. package/dist/TestConstants.js +6 -2
  4. package/dist/TestConstants.js.map +1 -1
  5. package/dist/driver/CheReporter.js +10 -31
  6. package/dist/driver/CheReporter.js.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/inversify.config.js +3 -0
  10. package/dist/inversify.config.js.map +1 -1
  11. package/dist/inversify.types.js +1 -0
  12. package/dist/inversify.types.js.map +1 -1
  13. package/dist/pageobjects/dashboard/CreateWorkspace.js +36 -2
  14. package/dist/pageobjects/dashboard/CreateWorkspace.js.map +1 -1
  15. package/dist/pageobjects/dashboard/Workspaces.js +10 -2
  16. package/dist/pageobjects/dashboard/Workspaces.js.map +1 -1
  17. package/dist/pageobjects/ide/theia/Ide.js +1 -1
  18. package/dist/pageobjects/ide/theia/Ide.js.map +1 -1
  19. package/dist/tests/MochaHooks.js +75 -0
  20. package/dist/tests/MochaHooks.js.map +1 -0
  21. package/dist/tests/devfiles/che-code/EmptyWorkspace.spec.js +11 -24
  22. package/dist/tests/devfiles/che-code/EmptyWorkspace.spec.js.map +1 -1
  23. package/dist/tests/devfiles/theia/DotNetCore.spec.js.map +1 -1
  24. package/dist/tests/devfiles/theia/JavaMaven.spec.js.map +1 -1
  25. package/dist/tests/e2e/theia/FactoryUrl.spec.js.map +1 -1
  26. package/dist/tests/e2e/theia/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.js.map +1 -1
  27. package/dist/tests/e2e/theia/factories/DirectUrlFactoryWithRootFolderTest.spec.js.map +1 -1
  28. package/dist/tests/e2e/theia/factories/DirectUrlFactoryWithSpecificBranchTest.spec.js.map +1 -1
  29. package/dist/tests/e2e_happy_path/theia/DevWorkspaceHappyPath.spec.js +2 -2
  30. package/dist/tests/e2e_happy_path/theia/DevWorkspaceHappyPath.spec.js.map +1 -1
  31. package/dist/tests/e2e_happy_path/theia/HappyPath.spec.js +1 -1
  32. package/dist/tests/e2e_happy_path/theia/HappyPath.spec.js.map +1 -1
  33. package/dist/testsLibrary/WorkspaceHandlingTests.js +29 -19
  34. package/dist/testsLibrary/WorkspaceHandlingTests.js.map +1 -1
  35. package/dist/testsLibrary/che-code/ProjectAndFileTestsCheCode.js +54 -0
  36. package/dist/testsLibrary/che-code/ProjectAndFileTestsCheCode.js.map +1 -0
  37. package/dist/testsLibrary/theia/LanguageServerTestsTheia.js.map +1 -1
  38. package/dist/testsLibrary/theia/ProjectAndFileTestsTheia.js.map +1 -1
  39. package/dist/utils/DriverHelper.js +0 -3
  40. package/dist/utils/DriverHelper.js.map +1 -1
  41. package/dist/utils/VCS/github/GitHubUtil.js +2 -2
  42. package/dist/utils/VCS/github/GitHubUtil.js.map +1 -1
  43. package/driver/CheReporter.ts +9 -32
  44. package/index.ts +1 -0
  45. package/inversify.config.ts +3 -0
  46. package/inversify.types.ts +1 -0
  47. package/mocha-all-devfiles-che-code.json +12 -0
  48. package/mocha-all-devfiles-theia.json +13 -10
  49. package/mocha-all-factories-che-code.json +14 -0
  50. package/mocha-all-factories-theia.json +14 -11
  51. package/mocha-all-plugins-che-code.json +13 -0
  52. package/mocha-all-plugins-theia.json +13 -10
  53. package/mocha-che-code.json +12 -0
  54. package/mocha-connector-theia.json +10 -7
  55. package/mocha-devworkspace-happy-path-che-code.json +13 -0
  56. package/mocha-devworkspace-happy-path-theia.json +12 -9
  57. package/mocha-factory-che-code.json +13 -0
  58. package/mocha-factory-theia.json +12 -9
  59. package/mocha-git-publish-branch-theia.json +12 -9
  60. package/mocha-git-self-sign-cert-theia.json +12 -9
  61. package/mocha-git-ssh-theia.json +12 -9
  62. package/mocha-happy-path-che-code.json +14 -0
  63. package/mocha-happy-path-theia.json +13 -10
  64. package/mocha-java-maven.json +11 -7
  65. package/mocha-java-springboot-che-code.json +12 -0
  66. package/mocha-java-springboot-theia.json +11 -7
  67. package/mocha-java-vertx-che-code.json +12 -0
  68. package/mocha-java-vertx-theia.json +11 -7
  69. package/mocha-load-theia.json +10 -7
  70. package/mocha-scala.json +11 -7
  71. package/mocha-single-devfile.json +9 -6
  72. package/mocha-theia.json +10 -6
  73. package/mocha-ws-creation-and-ls-theia.json +10 -7
  74. package/mocha.intelij.json +11 -7
  75. package/mocha.ocp.link.json +9 -6
  76. package/mocha.single.plugin.json +6 -5
  77. package/package.json +11 -11
  78. package/pageobjects/dashboard/CreateWorkspace.ts +49 -7
  79. package/pageobjects/dashboard/Workspaces.ts +10 -4
  80. package/pageobjects/ide/theia/Ide.ts +1 -1
  81. package/pageobjects/ide/theia/OpenEditors.ts +1 -1
  82. package/tests/MochaHooks.ts +57 -0
  83. package/tests/devfiles/che-code/EmptyWorkspace.spec.ts +14 -24
  84. package/tests/devfiles/theia/DotNetCore.spec.ts +1 -1
  85. package/tests/devfiles/theia/JavaMaven.spec.ts +1 -1
  86. package/tests/e2e/theia/FactoryUrl.spec.ts +1 -1
  87. package/tests/e2e/theia/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.ts +1 -1
  88. package/tests/e2e/theia/factories/DirectUrlFactoryWithRootFolderTest.spec.ts +1 -1
  89. package/tests/e2e/theia/factories/DirectUrlFactoryWithSpecificBranchTest.spec.ts +1 -1
  90. package/tests/e2e_happy_path/theia/DevWorkspaceHappyPath.spec.ts +3 -3
  91. package/tests/e2e_happy_path/theia/HappyPath.spec.ts +1 -1
  92. package/testsLibrary/WorkspaceHandlingTests.ts +48 -41
  93. package/testsLibrary/che-code/ProjectAndFileTestsCheCode.ts +34 -0
  94. package/testsLibrary/theia/LanguageServerTestsTheia.ts +2 -2
  95. package/testsLibrary/theia/ProjectAndFileTestsTheia.ts +2 -2
  96. package/tslint.json +29 -30
  97. package/utils/DriverHelper.ts +0 -4
  98. package/utils/VCS/github/GitHubUtil.ts +2 -2
  99. package/utils/workspace/ApiUrlResolver.ts +1 -1
  100. package/utils/workspace/ITestWorkspaceUtil.ts +12 -12
  101. package/mocha-all-factories-code.json +0 -11
  102. package/mocha-all-plugins-code.json +0 -10
  103. package/mocha-code.json +0 -8
  104. package/mocha-devworkspace-happy-path-code.json +0 -10
  105. package/mocha-factory-code.json +0 -10
  106. package/mocha-happy-path-code.json +0 -11
  107. package/mocha-java-springboot-code.json +0 -9
  108. package/mocha-java-vertx-code.json +0 -9
@@ -1,9 +1,13 @@
1
1
  {
2
- "timeout": "1200000",
3
- "reporter": "dist/driver/CheReporter.js",
4
- "ui": "tdd",
5
- "bail": true,
6
- "full-trace": true,
7
- "support": "source-map-support/register",
8
- "spec": ["dist/tests/login/Login.spec.js", "dist/tests/devfiles/JavaMaven.spec.js"]
2
+ "timeout": "1200000",
3
+ "reporter": "dist/driver/CheReporter.js",
4
+ "require": "./dist/tests/MochaHooks.js",
5
+ "ui": "tdd",
6
+ "bail": true,
7
+ "full-trace": true,
8
+ "support": "source-map-support/register",
9
+ "spec": [
10
+ "dist/tests/login/Login.spec.js",
11
+ "dist/tests/devfiles/JavaMaven.spec.js"
12
+ ]
9
13
  }
@@ -0,0 +1,12 @@
1
+ {
2
+ "timeout": "1200000",
3
+ "require": "./dist/tests/MochaHooks.js",
4
+ "reporter": "dist/driver/CheReporter.js",
5
+ "ui": "tdd",
6
+ "bail": true,
7
+ "full-trace": true,
8
+ "support": "source-map-support/register",
9
+ "spec": [
10
+ "dist/tests/login/Login.spec.js"
11
+ ]
12
+ }
@@ -1,9 +1,13 @@
1
1
  {
2
- "timeout": "1200000",
3
- "reporter": "dist/driver/CheReporter.js",
4
- "ui": "tdd",
5
- "bail": true,
6
- "full-trace": true,
7
- "support": "source-map-support/register",
8
- "spec": ["dist/tests/login/Login.spec.js", "dist/tests/devfiles/theia/JavaSpringBoot.spec.js"]
2
+ "timeout": "1200000",
3
+ "require": "./dist/tests/MochaHooks.js",
4
+ "reporter": "dist/driver/CheReporter.js",
5
+ "ui": "tdd",
6
+ "bail": true,
7
+ "full-trace": true,
8
+ "support": "source-map-support/register",
9
+ "spec": [
10
+ "dist/tests/login/Login.spec.js",
11
+ "dist/tests/devfiles/theia/JavaSpringBoot.spec.js"
12
+ ]
9
13
  }
@@ -0,0 +1,12 @@
1
+ {
2
+ "timeout": "1200000",
3
+ "require": "./dist/tests/MochaHooks.js",
4
+ "reporter": "dist/driver/CheReporter.js",
5
+ "ui": "tdd",
6
+ "bail": true,
7
+ "full-trace": true,
8
+ "support": "source-map-support/register",
9
+ "spec": [
10
+ "dist/tests/login/Login.spec.js"
11
+ ]
12
+ }
@@ -1,9 +1,13 @@
1
1
  {
2
- "timeout": "1200000",
3
- "reporter": "dist/driver/CheReporter.js",
4
- "ui": "tdd",
5
- "bail": true,
6
- "full-trace": true,
7
- "support": "source-map-support/register",
8
- "spec": ["dist/tests/login/Login.spec.js", "dist/tests/devfiles/theia/JavaVertx.spec.js"]
2
+ "timeout": "1200000",
3
+ "require": "./dist/tests/MochaHooks.js",
4
+ "reporter": "dist/driver/CheReporter.js",
5
+ "ui": "tdd",
6
+ "bail": true,
7
+ "full-trace": true,
8
+ "support": "source-map-support/register",
9
+ "spec": [
10
+ "dist/tests/login/Login.spec.js",
11
+ "dist/tests/devfiles/theia/JavaVertx.spec.js"
12
+ ]
9
13
  }
@@ -1,9 +1,12 @@
1
1
  {
2
- "timeout": "1200000",
3
- "reporter": "dist/driver/CheReporter.js",
4
- "ui": "tdd",
5
- "bail": true,
6
- "full-trace": true,
7
- "support": "source-map-support/register",
8
- "spec": ["dist/tests/load_test/theia/LoadTest.spec.js"]
2
+ "timeout": "1200000",
3
+ "require": "./dist/tests/MochaHooks.js",
4
+ "reporter": "dist/driver/CheReporter.js",
5
+ "ui": "tdd",
6
+ "bail": true,
7
+ "full-trace": true,
8
+ "support": "source-map-support/register",
9
+ "spec": [
10
+ "dist/tests/load_test/theia/LoadTest.spec.js"
11
+ ]
9
12
  }
package/mocha-scala.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
- "timeout": "1200000",
3
- "reporter": "dist/driver/CheReporter.js",
4
- "ui": "tdd",
5
- "bail": true,
6
- "full-trace": true,
7
- "support": "source-map-support/register",
8
- "spec": ["dist/tests/login/Login.spec.js", "dist/tests/devfiles/Scala.spec.js"]
2
+ "timeout": "1200000",
3
+ "require": "./dist/tests/MochaHooks.js",
4
+ "reporter": "dist/driver/CheReporter.js",
5
+ "ui": "tdd",
6
+ "bail": true,
7
+ "full-trace": true,
8
+ "support": "source-map-support/register",
9
+ "spec": [
10
+ "dist/tests/login/Login.spec.js",
11
+ "dist/tests/devfiles/Scala.spec.js"
12
+ ]
9
13
  }
@@ -1,8 +1,11 @@
1
1
  {
2
- "timeout": "2200000",
3
- "reporter": "dist/driver/CheReporter.js",
4
- "ui": "tdd",
5
- "bail": true,
6
- "full-trace": true,
7
- "require": "source-map-support/register"
2
+ "timeout": "2200000",
3
+ "reporter": "dist/driver/CheReporter.js",
4
+ "ui": "tdd",
5
+ "bail": true,
6
+ "full-trace": true,
7
+ "require": [
8
+ "source-map-support/register",
9
+ "./dist/tests/MochaHooks.js"
10
+ ]
8
11
  }
package/mocha-theia.json CHANGED
@@ -1,8 +1,12 @@
1
1
  {
2
- "timeout": "1200000",
3
- "reporter": "dist/driver/CheReporter.js",
4
- "ui": "tdd",
5
- "bail": true,
6
- "full-trace": true,
7
- "spec": ["dist/tests/login/Login.spec.js", "dist/tests/e2e/theia/*.spec.js"]
2
+ "timeout": "1200000",
3
+ "reporter": "dist/driver/CheReporter.js",
4
+ "ui": "tdd",
5
+ "bail": true,
6
+ "full-trace": true,
7
+ "require": "./dist/tests/MochaHooks.js",
8
+ "spec": [
9
+ "dist/tests/login/Login.spec.js",
10
+ "dist/tests/e2e/theia/*.spec.js"
11
+ ]
8
12
  }
@@ -1,9 +1,12 @@
1
1
  {
2
- "timeout": "1200000",
3
- "reporter": "dist/driver/CheReporter.js",
4
- "ui": "tdd",
5
- "bail": true,
6
- "full-trace": true,
7
- "support": "source-map-support/register",
8
- "spec": ["dist/tests/e2e/theia/WorkspaceCreationAndLsInitialization.spec.js"]
2
+ "timeout": "1200000",
3
+ "reporter": "dist/driver/CheReporter.js",
4
+ "require": "./dist/tests/MochaHooks.js",
5
+ "ui": "tdd",
6
+ "bail": true,
7
+ "full-trace": true,
8
+ "support": "source-map-support/register",
9
+ "spec": [
10
+ "dist/tests/e2e/theia/WorkspaceCreationAndLsInitialization.spec.js"
11
+ ]
9
12
  }
@@ -1,9 +1,13 @@
1
1
  {
2
- "timeout": "1200000",
3
- "reporter": "dist/driver/CheReporter.js",
4
- "ui": "tdd",
5
- "bail": true,
6
- "full-trace": true,
7
- "support": "source-map-support/register",
8
- "spec": ["./dist/tests/login/Login.spec.js", "./dist/tests/intelij/IntelijOpenWorkspace.spec.js"]
2
+ "timeout": "1200000",
3
+ "reporter": "dist/driver/CheReporter.js",
4
+ "require": "./dist/tests/MochaHooks.js",
5
+ "ui": "tdd",
6
+ "bail": true,
7
+ "full-trace": true,
8
+ "support": "source-map-support/register",
9
+ "spec": [
10
+ "./dist/tests/login/Login.spec.js",
11
+ "./dist/tests/intelij/IntelijOpenWorkspace.spec.js"
12
+ ]
9
13
  }
@@ -1,8 +1,11 @@
1
1
  {
2
- "timeout": "1200000",
3
- "reporter": "dist/driver/CheReporter.js",
4
- "ui": "tdd",
5
- "bail": true,
6
- "full-trace": true,
7
- "spec": ["./dist/tests/login/LinkCheAndOcpUsers.spec.js"]
2
+ "timeout": "1200000",
3
+ "reporter": "dist/driver/CheReporter.js",
4
+ "require": "./dist/tests/MochaHooks.js",
5
+ "ui": "tdd",
6
+ "bail": true,
7
+ "full-trace": true,
8
+ "spec": [
9
+ "./dist/tests/login/LinkCheAndOcpUsers.spec.js"
10
+ ]
8
11
  }
@@ -1,7 +1,8 @@
1
1
  {
2
- "timeout": "1200000",
3
- "reporter": "dist/driver/CheReporter.js",
4
- "ui": "tdd",
5
- "bail": true,
6
- "full-trace": true
2
+ "timeout": "1200000",
3
+ "reporter": "dist/driver/CheReporter.js",
4
+ "require": "./dist/tests/MochaHooks.js",
5
+ "ui": "tdd",
6
+ "bail": true,
7
+ "full-trace": true
7
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-che/che-e2e",
3
- "version": "7.56.1-dev-bc892b9",
3
+ "version": "7.56.1-dev-6dff8fe",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -29,15 +29,15 @@
29
29
  "test-all-factories-theia": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-all-factories-theia.json",
30
30
  "test-plugin-ci-theia": "export TS_DELETE_PLUGINS_TEST_WORKSPACE=true && npm run init-mocha-opts -- --spec dist/tests/plugins/theia/${USERSTORY}.spec.js",
31
31
  "test-all-plugins-theia": "tsc && mocha --config mocha-all-plugins-theia.json",
32
- "test-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-code.json",
33
- "test-happy-path-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-happy-path-code.json",
34
- "test-devworkspace-happy-path-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-devworkspace-happy-path-code.json",
35
- "test-java-vertx-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-java-vertx-code.json",
36
- "test-java-springboot-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-java-springboot-code.json",
37
- "test-factory-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-factory-code.json",
38
- "test-all-factories-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-all-factories-code.json",
32
+ "test-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-che-code.json",
33
+ "test-happy-path-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-happy-path-che-code.json",
34
+ "test-devworkspace-happy-path-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-devworkspace-happy-path-che-code.json",
35
+ "test-java-vertx-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-java-vertx-che-code.json",
36
+ "test-java-springboot-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-java-springboot-che-code.json",
37
+ "test-factory-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-factory-che-code.json",
38
+ "test-all-factories-code": "./generateIndex.sh && npm run lint && npm run tsc && mocha --config mocha-all-factories-che-code.json",
39
39
  "test-plugin-ci-code": "export TS_DELETE_PLUGINS_TEST_WORKSPACE=true && npm run init-mocha-opts -- --spec dist/tests/plugins/code/${USERSTORY}.spec.js",
40
- "test-all-plugins-code": "tsc && mocha --config mocha-all-plugins-code.json"
40
+ "test-all-plugins-code": "tsc && mocha --config mocha-all-plugins-che-code.json"
41
41
  },
42
42
  "author": "Ihor Okhrimenko (iokhrime@redhat.com)",
43
43
  "license": "ISC",
@@ -49,12 +49,12 @@
49
49
  "@types/selenium-webdriver": "4.1.3",
50
50
  "axios": "^0.25.0",
51
51
  "chai": "4.2.0",
52
- "chromedriver": "^103.0.0",
52
+ "chromedriver": "^107.0.0",
53
53
  "mocha": "^9.1.3",
54
54
  "rimraf": "2.6.2",
55
55
  "selenium-webdriver": "4.4.0",
56
56
  "ts-node": "8.0.3",
57
- "tslint": "5.10.0",
57
+ "tslint": "^6.1.3",
58
58
  "typed-rest-client": "1.8.5",
59
59
  "typescript": "3.9.9",
60
60
  "monaco-page-objects": "3.1.0",
@@ -14,6 +14,7 @@ import { DriverHelper } from '../../utils/DriverHelper';
14
14
  import { By, Key } from 'selenium-webdriver';
15
15
  import { Logger } from '../../utils/Logger';
16
16
  import { TimeoutConstants } from '../../TimeoutConstants';
17
+ import { EditorType, TestConstants } from '../../TestConstants';
17
18
 
18
19
  @injectable()
19
20
  export class CreateWorkspace {
@@ -21,7 +22,7 @@ export class CreateWorkspace {
21
22
 
22
23
  constructor(@inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper) { }
23
24
 
24
- async waitTitleContains(expectedText: string, timeout: number = TimeoutConstants.TS_COMMON_DASHBOARD_WAIT_TIMEOUT) {
25
+ async waitTitleContains(expectedText: string, timeout: number = TimeoutConstants.TS_COMMON_DASHBOARD_WAIT_TIMEOUT): Promise<void> {
25
26
  Logger.debug(`CreateWorkspace.waitTitleContains text: "${expectedText}"`);
26
27
 
27
28
  const pageTitleLocator: By = By.xpath(`//h1[contains(text(), '${expectedText}')]`);
@@ -29,13 +30,13 @@ export class CreateWorkspace {
29
30
  await this.driverHelper.waitVisibility(pageTitleLocator, timeout);
30
31
  }
31
32
 
32
- async waitPage(timeout: number = TimeoutConstants.TS_SELENIUM_LOAD_PAGE_TIMEOUT) {
33
+ async waitPage(timeout: number = TimeoutConstants.TS_SELENIUM_LOAD_PAGE_TIMEOUT): Promise<void> {
33
34
  Logger.debug('CreateWorkspace.waitPage');
34
35
 
35
36
  await this.waitTitleContains('Create Workspace', timeout);
36
37
  }
37
38
 
38
- async waitSample(sampleName: string, timeout: number = TimeoutConstants.TS_COMMON_DASHBOARD_WAIT_TIMEOUT) {
39
+ async waitSample(sampleName: string, timeout: number = TimeoutConstants.TS_COMMON_DASHBOARD_WAIT_TIMEOUT): Promise<void> {
39
40
  Logger.debug(`CreateWorkspace.waitSample sampleName: "${sampleName}"`);
40
41
 
41
42
  const sampleLocator: By = this.getSampleLocator(sampleName);
@@ -43,7 +44,7 @@ export class CreateWorkspace {
43
44
  await this.driverHelper.waitVisibility(sampleLocator, timeout);
44
45
  }
45
46
 
46
- async clickOnSample(sampleName: string, timeout: number = TimeoutConstants.TS_CLICK_DASHBOARD_ITEM_TIMEOUT) {
47
+ async clickOnSampleNoEditorSelection(sampleName: string, timeout: number = TimeoutConstants.TS_CLICK_DASHBOARD_ITEM_TIMEOUT): Promise<void> {
47
48
  Logger.debug(`CreateWorkspace.clickOnSample sampleName: "${sampleName}"`);
48
49
 
49
50
  const sampleLocator: By = this.getSampleLocator(sampleName);
@@ -51,16 +52,57 @@ export class CreateWorkspace {
51
52
  await this.driverHelper.waitAndClick(sampleLocator, timeout);
52
53
  }
53
54
 
54
- async startWorkspaceUsingFactory(factoryUrl: string, timeout: number = TimeoutConstants.TS_CLICK_DASHBOARD_ITEM_TIMEOUT) {
55
+ async startWorkspaceUsingFactory(factoryUrl: string, timeout: number = TimeoutConstants.TS_CLICK_DASHBOARD_ITEM_TIMEOUT): Promise<void> {
55
56
  Logger.debug(`CreateWorkspace.startWorkspaceUsingFactory factoryUrl: "${factoryUrl}"`);
56
57
  await this.driverHelper.waitVisibility(CreateWorkspace.FACTORY_URL_LOCATOR, timeout);
57
58
  await this.driverHelper.type(CreateWorkspace.FACTORY_URL_LOCATOR, Key.chord(factoryUrl, Key.ENTER), timeout);
58
59
  }
59
60
 
61
+ async clickOnSampleForSpecificEditor(sampleName: string, timeout: number = TimeoutConstants.TS_CLICK_DASHBOARD_ITEM_TIMEOUT): Promise<void> {
62
+ await this.clickOnEditorsDropdownListButton(sampleName, timeout);
63
+
64
+ Logger.debug(`CreateWorkspace.clickOnSampleForSpecificEditor sampleName: "${sampleName}"`);
65
+
66
+ const sampleLocator: By = this.getSampleLocatorWithSpecificEditor(sampleName);
67
+ await this.driverHelper.waitAndClick(sampleLocator, timeout);
68
+ }
69
+
70
+ private async clickOnEditorsDropdownListButton(sampleName: string, timeout: number): Promise<void> {
71
+ Logger.debug(`CreateWorkspace.clickOnSample sampleName: "${sampleName}, editor ${TestConstants.TS_SELENIUM_EDITOR}"`);
72
+
73
+ const editorDropdownListLocator: By = this.getEditorsDropdownListLocator(sampleName);
74
+ await this.driverHelper.waitAndClick(editorDropdownListLocator, timeout);
75
+ }
76
+
77
+ private getEditorsDropdownListLocator(sampleName: string): By {
78
+ return By.xpath(`//div[text()=\'${sampleName}\']//parent::article//button`);
79
+ }
80
+
81
+ private getSampleLocatorWithSpecificEditor(sampleName: string): By {
82
+ let editor: string = '';
83
+ switch (TestConstants.TS_SELENIUM_EDITOR) {
84
+ case EditorType.CHE_CODE:
85
+ editor = 'code';
86
+ break;
87
+ case EditorType.THEIA:
88
+ editor = 'theia';
89
+ break;
90
+ default:
91
+ throw new Error(`Unsupported editor ${TestConstants.TS_SELENIUM_EDITOR}`);
92
+ }
93
+
94
+ Logger.trace(`CreateWorkspace.getSampleLocatorWithSpecificEditor sampleName: ${sampleName}, editor "${editor}"`);
95
+
96
+ return By.xpath(`//div[text()='${sampleName}']//parent::article//span[text()[
97
+ contains(
98
+ translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
99
+ '${editor}')]
100
+ ]//parent::a`);
101
+ }
102
+
60
103
  private getSampleLocator(sampleName: string): By {
61
- Logger.trace(`CreateWorkspace.getSampleLocator sampleName: ${sampleName}`);
104
+ Logger.trace(`CreateWorkspace.getSampleLocator sampleName: ${sampleName}, used default editor`);
62
105
 
63
106
  return By.xpath(`//article[contains(@class, 'sample-card')]//div[text()='${sampleName}']`);
64
107
  }
65
-
66
108
  }
@@ -86,12 +86,11 @@ export class Workspaces {
86
86
  Logger.debug(`Workspaces.waitActionsPopup of the '${workspaceName}' list item`);
87
87
 
88
88
  await this.driverHelper.waitVisibility(this.getExpandedActionsLocator(workspaceName), timeout);
89
- await this.driverHelper.wait(5000);
89
+ await this.driverHelper.wait(2000);
90
90
  }
91
91
 
92
92
  async openActionsPopup(workspaceName: string, timeout: number = TimeoutConstants.TS_CONTEXT_MENU_TIMEOUT) {
93
93
  Logger.debug(`Workspaces.openActionsPopup for the '${workspaceName}' list item`);
94
-
95
94
  await this.clickActionsButton(workspaceName);
96
95
  await this.waitActionsPopup(workspaceName, timeout);
97
96
  }
@@ -104,8 +103,15 @@ export class Workspaces {
104
103
 
105
104
  async clickActionsStopWorkspaceButton(workspaceName: string) {
106
105
  Logger.debug(`Workspaces.clickActionsStopWorkspaceButton for the '${workspaceName}' list item`);
107
-
108
- await this.driverHelper.waitAndClick(this.getActionsPopupButtonLocator(workspaceName, 'Stop Workspace'));
106
+ // workaround because of issue CRW-3649
107
+ try {
108
+ await this.driverHelper.waitAndClick(this.getActionsPopupButtonLocator(workspaceName, 'Stop Workspace'));
109
+ } catch (e) {
110
+ Logger.warn(`Workspaces.clickActionsStopWorkspaceButton for the '${workspaceName}' list item - popup was missed, try to click one more time (issue CRW-3649).`);
111
+
112
+ await this.driverHelper.waitAndClick(this.getActionsLocator(workspaceName));
113
+ await this.driverHelper.waitAndClick(this.getActionsPopupButtonLocator(workspaceName, 'Stop Workspace'));
114
+ }
109
115
  }
110
116
 
111
117
  async waitDeleteWorkspaceConfirmationWindow(timeout: number = TimeoutConstants.TS_DASHBOARD_WORKSPACE_STOP_TIMEOUT) {
@@ -52,7 +52,7 @@ export class Ide {
52
52
  } catch (err) {
53
53
  if (err instanceof error.StaleElementReferenceError) {
54
54
  Logger.warn('StaleElementException occurred during waiting for IDE. Sleeping for 2 secs and retrying.');
55
- this.driverHelper.wait(2000);
55
+ await this.driverHelper.wait(2000);
56
56
  try {
57
57
  await this.driverHelper.waitAndSwitchToFrame(By.css(Ide.IDE_IFRAME_CSS), timeout);
58
58
  } catch (err) {
@@ -56,7 +56,7 @@ export class OpenEditors {
56
56
  Logger.trace('OpenEditors.waitAndClickExpansionToggle expansion toggle clicked.');
57
57
  }
58
58
 
59
- async isExpansionToggleCollapsed(timeout: number = TimeoutConstants.TS_OPEN_EDITORS_CLICK_ON_ITEM_TIMEOUT) : Promise<boolean> {
59
+ async isExpansionToggleCollapsed(timeout: number = TimeoutConstants.TS_OPEN_EDITORS_CLICK_ON_ITEM_TIMEOUT): Promise<boolean> {
60
60
  Logger.debug('OpenEditors.isExpansionToggleCollapsed');
61
61
  return await this.driverHelper.waitVisibilityBoolean(OpenEditors.OPEN_EDITORS_EXPANSION_TOGGLE_COLLAPSED_LOCATOR, 1, timeout);
62
62
  }
@@ -0,0 +1,57 @@
1
+ /*********************************************************************
2
+ * Copyright (c) 2023 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 'reflect-metadata';
12
+ import { CLASSES } from '../inversify.types';
13
+ import { EditorType, TestConstants } from '../TestConstants';
14
+ import { AskForConfirmationTypeTheia, PreferencesHandlerTheia, TerminalRendererTypeTheia } from '../utils/theia/PreferencesHandlerTheia';
15
+ import { CheApiRequestHandler } from '../utils/requestHandlers/CheApiRequestHandler';
16
+ import { TimeoutConstants } from '../TimeoutConstants';
17
+ import * as monacoPageObjects from 'monaco-page-objects';
18
+ import * as vscodeExtensionTesterLocators from 'vscode-extension-tester-locators';
19
+ import { e2eContainer } from '../inversify.config';
20
+ import { DriverHelper } from '../utils/DriverHelper';
21
+
22
+ const driverHelper: DriverHelper = e2eContainer.get(CLASSES.DriverHelper);
23
+ const preferencesHandler: PreferencesHandlerTheia = e2eContainer.get(CLASSES.PreferencesHandlerTheia);
24
+
25
+ exports.mochaHooks = {
26
+ beforeAll: [
27
+ async function enableRequestInterceptor() {
28
+ if (TestConstants.TS_SELENIUM_REQUEST_INTERCEPTOR) {
29
+ CheApiRequestHandler.enableRequestInteceptor();
30
+ }
31
+ },
32
+ async function enableResponseInterceptor() {
33
+ if (TestConstants.TS_SELENIUM_RESPONSE_INTERCEPTOR) {
34
+ CheApiRequestHandler.enableResponseInterceptor();
35
+ }
36
+ },
37
+ async function setTheiaSpecificPreferences() {
38
+ if (TestConstants.TS_SELENIUM_EDITOR === EditorType.THEIA) {
39
+ await preferencesHandler.setConfirmExit(AskForConfirmationTypeTheia.never);
40
+ await preferencesHandler.setTerminalType(TerminalRendererTypeTheia.dom);
41
+ }
42
+ },
43
+ async function initMonacoPageObjects() {
44
+ if (TestConstants.TS_SELENIUM_EDITOR === EditorType.CHE_CODE) {
45
+ // init vscode-extension-tester monaco-page-objects
46
+ monacoPageObjects.initPageObjects(TestConstants.TS_SELENIUM_MONACO_PAGE_OBJECTS_USE_VERSION, TestConstants.TS_SELENIUM_MONACO_PAGE_OBJECTS_BASE_VERSION, vscodeExtensionTesterLocators.getLocatorsPath(), driverHelper.getDriver(), 'google-chrome');
47
+ }
48
+ },
49
+ async function prolongTimeoutConstantsInDebugMode() {
50
+ if (TestConstants.TS_DEBUG_MODE === true) {
51
+ for (let [timeout, seconds] of Object.entries(TimeoutConstants)) {
52
+ Object.defineProperty(TimeoutConstants, timeout, {value: seconds * 100});
53
+ }
54
+ }
55
+ },
56
+ ]
57
+ };
@@ -7,19 +7,16 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  **********************************************************************/
10
- import 'reflect-metadata';
11
- import { CLASSES } from '../../../inversify.types';
12
10
  import { e2eContainer } from '../../../inversify.config';
11
+ import { ActivityBar, ViewControl, Workbench } from 'monaco-page-objects';
12
+ import { CLASSES } from '../../../inversify.types';
13
13
  import { WorkspaceHandlingTests } from '../../../testsLibrary/WorkspaceHandlingTests';
14
- import CheReporter from '../../../driver/CheReporter';
15
14
  import { Logger } from '../../../utils/Logger';
16
- import { DriverHelper } from '../../../utils/DriverHelper';
17
- import { By, until } from 'selenium-webdriver';
18
- import { Workbench } from 'monaco-page-objects';
15
+ import CheReporter from '../../../driver/CheReporter';
16
+ import { ProjectAndFileTestsCheCode } from '../../../testsLibrary/che-code/ProjectAndFileTestsCheCode';
19
17
 
20
18
  const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
21
- const driverHelper: DriverHelper = e2eContainer.get(CLASSES.DriverHelper);
22
-
19
+ const projectAndFileTests: ProjectAndFileTestsCheCode = e2eContainer.get(CLASSES.ProjectAndFileTestsCheCode);
23
20
  const stackName: string = 'Empty Workspace';
24
21
 
25
22
  suite(`${stackName} test`, async () => {
@@ -30,28 +27,21 @@ suite(`${stackName} test`, async () => {
30
27
  CheReporter.registerRunningWorkspace(WorkspaceHandlingTests.getWorkspaceName());
31
28
  });
32
29
  test('Wait workspace readiness', async() => {
33
- try {
34
- await driverHelper.getDriver().wait(until.elementLocated(By.className('monaco-workbench')));
35
- } catch (err) {
36
- if ((err as Error).name === 'WebDriverError') {
37
- await new Promise(res => setTimeout(res, 3000));
38
- } else {
39
- throw err;
40
- }
41
- }
42
- let workbench = new Workbench();
43
- let activityBar = workbench.getActivityBar();
44
- let activityBarControls = await activityBar.getViewControls();
30
+ await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
31
+
32
+ const workbench: Workbench = new Workbench();
33
+ const activityBar: ActivityBar = workbench.getActivityBar();
34
+ const activityBarControls: ViewControl[] = await activityBar.getViewControls();
35
+
45
36
  Logger.debug(`Editor sections:`);
46
- activityBarControls.forEach(async control => {
37
+ for (const control of activityBarControls) {
47
38
  Logger.debug(`${await control.getTitle()}`);
48
- });
39
+ }
49
40
  });
50
- // projectAndFileTests.waitWorkspaceReadiness(workspaceSampleName, workspaceRootFolderName, false);
51
41
  });
52
42
 
53
43
  suite('Stopping and deleting the workspace', async () => {
54
- test(`Stop and remowe workspace`, async () => {
44
+ test(`Stop and remove workspace`, async () => {
55
45
  await workspaceHandlingTests.stopAndRemoveWorkspace(WorkspaceHandlingTests.getWorkspaceName());
56
46
  });
57
47
  });
@@ -27,7 +27,7 @@ const workspaceSampleName: string = 'dotnet-web-simple';
27
27
  const fileFolderPath: string = `${workspaceSampleName}`;
28
28
  const tabTitle: string = 'Program.cs';
29
29
  // const codeNavigationClassName: string = '[metadata] Console.cs';
30
- const stack : string = 'ASP.NET Core Web Application';
30
+ const stack: string = 'ASP.NET Core Web Application';
31
31
  const updateDependenciesTaskName: string = 'update dependencies';
32
32
  const buildTaskName: string = 'build';
33
33
  const runTaskName: string = 'run';
@@ -26,7 +26,7 @@ const workspaceRootFolderName: string = 'src';
26
26
  const fileFolderPath: string = `${workspaceSampleName}/${workspaceRootFolderName}/main/java/org/eclipse/che/examples`;
27
27
  const tabTitle: string = 'HelloWorld.java';
28
28
  const codeNavigationClassName: string = 'String.class';
29
- const stack : string = 'Java Maven';
29
+ const stack: string = 'Java Maven';
30
30
  const taskName: string = 'maven build';
31
31
 
32
32
  suite(`${stack} test`, async () => {
@@ -21,7 +21,7 @@ const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUti
21
21
  const testWorkspaceUtils: ITestWorkspaceUtil = e2eContainer.get<ITestWorkspaceUtil>(TYPES.WorkspaceUtil);
22
22
  const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
23
23
 
24
- const factoryUrl : string = `${TestConstants.TS_SELENIUM_BASE_URL}/f?url=https://raw.githubusercontent.com/eclipse/che-devfile-registry/master/devfiles/java-maven/devfile.yaml`;
24
+ const factoryUrl: string = `${TestConstants.TS_SELENIUM_BASE_URL}/f?url=https://raw.githubusercontent.com/eclipse/che-devfile-registry/master/devfiles/java-maven/devfile.yaml`;
25
25
  const workspaceSampleName: string = 'console-java-simple';
26
26
  const workspaceRootFolderName: string = 'src';
27
27
 
@@ -21,7 +21,7 @@ const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.
21
21
  const projectAndFileTests: ProjectAndFileTestsTheia = e2eContainer.get(CLASSES.ProjectAndFileTestsTheia);
22
22
  const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
23
23
 
24
- const factoryUrl : string = `${TestConstants.TS_SELENIUM_BASE_URL}/f?url=https://github.com/che-samples/console-java-simple/tree/master/src`;
24
+ const factoryUrl: string = `${TestConstants.TS_SELENIUM_BASE_URL}/f?url=https://github.com/che-samples/console-java-simple/tree/master/src`;
25
25
  const workspaceSampleName: string = 'console-java-simple';
26
26
  const workspaceRootFolderName: string = 'src';
27
27
  const fileName: string = 'pom.xml';