@theia/playwright 1.37.0-next.1 → 1.37.0-next.10

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 (81) hide show
  1. package/lib/index.d.ts +4 -0
  2. package/lib/index.d.ts.map +1 -1
  3. package/lib/index.js +4 -0
  4. package/lib/index.js.map +1 -1
  5. package/lib/tests/theia-explorer-view.test.js +25 -5
  6. package/lib/tests/theia-explorer-view.test.js.map +1 -1
  7. package/lib/tests/theia-main-menu.test.js +2 -2
  8. package/lib/tests/theia-main-menu.test.js.map +1 -1
  9. package/lib/tests/theia-output-view.test.d.ts +2 -0
  10. package/lib/tests/theia-output-view.test.d.ts.map +1 -0
  11. package/lib/tests/theia-output-view.test.js +77 -0
  12. package/lib/tests/theia-output-view.test.js.map +1 -0
  13. package/lib/tests/theia-quick-command.test.js +14 -0
  14. package/lib/tests/theia-quick-command.test.js.map +1 -1
  15. package/lib/tests/theia-sample-app.test.js +3 -30
  16. package/lib/tests/theia-sample-app.test.js.map +1 -1
  17. package/lib/tests/theia-toolbar.test.d.ts +2 -0
  18. package/lib/tests/theia-toolbar.test.d.ts.map +1 -0
  19. package/lib/tests/theia-toolbar.test.js +60 -0
  20. package/lib/tests/theia-toolbar.test.js.map +1 -0
  21. package/lib/tests/theia-workspace.test.js +5 -3
  22. package/lib/tests/theia-workspace.test.js.map +1 -1
  23. package/lib/theia-app.d.ts.map +1 -1
  24. package/lib/theia-app.js +1 -0
  25. package/lib/theia-app.js.map +1 -1
  26. package/lib/theia-explorer-view.d.ts +11 -4
  27. package/lib/theia-explorer-view.d.ts.map +1 -1
  28. package/lib/theia-explorer-view.js +54 -6
  29. package/lib/theia-explorer-view.js.map +1 -1
  30. package/lib/theia-monaco-editor.d.ts +16 -0
  31. package/lib/theia-monaco-editor.d.ts.map +1 -0
  32. package/lib/theia-monaco-editor.js +76 -0
  33. package/lib/theia-monaco-editor.js.map +1 -0
  34. package/lib/theia-output-channel.d.ts +25 -0
  35. package/lib/theia-output-channel.d.ts.map +1 -0
  36. package/lib/theia-output-channel.js +72 -0
  37. package/lib/theia-output-channel.js.map +1 -0
  38. package/lib/theia-output-view.d.ts +10 -0
  39. package/lib/theia-output-view.d.ts.map +1 -0
  40. package/lib/theia-output-view.js +82 -0
  41. package/lib/theia-output-view.js.map +1 -0
  42. package/lib/theia-quick-command-palette.d.ts +2 -1
  43. package/lib/theia-quick-command-palette.d.ts.map +1 -1
  44. package/lib/theia-quick-command-palette.js +9 -2
  45. package/lib/theia-quick-command-palette.js.map +1 -1
  46. package/lib/theia-text-editor.d.ts +2 -3
  47. package/lib/theia-text-editor.d.ts.map +1 -1
  48. package/lib/theia-text-editor.js +11 -40
  49. package/lib/theia-text-editor.js.map +1 -1
  50. package/lib/theia-toolbar-item.d.ts +11 -0
  51. package/lib/theia-toolbar-item.d.ts.map +1 -0
  52. package/lib/theia-toolbar-item.js +40 -0
  53. package/lib/theia-toolbar-item.js.map +1 -0
  54. package/lib/theia-toolbar.d.ts +20 -0
  55. package/lib/theia-toolbar.d.ts.map +1 -0
  56. package/lib/theia-toolbar.js +91 -0
  57. package/lib/theia-toolbar.js.map +1 -0
  58. package/lib/theia-tree-node.d.ts +1 -0
  59. package/lib/theia-tree-node.d.ts.map +1 -1
  60. package/lib/theia-tree-node.js +8 -0
  61. package/lib/theia-tree-node.js.map +1 -1
  62. package/package.json +13 -10
  63. package/src/index.ts +4 -0
  64. package/src/tests/resources/sample-files1/sampleFolderCompact/nestedFolder1/nestedFolder2/sampleFile1-1.txt +0 -0
  65. package/src/tests/theia-explorer-view.test.ts +26 -6
  66. package/src/tests/theia-main-menu.test.ts +2 -2
  67. package/src/tests/theia-output-view.test.ts +85 -0
  68. package/src/tests/theia-quick-command.test.ts +15 -0
  69. package/src/tests/theia-sample-app.test.ts +3 -34
  70. package/src/tests/theia-toolbar.test.ts +65 -0
  71. package/src/tests/theia-workspace.test.ts +5 -3
  72. package/src/theia-app.ts +1 -0
  73. package/src/theia-explorer-view.ts +60 -7
  74. package/src/theia-monaco-editor.ts +83 -0
  75. package/src/theia-output-channel.ts +88 -0
  76. package/src/theia-output-view.ts +87 -0
  77. package/src/theia-quick-command-palette.ts +10 -2
  78. package/src/theia-text-editor.ts +13 -44
  79. package/src/theia-toolbar-item.ts +41 -0
  80. package/src/theia-toolbar.ts +99 -0
  81. package/src/theia-tree-node.ts +10 -1
