@theia/playwright 1.71.0-next.8 → 1.71.0
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/tests/theia-main-menu.test.js +1 -1
- package/lib/tests/theia-output-view.test.js +21 -1
- package/lib/tests/theia-output-view.test.js.map +1 -1
- package/lib/theia-monaco-editor.d.ts +13 -0
- package/lib/theia-monaco-editor.d.ts.map +1 -1
- package/lib/theia-monaco-editor.js +49 -13
- package/lib/theia-monaco-editor.js.map +1 -1
- package/lib/theia-output-channel.d.ts +1 -0
- package/lib/theia-output-channel.d.ts.map +1 -1
- package/lib/theia-output-channel.js +12 -0
- package/lib/theia-output-channel.js.map +1 -1
- package/lib/theia-text-editor.d.ts.map +1 -1
- package/lib/theia-text-editor.js +7 -5
- package/lib/theia-text-editor.js.map +1 -1
- package/package.json +5 -5
- package/src/tests/theia-main-menu.test.ts +1 -1
- package/src/tests/theia-output-view.test.ts +21 -1
- package/src/theia-monaco-editor.ts +55 -13
- package/src/theia-output-channel.ts +14 -0
- package/src/theia-text-editor.ts +7 -5
|
@@ -53,7 +53,7 @@ test_1.test.describe('Theia Main Menu', () => {
|
|
|
53
53
|
const label = await menuItem?.label();
|
|
54
54
|
(0, test_1.expect)(label).toBe('New Text File');
|
|
55
55
|
const shortCut = await menuItem?.shortCut();
|
|
56
|
-
(0, test_1.expect)(shortCut).toBe(util_1.OSUtil.isMacOS ? '
|
|
56
|
+
(0, test_1.expect)(shortCut).toBe(util_1.OSUtil.isMacOS ? '⌥+N' : app.isElectron ? 'Ctrl+N' : 'Alt+N');
|
|
57
57
|
const hasSubmenu = await menuItem?.hasSubmenu();
|
|
58
58
|
(0, test_1.expect)(hasSubmenu).toBe(false);
|
|
59
59
|
});
|
|
@@ -63,7 +63,6 @@ test_1.test.describe('Theia Output View', () => {
|
|
|
63
63
|
(0, test_1.expect)(await testChannel.isDisplayed()).toBe(true);
|
|
64
64
|
});
|
|
65
65
|
(0, test_1.test)('should check if the output view test channel shows the test output', async () => {
|
|
66
|
-
(0, test_1.expect)(await testChannel.numberOfLines()).toBe(5);
|
|
67
66
|
(0, test_1.expect)(await testChannel.textContentOfLineByLineNumber(1)).toMatch('hello info1');
|
|
68
67
|
(0, test_1.expect)(await testChannel.maxSeverityOfLineByLineNumber(1)).toMatch('info');
|
|
69
68
|
(0, test_1.expect)(await testChannel.textContentOfLineByLineNumber(2)).toMatch('hello info2');
|
|
@@ -75,5 +74,26 @@ test_1.test.describe('Theia Output View', () => {
|
|
|
75
74
|
(0, test_1.expect)(await testChannel.textContentOfLineByLineNumber(5)).toMatch('inlineInfo1 inlineWarning inlineError inlineInfo2');
|
|
76
75
|
(0, test_1.expect)(await testChannel.maxSeverityOfLineByLineNumber(5)).toMatch('error');
|
|
77
76
|
});
|
|
77
|
+
(0, test_1.test)('should check if the output view test channel shows ANSI colored output', async () => {
|
|
78
|
+
(0, test_1.expect)(await testChannel.textContentOfLineByLineNumber(6)).toMatch('ANSI red text');
|
|
79
|
+
(0, test_1.expect)(await testChannel.ansiClassesOfLineByLineNumber(6)).toContain('ansi-red-fg');
|
|
80
|
+
(0, test_1.expect)(await testChannel.textContentOfLineByLineNumber(7)).toMatch('ANSI green text');
|
|
81
|
+
(0, test_1.expect)(await testChannel.ansiClassesOfLineByLineNumber(7)).toContain('ansi-green-fg');
|
|
82
|
+
(0, test_1.expect)(await testChannel.textContentOfLineByLineNumber(8)).toMatch('ANSI yellow and ANSI blue on the same line');
|
|
83
|
+
(0, test_1.expect)(await testChannel.ansiClassesOfLineByLineNumber(8)).toContain('ansi-yellow-fg');
|
|
84
|
+
(0, test_1.expect)(await testChannel.ansiClassesOfLineByLineNumber(8)).toContain('ansi-blue-fg');
|
|
85
|
+
(0, test_1.expect)(await testChannel.textContentOfLineByLineNumber(9)).toMatch('ANSI bold magenta');
|
|
86
|
+
(0, test_1.expect)(await testChannel.ansiClassesOfLineByLineNumber(9)).toContain('ansi-bold');
|
|
87
|
+
(0, test_1.expect)(await testChannel.ansiClassesOfLineByLineNumber(9)).toContain('ansi-magenta-fg');
|
|
88
|
+
(0, test_1.expect)(await testChannel.textContentOfLineByLineNumber(10)).toMatch('ANSI underlined cyan');
|
|
89
|
+
(0, test_1.expect)(await testChannel.ansiClassesOfLineByLineNumber(10)).toContain('ansi-underline');
|
|
90
|
+
(0, test_1.expect)(await testChannel.ansiClassesOfLineByLineNumber(10)).toContain('ansi-cyan-fg');
|
|
91
|
+
(0, test_1.expect)(await testChannel.textContentOfLineByLineNumber(11)).toMatch('Mixed: ANSI error and ANSI success in one line');
|
|
92
|
+
(0, test_1.expect)(await testChannel.ansiClassesOfLineByLineNumber(11)).toContain('ansi-red-fg');
|
|
93
|
+
(0, test_1.expect)(await testChannel.ansiClassesOfLineByLineNumber(11)).toContain('ansi-green-fg');
|
|
94
|
+
(0, test_1.expect)(await testChannel.textContentOfLineByLineNumber(12)).toMatch('ANSI white on red background');
|
|
95
|
+
(0, test_1.expect)(await testChannel.ansiClassesOfLineByLineNumber(12)).toContain('ansi-white-fg');
|
|
96
|
+
(0, test_1.expect)(await testChannel.ansiClassesOfLineByLineNumber(12)).toContain('ansi-red-bg');
|
|
97
|
+
});
|
|
78
98
|
});
|
|
79
99
|
//# sourceMappingURL=theia-output-view.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-output-view.test.js","sourceRoot":"","sources":["../../src/tests/theia-output-view.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"theia-output-view.test.js","sourceRoot":"","sources":["../../src/tests/theia-output-view.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,7 +35,20 @@ export declare class TheiaMonacoEditor extends TheiaPageObject {
|
|
|
35
35
|
* @returns The line element of the editor.
|
|
36
36
|
*/
|
|
37
37
|
lineByLineNumber(lineNumber: number): Promise<ElementHandle<SVGElement | HTMLElement> | undefined>;
|
|
38
|
+
/**
|
|
39
|
+
* Returns the locator for the given model line number.
|
|
40
|
+
*
|
|
41
|
+
* Monaco uses virtual rendering so only lines in the viewport are in the DOM.
|
|
42
|
+
* Each `.view-line` element has a `style.top` value corresponding to its model position.
|
|
43
|
+
* This method uses that to find the correct line, scrolling to reveal it if necessary.
|
|
44
|
+
*/
|
|
38
45
|
line(lineNumber: number): Promise<Locator>;
|
|
46
|
+
/**
|
|
47
|
+
* Finds the DOM index of the `.view-line` element that corresponds to the given model line number.
|
|
48
|
+
* Uses the `style.top` value of each `.view-line` to compute the model line number.
|
|
49
|
+
* Returns -1 if the line is not currently rendered in the viewport.
|
|
50
|
+
*/
|
|
51
|
+
protected findLineIndex(lineNumber: number): Promise<number>;
|
|
39
52
|
textContentOfLineContainingText(text: string): Promise<string | undefined>;
|
|
40
53
|
/**
|
|
41
54
|
* @deprecated Use `lineWithText(text: string)` instead.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-monaco-editor.d.ts","sourceRoot":"","sources":["../src/theia-monaco-editor.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IAElD,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,SAAS,CAAC,QAAQ,CAAC,cAAc,8BAA8B;IAE/D;;;;;OAKG;gBACS,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAE3C;;OAEG;gBACS,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ;IAWrC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrC;;;OAGG;cACa,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAIhF,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAMhC,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAOpF;;;;OAIG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"theia-monaco-editor.d.ts","sourceRoot":"","sources":["../src/theia-monaco-editor.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IAElD,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,SAAS,CAAC,QAAQ,CAAC,cAAc,8BAA8B;IAE/D;;;;;OAKG;gBACS,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAE3C;;OAEG;gBACS,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ;IAWrC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrC;;;OAGG;cACa,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAIhF,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAMhC,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAOpF;;;;OAIG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;IAKxG;;;;;;OAMG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA8BhD;;;;OAIG;cACa,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB5D,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAOhF;;;;OAIG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;IAK9F,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAM9D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgB/C;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE;;;;;;;;;OASG;WACU,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9D;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAMnC,SAAS,CAAC,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAMjG"}
|
|
@@ -66,24 +66,60 @@ class TheiaMonacoEditor extends theia_page_object_1.TheiaPageObject {
|
|
|
66
66
|
const lineLocator = await this.line(lineNumber);
|
|
67
67
|
return (await lineLocator.elementHandle()) ?? undefined;
|
|
68
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Returns the locator for the given model line number.
|
|
71
|
+
*
|
|
72
|
+
* Monaco uses virtual rendering so only lines in the viewport are in the DOM.
|
|
73
|
+
* Each `.view-line` element has a `style.top` value corresponding to its model position.
|
|
74
|
+
* This method uses that to find the correct line, scrolling to reveal it if necessary.
|
|
75
|
+
*/
|
|
69
76
|
async line(lineNumber) {
|
|
70
77
|
await this.waitForVisible();
|
|
71
|
-
|
|
72
|
-
if (
|
|
73
|
-
|
|
78
|
+
let index = await this.findLineIndex(lineNumber);
|
|
79
|
+
if (index >= 0) {
|
|
80
|
+
return this.locator.locator(this.LINES_SELECTOR).nth(index);
|
|
74
81
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
82
|
+
// Line not in viewport, scroll to reveal it
|
|
83
|
+
await this.locator.click();
|
|
84
|
+
await this.page.keyboard.press('Control+Home');
|
|
85
|
+
await this.locator.locator(this.LINES_SELECTOR).first().waitFor({ state: 'visible' });
|
|
86
|
+
index = await this.findLineIndex(lineNumber);
|
|
87
|
+
if (index >= 0) {
|
|
88
|
+
return this.locator.locator(this.LINES_SELECTOR).nth(index);
|
|
80
89
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
90
|
+
// Line might be near the end, try scrolling there
|
|
91
|
+
await this.page.keyboard.press('Control+End');
|
|
92
|
+
await this.locator.locator(this.LINES_SELECTOR).first().waitFor({ state: 'visible' });
|
|
93
|
+
index = await this.findLineIndex(lineNumber);
|
|
94
|
+
if (index >= 0) {
|
|
95
|
+
return this.locator.locator(this.LINES_SELECTOR).nth(index);
|
|
85
96
|
}
|
|
86
|
-
|
|
97
|
+
throw new Error(`Could not find line number ${lineNumber}`);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Finds the DOM index of the `.view-line` element that corresponds to the given model line number.
|
|
101
|
+
* Uses the `style.top` value of each `.view-line` to compute the model line number.
|
|
102
|
+
* Returns -1 if the line is not currently rendered in the viewport.
|
|
103
|
+
*/
|
|
104
|
+
async findLineIndex(lineNumber) {
|
|
105
|
+
return this.locator.evaluate((editor, targetLine) => {
|
|
106
|
+
const viewLines = editor.querySelectorAll('.view-lines > .view-line');
|
|
107
|
+
if (viewLines.length === 0) {
|
|
108
|
+
return -1;
|
|
109
|
+
}
|
|
110
|
+
const lineHeight = viewLines[0].getBoundingClientRect().height;
|
|
111
|
+
if (lineHeight <= 0) {
|
|
112
|
+
return -1;
|
|
113
|
+
}
|
|
114
|
+
const targetTop = (targetLine - 1) * lineHeight;
|
|
115
|
+
for (let i = 0; i < viewLines.length; i++) {
|
|
116
|
+
const top = parseFloat(viewLines[i].style.top) || 0;
|
|
117
|
+
if (Math.abs(top - targetTop) < lineHeight * 0.5) {
|
|
118
|
+
return i;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return -1;
|
|
122
|
+
}, lineNumber);
|
|
87
123
|
}
|
|
88
124
|
async textContentOfLineContainingText(text) {
|
|
89
125
|
await this.waitForVisible();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-monaco-editor.js","sourceRoot":"","sources":["../src/theia-monaco-editor.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,gFAAgF;AAChF,gFAAgF;;;AAGhF,2DAAsD;AAGtD;;;;;GAKG;AACH,MAAa,iBAAkB,SAAQ,mCAAe;IAmBlD,YAAY,eAAiC,EAAE,GAAa;QACxD,KAAK,CAAC,GAAG,CAAC,CAAC;QAhBI,mBAAc,GAAG,0BAA0B,CAAC;QAiB3D,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC;QACnC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACjD,+BAA+B;QAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CACjC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,CAC1D,CAAC;IACN,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,WAAW;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,aAAa;QACf,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3E,OAAO,YAAY,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,UAAkB;QAClD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,WAAW,EAAE,CAAC;QACjD,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CAAC,UAAkB;QACrC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,CAAC,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC,IAAI,SAAS,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,UAAkB;QACzB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"theia-monaco-editor.js","sourceRoot":"","sources":["../src/theia-monaco-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ export declare class TheiaOutputViewChannel extends TheiaPageObject {
|
|
|
20
20
|
protected viewElement(): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
|
|
21
21
|
numberOfLines(): Promise<number | undefined>;
|
|
22
22
|
maxSeverityOfLineByLineNumber(lineNumber: number): Promise<'error' | 'warning' | 'info'>;
|
|
23
|
+
ansiClassesOfLineByLineNumber(lineNumber: number): Promise<string[]>;
|
|
23
24
|
textContentOfLineByLineNumber(lineNumber: number): Promise<string | undefined>;
|
|
24
25
|
}
|
|
25
26
|
//# sourceMappingURL=theia-output-channel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-output-channel.d.ts","sourceRoot":"","sources":["../src/theia-output-channel.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,0BAA0B;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,sBAAuB,SAAQ,eAAe;IAI3C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,0BAA0B;IAAE,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,eAAe;IAF/G,SAAS,CAAC,YAAY,EAAE,iBAAiB,CAAC;gBAEX,IAAI,EAAE,0BAA0B,EAAqB,UAAU,EAAE,eAAe;IAK/G,SAAS,KAAK,YAAY,IAAI,MAAM,CAEnC;IAED,SAAS,KAAK,OAAO,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,SAAS,KAAK,WAAW,IAAI,MAAM,GAAG,SAAS,CAE9C;IAEK,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC,SAAS,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAI1E,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAK5C,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IAkBxF,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAGvF"}
|
|
1
|
+
{"version":3,"file":"theia-output-channel.d.ts","sourceRoot":"","sources":["../src/theia-output-channel.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,0BAA0B;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,sBAAuB,SAAQ,eAAe;IAI3C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,0BAA0B;IAAE,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,eAAe;IAF/G,SAAS,CAAC,YAAY,EAAE,iBAAiB,CAAC;gBAEX,IAAI,EAAE,0BAA0B,EAAqB,UAAU,EAAE,eAAe;IAK/G,SAAS,KAAK,YAAY,IAAI,MAAM,CAEnC;IAED,SAAS,KAAK,OAAO,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,SAAS,KAAK,WAAW,IAAI,MAAM,GAAG,SAAS,CAE9C;IAEK,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC,SAAS,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAI1E,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAK5C,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IAkBxF,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAcpE,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAGvF"}
|
|
@@ -64,6 +64,18 @@ class TheiaOutputViewChannel extends theia_page_object_1.TheiaPageObject {
|
|
|
64
64
|
}
|
|
65
65
|
return 'info';
|
|
66
66
|
}
|
|
67
|
+
async ansiClassesOfLineByLineNumber(lineNumber) {
|
|
68
|
+
await this.waitForVisible();
|
|
69
|
+
const lineElement = await (await this.monacoEditor.line(lineNumber)).elementHandle();
|
|
70
|
+
const contents = await lineElement?.$$('span > span.mtk1');
|
|
71
|
+
if (!contents || contents.length < 1) {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
const classNames = await Promise.all(contents.map(async (content) => (await content.getAttribute('class')) ?? ''));
|
|
75
|
+
return classNames
|
|
76
|
+
.flatMap(c => c.split(' '))
|
|
77
|
+
.filter(c => c.startsWith('ansi-'));
|
|
78
|
+
}
|
|
67
79
|
async textContentOfLineByLineNumber(lineNumber) {
|
|
68
80
|
return this.monacoEditor.textContentOfLineByLineNumber(lineNumber);
|
|
69
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-output-channel.js","sourceRoot":"","sources":["../src/theia-output-channel.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,gFAAgF;AAChF,gFAAgF;;;AAIhF,2DAAsD;AACtD,iCAA0C;AAC1C,+DAA0D;AAQ1D,MAAa,sBAAuB,SAAQ,mCAAe;IAIvD,YAA+B,IAAgC,EAAqB,UAA2B;QAC3G,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QADK,SAAI,GAAJ,IAAI,CAA4B;QAAqB,eAAU,GAAV,UAAU,CAAiB;QAE3G,IAAI,CAAC,YAAY,GAAG,IAAI,uCAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IACpG,CAAC;IAED,IAAc,YAAY;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IAClC,CAAC;IAED,IAAc,OAAO;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,IAAc,WAAW;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,WAAW;QACb,OAAO,IAAA,uBAAgB,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAChD,CAAC;IAES,WAAW;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,aAAa;QACf,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,UAAkB;QAClD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACrF,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,0CAA0C,UAAU,GAAG,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CACrD,KAAK,EAAC,OAAO,EAAC,EAAE,CAAC,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5E,IAAI,kBAAkB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACpD,OAAO,OAAO,CAAC;QACnB,CAAC;aAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC7D,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,UAAkB;QAClD,OAAO,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;IACvE,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"theia-output-channel.js","sourceRoot":"","sources":["../src/theia-output-channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-text-editor.d.ts","sourceRoot":"","sources":["../src/theia-text-editor.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"theia-text-editor.d.ts","sourceRoot":"","sources":["../src/theia-text-editor.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,qBAAa,eAAgB,SAAQ,WAAW;IAE5C,SAAS,CAAC,YAAY,EAAE,iBAAiB,CAAC;gBAE9B,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ;IAarC,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAK5C,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI9E,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAKhE,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;IAO1G,+BAA+B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;IAOjH,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAK1E,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1E,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;IAOpG,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;IAO3G,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,uCAAuC,CAAC,2BAA2B,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5G,qCAAqC,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAQ/E,UAAU,CAAC,WAAW,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;cAI3D,iBAAiB,CAAC,WAAW,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;cAIlE,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;IAIhF,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC;CAOrD"}
|
package/lib/theia-text-editor.js
CHANGED
|
@@ -17,15 +17,17 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.TheiaTextEditor = void 0;
|
|
19
19
|
const theia_editor_1 = require("./theia-editor");
|
|
20
|
-
const util_1 = require("./util");
|
|
21
20
|
const theia_monaco_editor_1 = require("./theia-monaco-editor");
|
|
22
21
|
class TheiaTextEditor extends theia_editor_1.TheiaEditor {
|
|
23
22
|
constructor(filePath, app) {
|
|
24
|
-
//
|
|
25
|
-
//
|
|
23
|
+
// The editor widget ID includes a random counter suffix (e.g. :4728193746281937) that we can't predict,
|
|
24
|
+
// so we match by prefix using CSS attribute selectors. We don't use normalizeId here because
|
|
25
|
+
// the value is inside a quoted attribute selector, not a bare CSS ID selector.
|
|
26
|
+
const tabIdPrefix = `shell-tab-code-editor-opener:${app.workspace.pathAsUrl(filePath)}:`;
|
|
27
|
+
const viewIdPrefix = `code-editor-opener:${app.workspace.pathAsUrl(filePath)}:`;
|
|
26
28
|
super({
|
|
27
|
-
tabSelector:
|
|
28
|
-
viewSelector:
|
|
29
|
+
tabSelector: `[id^="${tabIdPrefix}"]`,
|
|
30
|
+
viewSelector: `[id^="${viewIdPrefix}"].theia-editor`
|
|
29
31
|
}, app);
|
|
30
32
|
this.monacoEditor = new theia_monaco_editor_1.TheiaMonacoEditor(this.page.locator(this.data.viewSelector), app);
|
|
31
33
|
}
|
|
@@ -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,gFAAgF;AAChF,gFAAgF;;;AAKhF,iDAA6C;AAC7C
|
|
1
|
+
{"version":3,"file":"theia-text-editor.js","sourceRoot":"","sources":["../src/theia-text-editor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/playwright",
|
|
3
|
-
"version": "1.71.0
|
|
3
|
+
"version": "1.71.0",
|
|
4
4
|
"description": "System tests for Theia",
|
|
5
5
|
"license": "EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
"src"
|
|
33
33
|
],
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@playwright/test": "^1.
|
|
36
|
-
"fs-extra": "^9.0
|
|
35
|
+
"@playwright/test": "^1.59.0",
|
|
36
|
+
"fs-extra": "^9.1.0",
|
|
37
37
|
"tslib": "^2.6.2"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@theia/cli": "1.71.0
|
|
40
|
+
"@theia/cli": "1.71.0",
|
|
41
41
|
"@types/fs-extra": "^9.0.8",
|
|
42
42
|
"allure-commandline": "^2.23.1",
|
|
43
43
|
"allure-playwright": "^2.5.0",
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"access": "public"
|
|
50
50
|
},
|
|
51
51
|
"main": "lib/index",
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "d8a596fc99f0a8e68b466828ed162569d79e3a71"
|
|
53
53
|
}
|
|
@@ -64,7 +64,7 @@ test.describe('Theia Main Menu', () => {
|
|
|
64
64
|
expect(label).toBe('New Text File');
|
|
65
65
|
|
|
66
66
|
const shortCut = await menuItem?.shortCut();
|
|
67
|
-
expect(shortCut).toBe(OSUtil.isMacOS ? '
|
|
67
|
+
expect(shortCut).toBe(OSUtil.isMacOS ? '⌥+N' : app.isElectron ? 'Ctrl+N' : 'Alt+N');
|
|
68
68
|
|
|
69
69
|
const hasSubmenu = await menuItem?.hasSubmenu();
|
|
70
70
|
expect(hasSubmenu).toBe(false);
|
|
@@ -67,7 +67,6 @@ test.describe('Theia Output View', () => {
|
|
|
67
67
|
expect(await testChannel!.isDisplayed()).toBe(true);
|
|
68
68
|
});
|
|
69
69
|
test('should check if the output view test channel shows the test output', async () => {
|
|
70
|
-
expect(await testChannel.numberOfLines()).toBe(5);
|
|
71
70
|
expect(await testChannel.textContentOfLineByLineNumber(1)).toMatch('hello info1');
|
|
72
71
|
expect(await testChannel.maxSeverityOfLineByLineNumber(1)).toMatch('info');
|
|
73
72
|
expect(await testChannel.textContentOfLineByLineNumber(2)).toMatch('hello info2');
|
|
@@ -81,5 +80,26 @@ test.describe('Theia Output View', () => {
|
|
|
81
80
|
);
|
|
82
81
|
expect(await testChannel.maxSeverityOfLineByLineNumber(5)).toMatch('error');
|
|
83
82
|
});
|
|
83
|
+
test('should check if the output view test channel shows ANSI colored output', async () => {
|
|
84
|
+
expect(await testChannel.textContentOfLineByLineNumber(6)).toMatch('ANSI red text');
|
|
85
|
+
expect(await testChannel.ansiClassesOfLineByLineNumber(6)).toContain('ansi-red-fg');
|
|
86
|
+
expect(await testChannel.textContentOfLineByLineNumber(7)).toMatch('ANSI green text');
|
|
87
|
+
expect(await testChannel.ansiClassesOfLineByLineNumber(7)).toContain('ansi-green-fg');
|
|
88
|
+
expect(await testChannel.textContentOfLineByLineNumber(8)).toMatch('ANSI yellow and ANSI blue on the same line');
|
|
89
|
+
expect(await testChannel.ansiClassesOfLineByLineNumber(8)).toContain('ansi-yellow-fg');
|
|
90
|
+
expect(await testChannel.ansiClassesOfLineByLineNumber(8)).toContain('ansi-blue-fg');
|
|
91
|
+
expect(await testChannel.textContentOfLineByLineNumber(9)).toMatch('ANSI bold magenta');
|
|
92
|
+
expect(await testChannel.ansiClassesOfLineByLineNumber(9)).toContain('ansi-bold');
|
|
93
|
+
expect(await testChannel.ansiClassesOfLineByLineNumber(9)).toContain('ansi-magenta-fg');
|
|
94
|
+
expect(await testChannel.textContentOfLineByLineNumber(10)).toMatch('ANSI underlined cyan');
|
|
95
|
+
expect(await testChannel.ansiClassesOfLineByLineNumber(10)).toContain('ansi-underline');
|
|
96
|
+
expect(await testChannel.ansiClassesOfLineByLineNumber(10)).toContain('ansi-cyan-fg');
|
|
97
|
+
expect(await testChannel.textContentOfLineByLineNumber(11)).toMatch('Mixed: ANSI error and ANSI success in one line');
|
|
98
|
+
expect(await testChannel.ansiClassesOfLineByLineNumber(11)).toContain('ansi-red-fg');
|
|
99
|
+
expect(await testChannel.ansiClassesOfLineByLineNumber(11)).toContain('ansi-green-fg');
|
|
100
|
+
expect(await testChannel.textContentOfLineByLineNumber(12)).toMatch('ANSI white on red background');
|
|
101
|
+
expect(await testChannel.ansiClassesOfLineByLineNumber(12)).toContain('ansi-white-fg');
|
|
102
|
+
expect(await testChannel.ansiClassesOfLineByLineNumber(12)).toContain('ansi-red-bg');
|
|
103
|
+
});
|
|
84
104
|
|
|
85
105
|
});
|
|
@@ -91,25 +91,67 @@ export class TheiaMonacoEditor extends TheiaPageObject {
|
|
|
91
91
|
return (await lineLocator.elementHandle()) ?? undefined;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
+
/**
|
|
95
|
+
* Returns the locator for the given model line number.
|
|
96
|
+
*
|
|
97
|
+
* Monaco uses virtual rendering so only lines in the viewport are in the DOM.
|
|
98
|
+
* Each `.view-line` element has a `style.top` value corresponding to its model position.
|
|
99
|
+
* This method uses that to find the correct line, scrolling to reveal it if necessary.
|
|
100
|
+
*/
|
|
94
101
|
async line(lineNumber: number): Promise<Locator> {
|
|
95
102
|
await this.waitForVisible();
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
103
|
+
|
|
104
|
+
let index = await this.findLineIndex(lineNumber);
|
|
105
|
+
if (index >= 0) {
|
|
106
|
+
return this.locator.locator(this.LINES_SELECTOR).nth(index);
|
|
99
107
|
}
|
|
100
108
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
109
|
+
// Line not in viewport, scroll to reveal it
|
|
110
|
+
await this.locator.click();
|
|
111
|
+
await this.page.keyboard.press('Control+Home');
|
|
112
|
+
await this.locator.locator(this.LINES_SELECTOR).first().waitFor({ state: 'visible' });
|
|
113
|
+
|
|
114
|
+
index = await this.findLineIndex(lineNumber);
|
|
115
|
+
if (index >= 0) {
|
|
116
|
+
return this.locator.locator(this.LINES_SELECTOR).nth(index);
|
|
106
117
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
118
|
+
|
|
119
|
+
// Line might be near the end, try scrolling there
|
|
120
|
+
await this.page.keyboard.press('Control+End');
|
|
121
|
+
await this.locator.locator(this.LINES_SELECTOR).first().waitFor({ state: 'visible' });
|
|
122
|
+
|
|
123
|
+
index = await this.findLineIndex(lineNumber);
|
|
124
|
+
if (index >= 0) {
|
|
125
|
+
return this.locator.locator(this.LINES_SELECTOR).nth(index);
|
|
111
126
|
}
|
|
112
|
-
|
|
127
|
+
|
|
128
|
+
throw new Error(`Could not find line number ${lineNumber}`);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Finds the DOM index of the `.view-line` element that corresponds to the given model line number.
|
|
133
|
+
* Uses the `style.top` value of each `.view-line` to compute the model line number.
|
|
134
|
+
* Returns -1 if the line is not currently rendered in the viewport.
|
|
135
|
+
*/
|
|
136
|
+
protected async findLineIndex(lineNumber: number): Promise<number> {
|
|
137
|
+
return this.locator.evaluate((editor, targetLine) => {
|
|
138
|
+
const viewLines = editor.querySelectorAll('.view-lines > .view-line') as NodeListOf<HTMLElement>;
|
|
139
|
+
if (viewLines.length === 0) {
|
|
140
|
+
return -1;
|
|
141
|
+
}
|
|
142
|
+
const lineHeight = viewLines[0].getBoundingClientRect().height;
|
|
143
|
+
if (lineHeight <= 0) {
|
|
144
|
+
return -1;
|
|
145
|
+
}
|
|
146
|
+
const targetTop = (targetLine - 1) * lineHeight;
|
|
147
|
+
for (let i = 0; i < viewLines.length; i++) {
|
|
148
|
+
const top = parseFloat(viewLines[i].style.top) || 0;
|
|
149
|
+
if (Math.abs(top - targetTop) < lineHeight * 0.5) {
|
|
150
|
+
return i;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return -1;
|
|
154
|
+
}, lineNumber);
|
|
113
155
|
}
|
|
114
156
|
|
|
115
157
|
async textContentOfLineContainingText(text: string): Promise<string | undefined> {
|
|
@@ -82,6 +82,20 @@ export class TheiaOutputViewChannel extends TheiaPageObject {
|
|
|
82
82
|
return 'info';
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
async ansiClassesOfLineByLineNumber(lineNumber: number): Promise<string[]> {
|
|
86
|
+
await this.waitForVisible();
|
|
87
|
+
const lineElement = await (await this.monacoEditor.line(lineNumber)).elementHandle();
|
|
88
|
+
const contents = await lineElement?.$$('span > span.mtk1');
|
|
89
|
+
if (!contents || contents.length < 1) {
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
const classNames = await Promise.all(contents.map(
|
|
93
|
+
async content => (await content.getAttribute('class')) ?? ''));
|
|
94
|
+
return classNames
|
|
95
|
+
.flatMap(c => c.split(' '))
|
|
96
|
+
.filter(c => c.startsWith('ansi-'));
|
|
97
|
+
}
|
|
98
|
+
|
|
85
99
|
async textContentOfLineByLineNumber(lineNumber: number): Promise<string | undefined> {
|
|
86
100
|
return this.monacoEditor.textContentOfLineByLineNumber(lineNumber);
|
|
87
101
|
}
|
package/src/theia-text-editor.ts
CHANGED
|
@@ -18,7 +18,6 @@ import { ElementHandle, Locator } from '@playwright/test';
|
|
|
18
18
|
|
|
19
19
|
import { TheiaApp } from './theia-app';
|
|
20
20
|
import { TheiaEditor } from './theia-editor';
|
|
21
|
-
import { normalizeId } from './util';
|
|
22
21
|
import { TheiaMonacoEditor } from './theia-monaco-editor';
|
|
23
22
|
|
|
24
23
|
export class TheiaTextEditor extends TheiaEditor {
|
|
@@ -26,11 +25,14 @@ export class TheiaTextEditor extends TheiaEditor {
|
|
|
26
25
|
protected monacoEditor: TheiaMonacoEditor;
|
|
27
26
|
|
|
28
27
|
constructor(filePath: string, app: TheiaApp) {
|
|
29
|
-
//
|
|
30
|
-
//
|
|
28
|
+
// The editor widget ID includes a random counter suffix (e.g. :4728193746281937) that we can't predict,
|
|
29
|
+
// so we match by prefix using CSS attribute selectors. We don't use normalizeId here because
|
|
30
|
+
// the value is inside a quoted attribute selector, not a bare CSS ID selector.
|
|
31
|
+
const tabIdPrefix = `shell-tab-code-editor-opener:${app.workspace.pathAsUrl(filePath)}:`;
|
|
32
|
+
const viewIdPrefix = `code-editor-opener:${app.workspace.pathAsUrl(filePath)}:`;
|
|
31
33
|
super({
|
|
32
|
-
tabSelector:
|
|
33
|
-
viewSelector:
|
|
34
|
+
tabSelector: `[id^="${tabIdPrefix}"]`,
|
|
35
|
+
viewSelector: `[id^="${viewIdPrefix}"].theia-editor`
|
|
34
36
|
}, app);
|
|
35
37
|
this.monacoEditor = new TheiaMonacoEditor(this.page.locator(this.data.viewSelector), app);
|
|
36
38
|
}
|