@theia/playwright 1.71.0-next.6 → 1.71.0-next.64

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.
@@ -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 ? 'N' : app.isElectron ? 'Ctrl+N' : 'Alt+N');
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;IAKlG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB1C,+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"}
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
- const lines = await this.locator.locator(this.LINES_SELECTOR).all();
72
- if (!lines || lines.length === 0) {
73
- throw new Error('Couldn\'t retrieve lines of monaco editor');
78
+ let index = await this.findLineIndex(lineNumber);
79
+ if (index >= 0) {
80
+ return this.locator.locator(this.LINES_SELECTOR).nth(index);
74
81
  }
75
- const linesWithXCoordinates = [];
76
- for (const line of lines) {
77
- await line.waitFor({ state: 'visible' });
78
- const box = await line.boundingBox();
79
- linesWithXCoordinates.push({ x: box ? box.x : Number.MAX_VALUE, line });
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
- linesWithXCoordinates.sort((a, b) => a.x.toString().localeCompare(b.x.toString()));
82
- const lineInfo = linesWithXCoordinates[lineNumber - 1];
83
- if (!lineInfo) {
84
- throw new Error(`Could not find line number ${lineNumber}`);
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
- return lineInfo.line;
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":"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"}
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":"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"}
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;AAE7C,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;IAUrC,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"}
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"}
@@ -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
- // shell-tab-code-editor-opener:file:///c%3A/Users/user/AppData/Local/Temp/cloud-ws-JBUhb6/sample.txt:1
25
- // code-editor-opener:file:///c%3A/Users/user/AppData/Local/Temp/cloud-ws-JBUhb6/sample.txt:1
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: (0, util_1.normalizeId)(`#shell-tab-code-editor-opener:${app.workspace.pathAsUrl(filePath)}:1`),
28
- viewSelector: (0, util_1.normalizeId)(`#code-editor-opener:${app.workspace.pathAsUrl(filePath)}:1`) + '.theia-editor'
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,iCAAqC;AACrC,+DAA0D;AAE1D,MAAa,eAAgB,SAAQ,0BAAW;IAI5C,YAAY,QAAgB,EAAE,GAAa;QACvC,uGAAuG;QACvG,6FAA6F;QAC7F,KAAK,CAAC;YACF,WAAW,EAAE,IAAA,kBAAW,EAAC,iCAAiC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;YAChG,YAAY,EAAE,IAAA,kBAAW,EAAC,uBAAuB,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,eAAe;SAC5G,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,YAAY,GAAG,IAAI,uCAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9F,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,uCAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,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,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACnC,OAAO,MAAM,WAAW,CAAC,aAAa,EAAE,IAAI,SAAS,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAC,UAAkB;QACpD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,MAAM,WAAW,CAAC,aAAa,EAAE,IAAI,SAAS,CAAC;IAC1D,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,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACnC,OAAO,MAAM,WAAW,EAAE,aAAa,EAAE,IAAI,SAAS,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAC,IAAY;QAC9C,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,MAAM,WAAW,EAAE,aAAa,EAAE,IAAI,SAAS,CAAC;IAC3D,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,YAAY,CAAC,2BAA2B,CAAC,CAAC;QACvF,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,uCAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,qCAAqC,CAAC,UAAkB,EAAE,OAAe;QAC3E,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9D,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,uCAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,WAAgC;QACvD,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IAES,KAAK,CAAC,iBAAiB,CAAC,WAAgC;QAC9D,MAAM,WAAW,EAAE,KAAK,EAAE,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,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ;AApHD,0CAoHC"}
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-next.6+8b1f84c1b",
3
+ "version": "1.71.0-next.64+5f7caff6d",
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.47.0",
36
- "fs-extra": "^9.0.8",
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-next.6+8b1f84c1b",
40
+ "@theia/cli": "1.71.0-next.64+5f7caff6d",
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": "8b1f84c1b0114a76a1f343f3a2935d68faca6927"
52
+ "gitHead": "5f7caff6d4a136452787442612656962b5c5099e"
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 ? 'N' : app.isElectron ? 'Ctrl+N' : 'Alt+N');
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
- const lines = await this.locator.locator(this.LINES_SELECTOR).all();
97
- if (!lines || lines.length === 0) {
98
- throw new Error('Couldn\'t retrieve lines of monaco editor');
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
- const linesWithXCoordinates = [];
102
- for (const line of lines) {
103
- await line.waitFor({ state: 'visible' });
104
- const box = await line.boundingBox();
105
- linesWithXCoordinates.push({ x: box ? box.x : Number.MAX_VALUE, line });
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
- linesWithXCoordinates.sort((a, b) => a.x.toString().localeCompare(b.x.toString()));
108
- const lineInfo = linesWithXCoordinates[lineNumber - 1];
109
- if (!lineInfo) {
110
- throw new Error(`Could not find line number ${lineNumber}`);
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
- return lineInfo.line;
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
  }
@@ -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
- // shell-tab-code-editor-opener:file:///c%3A/Users/user/AppData/Local/Temp/cloud-ws-JBUhb6/sample.txt:1
30
- // code-editor-opener:file:///c%3A/Users/user/AppData/Local/Temp/cloud-ws-JBUhb6/sample.txt:1
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: normalizeId(`#shell-tab-code-editor-opener:${app.workspace.pathAsUrl(filePath)}:1`),
33
- viewSelector: normalizeId(`#code-editor-opener:${app.workspace.pathAsUrl(filePath)}:1`) + '.theia-editor'
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
  }