@@ -19,6 +19,7 @@ exports.TheiaTextEditor = void 0;
19
19
  const path_1 = require("path");
20
20
  const theia_editor_1 = require("./theia-editor");
21
21
  const util_1 = require("./util");
22
+ const theia_monaco_editor_1 = require("./theia-monaco-editor");
22
23
  class TheiaTextEditor extends theia_editor_1.TheiaEditor {
23
24
  constructor(filePath, app) {
24
25
  // shell-tab-code-editor-opener:file:///c%3A/Users/user/AppData/Local/Temp/cloud-ws-JBUhb6/sample.txt:1
@@ -27,17 +28,14 @@ class TheiaTextEditor extends theia_editor_1.TheiaEditor {
27
28
  tabSelector: (0, util_1.normalizeId)(`#shell-tab-code-editor-opener:file://${(0, util_1.urlEncodePath)((0, path_1.join)(app.workspace.escapedPath, util_1.OSUtil.fileSeparator, filePath))}:1`),
28
29
  viewSelector: (0, util_1.normalizeId)(`#code-editor-opener:file://${(0, util_1.urlEncodePath)((0, path_1.join)(app.workspace.escapedPath, util_1.OSUtil.fileSeparator, filePath))}:1`) + '.theia-editor'
29
30
  }, app);
31
+ this.monacoEditor = new theia_monaco_editor_1.TheiaMonacoEditor(this.viewSelector, app);
30
32
  }
31
33
  async numberOfLines() {
32
34
  await this.activate();
33
- const viewElement = await this.viewElement();
34
- const lineElements = await (viewElement === null || viewElement === void 0 ? void 0 : viewElement.$$('.view-lines .view-line'));
35
- return lineElements === null || lineElements === void 0 ? void 0 : lineElements.length;
35
+ return this.monacoEditor.numberOfLines();
36
36
  }
37
37
  async textContentOfLineByLineNumber(lineNumber) {
38
- const lineElement = await this.lineByLineNumber(lineNumber);
39
- const content = await (lineElement === null || lineElement === void 0 ? void 0 : lineElement.textContent());
40
- return content ? this.replaceEditorSymbolsWithSpace(content) : undefined;
38
+ return this.monacoEditor.textContentOfLineByLineNumber(lineNumber);
41
39
  }
