@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.
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -1
- package/lib/tests/theia-explorer-view.test.js +25 -5
- package/lib/tests/theia-explorer-view.test.js.map +1 -1
- package/lib/tests/theia-main-menu.test.js +2 -2
- package/lib/tests/theia-main-menu.test.js.map +1 -1
- package/lib/tests/theia-output-view.test.d.ts +2 -0
- package/lib/tests/theia-output-view.test.d.ts.map +1 -0
- package/lib/tests/theia-output-view.test.js +77 -0
- package/lib/tests/theia-output-view.test.js.map +1 -0
- package/lib/tests/theia-quick-command.test.js +14 -0
- package/lib/tests/theia-quick-command.test.js.map +1 -1
- package/lib/tests/theia-sample-app.test.js +3 -30
- package/lib/tests/theia-sample-app.test.js.map +1 -1
- package/lib/tests/theia-toolbar.test.d.ts +2 -0
- package/lib/tests/theia-toolbar.test.d.ts.map +1 -0
- package/lib/tests/theia-toolbar.test.js +60 -0
- package/lib/tests/theia-toolbar.test.js.map +1 -0
- package/lib/tests/theia-workspace.test.js +5 -3
- package/lib/tests/theia-workspace.test.js.map +1 -1
- package/lib/theia-app.d.ts.map +1 -1
- package/lib/theia-app.js +1 -0
- package/lib/theia-app.js.map +1 -1
- package/lib/theia-explorer-view.d.ts +11 -4
- package/lib/theia-explorer-view.d.ts.map +1 -1
- package/lib/theia-explorer-view.js +54 -6
- package/lib/theia-explorer-view.js.map +1 -1
- package/lib/theia-monaco-editor.d.ts +16 -0
- package/lib/theia-monaco-editor.d.ts.map +1 -0
- package/lib/theia-monaco-editor.js +76 -0
- package/lib/theia-monaco-editor.js.map +1 -0
- package/lib/theia-output-channel.d.ts +25 -0
- package/lib/theia-output-channel.d.ts.map +1 -0
- package/lib/theia-output-channel.js +72 -0
- package/lib/theia-output-channel.js.map +1 -0
- package/lib/theia-output-view.d.ts +10 -0
- package/lib/theia-output-view.d.ts.map +1 -0
- package/lib/theia-output-view.js +82 -0
- package/lib/theia-output-view.js.map +1 -0
- package/lib/theia-quick-command-palette.d.ts +2 -1
- package/lib/theia-quick-command-palette.d.ts.map +1 -1
- package/lib/theia-quick-command-palette.js +9 -2
- package/lib/theia-quick-command-palette.js.map +1 -1
- package/lib/theia-text-editor.d.ts +2 -3
- package/lib/theia-text-editor.d.ts.map +1 -1
- package/lib/theia-text-editor.js +11 -40
- package/lib/theia-text-editor.js.map +1 -1
- package/lib/theia-toolbar-item.d.ts +11 -0
- package/lib/theia-toolbar-item.d.ts.map +1 -0
- package/lib/theia-toolbar-item.js +40 -0
- package/lib/theia-toolbar-item.js.map +1 -0
- package/lib/theia-toolbar.d.ts +20 -0
- package/lib/theia-toolbar.d.ts.map +1 -0
- package/lib/theia-toolbar.js +91 -0
- package/lib/theia-toolbar.js.map +1 -0
- package/lib/theia-tree-node.d.ts +1 -0
- package/lib/theia-tree-node.d.ts.map +1 -1
- package/lib/theia-tree-node.js +8 -0
- package/lib/theia-tree-node.js.map +1 -1
- package/package.json +13 -10
- package/src/index.ts +4 -0
- package/src/tests/resources/sample-files1/sampleFolderCompact/nestedFolder1/nestedFolder2/sampleFile1-1.txt +0 -0
- package/src/tests/theia-explorer-view.test.ts +26 -6
- package/src/tests/theia-main-menu.test.ts +2 -2
- package/src/tests/theia-output-view.test.ts +85 -0
- package/src/tests/theia-quick-command.test.ts +15 -0
- package/src/tests/theia-sample-app.test.ts +3 -34
- package/src/tests/theia-toolbar.test.ts +65 -0
- package/src/tests/theia-workspace.test.ts +5 -3
- package/src/theia-app.ts +1 -0
- package/src/theia-explorer-view.ts +60 -7
- package/src/theia-monaco-editor.ts +83 -0
- package/src/theia-output-channel.ts +88 -0
- package/src/theia-output-view.ts +87 -0
- package/src/theia-quick-command-palette.ts +10 -2
- package/src/theia-text-editor.ts +13 -44
- package/src/theia-toolbar-item.ts +41 -0
- package/src/theia-toolbar.ts +99 -0
- package/src/theia-tree-node.ts +10 -1
package/lib/theia-text-editor.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":";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;;;AAGhF,+BAA4B;AAG5B,iDAA6C;AAC7C,iCAA4D;
|
|
1
|
+
{"version":3,"file":"theia-text-editor.js","sourceRoot":"","sources":["../src/theia-text-editor.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;;;AAGhF,+BAA4B;AAG5B,iDAA6C;AAC7C,iCAA4D;AAC5D,+DAA0D;AAE1D,MAAa,eAAgB,SAAQ,0BAAW;IAI5C,YAAY,QAAgB,EAAE,GAAa;QACvC,uGAAuG;QACvG,6FAA6F;QAC7F,KAAK,CAAC;YACF,WAAW,EAAE,IAAA,kBAAW,EAAC,wCAAwC,IAAA,oBAAa,EAAC,IAAA,WAAI,EAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,aAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC;YACpJ,YAAY,EAAE,IAAA,kBAAW,EAAC,8BAA8B,IAAA,oBAAa,EAAC,IAAA,WAAI,EAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,aAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,eAAe;SAChK,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,YAAY,GAAG,IAAI,uCAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,aAAa;QACf,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,UAAkB;QAClD,OAAO,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,IAAY,EAAE,UAAkB;QAC5D,MAAM,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAES,KAAK,CAAC,mBAAmB,CAAC,IAAY;QAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,UAAkB;QAC7C,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACnC,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAC,UAAkB;QACpD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,UAAkB;QAC3C,MAAM,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAC,IAAY;QAC9C,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,OAAe,EAAE,OAAe;QAC5D,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,IAAY;QACvC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACnC,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAC,IAAY;QAC9C,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,IAAY;QACvC,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,uCAAuC,CAAC,2BAAmC,EAAE,OAAe;QAC9F,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,CAAC;QAC7F,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,qCAAqC,CAAC,UAAkB,EAAE,OAAe;QAC3E,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC1E,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,WAAgE;QACvF,MAAM,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA,CAAC;IAChD,CAAC;IAES,KAAK,CAAC,iBAAiB,CAAC,WAAgE;QAC9F,MAAM,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,EAAE,CAAA,CAAC;IAC/B,CAAC;IAES,KAAK,CAAC,kBAAkB;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,GAAG,2CAA2C,CAAC,CAAC;IACtG,CAAC;IAED,KAAK,CAAC,yBAAyB;QAC3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,IAAI,KAAK,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;SAAE;QAC1E,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ;AApHD,0CAoHC"}
|
|
@@ -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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"}
|
package/lib/theia-tree-node.d.ts
CHANGED
|
@@ -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"}
|
package/lib/theia-tree-node.js
CHANGED
|
@@ -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,
|
|
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.
|
|
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 &&
|
|
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
|
-
"
|
|
21
|
-
"ui-tests
|
|
22
|
-
"ui-tests-headful": "yarn && playwright test --
|
|
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.
|
|
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.
|
|
37
|
-
"allure-playwright": "^2.
|
|
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": "
|
|
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';
|
|
File without changes
|
|
@@ -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(
|
|
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
|
-
|
|
66
|
+
compactFolder = fileStatElements[1];
|
|
67
|
+
file = fileStatElements[2];
|
|
66
68
|
} else {
|
|
67
|
-
folder = fileStatElements[
|
|
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', '
|
|
77
|
+
const openPreferencesItem = await mainMenu.menuItemByNamePath('Preferences', 'Settings');
|
|
78
78
|
|
|
79
79
|
const label = await openPreferencesItem?.label();
|
|
80
|
-
expect(label).toBe('
|
|
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
|
+
|