@theia/playwright 1.67.0-next.56 → 1.67.0-next.86
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 +37 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +55 -0
- package/lib/index.js.map +1 -0
- package/lib/tests/theia-app.test.d.ts +2 -0
- package/lib/tests/theia-app.test.d.ts.map +1 -0
- package/lib/tests/theia-app.test.js +30 -0
- package/lib/tests/theia-app.test.js.map +1 -0
- package/lib/tests/theia-application-shell.test.d.ts +2 -0
- package/lib/tests/theia-application-shell.test.d.ts.map +1 -0
- package/lib/tests/theia-application-shell.test.js +59 -0
- package/lib/tests/theia-application-shell.test.js.map +1 -0
- package/lib/tests/theia-explorer-view.test.d.ts +2 -0
- package/lib/tests/theia-explorer-view.test.d.ts.map +1 -0
- package/lib/tests/theia-explorer-view.test.js +186 -0
- package/lib/tests/theia-explorer-view.test.js.map +1 -0
- package/lib/tests/theia-getting-started.test.d.ts +2 -0
- package/lib/tests/theia-getting-started.test.d.ts.map +1 -0
- package/lib/tests/theia-getting-started.test.js +46 -0
- package/lib/tests/theia-getting-started.test.js.map +1 -0
- package/lib/tests/theia-main-menu.test.d.ts +2 -0
- package/lib/tests/theia-main-menu.test.d.ts.map +1 -0
- package/lib/tests/theia-main-menu.test.js +111 -0
- package/lib/tests/theia-main-menu.test.js.map +1 -0
- package/lib/tests/theia-notebook-editor.test.d.ts +2 -0
- package/lib/tests/theia-notebook-editor.test.d.ts.map +1 -0
- package/lib/tests/theia-notebook-editor.test.js +301 -0
- package/lib/tests/theia-notebook-editor.test.js.map +1 -0
- 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 +79 -0
- package/lib/tests/theia-output-view.test.js.map +1 -0
- package/lib/tests/theia-preference-view.test.d.ts +2 -0
- package/lib/tests/theia-preference-view.test.d.ts.map +1 -0
- package/lib/tests/theia-preference-view.test.js +102 -0
- package/lib/tests/theia-preference-view.test.js.map +1 -0
- package/lib/tests/theia-problems-view.test.d.ts +2 -0
- package/lib/tests/theia-problems-view.test.d.ts.map +1 -0
- package/lib/tests/theia-problems-view.test.js +55 -0
- package/lib/tests/theia-problems-view.test.js.map +1 -0
- package/lib/tests/theia-quick-command.test.d.ts +2 -0
- package/lib/tests/theia-quick-command.test.d.ts.map +1 -0
- package/lib/tests/theia-quick-command.test.js +75 -0
- package/lib/tests/theia-quick-command.test.js.map +1 -0
- package/lib/tests/theia-sample-app.test.d.ts +2 -0
- package/lib/tests/theia-sample-app.test.d.ts.map +1 -0
- package/lib/tests/theia-sample-app.test.js +58 -0
- package/lib/tests/theia-sample-app.test.js.map +1 -0
- package/lib/tests/theia-status-bar.test.d.ts +2 -0
- package/lib/tests/theia-status-bar.test.d.ts.map +1 -0
- package/lib/tests/theia-status-bar.test.js +45 -0
- package/lib/tests/theia-status-bar.test.js.map +1 -0
- package/lib/tests/theia-terminal-view.test.d.ts +2 -0
- package/lib/tests/theia-terminal-view.test.d.ts.map +1 -0
- package/lib/tests/theia-terminal-view.test.js +80 -0
- package/lib/tests/theia-terminal-view.test.js.map +1 -0
- package/lib/tests/theia-text-editor.test.d.ts +2 -0
- package/lib/tests/theia-text-editor.test.d.ts.map +1 -0
- package/lib/tests/theia-text-editor.test.js +159 -0
- package/lib/tests/theia-text-editor.test.js.map +1 -0
- 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 +62 -0
- package/lib/tests/theia-toolbar.test.js.map +1 -0
- package/lib/tests/theia-workspace.test.d.ts +2 -0
- package/lib/tests/theia-workspace.test.d.ts.map +1 -0
- package/lib/tests/theia-workspace.test.js +77 -0
- package/lib/tests/theia-workspace.test.js.map +1 -0
- package/lib/theia-about-dialog.d.ts +5 -0
- package/lib/theia-about-dialog.d.ts.map +1 -0
- package/lib/theia-about-dialog.js +27 -0
- package/lib/theia-about-dialog.js.map +1 -0
- package/lib/theia-app-loader.d.ts +20 -0
- package/lib/theia-app-loader.d.ts.map +1 -0
- package/lib/theia-app-loader.js +124 -0
- package/lib/theia-app-loader.js.map +1 -0
- package/lib/theia-app.d.ts +51 -0
- package/lib/theia-app.d.ts.map +1 -0
- package/lib/theia-app.js +154 -0
- package/lib/theia-app.js.map +1 -0
- package/lib/theia-context-menu.d.ts +9 -0
- package/lib/theia-context-menu.d.ts.map +1 -0
- package/lib/theia-context-menu.js +38 -0
- package/lib/theia-context-menu.js.map +1 -0
- package/lib/theia-dialog.d.ts +29 -0
- package/lib/theia-dialog.d.ts.map +1 -0
- package/lib/theia-dialog.js +100 -0
- package/lib/theia-dialog.js.map +1 -0
- package/lib/theia-editor.d.ts +10 -0
- package/lib/theia-editor.d.ts.map +1 -0
- package/lib/theia-editor.js +69 -0
- package/lib/theia-editor.js.map +1 -0
- package/lib/theia-explorer-view.d.ts +48 -0
- package/lib/theia-explorer-view.d.ts.map +1 -0
- package/lib/theia-explorer-view.js +274 -0
- package/lib/theia-explorer-view.js.map +1 -0
- package/lib/theia-main-menu.d.ts +17 -0
- package/lib/theia-main-menu.d.ts.map +1 -0
- package/lib/theia-main-menu.js +73 -0
- package/lib/theia-main-menu.js.map +1 -0
- package/lib/theia-menu-item.d.ts +15 -0
- package/lib/theia-menu-item.d.ts.map +1 -0
- package/lib/theia-menu-item.js +67 -0
- package/lib/theia-menu-item.js.map +1 -0
- package/lib/theia-menu.d.ts +17 -0
- package/lib/theia-menu.d.ts.map +1 -0
- package/lib/theia-menu.js +106 -0
- package/lib/theia-menu.js.map +1 -0
- package/lib/theia-monaco-editor.d.ts +63 -0
- package/lib/theia-monaco-editor.d.ts.map +1 -0
- package/lib/theia-monaco-editor.js +155 -0
- package/lib/theia-monaco-editor.js.map +1 -0
- package/lib/theia-notebook-cell.d.ts +104 -0
- package/lib/theia-notebook-cell.d.ts.map +1 -0
- package/lib/theia-notebook-cell.js +228 -0
- package/lib/theia-notebook-cell.js.map +1 -0
- package/lib/theia-notebook-editor.d.ts +50 -0
- package/lib/theia-notebook-editor.d.ts.map +1 -0
- package/lib/theia-notebook-editor.js +153 -0
- package/lib/theia-notebook-editor.js.map +1 -0
- package/lib/theia-notebook-toolbar.d.ts +13 -0
- package/lib/theia-notebook-toolbar.d.ts.map +1 -0
- package/lib/theia-notebook-toolbar.js +47 -0
- package/lib/theia-notebook-toolbar.js.map +1 -0
- package/lib/theia-notification-indicator.d.ts +8 -0
- package/lib/theia-notification-indicator.d.ts.map +1 -0
- package/lib/theia-notification-indicator.js +45 -0
- package/lib/theia-notification-indicator.js.map +1 -0
- package/lib/theia-notification-overlay.d.ts +23 -0
- package/lib/theia-notification-overlay.d.ts.map +1 -0
- package/lib/theia-notification-overlay.js +80 -0
- package/lib/theia-notification-overlay.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-page-object.d.ts +8 -0
- package/lib/theia-page-object.d.ts.map +1 -0
- package/lib/theia-page-object.js +28 -0
- package/lib/theia-page-object.js.map +1 -0
- package/lib/theia-preference-view.d.ts +91 -0
- package/lib/theia-preference-view.d.ts.map +1 -0
- package/lib/theia-preference-view.js +224 -0
- package/lib/theia-preference-view.js.map +1 -0
- package/lib/theia-problem-indicator.d.ts +9 -0
- package/lib/theia-problem-indicator.d.ts.map +1 -0
- package/lib/theia-problem-indicator.js +39 -0
- package/lib/theia-problem-indicator.js.map +1 -0
- package/lib/theia-problem-view.d.ts +6 -0
- package/lib/theia-problem-view.d.ts.map +1 -0
- package/lib/theia-problem-view.js +31 -0
- package/lib/theia-problem-view.js.map +1 -0
- package/lib/theia-quick-command-palette.d.ts +14 -0
- package/lib/theia-quick-command-palette.d.ts.map +1 -0
- package/lib/theia-quick-command-palette.js +87 -0
- package/lib/theia-quick-command-palette.js.map +1 -0
- package/lib/theia-rename-dialog.d.ts +6 -0
- package/lib/theia-rename-dialog.d.ts.map +1 -0
- package/lib/theia-rename-dialog.js +35 -0
- package/lib/theia-rename-dialog.js.map +1 -0
- package/lib/theia-status-bar.d.ts +14 -0
- package/lib/theia-status-bar.d.ts.map +1 -0
- package/lib/theia-status-bar.js +40 -0
- package/lib/theia-status-bar.js.map +1 -0
- package/lib/theia-status-indicator.d.ts +11 -0
- package/lib/theia-status-indicator.d.ts.map +1 -0
- package/lib/theia-status-indicator.js +49 -0
- package/lib/theia-status-indicator.js.map +1 -0
- package/lib/theia-terminal.d.ts +14 -0
- package/lib/theia-terminal.d.ts.map +1 -0
- package/lib/theia-terminal.js +60 -0
- package/lib/theia-terminal.js.map +1 -0
- package/lib/theia-text-editor.d.ts +27 -0
- package/lib/theia-text-editor.d.ts.map +1 -0
- package/lib/theia-text-editor.js +124 -0
- package/lib/theia-text-editor.js.map +1 -0
- package/lib/theia-toggle-bottom-indicator.d.ts +5 -0
- package/lib/theia-toggle-bottom-indicator.d.ts.map +1 -0
- package/lib/theia-toggle-bottom-indicator.js +27 -0
- package/lib/theia-toggle-bottom-indicator.js.map +1 -0
- 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 +41 -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 +20 -0
- package/lib/theia-tree-node.d.ts.map +1 -0
- package/lib/theia-tree-node.js +73 -0
- package/lib/theia-tree-node.js.map +1 -0
- package/lib/theia-view.d.ts +33 -0
- package/lib/theia-view.d.ts.map +1 -0
- package/lib/theia-view.js +150 -0
- package/lib/theia-view.js.map +1 -0
- package/lib/theia-welcome-view.d.ts +6 -0
- package/lib/theia-welcome-view.d.ts.map +1 -0
- package/lib/theia-welcome-view.js +31 -0
- package/lib/theia-welcome-view.js.map +1 -0
- package/lib/theia-workspace.d.ts +27 -0
- package/lib/theia-workspace.d.ts.map +1 -0
- package/lib/theia-workspace.js +84 -0
- package/lib/theia-workspace.js.map +1 -0
- package/lib/util.d.ts +18 -0
- package/lib/util.d.ts.map +1 -0
- package/lib/util.js +86 -0
- package/lib/util.js.map +1 -0
- package/package.json +5 -4
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ElementHandle } from '@playwright/test';
|
|
2
|
+
import { TheiaMenu } from './theia-menu';
|
|
3
|
+
import { TheiaPageObject } from './theia-page-object';
|
|
4
|
+
export declare class TheiaMainMenu extends TheiaMenu {
|
|
5
|
+
selector: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class TheiaMenuBar extends TheiaPageObject {
|
|
8
|
+
selector: string;
|
|
9
|
+
protected menubarElementHandle(): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
|
|
10
|
+
isVisible(): Promise<boolean>;
|
|
11
|
+
waitForVisible(): Promise<void>;
|
|
12
|
+
openMenu(menuName: string): Promise<TheiaMainMenu>;
|
|
13
|
+
visibleMenuBarItems(): Promise<string[]>;
|
|
14
|
+
protected menuBarItem(label?: string): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
|
|
15
|
+
protected menuBarItemSelector(label?: string): string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=theia-main-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theia-main-menu.d.ts","sourceRoot":"","sources":["../src/theia-main-menu.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,qBAAa,aAAc,SAAQ,SAAS;IAC/B,QAAQ,SAA8B;CAClD;AAED,qBAAa,YAAa,SAAQ,eAAe;IAC7C,QAAQ,SAAiC;cAEzB,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAIzF,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAK7B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAkBlD,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM9C,SAAS,CAAC,WAAW,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAI1F,SAAS,CAAC,mBAAmB,CAAC,KAAK,SAAK,GAAG,MAAM;CAIpD"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2021 logi.cals GmbH, 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-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.TheiaMenuBar = exports.TheiaMainMenu = void 0;
|
|
19
|
+
const theia_menu_1 = require("./theia-menu");
|
|
20
|
+
const theia_page_object_1 = require("./theia-page-object");
|
|
21
|
+
const util_1 = require("./util");
|
|
22
|
+
class TheiaMainMenu extends theia_menu_1.TheiaMenu {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(...arguments);
|
|
25
|
+
this.selector = '.lm-Menu.lm-MenuBar-menu';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.TheiaMainMenu = TheiaMainMenu;
|
|
29
|
+
class TheiaMenuBar extends theia_page_object_1.TheiaPageObject {
|
|
30
|
+
constructor() {
|
|
31
|
+
super(...arguments);
|
|
32
|
+
this.selector = (0, util_1.normalizeId)('#theia:menubar');
|
|
33
|
+
}
|
|
34
|
+
async menubarElementHandle() {
|
|
35
|
+
return this.page.$(this.selector);
|
|
36
|
+
}
|
|
37
|
+
async isVisible() {
|
|
38
|
+
const menuBar = await this.menubarElementHandle();
|
|
39
|
+
return !!menuBar && menuBar.isVisible();
|
|
40
|
+
}
|
|
41
|
+
async waitForVisible() {
|
|
42
|
+
await this.page.waitForSelector(this.selector, { state: 'visible' });
|
|
43
|
+
}
|
|
44
|
+
async openMenu(menuName) {
|
|
45
|
+
await this.waitForVisible();
|
|
46
|
+
const menuBarItem = await this.menuBarItem(menuName);
|
|
47
|
+
if (!menuBarItem) {
|
|
48
|
+
throw new Error(`Menu '${menuName}' not found!`);
|
|
49
|
+
}
|
|
50
|
+
const mainMenu = new TheiaMainMenu(this.app);
|
|
51
|
+
if (await mainMenu.isOpen()) {
|
|
52
|
+
await menuBarItem.hover();
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
await menuBarItem.click();
|
|
56
|
+
}
|
|
57
|
+
await mainMenu.waitForVisible();
|
|
58
|
+
return mainMenu;
|
|
59
|
+
}
|
|
60
|
+
async visibleMenuBarItems() {
|
|
61
|
+
await this.waitForVisible();
|
|
62
|
+
const items = await this.page.$$(this.menuBarItemSelector());
|
|
63
|
+
return (0, util_1.toTextContentArray)(items);
|
|
64
|
+
}
|
|
65
|
+
menuBarItem(label = '') {
|
|
66
|
+
return this.page.waitForSelector(this.menuBarItemSelector(label));
|
|
67
|
+
}
|
|
68
|
+
menuBarItemSelector(label = '') {
|
|
69
|
+
return `${this.selector} .lm-MenuBar-itemLabel >> text=${label}`;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.TheiaMenuBar = TheiaMenuBar;
|
|
73
|
+
//# sourceMappingURL=theia-main-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theia-main-menu.js","sourceRoot":"","sources":["../src/theia-main-menu.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;;;AAIhF,6CAAyC;AACzC,2DAAsD;AACtD,iCAAyD;AAEzD,MAAa,aAAc,SAAQ,sBAAS;IAA5C;;QACa,aAAQ,GAAG,0BAA0B,CAAC;IACnD,CAAC;CAAA;AAFD,sCAEC;AAED,MAAa,YAAa,SAAQ,mCAAe;IAAjD;;QACI,aAAQ,GAAG,IAAA,kBAAW,EAAC,gBAAgB,CAAC,CAAC;IA+C7C,CAAC;IA7Ca,KAAK,CAAC,oBAAoB;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,SAAS;QACX,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAClD,OAAO,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC3B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,cAAc,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACJ,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;QAChC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,mBAAmB;QACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAC7D,OAAO,IAAA,yBAAkB,EAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAES,WAAW,CAAC,KAAK,GAAG,EAAE;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IAES,mBAAmB,CAAC,KAAK,GAAG,EAAE;QACpC,OAAO,GAAG,IAAI,CAAC,QAAQ,kCAAkC,KAAK,EAAE,CAAC;IACrE,CAAC;CAEJ;AAhDD,oCAgDC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ElementHandle } from '@playwright/test';
|
|
2
|
+
export declare class TheiaMenuItem {
|
|
3
|
+
protected element: ElementHandle<SVGElement | HTMLElement>;
|
|
4
|
+
constructor(element: ElementHandle<SVGElement | HTMLElement>);
|
|
5
|
+
protected labelElementHandle(): Promise<ElementHandle<SVGElement | HTMLElement>>;
|
|
6
|
+
protected shortCutElementHandle(): Promise<ElementHandle<SVGElement | HTMLElement>>;
|
|
7
|
+
protected isHidden(): Promise<boolean>;
|
|
8
|
+
label(): Promise<string | undefined>;
|
|
9
|
+
shortCut(): Promise<string | undefined>;
|
|
10
|
+
hasSubmenu(): Promise<boolean>;
|
|
11
|
+
isEnabled(): Promise<boolean>;
|
|
12
|
+
click(): Promise<void>;
|
|
13
|
+
hover(): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=theia-menu-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theia-menu-item.d.ts","sourceRoot":"","sources":["../src/theia-menu-item.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,qBAAa,aAAa;IAEV,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC;gBAAhD,OAAO,EAAE,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC;IAEtE,SAAS,CAAC,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;IAIhF,SAAS,CAAC,qBAAqB,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;IAInF,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,KAAK,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAOpC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAOvC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAO9B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2021 logi.cals GmbH, 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-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.TheiaMenuItem = void 0;
|
|
19
|
+
const util_1 = require("./util");
|
|
20
|
+
class TheiaMenuItem {
|
|
21
|
+
constructor(element) {
|
|
22
|
+
this.element = element;
|
|
23
|
+
}
|
|
24
|
+
labelElementHandle() {
|
|
25
|
+
return this.element.waitForSelector('.lm-Menu-itemLabel');
|
|
26
|
+
}
|
|
27
|
+
shortCutElementHandle() {
|
|
28
|
+
return this.element.waitForSelector('.lm-Menu-itemShortcut');
|
|
29
|
+
}
|
|
30
|
+
isHidden() {
|
|
31
|
+
return (0, util_1.elementContainsClass)(this.element, 'lm-mod-collapsed');
|
|
32
|
+
}
|
|
33
|
+
async label() {
|
|
34
|
+
if (await this.isHidden()) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
return (0, util_1.textContent)(this.labelElementHandle());
|
|
38
|
+
}
|
|
39
|
+
async shortCut() {
|
|
40
|
+
if (await this.isHidden()) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
return (0, util_1.textContent)(this.shortCutElementHandle());
|
|
44
|
+
}
|
|
45
|
+
async hasSubmenu() {
|
|
46
|
+
if (await this.isHidden()) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
return (await this.element.getAttribute('data-type')) === 'submenu';
|
|
50
|
+
}
|
|
51
|
+
async isEnabled() {
|
|
52
|
+
const classAttribute = (await this.element.getAttribute('class'));
|
|
53
|
+
if (classAttribute === undefined || classAttribute === null) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
return !classAttribute.includes('lm-mod-disabled') && !classAttribute.includes('lm-mod-collapsed');
|
|
57
|
+
}
|
|
58
|
+
async click() {
|
|
59
|
+
return this.element.waitForSelector('.lm-Menu-itemLabel')
|
|
60
|
+
.then(labelElement => labelElement.click({ position: { x: 10, y: 10 } }));
|
|
61
|
+
}
|
|
62
|
+
async hover() {
|
|
63
|
+
return this.element.hover();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.TheiaMenuItem = TheiaMenuItem;
|
|
67
|
+
//# sourceMappingURL=theia-menu-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theia-menu-item.js","sourceRoot":"","sources":["../src/theia-menu-item.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;;;AAIhF,iCAA2D;AAE3D,MAAa,aAAa;IAEtB,YAAsB,OAAgD;QAAhD,YAAO,GAAP,OAAO,CAAyC;IAAI,CAAC;IAEjE,kBAAkB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC9D,CAAC;IAES,qBAAqB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;IACjE,CAAC;IAES,QAAQ;QACd,OAAO,IAAA,2BAAoB,EAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,IAAA,kBAAW,EAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,IAAA,kBAAW,EAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,SAAS,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,SAAS;QACX,MAAM,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAClE,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACvG,CAAC;IAED,KAAK,CAAC,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,oBAAoB,CAAC;aACpD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,CAAC,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;CAEJ;AAtDD,sCAsDC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ElementHandle } from '@playwright/test';
|
|
2
|
+
import { TheiaMenuItem } from './theia-menu-item';
|
|
3
|
+
import { TheiaPageObject } from './theia-page-object';
|
|
4
|
+
export declare class TheiaMenu extends TheiaPageObject {
|
|
5
|
+
selector: string;
|
|
6
|
+
protected menuElementHandle(): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
|
|
7
|
+
waitForVisible(): Promise<void>;
|
|
8
|
+
isOpen(): Promise<boolean>;
|
|
9
|
+
close(): Promise<void>;
|
|
10
|
+
menuItems(): Promise<TheiaMenuItem[]>;
|
|
11
|
+
clickMenuItem(name: string): Promise<void>;
|
|
12
|
+
menuItemByName(name: string): Promise<TheiaMenuItem | undefined>;
|
|
13
|
+
menuItemByNamePath(...names: string[]): Promise<TheiaMenuItem | undefined>;
|
|
14
|
+
protected menuItemSelector(label?: string): string;
|
|
15
|
+
visibleMenuItems(): Promise<string[]>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=theia-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theia-menu.d.ts","sourceRoot":"","sources":["../src/theia-menu.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,qBAAa,SAAU,SAAQ,eAAe;IAE1C,QAAQ,SAAc;cAEN,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAItF,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAK1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAYrC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAchE,kBAAkB,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAsBhF,SAAS,CAAC,gBAAgB,CAAC,KAAK,SAAK,GAAG,MAAM;IAIxC,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAS9C"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2021 logi.cals GmbH, 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-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.TheiaMenu = void 0;
|
|
19
|
+
const theia_menu_item_1 = require("./theia-menu-item");
|
|
20
|
+
const theia_page_object_1 = require("./theia-page-object");
|
|
21
|
+
const util_1 = require("./util");
|
|
22
|
+
class TheiaMenu extends theia_page_object_1.TheiaPageObject {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(...arguments);
|
|
25
|
+
this.selector = '.lm-Menu';
|
|
26
|
+
}
|
|
27
|
+
async menuElementHandle() {
|
|
28
|
+
return this.page.$(this.selector);
|
|
29
|
+
}
|
|
30
|
+
async waitForVisible() {
|
|
31
|
+
await this.page.waitForSelector(this.selector, { state: 'visible' });
|
|
32
|
+
}
|
|
33
|
+
async isOpen() {
|
|
34
|
+
const menu = await this.menuElementHandle();
|
|
35
|
+
return !!menu && menu.isVisible();
|
|
36
|
+
}
|
|
37
|
+
async close() {
|
|
38
|
+
if (!await this.isOpen()) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
await this.page.mouse.click(0, 0);
|
|
42
|
+
await this.page.waitForSelector(this.selector, { state: 'detached' });
|
|
43
|
+
}
|
|
44
|
+
async menuItems() {
|
|
45
|
+
if (!await this.isOpen()) {
|
|
46
|
+
throw new Error('Menu must be open before accessing menu items');
|
|
47
|
+
}
|
|
48
|
+
const menuHandle = await this.menuElementHandle();
|
|
49
|
+
if (!menuHandle) {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
const items = await menuHandle.$$('.lm-Menu-content .lm-Menu-item');
|
|
53
|
+
return items.map(element => new theia_menu_item_1.TheiaMenuItem(element));
|
|
54
|
+
}
|
|
55
|
+
async clickMenuItem(name) {
|
|
56
|
+
if (!await this.isOpen()) {
|
|
57
|
+
throw new Error('Menu must be open before clicking menu items');
|
|
58
|
+
}
|
|
59
|
+
return (await this.page.waitForSelector(this.menuItemSelector(name))).click();
|
|
60
|
+
}
|
|
61
|
+
async menuItemByName(name) {
|
|
62
|
+
if (!await this.isOpen()) {
|
|
63
|
+
throw new Error('Menu must be open before accessing menu items by name');
|
|
64
|
+
}
|
|
65
|
+
const menuItems = await this.menuItems();
|
|
66
|
+
for (const item of menuItems) {
|
|
67
|
+
const label = await item.label();
|
|
68
|
+
if (label === name) {
|
|
69
|
+
return item;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
async menuItemByNamePath(...names) {
|
|
75
|
+
if (!await this.isOpen()) {
|
|
76
|
+
throw new Error('Menu must be open before accessing menu items by path');
|
|
77
|
+
}
|
|
78
|
+
let item;
|
|
79
|
+
for (let index = 0; index < names.length; index++) {
|
|
80
|
+
item = await this.page.waitForSelector(this.menuItemSelector(names[index]), { state: 'visible' });
|
|
81
|
+
// For all items except the last one, hover to open submenu
|
|
82
|
+
if (index < names.length - 1) {
|
|
83
|
+
await item.scrollIntoViewIfNeeded();
|
|
84
|
+
await item.hover();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const menuItemHandle = await (item === null || item === void 0 ? void 0 : item.$('xpath=..'));
|
|
88
|
+
if (menuItemHandle) {
|
|
89
|
+
return new theia_menu_item_1.TheiaMenuItem(menuItemHandle);
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
menuItemSelector(label = '') {
|
|
94
|
+
return `.lm-Menu-content .lm-Menu-itemLabel >> text=${label}`;
|
|
95
|
+
}
|
|
96
|
+
async visibleMenuItems() {
|
|
97
|
+
if (!await this.isOpen()) {
|
|
98
|
+
return [];
|
|
99
|
+
}
|
|
100
|
+
const menuItems = await this.menuItems();
|
|
101
|
+
const labels = await Promise.all(menuItems.map(item => item.label()));
|
|
102
|
+
return labels.filter(util_1.isDefined);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.TheiaMenu = TheiaMenu;
|
|
106
|
+
//# sourceMappingURL=theia-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theia-menu.js","sourceRoot":"","sources":["../src/theia-menu.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { ElementHandle, Locator } from '@playwright/test';
|
|
2
|
+
import { TheiaPageObject } from './theia-page-object';
|
|
3
|
+
import { TheiaApp } from './theia-app';
|
|
4
|
+
/**
|
|
5
|
+
* Monaco editor page object.
|
|
6
|
+
*
|
|
7
|
+
* Note: The constructor overload using `selector: string` is deprecated. Use the `locator: Locator` overload instead.
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
export declare class TheiaMonacoEditor extends TheiaPageObject {
|
|
11
|
+
readonly locator: Locator;
|
|
12
|
+
protected readonly LINES_SELECTOR = ".view-lines > .view-line";
|
|
13
|
+
/**
|
|
14
|
+
* Monaco editor page object.
|
|
15
|
+
*
|
|
16
|
+
* @param locator The locator of the editor.
|
|
17
|
+
* @param app The Theia app instance.
|
|
18
|
+
*/
|
|
19
|
+
constructor(locator: Locator, app: TheiaApp);
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated Use the `constructor(locator: Locator, app: TheiaApp)` overload instead.
|
|
22
|
+
*/
|
|
23
|
+
constructor(selector: string, app: TheiaApp);
|
|
24
|
+
waitForVisible(): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated Use `locator` instead. To get the element handle use `await locator.elementHandle()`.
|
|
27
|
+
* @returns The view element of the editor.
|
|
28
|
+
*/
|
|
29
|
+
protected viewElement(): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
|
|
30
|
+
numberOfLines(): Promise<number>;
|
|
31
|
+
textContentOfLineByLineNumber(lineNumber: number): Promise<string | undefined>;
|
|
32
|
+
/**
|
|
33
|
+
* @deprecated Use `line(lineNumber: number)` instead.
|
|
34
|
+
* @param lineNumber The line number to retrieve.
|
|
35
|
+
* @returns The line element of the editor.
|
|
36
|
+
*/
|
|
37
|
+
lineByLineNumber(lineNumber: number): Promise<ElementHandle<SVGElement | HTMLElement> | undefined>;
|
|
38
|
+
line(lineNumber: number): Promise<Locator>;
|
|
39
|
+
textContentOfLineContainingText(text: string): Promise<string | undefined>;
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated Use `lineWithText(text: string)` instead.
|
|
42
|
+
* @param text The text to search for in the editor.
|
|
43
|
+
* @returns The line element containing the text.
|
|
44
|
+
*/
|
|
45
|
+
lineContainingText(text: string): Promise<ElementHandle<SVGElement | HTMLElement> | undefined>;
|
|
46
|
+
lineWithText(text: string): Promise<Locator | undefined>;
|
|
47
|
+
/**
|
|
48
|
+
* @returns The text content of the editor.
|
|
49
|
+
*/
|
|
50
|
+
editorText(): Promise<string | undefined>;
|
|
51
|
+
/**
|
|
52
|
+
* Adds text to the editor.
|
|
53
|
+
* @param text The text to add to the editor.
|
|
54
|
+
* @param lineNumber The line number where to add the text. Default is 1.
|
|
55
|
+
*/
|
|
56
|
+
addEditorText(text: string, lineNumber?: number): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* @returns `true` if the editor is focused, `false` otherwise.
|
|
59
|
+
*/
|
|
60
|
+
isFocused(): Promise<boolean>;
|
|
61
|
+
protected replaceEditorSymbolsWithSpace(content: string): string | Promise<string | undefined>;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=theia-monaco-editor.d.ts.map
|
|
@@ -0,0 +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,MAAM,kBAAkB,CAAC;AAC1D,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;;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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
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-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.TheiaMonacoEditor = void 0;
|
|
19
|
+
const theia_page_object_1 = require("./theia-page-object");
|
|
20
|
+
/**
|
|
21
|
+
* Monaco editor page object.
|
|
22
|
+
*
|
|
23
|
+
* Note: The constructor overload using `selector: string` is deprecated. Use the `locator: Locator` overload instead.
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
class TheiaMonacoEditor extends theia_page_object_1.TheiaPageObject {
|
|
27
|
+
constructor(locatorOrString, app) {
|
|
28
|
+
super(app);
|
|
29
|
+
this.LINES_SELECTOR = '.view-lines > .view-line';
|
|
30
|
+
if (typeof locatorOrString === 'string') {
|
|
31
|
+
this.locator = app.page.locator(locatorOrString);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.locator = locatorOrString;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async waitForVisible() {
|
|
38
|
+
await this.locator.waitFor({ state: 'visible' });
|
|
39
|
+
// wait until lines are created
|
|
40
|
+
await this.locator.evaluate(editor => editor.querySelectorAll(this.LINES_SELECTOR).length > 0);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* @deprecated Use `locator` instead. To get the element handle use `await locator.elementHandle()`.
|
|
44
|
+
* @returns The view element of the editor.
|
|
45
|
+
*/
|
|
46
|
+
async viewElement() {
|
|
47
|
+
return this.locator.elementHandle();
|
|
48
|
+
}
|
|
49
|
+
async numberOfLines() {
|
|
50
|
+
await this.waitForVisible();
|
|
51
|
+
const lineElements = await this.locator.locator(this.LINES_SELECTOR).all();
|
|
52
|
+
return lineElements.length;
|
|
53
|
+
}
|
|
54
|
+
async textContentOfLineByLineNumber(lineNumber) {
|
|
55
|
+
await this.waitForVisible();
|
|
56
|
+
const lineElement = await this.line(lineNumber);
|
|
57
|
+
const content = await (lineElement === null || lineElement === void 0 ? void 0 : lineElement.textContent());
|
|
58
|
+
return content ? this.replaceEditorSymbolsWithSpace(content) : undefined;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* @deprecated Use `line(lineNumber: number)` instead.
|
|
62
|
+
* @param lineNumber The line number to retrieve.
|
|
63
|
+
* @returns The line element of the editor.
|
|
64
|
+
*/
|
|
65
|
+
async lineByLineNumber(lineNumber) {
|
|
66
|
+
var _a;
|
|
67
|
+
const lineLocator = await this.line(lineNumber);
|
|
68
|
+
return (_a = (await lineLocator.elementHandle())) !== null && _a !== void 0 ? _a : undefined;
|
|
69
|
+
}
|
|
70
|
+
async line(lineNumber) {
|
|
71
|
+
await this.waitForVisible();
|
|
72
|
+
const lines = await this.locator.locator(this.LINES_SELECTOR).all();
|
|
73
|
+
if (!lines || lines.length === 0) {
|
|
74
|
+
throw new Error('Couldn\'t retrieve lines of monaco editor');
|
|
75
|
+
}
|
|
76
|
+
const linesWithXCoordinates = [];
|
|
77
|
+
for (const line of lines) {
|
|
78
|
+
await line.waitFor({ state: 'visible' });
|
|
79
|
+
const box = await line.boundingBox();
|
|
80
|
+
linesWithXCoordinates.push({ x: box ? box.x : Number.MAX_VALUE, line });
|
|
81
|
+
}
|
|
82
|
+
linesWithXCoordinates.sort((a, b) => a.x.toString().localeCompare(b.x.toString()));
|
|
83
|
+
const lineInfo = linesWithXCoordinates[lineNumber - 1];
|
|
84
|
+
if (!lineInfo) {
|
|
85
|
+
throw new Error(`Could not find line number ${lineNumber}`);
|
|
86
|
+
}
|
|
87
|
+
return lineInfo.line;
|
|
88
|
+
}
|
|
89
|
+
async textContentOfLineContainingText(text) {
|
|
90
|
+
await this.waitForVisible();
|
|
91
|
+
const lineElement = await this.lineWithText(text);
|
|
92
|
+
const content = await (lineElement === null || lineElement === void 0 ? void 0 : lineElement.textContent());
|
|
93
|
+
return content ? this.replaceEditorSymbolsWithSpace(content) : undefined;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* @deprecated Use `lineWithText(text: string)` instead.
|
|
97
|
+
* @param text The text to search for in the editor.
|
|
98
|
+
* @returns The line element containing the text.
|
|
99
|
+
*/
|
|
100
|
+
async lineContainingText(text) {
|
|
101
|
+
var _a;
|
|
102
|
+
const lineWithText = await this.lineWithText(text);
|
|
103
|
+
return (_a = await (lineWithText === null || lineWithText === void 0 ? void 0 : lineWithText.elementHandle())) !== null && _a !== void 0 ? _a : undefined;
|
|
104
|
+
}
|
|
105
|
+
async lineWithText(text) {
|
|
106
|
+
const lineWithText = this.locator.locator(`${this.LINES_SELECTOR}:has-text("${text}")`);
|
|
107
|
+
await lineWithText.waitFor({ state: 'visible' });
|
|
108
|
+
return lineWithText;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* @returns The text content of the editor.
|
|
112
|
+
*/
|
|
113
|
+
async editorText() {
|
|
114
|
+
const lines = [];
|
|
115
|
+
const linesCount = await this.numberOfLines();
|
|
116
|
+
if (linesCount === undefined) {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
for (let line = 1; line <= linesCount; line++) {
|
|
120
|
+
const lineText = await this.textContentOfLineByLineNumber(line);
|
|
121
|
+
if (lineText === undefined) {
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
lines.push(lineText);
|
|
125
|
+
}
|
|
126
|
+
return lines.join('\n');
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Adds text to the editor.
|
|
130
|
+
* @param text The text to add to the editor.
|
|
131
|
+
* @param lineNumber The line number where to add the text. Default is 1.
|
|
132
|
+
*/
|
|
133
|
+
async addEditorText(text, lineNumber = 1) {
|
|
134
|
+
const line = await this.line(lineNumber);
|
|
135
|
+
await (line === null || line === void 0 ? void 0 : line.click());
|
|
136
|
+
await this.page.keyboard.type(text);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* @returns `true` if the editor is focused, `false` otherwise.
|
|
140
|
+
*/
|
|
141
|
+
async isFocused() {
|
|
142
|
+
var _a;
|
|
143
|
+
await this.locator.waitFor({ state: 'visible' });
|
|
144
|
+
const editorClass = await this.locator.getAttribute('class');
|
|
145
|
+
return (_a = editorClass === null || editorClass === void 0 ? void 0 : editorClass.includes('focused')) !== null && _a !== void 0 ? _a : false;
|
|
146
|
+
}
|
|
147
|
+
replaceEditorSymbolsWithSpace(content) {
|
|
148
|
+
// [ ] => \u00a0 -- NO-BREAK SPACE
|
|
149
|
+
// [·] · => \u00b7 -- MIDDLE DOT
|
|
150
|
+
// [] ‌ => \u200c -- ZERO WIDTH NON-JOINER
|
|
151
|
+
return content.replace(/[\u00a0\u00b7]/g, ' ').replace(/[\u200c]/g, '');
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
exports.TheiaMonacoEditor = TheiaMonacoEditor;
|
|
155
|
+
//# sourceMappingURL=theia-monaco-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theia-monaco-editor.js","sourceRoot":"","sources":["../src/theia-monaco-editor.ts"],"names":[],"mappings":"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"}
|