@eclipse-che/che-e2e 7.75.0-next-74f1046 → 7.75.0-next-2113c0d

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 (58) hide show
  1. package/.eslintrc.js +1 -1
  2. package/README.md +1 -0
  3. package/configs/mocharc.ts +2 -1
  4. package/configs/reporters-config.json +6 -0
  5. package/constants/PLUGIN_TEST_CONSTANTS.ts +3 -1
  6. package/constants/TIMEOUT_CONSTANTS.ts +8 -2
  7. package/dist/configs/mocharc.js +2 -1
  8. package/dist/configs/mocharc.js.map +1 -1
  9. package/dist/constants/PLUGIN_TEST_CONSTANTS.js +2 -1
  10. package/dist/constants/PLUGIN_TEST_CONSTANTS.js.map +1 -1
  11. package/dist/constants/TIMEOUT_CONSTANTS.js +6 -2
  12. package/dist/constants/TIMEOUT_CONSTANTS.js.map +1 -1
  13. package/dist/pageobjects/ide/CheCodeLocatorLoader.js +1 -1
  14. package/dist/pageobjects/ide/CheCodeLocatorLoader.js.map +1 -1
  15. package/dist/specs/MochaHooks.js +18 -4
  16. package/dist/specs/MochaHooks.js.map +1 -1
  17. package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js +3 -6
  18. package/dist/specs/api/DevfileAcceptanceTestAPI.spec.js.map +1 -1
  19. package/dist/specs/api/EmptyWorkspaceAPI.spec.js +1 -2
  20. package/dist/specs/api/EmptyWorkspaceAPI.spec.js.map +1 -1
  21. package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js +67 -73
  22. package/dist/specs/dashboard-samples/RecommendedExtensions.spec.js.map +1 -1
  23. package/dist/specs/factory/Factory.spec.js +1 -5
  24. package/dist/specs/factory/Factory.spec.js.map +1 -1
  25. package/dist/specs/factory/NoSetupRepoFactory.spec.js +1 -24
  26. package/dist/specs/factory/NoSetupRepoFactory.spec.js.map +1 -1
  27. package/dist/specs/factory/RefusedOAuthFactory.spec.js +1 -24
  28. package/dist/specs/factory/RefusedOAuthFactory.spec.js.map +1 -1
  29. package/dist/specs/miscellaneous/CreateWorkspaceWithExistedName.spec.js +2 -2
  30. package/dist/specs/miscellaneous/WorkpaseUsingParent.spec.js +2 -2
  31. package/dist/specs/miscellaneous/WorkpaseUsingParent.spec.js.map +1 -1
  32. package/dist/tests-library/ProjectAndFileTests.js +10 -14
  33. package/dist/tests-library/ProjectAndFileTests.js.map +1 -1
  34. package/dist/tests-library/WorkspaceHandlingTests.js +1 -1
  35. package/dist/tests-library/WorkspaceHandlingTests.js.map +1 -1
  36. package/dist/utils/CheReporter.js +21 -20
  37. package/dist/utils/CheReporter.js.map +1 -1
  38. package/dist/utils/DevWorkspaceConfigurationHelper.js +4 -1
  39. package/dist/utils/DevWorkspaceConfigurationHelper.js.map +1 -1
  40. package/dist/utils/DevfilesRegistryHelper.js +1 -1
  41. package/dist/utils/DevfilesRegistryHelper.js.map +1 -1
  42. package/dist/utils/DriverHelper.js +2 -2
  43. package/dist/utils/DriverHelper.js.map +1 -1
  44. package/dist/utils/workspace/TestWorkspaceUtil.js +2 -3
  45. package/dist/utils/workspace/TestWorkspaceUtil.js.map +1 -1
  46. package/package.json +9 -1
  47. package/pageobjects/ide/CheCodeLocatorLoader.ts +1 -1
  48. package/specs/MochaHooks.ts +17 -2
  49. package/specs/dashboard-samples/RecommendedExtensions.spec.ts +64 -71
  50. package/specs/factory/Factory.spec.ts +1 -6
  51. package/specs/factory/NoSetupRepoFactory.spec.ts +1 -26
  52. package/specs/factory/RefusedOAuthFactory.spec.ts +1 -26
  53. package/specs/miscellaneous/CreateWorkspaceWithExistedName.spec.ts +2 -2
  54. package/tests-library/ProjectAndFileTests.ts +17 -15
  55. package/tests-library/WorkspaceHandlingTests.ts +1 -1
  56. package/tsconfig.json +2 -2
  57. package/utils/CheReporter.ts +16 -22
  58. package/utils/DriverHelper.ts +1 -1