42
40
  async replaceLineWithLineNumber(text, lineNumber) {
43
41
  await this.selectLineWithLineNumber(lineNumber);
@@ -49,13 +47,13 @@ class TheiaTextEditor extends theia_editor_1.TheiaEditor {
49
47
  }
50
48
  async selectLineWithLineNumber(lineNumber) {
51
49
  await this.activate();
52
- const lineElement = await this.lineByLineNumber(lineNumber);
50
+ const lineElement = await this.monacoEditor.lineByLineNumber(lineNumber);
53
51
  await this.selectLine(lineElement);
54
52
  return lineElement;
55
53
  }
56
54
  async placeCursorInLineWithLineNumber(lineNumber) {
57
55
  await this.activate();
58
- const lineElement = await this.lineByLineNumber(lineNumber);
56
+ const lineElement = await this.monacoEditor.lineByLineNumber(lineNumber);
59
57
  await this.placeCursorInLine(lineElement);
60
58
  return lineElement;
61
59
  }
@@ -63,26 +61,9 @@ class TheiaTextEditor extends theia_editor_1.TheiaEditor {
63
61
  await this.selectLineWithLineNumber(lineNumber);
64
62
  await this.page.keyboard.press('Backspace');
65
63
  }
66
- async lineByLineNumber(lineNumber) {
67
- await this.activate();
68
- const viewElement = await this.viewElement();
69
- const lines = await (viewElement === null || viewElement === void 0 ? void 0 : viewElement.$$('.view-lines .view-line'));
70
- if (!lines) {
71
- throw new Error(`Couldn't retrieve lines of text editor ${this.tabSelector}`);
72
- }
73
- const linesWithXCoordinates = [];
74
- for (const lineElement of lines) {
75
- const box = await lineElement.boundingBox();
76
- linesWithXCoordinates.push({ x: box ? box.x : Number.MAX_VALUE, lineElement });
77
- }
78
- linesWithXCoordinates.sort((a, b) => a.x.toString().localeCompare(b.x.toString()));
79
- return linesWithXCoordinates[lineNumber - 1].lineElement;
80
- }
81
64
  async textContentOfLineContainingText(text) {
82
65
  await this.activate();
83
- const lineElement = await this.lineContainingText(text);
84
- const content = await (lineElement === null || lineElement === void 0 ? void 0 : lineElement.textContent());
85
- return content ? this.replaceEditorSymbolsWithSpace(content) : undefined;
66
+ return this.monacoEditor.textContentOfLineContainingText(text);
86
67
  }
87
68
  async replaceLineContainingText(newText, oldText) {
88
69
  await this.selectLineContainingText(oldText);
@@ -90,13 +71,13 @@ class TheiaTextEditor extends theia_editor_1.TheiaEditor {
90
71
  }
91
72
  async selectLineContainingText(text) {
92
73
  await this.activate();
93
- const lineElement = await this.lineContainingText(text);
74
+ const lineElement = await this.monacoEditor.lineContainingText(text);
94
75
  await this.selectLine(lineElement);
95
76
  return lineElement;
96
77
  }
97
78
  async placeCursorInLineContainingText(text) {
98
79
  await this.activate();
99
- const lineElement = await this.lineContainingText(text);
80
+ const lineElement = await this.monacoEditor.lineContainingText(text);
100
81
  await this.placeCursorInLine(lineElement);
101
82
  return lineElement;
102
83
  }
@@ -105,35 +86,25 @@ class TheiaTextEditor extends theia_editor_1.TheiaEditor {
105
86
  await this.page.keyboard.press('Backspace');
106
87
  }
107
88
  async addTextToNewLineAfterLineContainingText(textContainedByExistingLine, newText) {
108
- const existingLine = await this.lineContainingText(textContainedByExistingLine);
89
+ const existingLine = await this.monacoEditor.lineContainingText(textContainedByExistingLine);
109
90
  await this.placeCursorInLine(existingLine);
110
91
  await this.page.keyboard.press('End');
111
92
  await this.page.keyboard.press('Enter');
112
93
  await this.page.keyboard.type(newText);
113
94
  }
114
95
  async addTextToNewLineAfterLineByLineNumber(lineNumber, newText) {
115
- const existingLine = await this.lineByLineNumber(lineNumber);
96
+ const existingLine = await this.monacoEditor.lineByLineNumber(lineNumber);
116
97
  await this.placeCursorInLine(existingLine);
117
98
  await this.page.keyboard.press('End');
118
99
  await this.page.keyboard.press('Enter');
119
100
  await this.page.keyboard.type(newText);
120
101
  }
121
- async lineContainingText(text) {
122
- const viewElement = await this.viewElement();
123
- return viewElement === null || viewElement === void 0 ? void 0 : viewElement.waitForSelector(`.view-lines .view-line:has-text("${text}")`);
124
- }
125
102
  async selectLine(lineElement) {
126
103
  await (lineElement === null || lineElement === void 0 ? void 0 : lineElement.click({ clickCount: 3 }));
127
104
  }
128
105
  async placeCursorInLine(lineElement) {
129
106
  await (lineElement === null || lineElement === void 0 ? void 0 : lineElement.click());
130
107
  }
131
- replaceEditorSymbolsWithSpace(content) {
132
- // [ ]   => \u00a0 -- NO-BREAK SPACE
133
- // [·] · => \u00b7 -- MIDDLE DOT
134
- // [] ‌ => \u200c -- ZERO WIDTH NON-JOINER
135
- return content.replace(/[\u00a0\u00b7]/g, ' ').replace(/[\u200c]/g, '');
136
- }
137
108
  async selectedSuggestion() {
138
109
  return this.page.waitForSelector(this.viewSelector + ' .monaco-list-row.show-file-icons.focused');
139
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"theia-text-editor.js","sourceRoot":"","sources":["../src/theia-text-editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theia-text-editor.js","sourceRoot":"","sources":["../src/theia-text-editor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ElementHandle } from '@playwright/test';
2
+ import { TheiaApp } from './theia-app';
3
+ import { TheiaPageObject } from './theia-page-object';
4
+ export declare class TheiaToolbarItem extends TheiaPageObject {
5
+ protected element: ElementHandle<SVGElement | HTMLElement>;
6
+ constructor(app: TheiaApp, element: ElementHandle<SVGElement | HTMLElement>);
7
+ commandId(): Promise<string | null>;
8
+ isEnabled(): Promise<boolean>;
9
+ trigger(): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=theia-toolbar-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theia-toolbar-item.d.ts","sourceRoot":"","sources":["../src/theia-toolbar-item.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,gBAAiB,SAAQ,eAAe;IACtB,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC;gBAAzE,GAAG,EAAE,QAAQ,EAAY,OAAO,EAAE,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC;IAI/E,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAInC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGjC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2023 EclipseSource and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.TheiaToolbarItem = void 0;
19
+ const theia_page_object_1 = require("./theia-page-object");
20
+ class TheiaToolbarItem extends theia_page_object_1.TheiaPageObject {
21
+ constructor(app, element) {
22
+ super(app);
23
+ this.element = element;
24
+ }
25
+ async commandId() {
26
+ return this.element.getAttribute('id');
27
+ }
28
+ async isEnabled() {
29
+ const classAttribute = await this.element.getAttribute('class');
30
+ if (classAttribute === undefined || classAttribute === null) {
31
+ return false;
32
+ }
33
+ return classAttribute.includes('enabled');
34
+ }
35
+ async trigger() {
36
+ await this.element.click();
37
+ }
38
+ }
39
+ exports.TheiaToolbarItem = TheiaToolbarItem;
40
+ //# sourceMappingURL=theia-toolbar-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theia-toolbar-item.js","sourceRoot":"","sources":["../src/theia-toolbar-item.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;AAIhF,2DAAsD;AAEtD,MAAa,gBAAiB,SAAQ,mCAAe;IACjD,YAAY,GAAa,EAAY,OAAgD;QACjF,KAAK,CAAC,GAAG,CAAC,CAAC;QADsB,YAAO,GAAP,OAAO,CAAyC;IAErF,CAAC;IAED,KAAK,CAAC,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,SAAS;QACX,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,IAAI,EAAE;YACzD,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACJ;AApBD,4CAoBC"}
@@ -0,0 +1,20 @@
1
+ import { ElementHandle } from '@playwright/test';
2
+ import { TheiaPageObject } from './theia-page-object';
3
+ import { TheiaToolbarItem } from './theia-toolbar-item';
4
+ export declare class TheiaToolbar extends TheiaPageObject {
5
+ selector: string;
6
+ protected toolbarElementHandle(): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
7
+ waitForVisible(): Promise<void>;
8
+ isShown(): Promise<boolean>;
9
+ show(): Promise<void>;
10
+ hide(): Promise<void>;
11
+ toggle(): Promise<void>;
12
+ waitUntilHidden(): Promise<void>;
13
+ waitUntilShown(): Promise<void>;
14
+ toolbarItems(): Promise<TheiaToolbarItem[]>;
15
+ toolbarItemIds(): Promise<string[]>;
16
+ toolBarItem(commandId: string): Promise<TheiaToolbarItem | undefined>;
17
+ protected toolBarItemSelector(toolbarItemId?: string): string;
18
+ protected toCommandIdArray(items: TheiaToolbarItem[]): Promise<string[]>;
19
+ }
20
+ //# sourceMappingURL=theia-toolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theia-toolbar.d.ts","sourceRoot":"","sources":["../src/theia-toolbar.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,qBAAa,YAAa,SAAQ,eAAe;IAC7C,QAAQ,SAAuC;cAE/B,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAIzF,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAK3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,YAAY,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAS3C,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKnC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAY3E,SAAS,CAAC,mBAAmB,CAAC,aAAa,SAAK,GAAG,MAAM;cAIzC,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAKjF"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2023 EclipseSource and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.TheiaToolbar = void 0;
19
+ const theia_page_object_1 = require("./theia-page-object");
20
+ const theia_toolbar_item_1 = require("./theia-toolbar-item");
21
+ class TheiaToolbar extends theia_page_object_1.TheiaPageObject {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.selector = 'div#main-toolbar.p-TabBar-toolbar';
25
+ }
26
+ async toolbarElementHandle() {
27
+ return this.page.$(this.selector);
28
+ }
29
+ async waitForVisible() {
30
+ await this.page.waitForSelector(this.selector, { state: 'visible' });
31
+ }
32
+ async isShown() {
33
+ const statusBar = await this.toolbarElementHandle();
34
+ return !!statusBar && statusBar.isVisible();
35
+ }
36
+ async show() {
37
+ if (!await this.isShown()) {
38
+ await this.toggle();
39
+ }
40
+ }
41
+ async hide() {
42
+ if (await this.isShown()) {
43
+ await this.toggle();
44
+ }
45
+ }
46
+ async toggle() {
47
+ const isShown = await this.isShown();
48
+ const viewMenu = await this.app.menuBar.openMenu('View');
49
+ await viewMenu.clickMenuItem('Toggle Toolbar');
50
+ isShown ? await this.waitUntilHidden() : await this.waitUntilShown();
51
+ }
52
+ async waitUntilHidden() {
53
+ await this.page.waitForSelector(this.selector, { state: 'hidden' });
54
+ }
55
+ async waitUntilShown() {
56
+ await this.page.waitForSelector(this.selector, { state: 'visible' });
57
+ }
58
+ async toolbarItems() {
59
+ const toolbarHandle = await this.toolbarElementHandle();
60
+ if (!toolbarHandle) {
61
+ return [];
62
+ }
63
+ const items = await toolbarHandle.$$(this.toolBarItemSelector());
64
+ return items.map(element => new theia_toolbar_item_1.TheiaToolbarItem(this.app, element));
65
+ }
66
+ async toolbarItemIds() {
67
+ const items = await this.toolbarItems();
68
+ return this.toCommandIdArray(items);
69
+ }
70
+ async toolBarItem(commandId) {
71
+ const toolbarHandle = await this.toolbarElementHandle();
72
+ if (!toolbarHandle) {
73
+ return undefined;
74
+ }
75
+ const item = await toolbarHandle.$(this.toolBarItemSelector(commandId));
76
+ if (item) {
77
+ return new theia_toolbar_item_1.TheiaToolbarItem(this.app, item);
78
+ }
79
+ return undefined;
80
+ }
81
+ toolBarItemSelector(toolbarItemId = '') {
82
+ return `div.toolbar-item${toolbarItemId ? `[id="${toolbarItemId}"]` : ''}`;
83
+ }
84
+ async toCommandIdArray(items) {
85
+ const contents = items.map(item => item.commandId());
86
+ const resolvedContents = await Promise.all(contents);
87
+ return resolvedContents.filter(id => id !== undefined);
88
+ }
89
+ }
90
+ exports.TheiaToolbar = TheiaToolbar;
91
+ //# sourceMappingURL=theia-toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theia-toolbar.js","sourceRoot":"","sources":["../src/theia-toolbar.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export declare class TheiaTreeNode {
12
12
  isCollapsed(): Promise<boolean>;
13
13
  isExpandable(): Promise<boolean>;
14
14
  expand(): Promise<void>;
15
+ collapse(): Promise<void>;
15
16
  openContextMenu(): Promise<TheiaMenu>;
16
17
  }
17
18
  //# sourceMappingURL=theia-tree-node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theia-tree-node.d.ts","sourceRoot":"","sources":["../src/theia-tree-node.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,qBAAa,aAAa;IAMV,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC;IAAE,SAAS,CAAC,GAAG,EAAE,QAAQ;IAJrG,oBAAoB,SAAgC;IACpD,uBAAuB,SAA4B;IACnD,iBAAiB,SAA0B;gBAErB,aAAa,EAAE,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,EAAY,GAAG,EAAE,QAAQ;IAE/F,KAAK,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ/B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IASvB,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC;CAI9C"}
1
+ {"version":3,"file":"theia-tree-node.d.ts","sourceRoot":"","sources":["../src/theia-tree-node.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,qBAAa,aAAa;IAMV,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC;IAAE,SAAS,CAAC,GAAG,EAAE,QAAQ;IAJrG,oBAAoB,SAAgC;IACpD,uBAAuB,SAA4B;IACnD,iBAAiB,SAA0B;gBAErB,aAAa,EAAE,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,EAAY,GAAG,EAAE,QAAQ;IAE/F,KAAK,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ/B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IASvB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC;CAI9C"}
@@ -46,6 +46,14 @@ class TheiaTreeNode {
46
46
  await expansionToggle.click();
47
47
  await this.elementHandle.waitForSelector(`${this.expansionToggleCssClass}:not(${this.collapsedCssClass})`);
48
48
  }
49
+ async collapse() {
50
+ if (await this.isCollapsed()) {
51
+ return;
52
+ }
53
+ const expansionToggle = await this.elementHandle.waitForSelector(this.expansionToggleCssClass);
54
+ await expansionToggle.click();
55
+ await this.elementHandle.waitForSelector(`${this.expansionToggleCssClass}${this.collapsedCssClass}`);
56
+ }
49
57
  async openContextMenu() {
50
58
  return theia_context_menu_1.TheiaContextMenu.open(this.app, () => this.elementHandle.waitForSelector(this.labelElementCssClass));
51
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"theia-tree-node.js","sourceRoot":"","sources":["../src/theia-tree-node.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+DAA+D;AAC/D,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;AAKhF,6DAAwD;AAGxD,MAAa,aAAa;IAMtB,YAAsB,aAAsD,EAAY,GAAa;QAA/E,kBAAa,GAAb,aAAa,CAAyC;QAAY,QAAG,GAAH,GAAG,CAAU;QAJrG,yBAAoB,GAAG,4BAA4B,CAAC;QACpD,4BAAuB,GAAG,wBAAwB,CAAC;QACnD,sBAAiB,GAAG,sBAAsB,CAAC;IAE8D,CAAC;IAE1G,KAAK,CAAC,KAAK;QACP,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;SACjE;QACD,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,WAAW;QACb,OAAO,CAAC,CAAE,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,YAAY;QACd,OAAO,CAAC,CAAE,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,MAAM;QACR,IAAI,CAAE,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE;YAC5B,OAAO;SACV;QACD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC/F,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,uBAAuB,QAAQ,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC/G,CAAC;IAED,KAAK,CAAC,eAAe;QACjB,OAAO,qCAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAChH,CAAC;CAEJ;AArCD,sCAqCC"}
1
+ {"version":3,"file":"theia-tree-node.js","sourceRoot":"","sources":["../src/theia-tree-node.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+DAA+D;AAC/D,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;AAKhF,6DAAwD;AAGxD,MAAa,aAAa;IAMtB,YAAsB,aAAsD,EAAY,GAAa;QAA/E,kBAAa,GAAb,aAAa,CAAyC;QAAY,QAAG,GAAH,GAAG,CAAU;QAJrG,yBAAoB,GAAG,4BAA4B,CAAC;QACpD,4BAAuB,GAAG,wBAAwB,CAAC;QACnD,sBAAiB,GAAG,sBAAsB,CAAC;IAE8D,CAAC;IAE1G,KAAK,CAAC,KAAK;QACP,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;SACjE;QACD,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,WAAW;QACb,OAAO,CAAC,CAAE,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,YAAY;QACd,OAAO,CAAC,CAAE,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,MAAM;QACR,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE;YAC3B,OAAO;SACV;QACD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC/F,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,uBAAuB,QAAQ,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC/G,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE;YAC1B,OAAO;SACV;QACD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC/F,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACzG,CAAC;IAED,KAAK,CAAC,eAAe;QACjB,OAAO,qCAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAChH,CAAC;CAEJ;AA9CD,sCA8CC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/playwright",
3
- "version": "1.37.0-next.1+be8d78537",
3
+ "version": "1.37.0-next.10+b56f399da",
4
4
  "description": "System tests for Theia",
5
5
  "license": "EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0",
6
6
  "repository": {
@@ -12,14 +12,15 @@
12
12
  },
13
13
  "homepage": "https://github.com/eclipse-theia/theia",
14
14
  "scripts": {
15
- "clean": "rimraf lib *.tsbuildinfo",
16
- "build": "tsc --incremental && npx playwright install chromium",
15
+ "clean": "rimraf lib *.tsbuildinfo .eslintcache",
16
+ "build": "yarn && yarn clean && tsc --incremental && yarn lint && yarn playwright:install",
17
+ "watch": "tsc -w --incremental",
17
18
  "theia:start": "rimraf .tmp.cfg && THEIA_CONFIG_DIR=$PWD/.tmp.cfg yarn --cwd ../browser start",
18
19
  "lint": "eslint -c ./.eslintrc.js --ext .ts ./src",
19
20
  "lint:fix": "eslint -c ./.eslintrc.js --ext .ts ./src --fix",
20
- "ui-tests": "yarn && playwright test --config=./configs/playwright.config.ts",
21
- "ui-tests-ci": "yarn && playwright test --config=./configs/playwright.ci.config.ts",
22
- "ui-tests-headful": "yarn && playwright test --config=./configs/playwright.headful.config.ts",
21
+ "playwright:install": "playwright install chromium",
22
+ "ui-tests": "yarn build && playwright test",
23
+ "ui-tests-headful": "yarn build && playwright test --headed",
23
24
  "ui-tests-report-generate": "allure generate ./allure-results --clean -o allure-results/allure-report",
24
25
  "ui-tests-report": "yarn ui-tests-report-generate && allure open allure-results/allure-report"
25
26
  },
@@ -28,17 +29,19 @@
28
29
  "src"
29
30
  ],
30
31
  "dependencies": {
31
- "@playwright/test": "^1.30.0",
32
+ "@playwright/test": "^1.32.1",
32
33
  "fs-extra": "^9.0.8"
33
34
  },
34
35
  "devDependencies": {
35
36
  "@types/fs-extra": "^9.0.8",
36
- "allure-commandline": "^2.13.8",
37
- "allure-playwright": "^2.0.0-beta.14"
37
+ "allure-commandline": "^2.21.0",
38
+ "allure-playwright": "^2.1.0",
39
+ "rimraf": "^2.6.1",
40
+ "typescript": "~4.5.5"
38
41
  },
39
42
  "publishConfig": {
40
43
  "access": "public"
41
44
  },
42
45
  "main": "lib/index",
43
- "gitHead": "be8d78537cc3eb08515c6ec62c46d5d0c2ab41b1"
46
+ "gitHead": "b56f399da8f6956b60c686033cd648496185c1cd"
44
47
  }
package/src/index.ts CHANGED
@@ -25,6 +25,8 @@ export * from './theia-menu-item';
25
25
  export * from './theia-menu';
26
26
  export * from './theia-notification-indicator';
27
27
  export * from './theia-notification-overlay';
28
+ export * from './theia-output-channel';
29
+ export * from './theia-output-view';
28
30
  export * from './theia-page-object';
29
31
  export * from './theia-preference-view';
30
32
  export * from './theia-problem-indicator';
@@ -35,6 +37,8 @@ export * from './theia-status-bar';
35
37
  export * from './theia-status-indicator';
36
38
  export * from './theia-text-editor';
37
39
  export * from './theia-toggle-bottom-indicator';
40
+ export * from './theia-toolbar';
41
+ export * from './theia-toolbar-item';
38
42
  export * from './theia-tree-node';
39
43
  export * from './theia-view';
40
44
  export * from './theia-workspace';
@@ -29,6 +29,7 @@ test.describe('Theia Explorer View', () => {
29
29
  const ws = new TheiaWorkspace(['src/tests/resources/sample-files1']);
30
30
  app = await TheiaApp.load(page, ws);
31
31
  explorer = await app.openView(TheiaExplorerView);
32
+ await explorer.waitForVisibleFileNodes();
32
33
  });
33
34
 
34
35
  test('should be visible and active after being opened', async () => {
@@ -53,24 +54,29 @@ test.describe('Theia Explorer View', () => {
53
54
  expect(await explorer.isActive()).toBe(true);
54
55
  });
55
56
 
56
- test('should show one folder named "sampleFolder" and one file named "sample.txt"', async () => {
57
+ test('should show one folder named "sampleFolder", one named "sampleFolderCompact" and one file named "sample.txt"', async () => {
57
58
  await explorer.selectTreeNode('sampleFolder');
58
59
  expect(await explorer.isTreeNodeSelected('sampleFolder')).toBe(true);
59
60
  const fileStatElements = await explorer.visibleFileStatNodes(DOT_FILES_FILTER);
60
- expect(fileStatElements.length).toBe(2);
61
+ expect(fileStatElements.length).toBe(3);
61
62
 
62
- let file; let folder;
63
+ let file; let folder; let compactFolder;
63
64
  if (await fileStatElements[0].isFolder()) {
64
65
  folder = fileStatElements[0];
65
- file = fileStatElements[1];
66
+ compactFolder = fileStatElements[1];
67
+ file = fileStatElements[2];
66
68
  } else {
67
- folder = fileStatElements[1];
69
+ folder = fileStatElements[2];
70
+ compactFolder = fileStatElements[1];
68
71
  file = fileStatElements[0];
69
72
  }
70
73
 
71
74
  expect(await folder.label()).toBe('sampleFolder');
72
75
  expect(await folder.isFile()).toBe(false);
73
76
  expect(await folder.isFolder()).toBe(true);
77
+ expect(await compactFolder.label()).toBe('sampleFolderCompact');
78
+ expect(await compactFolder.isFile()).toBe(false);
79
+ expect(await compactFolder.isFolder()).toBe(true);
74
80
  expect(await file.label()).toBe('sample.txt');
75
81
  expect(await file.isFolder()).toBe(false);
76
82
  expect(await file.isFile()).toBe(true);
@@ -83,7 +89,7 @@ test.describe('Theia Explorer View', () => {
83
89
  expect(await file.isFile()).toBe(true);
84
90
  });
85
91
 
86
- test('should provide file stat nodes that can define whether they are collapsed or not and that can be expanded', async () => {
92
+ test('should provide file stat nodes that can define whether they are collapsed or not and that can be expanded and collapsed', async () => {
87
93
  const file = await explorer.getFileStatNodeByLabel('sample.txt');
88
94
  expect(await file.isCollapsed()).toBe(false);
89
95
 
@@ -92,6 +98,9 @@ test.describe('Theia Explorer View', () => {
92
98
 
93
99
  await folder.expand();
94
100
  expect(await folder.isCollapsed()).toBe(false);
101
+
102
+ await folder.collapse();
103
+ expect(await folder.isCollapsed()).toBe(true);
95
104
  });
96
105
 
97
106
  test('should provide file stat node by path "sampleFolder/sampleFolder1/sampleFolder1-1/sampleFile1-1-1.txt"', async () => {
@@ -100,6 +109,17 @@ test.describe('Theia Explorer View', () => {
100
109
  expect(await file.label()).toBe('sampleFile1-1-1.txt');
101
110
  });
102
111
 
112
+ test('should be able to check if compact folder "sampleFolderCompact/nestedFolder1/nestedFolder2" exists', async () => {
113
+ // default setting `explorer.compactFolders=true` renders folders in a compact form - single child folders will be compressed in a combined tree element
114
+ expect(await explorer.existsDirectoryNode('sampleFolderCompact/nestedFolder1/nestedFolder2', true /* compact */)).toBe(true);
115
+ });
116
+
117
+ test('should provide file stat node by path of compact folder "sampleFolderCompact/nestedFolder1/nestedFolder2/sampleFile1-1.txt"', async () => {
118
+ const file = await explorer.fileStatNode('sampleFolderCompact/nestedFolder1/nestedFolder2/sampleFile1-1.txt', true /* compact */);
119
+ if (!file) { throw Error('File stat node could not be retrieved by path'); }
120
+ expect(await file.label()).toBe('sampleFile1-1.txt');
121
+ });
122
+
103
123
  test('should open context menu on "sample.txt"', async () => {
104
124
  const file = await explorer.getFileStatNodeByLabel('sample.txt');
105
125
  const menu = await file.openContextMenu();
@@ -74,10 +74,10 @@ test.describe('Theia Main Menu', () => {
74
74
 
75
75
  test('should be able to show menu item in submenu by path', async () => {
76
76
  const mainMenu = await menuBar.openMenu('File');
77
- const openPreferencesItem = await mainMenu.menuItemByNamePath('Preferences', 'Open Settings (UI)');
77
+ const openPreferencesItem = await mainMenu.menuItemByNamePath('Preferences', 'Settings');
78
78
 
79
79
  const label = await openPreferencesItem?.label();
80
- expect(label).toBe('Open Settings (UI)');
80
+ expect(label).toBe('Settings');
81
81
  });
82
82
 
83
83
  test('should close main menu', async () => {
@@ -0,0 +1,85 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2023 EclipseSource and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { expect } from '@playwright/test';
18
+ import { TheiaOutputViewChannel } from 'src/theia-output-channel';
19
+ import { TheiaApp } from '../theia-app';
20
+ import { TheiaOutputView } from '../theia-output-view';
21
+ import test, { page } from './fixtures/theia-fixture';
22
+
23
+ let app: TheiaApp;
24
+ let outputView: TheiaOutputView;
25
+ let testChannel: TheiaOutputViewChannel;
26
+
27
+ test.describe('Theia Output View', () => {
28
+
29
+ test.beforeAll(async () => {
30
+ app = await TheiaApp.load(page);
31
+ });
32
+
33
+ test('should open the output view and check if is visible and active', async () => {
34
+ outputView = await app.openView(TheiaOutputView);
35
+ expect(await outputView.isTabVisible()).toBe(true);
36
+ expect(await outputView.isDisplayed()).toBe(true);
37
+ expect(await outputView.isActive()).toBe(true);
38
+ });
39
+ test('should be opened at the bottom and have the title "Output"', async () => {
40
+ expect(await outputView.isInSidePanel()).toBe(false);
41
+ expect(await outputView.side()).toBe('bottom');
42
+ expect(await outputView.title()).toBe('Output');
43
+ });
44
+ test('should be closable', async () => {
45
+ expect(await outputView.isClosable()).toBe(true);
46
+ await outputView.close();
47
+ expect(await outputView.isTabVisible()).toBe(false);
48
+ expect(await outputView.isDisplayed()).toBe(false);
49
+ expect(await outputView.isActive()).toBe(false);
50
+ });
51
+ test('should select a test output channel', async () => {
52
+ outputView = await app.openView(TheiaOutputView);
53
+ expect(await outputView.isTabVisible()).toBe(true);
54
+ expect(await outputView.isDisplayed()).toBe(true);
55
+ expect(await outputView.isActive()).toBe(true);
56
+
57
+ const testChannelName = 'API Sample: my test channel';
58
+ expect(await outputView.selectOutputChannel(testChannelName)).toBe(true);
59
+ });
60
+ test('should check if the output view of the test output channel', async () => {
61
+ const testChannelName = 'API Sample: my test channel';
62
+ expect(await outputView.isOutputChannelSelected(testChannelName));
63
+ const channel = await outputView.getOutputChannel(testChannelName);
64
+ expect(channel).toBeDefined;
65
+ testChannel = channel!;
66
+ expect(await testChannel!.isDisplayed()).toBe(true);
67
+ });
68
+ test('should check if the output view test channel shows the test output', async () => {
69
+ expect(await testChannel.numberOfLines()).toBe(5);
70
+ expect(await testChannel.textContentOfLineByLineNumber(1)).toMatch('hello info1');
71
+ expect(await testChannel.maxSeverityOfLineByLineNumber(1)).toMatch('info');
72
+ expect(await testChannel.textContentOfLineByLineNumber(2)).toMatch('hello info2');
73
+ expect(await testChannel.maxSeverityOfLineByLineNumber(2)).toMatch('info');
74
+ expect(await testChannel.textContentOfLineByLineNumber(3)).toMatch('hello error');
75
+ expect(await testChannel.maxSeverityOfLineByLineNumber(3)).toMatch('error');
76
+ expect(await testChannel.textContentOfLineByLineNumber(4)).toMatch('hello warning');
77
+ expect(await testChannel.maxSeverityOfLineByLineNumber(4)).toMatch('warning');
78
+ expect(await testChannel.textContentOfLineByLineNumber(5)).toMatch(
79
+ 'inlineInfo1 inlineWarning inlineError inlineInfo2'
80
+ );
81
+ expect(await testChannel.maxSeverityOfLineByLineNumber(5)).toMatch('error');
82
+ });
83
+
84
+ });
85
+