@@ -23,7 +23,7 @@ import { FACTORY_TEST_CONSTANTS } from '../../constants/FACTORY_TEST_CONSTANTS';
23
23
  const stackName: string = BASE_TEST_CONSTANTS.TS_SELENIUM_DASHBOARD_SAMPLE_NAME || 'Python';
24
24
  const projectName: string = FACTORY_TEST_CONSTANTS.TS_SELENIUM_PROJECT_NAME || 'python-hello-world';
25
25
 
26
- suite(`"Start workspace with existed workspace name" test`, function (): void {
26
+ suite('"Start workspace with existed workspace name" test', function (): void {
27
27
  const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
28
28
  const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
29
29
  const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
@@ -47,7 +47,7 @@ suite(`"Start workspace with existed workspace name" test`, function (): void {
47
47
  expect(isFileImported).not.eqls(undefined);
48
48
  });
49
49
 
50
- test(`Stop created workspace`, async function (): Promise<void> {
50
+ test('Stop created workspace', async function (): Promise<void> {
51
51
  existedWorkspaceName = WorkspaceHandlingTests.getWorkspaceName();
52
52
  await workspaceHandlingTests.stopWorkspace(existedWorkspaceName);
53
53
  await browserTabsUtil.closeAllTabsExceptCurrent();
@@ -10,30 +10,29 @@
10
10
 
11
11
  import 'reflect-metadata';
12
12
  import { inject, injectable } from 'inversify';
13
- import { By, until } from 'selenium-webdriver';
14
13
  import { DriverHelper } from '../utils/DriverHelper';
15
14
  import { CLASSES } from '../configs/inversify.types';
16
15
  import { Logger } from '../utils/Logger';
17
16
  import { TIMEOUT_CONSTANTS } from '../constants/TIMEOUT_CONSTANTS';
18
- import { Locators, ModalDialog } from 'monaco-page-objects';
19
17
  import { CheCodeLocatorLoader } from '../pageobjects/ide/CheCodeLocatorLoader';
20
18
 
21
- const webCheCodeLocators: Locators = new CheCodeLocatorLoader().webCheCodeLocators;
22
-
23
19
  @injectable()
24
20
  export class ProjectAndFileTests {
25
21
  constructor(
26
22
  @inject(CLASSES.DriverHelper)
27
- private readonly driverHelper: DriverHelper
23
+ private readonly driverHelper: DriverHelper,
24
+ @inject(CLASSES.CheCodeLocatorLoader)
25
+ private readonly cheCodeLocatorLoader: CheCodeLocatorLoader
28
26
  ) {}
29
27
 
30
28
  async waitWorkspaceReadinessForCheCodeEditor(): Promise<void> {
31
29
  Logger.debug('waiting for editor.');
32
30
  try {
33
31
  const start: number = new Date().getTime();
34
- await this.driverHelper
35
- .getDriver()
36
- .wait(until.elementLocated(By.className('monaco-workbench')), TIMEOUT_CONSTANTS.TS_SELENIUM_START_WORKSPACE_TIMEOUT);
32
+ await this.driverHelper.waitVisibility(
33
+ this.cheCodeLocatorLoader.webCheCodeLocators.Workbench.constructor,
34
+ TIMEOUT_CONSTANTS.TS_SELENIUM_START_WORKSPACE_TIMEOUT
35
+ );
37
36
  const end: number = new Date().getTime();
38
37
  Logger.debug(`editor was opened in ${end - start} seconds.`);
39
38
  } catch (err) {
@@ -43,17 +42,20 @@ export class ProjectAndFileTests {
43
42
  }
44
43
 
45
44
  async performTrustAuthorDialog(): Promise<void> {
45
+ Logger.debug();
46
+
47
+ await this.driverHelper.waitAndClick(
48
+ this.cheCodeLocatorLoader.webCheCodeLocators.WelcomeContent.button,
49
+ TIMEOUT_CONSTANTS.TS_DIALOG_WINDOW_DEFAULT_TIMEOUT
50
+ );
51
+
46
52
  try {
47
- const buttonYesITrustTheAuthors: string = 'Yes, I trust the authors';
48
- await this.driverHelper.waitVisibility(
49
- webCheCodeLocators.WelcomeContent.button,
53
+ await this.driverHelper.waitAndClick(
54
+ this.cheCodeLocatorLoader.webCheCodeLocators.WelcomeContent.button,
50
55
  TIMEOUT_CONSTANTS.TS_DIALOG_WINDOW_DEFAULT_TIMEOUT
51
56
  );
52
- const trustedProjectDialog: ModalDialog = new ModalDialog();
53
- Logger.debug(`trustedProjectDialog.pushButton: "${buttonYesITrustTheAuthors}"`);
54
- await trustedProjectDialog.pushButton(buttonYesITrustTheAuthors);
55
57
  } catch (e) {
56
- Logger.debug(`Welcome modal dialog was not shown: ${e}`);
58
+ Logger.info('Second welcome content dialog box was not shown');
57
59
  }
58
60
  }
59
61
  }
@@ -81,7 +81,7 @@ export class WorkspaceHandlingTests {
81
81
  }
82
82
 
83
83
  async obtainWorkspaceNameFromStartingPage(): Promise<void> {
84
- const timeout: number = TIMEOUT_CONSTANTS.TS_IDE_LOAD_TIMEOUT;
84
+ const timeout: number = TIMEOUT_CONSTANTS.TS_SELENIUM_START_WORKSPACE_TIMEOUT;
85
85
  const polling: number = TIMEOUT_CONSTANTS.TS_SELENIUM_DEFAULT_POLLING;
86
86
  const attempts: number = Math.ceil(timeout / polling);
87
87
 
package/tsconfig.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "skipLibCheck": true,
4
- "target": "es2017",
4
+ "target": "es2021",
5
5
  "module": "commonjs",
6
6
  "strict": true,
7
7
  "esModuleInterop": true,
8
8
  "outDir": "dist",
9
- "lib": ["es2017", "dom"],
9
+ "lib": ["es2021", "dom"],
10
10
  "types": ["reflect-metadata", "@types/mocha", "@types/node"],
11
11
  "experimentalDecorators": true,
12
12
  "emitDecoratorMetadata": true,
@@ -23,21 +23,22 @@ import { CHROME_DRIVER_CONSTANTS } from '../constants/CHROME_DRIVER_CONSTANTS';
23
23
  import { OAUTH_CONSTANTS } from '../constants/OAUTH_CONSTANTS';
24
24
  import { REPORTER_CONSTANTS } from '../constants/REPORTER_CONSTANTS';
25
25
  import { PLUGIN_TEST_CONSTANTS } from '../constants/PLUGIN_TEST_CONSTANTS';
26
- import { inject, injectable } from 'inversify';
26
+ import { injectable } from 'inversify';
27
+ import getDecorators from 'inversify-inject-decorators';
28
+ import { e2eContainer } from '../configs/inversify.config';
29
+
30
+ const { lazyInject } = getDecorators(e2eContainer);
27
31
 
28
32
  @injectable()
29
33
  class CheReporter extends mocha.reporters.Spec {
30
34
  private static methodIndex: number = 0;
31
35
  private static deleteScreencast: boolean = true;
36
+ @lazyInject(CLASSES.DriverHelper)
37
+ private readonly driverHelper!: DriverHelper;
38
+ @lazyInject(CLASSES.ScreenCatcher)
39
+ private readonly screenCatcher!: ScreenCatcher;
32
40
 
33
- constructor(
34
- runner: mocha.Runner,
35
- options: mocha.MochaOptions,
36
- @inject(CLASSES.DriverHelper)
37
- private readonly driverHelper: DriverHelper,
38
- @inject(CLASSES.ScreenCatcher)
39
- private readonly screenCatcher: ScreenCatcher
40
- ) {
41
+ constructor(runner: mocha.Runner, options: mocha.MochaOptions) {
41
42
  super(runner, options);
42
43
 
43
44
  runner.on('start', (): void => {
@@ -111,13 +112,7 @@ class CheReporter extends mocha.reporters.Spec {
111
112
  }
112
113
  });
113
114
 
114
- runner.on('end', async (): Promise<void> => {
115
- // ensure that fired events done
116
- await this.driverHelper.wait(5000);
117
-
118
- // close driver
119
- await this.driverHelper.getDriver().quit();
120
-
115
+ runner.on('end', (): void => {
121
116
  // delete screencast folder if conditions matched
122
117
  if (CheReporter.deleteScreencast && REPORTER_CONSTANTS.DELETE_SCREENCAST_IF_TEST_PASS) {
123
118
  rm.sync(REPORTER_CONSTANTS.TS_SELENIUM_REPORT_FOLDER);
@@ -158,14 +153,12 @@ class CheReporter extends mocha.reporters.Spec {
158
153
  // take screenshot and write to file
159
154
  const screenshot: string = await this.driverHelper.getDriver().takeScreenshot();
160
155
  const screenshotStream: WriteStream = fs.createWriteStream(screenshotFileName);
161
- screenshotStream.write(Buffer.from(screenshot, 'base64'));
162
- screenshotStream.end();
156
+ screenshotStream.write(Buffer.from(screenshot, 'base64'), (): void => screenshotStream.end());
163
157
 
164
158
  // take page source and write to file
165
159
  const pageSource: string = await this.driverHelper.getDriver().getPageSource();
166
160
  const pageSourceStream: WriteStream = fs.createWriteStream(pageSourceFileName);
167
- pageSourceStream.write(Buffer.from(pageSource));
168
- pageSourceStream.end();
161
+ pageSourceStream.write(Buffer.from(pageSource), (): void => pageSourceStream.end());
169
162
 
170
163
  // take browser console logs and write to file
171
164
  const browserLogsEntries: logging.Entry[] = await this.driverHelper.getDriver().manage().logs().get('browser');
@@ -176,8 +169,9 @@ class CheReporter extends mocha.reporters.Spec {
176
169
  });
177
170
 
178
171
  const browserLogsStream: WriteStream = fs.createWriteStream(browserLogsFileName);
179
- browserLogsStream.write(Buffer.from(browserLogs));
180
- browserLogsStream.end();
172
+ browserLogsStream.write(Buffer.from(browserLogs), (): void => {
173
+ browserLogsStream.end();
174
+ });
181
175
  });
182
176
  }
183
177
  }
@@ -398,7 +398,7 @@ export class DriverHelper {
398
398
  }
399
399
 
400
400
  throw new error.TimeoutError(
401
- `Exceeded maximum gettin of the '${cssAttribute}' css attribute attempts, from the '${elementLocator}' element`
401
+ `Exceeded maximum getting of the '${cssAttribute}' css attribute attempts, from the '${elementLocator}' element`
402
402
  );
403
403
  }
404
404