@opensumi/playwright 2.20.10 → 2.21.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/app.d.ts +3 -1
- package/lib/app.d.ts.map +1 -1
- package/lib/app.js +6 -0
- package/lib/app.js.map +1 -1
- package/lib/component-editor.d.ts +19 -0
- package/lib/component-editor.d.ts.map +1 -0
- package/lib/component-editor.js +55 -0
- package/lib/component-editor.js.map +1 -0
- package/lib/debug-view.d.ts +8 -0
- package/lib/debug-view.d.ts.map +1 -0
- package/lib/debug-view.js +24 -0
- package/lib/debug-view.js.map +1 -0
- package/lib/editor.d.ts +7 -3
- package/lib/editor.d.ts.map +1 -1
- package/lib/editor.js +65 -7
- package/lib/editor.js.map +1 -1
- package/lib/explorer-view.d.ts +13 -3
- package/lib/explorer-view.d.ts.map +1 -1
- package/lib/explorer-view.js +58 -10
- package/lib/explorer-view.js.map +1 -1
- package/lib/filetree-view.d.ts +7 -0
- package/lib/filetree-view.d.ts.map +1 -0
- package/lib/filetree-view.js +30 -0
- package/lib/filetree-view.js.map +1 -0
- package/lib/index.d.ts +18 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +18 -0
- package/lib/index.js.map +1 -1
- package/lib/menu-item.d.ts +2 -2
- package/lib/menu-item.js +3 -3
- package/lib/menu-item.js.map +1 -1
- package/lib/menu.d.ts +1 -1
- package/lib/menubar.d.ts +1 -2
- package/lib/menubar.d.ts.map +1 -1
- package/lib/menubar.js +4 -4
- package/lib/menubar.js.map +1 -1
- package/lib/opened-editor-view.d.ts +7 -0
- package/lib/opened-editor-view.d.ts.map +1 -0
- package/lib/opened-editor-view.js +30 -0
- package/lib/opened-editor-view.js.map +1 -0
- package/lib/panel.d.ts +5 -3
- package/lib/panel.d.ts.map +1 -1
- package/lib/panel.js +14 -4
- package/lib/panel.js.map +1 -1
- package/lib/quick-command-palette.js +1 -1
- package/lib/quick-open-palette.js +1 -1
- package/lib/search-view.d.ts +9 -1
- package/lib/search-view.d.ts.map +1 -1
- package/lib/search-view.js +34 -3
- package/lib/search-view.js.map +1 -1
- package/lib/terminal.d.ts +7 -0
- package/lib/terminal.d.ts.map +1 -0
- package/lib/terminal.js +25 -0
- package/lib/terminal.js.map +1 -0
- package/lib/tests/debug.test.d.ts +2 -0
- package/lib/tests/debug.test.d.ts.map +1 -0
- package/lib/tests/debug.test.js +59 -0
- package/lib/tests/debug.test.js.map +1 -0
- package/lib/tests/editor.test.js +46 -11
- package/lib/tests/editor.test.js.map +1 -1
- package/lib/tests/explorer-view.test.js +118 -9
- package/lib/tests/explorer-view.test.js.map +1 -1
- package/lib/tests/keymaps.test.d.ts +2 -0
- package/lib/tests/keymaps.test.d.ts.map +1 -0
- package/lib/tests/keymaps.test.js +94 -0
- package/lib/tests/keymaps.test.js.map +1 -0
- package/lib/tests/language.test.d.ts +2 -0
- package/lib/tests/language.test.d.ts.map +1 -0
- package/lib/tests/language.test.js +48 -0
- package/lib/tests/language.test.js.map +1 -0
- package/lib/tests/scm.test.d.ts +2 -0
- package/lib/tests/scm.test.d.ts.map +1 -0
- package/lib/tests/scm.test.js +39 -0
- package/lib/tests/scm.test.js.map +1 -0
- package/lib/tests/search-view.test.js +10 -2
- package/lib/tests/search-view.test.js.map +1 -1
- package/lib/text-editor.d.ts +31 -3
- package/lib/text-editor.d.ts.map +1 -1
- package/lib/text-editor.js +113 -19
- package/lib/text-editor.js.map +1 -1
- package/lib/tree-node.d.ts +4 -0
- package/lib/tree-node.d.ts.map +1 -1
- package/lib/tree-node.js +17 -0
- package/lib/tree-node.js.map +1 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +1 -0
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/key.d.ts +2 -0
- package/lib/utils/key.d.ts.map +1 -0
- package/lib/utils/key.js +10 -0
- package/lib/utils/key.js.map +1 -0
- package/lib/workspace.js +1 -1
- package/lib/workspace.js.map +1 -1
- package/package.json +2 -2
package/lib/menu-item.js
CHANGED
|
@@ -7,10 +7,10 @@ class OpenSumiMenuItem {
|
|
|
7
7
|
this.element = element;
|
|
8
8
|
}
|
|
9
9
|
labelElementHandle() {
|
|
10
|
-
return this.element
|
|
10
|
+
return this.element.$("[class*='label__']");
|
|
11
11
|
}
|
|
12
12
|
shortCutElementHandle() {
|
|
13
|
-
return this.element
|
|
13
|
+
return this.element.$("[class*='shortcut__']");
|
|
14
14
|
}
|
|
15
15
|
async label() {
|
|
16
16
|
return (0, utils_1.textContent)(this.labelElementHandle());
|
|
@@ -27,7 +27,7 @@ class OpenSumiMenuItem {
|
|
|
27
27
|
}
|
|
28
28
|
async click() {
|
|
29
29
|
const action = await this.element.waitForSelector("[class*='menuAction__']");
|
|
30
|
-
action.click({ position: { x: 10, y: 10 } });
|
|
30
|
+
await (action === null || action === void 0 ? void 0 : action.click({ position: { x: 10, y: 10 } }));
|
|
31
31
|
}
|
|
32
32
|
async hover() {
|
|
33
33
|
return this.element.hover();
|
package/lib/menu-item.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-item.js","sourceRoot":"","sources":["../src/menu-item.ts"],"names":[],"mappings":";;;AAEA,mCAAsC;AAEtC,MAAa,gBAAgB;IAC3B,YAAsB,OAAgD;QAAhD,YAAO,GAAP,OAAO,CAAyC;IAAG,CAAC;IAEhE,kBAAkB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"menu-item.js","sourceRoot":"","sources":["../src/menu-item.ts"],"names":[],"mappings":";;;AAEA,mCAAsC;AAEtC,MAAa,gBAAgB;IAC3B,YAAsB,OAAgD;QAAhD,YAAO,GAAP,OAAO,CAAyC;IAAG,CAAC;IAEhE,kBAAkB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC9C,CAAC;IAES,qBAAqB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAA,mBAAW,EAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAA,mBAAW,EAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,IAAI,EAAE;YAC3D,OAAO,KAAK,CAAC;SACd;QACD,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;QAC7E,MAAM,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF;AAnCD,4CAmCC"}
|
package/lib/menu.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { OpenSumiMenuItem } from './menu-item';
|
|
|
2
2
|
import { OpenSumiViewBase } from './view-base';
|
|
3
3
|
export declare class OpenSumiMenu extends OpenSumiViewBase {
|
|
4
4
|
selector: string;
|
|
5
|
-
protected menuElementHandle(): Promise<import("@playwright/test").ElementHandle<
|
|
5
|
+
protected menuElementHandle(): Promise<import("@playwright/test").ElementHandle<SVGElement | HTMLElement>>;
|
|
6
6
|
waitForVisible(): Promise<void>;
|
|
7
7
|
isOpen(): Promise<boolean>;
|
|
8
8
|
close(): Promise<void>;
|
package/lib/menubar.d.ts
CHANGED
|
@@ -3,11 +3,10 @@ import { OpenSumiApp } from './app';
|
|
|
3
3
|
import { OpenSumiViewBase } from './view-base';
|
|
4
4
|
export declare class OpenSumiMenubar extends OpenSumiViewBase {
|
|
5
5
|
static USER_KEY_TYPING_DELAY: number;
|
|
6
|
-
private elementHandle;
|
|
7
6
|
private _menuItems;
|
|
8
7
|
selector: string;
|
|
9
8
|
constructor(app: OpenSumiApp);
|
|
10
|
-
|
|
9
|
+
getMenubar(): Promise<ElementHandle<SVGElement | HTMLElement>>;
|
|
11
10
|
trigger(group: string, command: string): Promise<void>;
|
|
12
11
|
getMenuItems(): Promise<ElementHandle<Node>[]>;
|
|
13
12
|
}
|
package/lib/menubar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menubar.d.ts","sourceRoot":"","sources":["../src/menubar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,qBAAa,eAAgB,SAAQ,gBAAgB;IACnD,MAAM,CAAC,qBAAqB,SAAO;IAEnC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"menubar.d.ts","sourceRoot":"","sources":["../src/menubar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,qBAAa,eAAgB,SAAQ,gBAAgB;IACnD,MAAM,CAAC,qBAAqB,SAAO;IAEnC,OAAO,CAAC,UAAU,CAAkB;IAEpC,QAAQ,SAA0C;gBAEtC,GAAG,EAAE,WAAW;IAItB,UAAU;IAIV,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAwBtC,YAAY;CAMnB"}
|
package/lib/menubar.js
CHANGED
|
@@ -8,10 +8,9 @@ class OpenSumiMenubar extends view_base_1.OpenSumiViewBase {
|
|
|
8
8
|
constructor(app) {
|
|
9
9
|
super(app);
|
|
10
10
|
this.selector = `#${constans_1.OPENSUMI_VIEW_CONTAINERS.MENUBAR}`;
|
|
11
|
-
this.initMenubar();
|
|
12
11
|
}
|
|
13
|
-
async
|
|
14
|
-
|
|
12
|
+
async getMenubar() {
|
|
13
|
+
return await this.page.waitForSelector(this.selector);
|
|
15
14
|
}
|
|
16
15
|
async trigger(group, command) {
|
|
17
16
|
// group maybe on of this: File, Edit, Selection, View, Go, Terminal, Help
|
|
@@ -37,8 +36,9 @@ class OpenSumiMenubar extends view_base_1.OpenSumiViewBase {
|
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
38
|
async getMenuItems() {
|
|
39
|
+
var _a;
|
|
40
40
|
if (!this._menuItems) {
|
|
41
|
-
return await this.
|
|
41
|
+
return await ((_a = (await this.getMenubar())) === null || _a === void 0 ? void 0 : _a.$$("[class^='menubar___']"));
|
|
42
42
|
}
|
|
43
43
|
return this._menuItems;
|
|
44
44
|
}
|
package/lib/menubar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menubar.js","sourceRoot":"","sources":["../src/menubar.ts"],"names":[],"mappings":";;;AAGA,yCAAsD;AACtD,mCAAsC;AACtC,2CAA+C;AAE/C,MAAa,eAAgB,SAAQ,4BAAgB;
|
|
1
|
+
{"version":3,"file":"menubar.js","sourceRoot":"","sources":["../src/menubar.ts"],"names":[],"mappings":";;;AAGA,yCAAsD;AACtD,mCAAsC;AACtC,2CAA+C;AAE/C,MAAa,eAAgB,SAAQ,4BAAgB;IAOnD,YAAY,GAAgB;QAC1B,KAAK,CAAC,GAAG,CAAC,CAAC;QAHb,aAAQ,GAAG,IAAI,mCAAwB,CAAC,OAAO,EAAE,CAAC;IAIlD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,OAAe;QAC1C,0EAA0E;QAC1E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC;QACT,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,IAAI,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,KAAK,EAAE;gBAC3C,IAAI,GAAG,OAAO,CAAC;aAChB;SACF;QACD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uCAAuC,CAAC,CAAC;QACtF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC;QACvD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC5B,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC9D,IAAI,OAAO,KAAK,KAAK,EAAE;gBACrB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO;aACR;SACF;IACH,CAAC;IAED,KAAK,CAAC,YAAY;;QAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO,MAAM,CAAA,MAAA,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,0CAAE,EAAE,CAAC,uBAAuB,CAAC,CAAA,CAAC;SACrE;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;;AA5CH,0CA6CC;AA5CQ,qCAAqB,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { OpenSumiApp } from './app';
|
|
2
|
+
import { OpenSumiView } from './view';
|
|
3
|
+
export declare class OpenSumiOpenedEditorView extends OpenSumiView {
|
|
4
|
+
constructor(app: OpenSumiApp, workspaceName: string);
|
|
5
|
+
getTitleActionByName(name: string): Promise<import("@playwright/test").ElementHandle<SVGElement | HTMLElement> | undefined>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=opened-editor-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opened-editor-view.d.ts","sourceRoot":"","sources":["../src/opened-editor-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,qBAAa,wBAAyB,SAAQ,YAAY;gBAC5C,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM;IAQ7C,oBAAoB,CAAC,IAAI,EAAE,MAAM;CAexC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenSumiOpenedEditorView = void 0;
|
|
4
|
+
const view_1 = require("./view");
|
|
5
|
+
class OpenSumiOpenedEditorView extends view_1.OpenSumiView {
|
|
6
|
+
constructor(app, workspaceName) {
|
|
7
|
+
super(app, {
|
|
8
|
+
viewSelector: '#file-opened-editor',
|
|
9
|
+
tabSelector: '#file-opened-editor [tabindex="0"]',
|
|
10
|
+
name: workspaceName,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
async getTitleActionByName(name) {
|
|
14
|
+
const header = await this.getTabElement();
|
|
15
|
+
if (!header) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
await header.hover();
|
|
19
|
+
const titleAction = await header.waitForSelector('[class*="titleActions___"]');
|
|
20
|
+
const actions = await titleAction.$$('[class*="iconAction__"]');
|
|
21
|
+
for (const action of actions) {
|
|
22
|
+
const title = await action.getAttribute('title');
|
|
23
|
+
if (name === title) {
|
|
24
|
+
return action;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.OpenSumiOpenedEditorView = OpenSumiOpenedEditorView;
|
|
30
|
+
//# sourceMappingURL=opened-editor-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opened-editor-view.js","sourceRoot":"","sources":["../src/opened-editor-view.ts"],"names":[],"mappings":";;;AACA,iCAAsC;AAEtC,MAAa,wBAAyB,SAAQ,mBAAY;IACxD,YAAY,GAAgB,EAAE,aAAqB;QACjD,KAAK,CAAC,GAAG,EAAE;YACT,YAAY,EAAE,qBAAqB;YACnC,WAAW,EAAE,oCAAoC;YACjD,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAY;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC;QAChE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,IAAI,KAAK,KAAK,EAAE;gBAClB,OAAO,MAAM,CAAC;aACf;SACF;IACH,CAAC;CACF;AAxBD,4DAwBC"}
|
package/lib/panel.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
import { ElementHandle } from '@playwright/test';
|
|
1
2
|
import { OpenSumiApp } from './app';
|
|
2
3
|
import { OpenSumiViewBase } from './view-base';
|
|
3
4
|
export declare abstract class OpenSumiPanel extends OpenSumiViewBase {
|
|
4
|
-
private
|
|
5
|
+
private viewId;
|
|
6
|
+
view: ElementHandle<HTMLElement | SVGElement> | null;
|
|
5
7
|
private whenReady;
|
|
6
|
-
|
|
7
|
-
constructor(app: OpenSumiApp);
|
|
8
|
+
constructor(app: OpenSumiApp, viewId: string);
|
|
8
9
|
get viewSelector(): string;
|
|
9
10
|
init(): Promise<void>;
|
|
10
11
|
isVisible(): Promise<boolean | undefined>;
|
|
11
12
|
open(): Promise<this | undefined>;
|
|
13
|
+
focus(): Promise<void>;
|
|
12
14
|
waitForVisible(): Promise<void>;
|
|
13
15
|
}
|
|
14
16
|
//# sourceMappingURL=panel.d.ts.map
|
package/lib/panel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../src/panel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../src/panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,8BAAsB,aAAc,SAAQ,gBAAgB;IAI5B,OAAO,CAAC,MAAM;IAHrC,IAAI,EAAE,aAAa,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;IAC5D,OAAO,CAAC,SAAS,CAAgB;gBAErB,GAAG,EAAE,WAAW,EAAU,MAAM,EAAE,MAAM;IAKpD,IAAI,YAAY,WAEf;IAEK,IAAI;IAIJ,SAAS;IAKT,IAAI;IAWJ,KAAK;IAQL,cAAc;CAGrB"}
|
package/lib/panel.js
CHANGED
|
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.OpenSumiPanel = void 0;
|
|
4
4
|
const view_base_1 = require("./view-base");
|
|
5
5
|
class OpenSumiPanel extends view_base_1.OpenSumiViewBase {
|
|
6
|
-
constructor(app) {
|
|
6
|
+
constructor(app, viewId) {
|
|
7
7
|
super(app);
|
|
8
|
+
this.viewId = viewId;
|
|
8
9
|
this.whenReady = this.init();
|
|
9
10
|
}
|
|
10
11
|
get viewSelector() {
|
|
11
|
-
return `.${this.
|
|
12
|
+
return `.${this.viewId}`;
|
|
12
13
|
}
|
|
13
14
|
async init() {
|
|
14
15
|
this.view = await this.page.$(this.viewSelector);
|
|
@@ -19,14 +20,23 @@ class OpenSumiPanel extends view_base_1.OpenSumiViewBase {
|
|
|
19
20
|
return (_a = this.view) === null || _a === void 0 ? void 0 : _a.isVisible();
|
|
20
21
|
}
|
|
21
22
|
async open() {
|
|
22
|
-
if (!this.
|
|
23
|
+
if (!this.viewId) {
|
|
23
24
|
return;
|
|
24
25
|
}
|
|
25
26
|
await this.app.quickOpenPalette.type('view ');
|
|
26
|
-
await this.app.quickOpenPalette.trigger(this.
|
|
27
|
+
await this.app.quickOpenPalette.trigger(this.viewId.toLocaleUpperCase());
|
|
27
28
|
await this.waitForVisible();
|
|
29
|
+
this.view = await this.page.$(this.viewSelector);
|
|
28
30
|
return this;
|
|
29
31
|
}
|
|
32
|
+
async focus() {
|
|
33
|
+
var _a;
|
|
34
|
+
const visible = await this.isVisible();
|
|
35
|
+
if (!visible) {
|
|
36
|
+
await this.open();
|
|
37
|
+
}
|
|
38
|
+
await ((_a = this.view) === null || _a === void 0 ? void 0 : _a.focus());
|
|
39
|
+
}
|
|
30
40
|
async waitForVisible() {
|
|
31
41
|
await this.page.waitForSelector(this.viewSelector, { state: 'visible' });
|
|
32
42
|
}
|
package/lib/panel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.js","sourceRoot":"","sources":["../src/panel.ts"],"names":[],"mappings":";;;AAGA,2CAA+C;AAE/C,MAAsB,aAAc,SAAQ,4BAAgB;
|
|
1
|
+
{"version":3,"file":"panel.js","sourceRoot":"","sources":["../src/panel.ts"],"names":[],"mappings":";;;AAGA,2CAA+C;AAE/C,MAAsB,aAAc,SAAQ,4BAAgB;IAI1D,YAAY,GAAgB,EAAU,MAAc;QAClD,KAAK,CAAC,GAAG,CAAC,CAAC;QADyB,WAAM,GAAN,MAAM,CAAQ;QAElD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS;;QACb,MAAM,IAAI,CAAC,SAAS,CAAC;QACrB,OAAO,MAAA,IAAI,CAAC,IAAI,0CAAE,SAAS,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;QACD,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAK;;QACT,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;SACnB;QACD,MAAM,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,KAAK,EAAE,CAAA,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3E,CAAC;CACF;AA5CD,sCA4CC"}
|
|
@@ -54,5 +54,5 @@ class OpenSumiCommandPalette extends view_base_1.OpenSumiViewBase {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
exports.OpenSumiCommandPalette = OpenSumiCommandPalette;
|
|
57
|
-
OpenSumiCommandPalette.USER_KEY_TYPING_DELAY =
|
|
57
|
+
OpenSumiCommandPalette.USER_KEY_TYPING_DELAY = 200;
|
|
58
58
|
//# sourceMappingURL=quick-command-palette.js.map
|
|
@@ -54,5 +54,5 @@ class OpenSumiQuickOpenPalette extends view_base_1.OpenSumiViewBase {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
exports.OpenSumiQuickOpenPalette = OpenSumiQuickOpenPalette;
|
|
57
|
-
OpenSumiQuickOpenPalette.USER_KEY_TYPING_DELAY =
|
|
57
|
+
OpenSumiQuickOpenPalette.USER_KEY_TYPING_DELAY = 200;
|
|
58
58
|
//# sourceMappingURL=quick-open-palette.js.map
|
package/lib/search-view.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
import { OpenSumiApp } from './app';
|
|
1
2
|
import { OpenSumiPanel } from './panel';
|
|
2
3
|
export declare class OpenSumiSearchView extends OpenSumiPanel {
|
|
3
|
-
|
|
4
|
+
constructor(app: OpenSumiApp);
|
|
5
|
+
get searchInputSelector(): string;
|
|
6
|
+
get replaceInputSelector(): string;
|
|
7
|
+
getSearchResult(): Promise<{
|
|
8
|
+
results: any;
|
|
9
|
+
files: any;
|
|
10
|
+
}>;
|
|
11
|
+
focusOnSearch(): Promise<void>;
|
|
4
12
|
}
|
|
5
13
|
//# sourceMappingURL=search-view.d.ts.map
|
package/lib/search-view.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-view.d.ts","sourceRoot":"","sources":["../src/search-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,qBAAa,kBAAmB,SAAQ,aAAa;
|
|
1
|
+
{"version":3,"file":"search-view.d.ts","sourceRoot":"","sources":["../src/search-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,GAAG,EAAE,WAAW;IAI5B,IAAI,mBAAmB,WAEtB;IAED,IAAI,oBAAoB,WAEvB;IAEK,eAAe;;;;IAmBf,aAAa;CAQpB"}
|
package/lib/search-view.js
CHANGED
|
@@ -3,9 +3,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.OpenSumiSearchView = void 0;
|
|
4
4
|
const panel_1 = require("./panel");
|
|
5
5
|
class OpenSumiSearchView extends panel_1.OpenSumiPanel {
|
|
6
|
-
constructor() {
|
|
7
|
-
super(
|
|
8
|
-
|
|
6
|
+
constructor(app) {
|
|
7
|
+
super(app, 'search');
|
|
8
|
+
}
|
|
9
|
+
get searchInputSelector() {
|
|
10
|
+
return '#search-input-field';
|
|
11
|
+
}
|
|
12
|
+
get replaceInputSelector() {
|
|
13
|
+
return '#replace-input-field';
|
|
14
|
+
}
|
|
15
|
+
async getSearchResult() {
|
|
16
|
+
let results;
|
|
17
|
+
let files;
|
|
18
|
+
const resultElement = await this.app.page.waitForSelector('[class*="result_describe__"]');
|
|
19
|
+
const text = await resultElement.textContent();
|
|
20
|
+
const regx = /^(\d+) results found in (\d+) files/gi;
|
|
21
|
+
if (text) {
|
|
22
|
+
const match = regx.exec(text);
|
|
23
|
+
if (match) {
|
|
24
|
+
results = Number(match[1]);
|
|
25
|
+
files = Number(match[2]);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
results,
|
|
30
|
+
files,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
async focusOnSearch() {
|
|
34
|
+
const visible = await this.isVisible();
|
|
35
|
+
if (!visible) {
|
|
36
|
+
await this.open();
|
|
37
|
+
}
|
|
38
|
+
const $searchInput = await this.app.page.$(this.searchInputSelector);
|
|
39
|
+
await ($searchInput === null || $searchInput === void 0 ? void 0 : $searchInput.focus());
|
|
9
40
|
}
|
|
10
41
|
}
|
|
11
42
|
exports.OpenSumiSearchView = OpenSumiSearchView;
|
package/lib/search-view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-view.js","sourceRoot":"","sources":["../src/search-view.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"search-view.js","sourceRoot":"","sources":["../src/search-view.ts"],"names":[],"mappings":";;;AACA,mCAAwC;AAExC,MAAa,kBAAmB,SAAQ,qBAAa;IACnD,YAAY,GAAgB;QAC1B,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,mBAAmB;QACrB,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,OAAO,CAAC;QACZ,IAAI,KAAK,CAAC;QACV,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,8BAA8B,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,uCAAuC,CAAC;QACrD,IAAI,IAAI,EAAE;YACR,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,KAAK,EAAE;gBACT,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1B;SACF;QACD,OAAO;YACL,OAAO;YACP,KAAK;SACN,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;SACnB;QACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrE,MAAM,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,EAAE,CAAA,CAAC;IAC9B,CAAC;CACF;AAxCD,gDAwCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,qBAAa,gBAAiB,SAAQ,aAAa;gBACrC,GAAG,EAAE,WAAW;IAItB,QAAQ,CAAC,IAAI,EAAE,MAAM;CAa5B"}
|
package/lib/terminal.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenSumiTerminal = void 0;
|
|
4
|
+
const panel_1 = require("./panel");
|
|
5
|
+
class OpenSumiTerminal extends panel_1.OpenSumiPanel {
|
|
6
|
+
constructor(app) {
|
|
7
|
+
super(app, 'terminal');
|
|
8
|
+
}
|
|
9
|
+
async sendText(text) {
|
|
10
|
+
var _a;
|
|
11
|
+
const visible = await this.isVisible();
|
|
12
|
+
if (!visible) {
|
|
13
|
+
await this.open();
|
|
14
|
+
}
|
|
15
|
+
await this.focus();
|
|
16
|
+
const box = await ((_a = this.view) === null || _a === void 0 ? void 0 : _a.boundingBox());
|
|
17
|
+
if (box) {
|
|
18
|
+
await this.app.page.mouse.click(box.x + (box === null || box === void 0 ? void 0 : box.width) / 2, box.y + (box === null || box === void 0 ? void 0 : box.height) / 2);
|
|
19
|
+
}
|
|
20
|
+
await this.page.keyboard.type(text);
|
|
21
|
+
await this.app.page.keyboard.press('Enter');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.OpenSumiTerminal = OpenSumiTerminal;
|
|
25
|
+
//# sourceMappingURL=terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":";;;AACA,mCAAwC;AAExC,MAAa,gBAAiB,SAAQ,qBAAa;IACjD,YAAY,GAAgB;QAC1B,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY;;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;SACnB;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,MAAM,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,WAAW,EAAE,CAAA,CAAC;QAC3C,IAAI,GAAG,EAAE;YACP,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,IAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,IAAG,CAAC,CAAC,CAAC;SAClF;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF;AAlBD,4CAkBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.test.d.ts","sourceRoot":"","sources":["../../src/tests/debug.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
5
|
+
const test_1 = require("@playwright/test");
|
|
6
|
+
const app_1 = require("../app");
|
|
7
|
+
const debug_view_1 = require("../debug-view");
|
|
8
|
+
const explorer_view_1 = require("../explorer-view");
|
|
9
|
+
const text_editor_1 = require("../text-editor");
|
|
10
|
+
const workspace_1 = require("../workspace");
|
|
11
|
+
const hooks_1 = tslib_1.__importStar(require("./hooks"));
|
|
12
|
+
let app;
|
|
13
|
+
let explorer;
|
|
14
|
+
let debugView;
|
|
15
|
+
let editor;
|
|
16
|
+
let workspace;
|
|
17
|
+
hooks_1.default.describe('OpenSumi Debug', () => {
|
|
18
|
+
hooks_1.default.beforeAll(async () => {
|
|
19
|
+
workspace = new workspace_1.OpenSumiWorkspace([path_1.default.resolve('./src/tests/workspaces/debug')]);
|
|
20
|
+
app = await app_1.OpenSumiApp.load(hooks_1.page, workspace);
|
|
21
|
+
explorer = await app.open(explorer_view_1.OpenSumiExplorerView);
|
|
22
|
+
explorer.initFileTreeView(workspace.workspace.displayName);
|
|
23
|
+
await explorer.fileTreeView.open();
|
|
24
|
+
});
|
|
25
|
+
hooks_1.default.afterAll(() => {
|
|
26
|
+
app.dispose();
|
|
27
|
+
});
|
|
28
|
+
(0, hooks_1.default)('Debug breakpoint editor glyph margin should be worked', async () => {
|
|
29
|
+
editor = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, 'index.js', false);
|
|
30
|
+
const glyphMarginModel = await editor.getGlyphMarginModel();
|
|
31
|
+
let overlay = await glyphMarginModel.getOverlay(6);
|
|
32
|
+
await (overlay === null || overlay === void 0 ? void 0 : overlay.click({ position: { x: 9, y: 9 }, force: true }));
|
|
33
|
+
// 此时元素 dom 结构已经改变,需要重新获取
|
|
34
|
+
overlay = await glyphMarginModel.getOverlay(6);
|
|
35
|
+
(0, test_1.expect)(await glyphMarginModel.hasBreakpoint(overlay)).toBeTruthy();
|
|
36
|
+
await editor.close();
|
|
37
|
+
});
|
|
38
|
+
(0, hooks_1.default)('Run Debug should be worked', async () => {
|
|
39
|
+
editor = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, 'index.js', false);
|
|
40
|
+
await app.page.waitForTimeout(1000);
|
|
41
|
+
debugView = await app.open(debug_view_1.OpenSumiDebugView);
|
|
42
|
+
const glyphMarginModel = await editor.getGlyphMarginModel();
|
|
43
|
+
let glyphOverlay = await glyphMarginModel.getOverlay(6);
|
|
44
|
+
const isClicked = await glyphMarginModel.hasBreakpoint(glyphOverlay);
|
|
45
|
+
if (!isClicked) {
|
|
46
|
+
await (glyphOverlay === null || glyphOverlay === void 0 ? void 0 : glyphOverlay.click({ position: { x: 9, y: 9 }, force: true }));
|
|
47
|
+
await app.page.waitForTimeout(1000);
|
|
48
|
+
}
|
|
49
|
+
await debugView.start();
|
|
50
|
+
await app.page.waitForTimeout(2000);
|
|
51
|
+
glyphOverlay = await glyphMarginModel.getOverlay(6);
|
|
52
|
+
(0, test_1.expect)(await glyphMarginModel.hasTopStackFrame(glyphOverlay)).toBeTruthy();
|
|
53
|
+
const overlaysModel = await editor.getOverlaysModel();
|
|
54
|
+
const viewOverlay = await overlaysModel.getOverlay(6);
|
|
55
|
+
(0, test_1.expect)(await glyphMarginModel.hasTopStackFrameLine(viewOverlay)).toBeTruthy();
|
|
56
|
+
await editor.close();
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=debug.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.test.js","sourceRoot":"","sources":["../../src/tests/debug.test.ts"],"names":[],"mappings":"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"}
|
package/lib/tests/editor.test.js
CHANGED
|
@@ -28,60 +28,95 @@ hooks_1.default.describe('OpenSumi Editor', () => {
|
|
|
28
28
|
editor = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, 'editor.js');
|
|
29
29
|
const isPreview = await editor.isPreview();
|
|
30
30
|
(0, test_1.expect)(isPreview).toBeTruthy();
|
|
31
|
+
await editor.close();
|
|
31
32
|
});
|
|
32
33
|
(0, hooks_1.default)('open editor.js on the editor without preview', async () => {
|
|
33
34
|
editor = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, 'editor.js', false);
|
|
34
35
|
const isPreview = await editor.isPreview();
|
|
35
36
|
(0, test_1.expect)(isPreview).toBeFalsy();
|
|
37
|
+
await editor.close();
|
|
36
38
|
});
|
|
37
39
|
(0, hooks_1.default)('editor dirty status should be update immediately after typing and saving', async () => {
|
|
40
|
+
editor = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, 'editor.js');
|
|
38
41
|
await editor.addTextToNewLineAfterLineByLineNumber(1, `const a = 'a';
|
|
39
42
|
console.log(a);`);
|
|
40
43
|
let isDirty = await editor.isDirty();
|
|
41
44
|
(0, test_1.expect)(isDirty).toBeTruthy();
|
|
42
45
|
await editor.save();
|
|
43
|
-
await app.page.waitForTimeout(
|
|
46
|
+
await app.page.waitForTimeout(2000);
|
|
44
47
|
isDirty = await editor.isDirty();
|
|
45
48
|
(0, test_1.expect)(isDirty).toBeFalsy();
|
|
49
|
+
await editor.close();
|
|
46
50
|
});
|
|
47
|
-
(0, hooks_1.default)('
|
|
51
|
+
(0, hooks_1.default)('File tree automatic location', async () => {
|
|
52
|
+
editor = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, 'editor.js', false);
|
|
53
|
+
const editor2 = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, 'editor2.js', false);
|
|
54
|
+
await app.page.waitForTimeout(1000);
|
|
55
|
+
const firstFileTab = await editor.getTab();
|
|
56
|
+
await (firstFileTab === null || firstFileTab === void 0 ? void 0 : firstFileTab.click());
|
|
57
|
+
await app.page.waitForTimeout(1000);
|
|
48
58
|
const node = await explorer.getFileStatTreeNodeByPath('editor.js');
|
|
59
|
+
(0, test_1.expect)(await (node === null || node === void 0 ? void 0 : node.isSelected())).toBeTruthy();
|
|
60
|
+
const node2 = await explorer.getFileStatTreeNodeByPath('editor2.js');
|
|
61
|
+
(0, test_1.expect)(await (node2 === null || node2 === void 0 ? void 0 : node2.isSelected())).toBeFalsy();
|
|
62
|
+
await editor.close();
|
|
63
|
+
await editor2.close();
|
|
64
|
+
});
|
|
65
|
+
(0, hooks_1.default)('Close All Editors should be worked', async () => {
|
|
66
|
+
editor = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, 'editor.js', false);
|
|
67
|
+
await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, 'editor2.js', false);
|
|
68
|
+
await app.page.waitForTimeout(1000);
|
|
69
|
+
(0, test_1.expect)(await editor.isTabVisible()).toBeTruthy();
|
|
70
|
+
const contextMenu = await editor.openTabContextMenu();
|
|
71
|
+
(0, test_1.expect)(await (contextMenu === null || contextMenu === void 0 ? void 0 : contextMenu.isOpen())).toBeTruthy();
|
|
72
|
+
const closeAll = await (contextMenu === null || contextMenu === void 0 ? void 0 : contextMenu.menuItemByName('Close All'));
|
|
73
|
+
await (closeAll === null || closeAll === void 0 ? void 0 : closeAll.click());
|
|
74
|
+
await app.page.waitForTimeout(1000);
|
|
75
|
+
(0, test_1.expect)(await editor.isTabVisible()).toBeFalsy();
|
|
76
|
+
});
|
|
77
|
+
(0, hooks_1.default)('copy path from file explorer to the editor content', async () => {
|
|
78
|
+
const node = await explorer.getFileStatTreeNodeByPath('editor3.js');
|
|
49
79
|
let fileMenu = await (node === null || node === void 0 ? void 0 : node.openContextMenu());
|
|
50
80
|
(0, test_1.expect)(await (fileMenu === null || fileMenu === void 0 ? void 0 : fileMenu.isOpen())).toBeTruthy();
|
|
51
81
|
const copyPath = await (fileMenu === null || fileMenu === void 0 ? void 0 : fileMenu.menuItemByName('Copy Path'));
|
|
82
|
+
await app.page.waitForTimeout(400);
|
|
52
83
|
await (copyPath === null || copyPath === void 0 ? void 0 : copyPath.click());
|
|
53
|
-
await
|
|
84
|
+
editor = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, 'editor3.js');
|
|
85
|
+
await editor.addTextToNewLineAfterLineByLineNumber(1, 'File Path: ');
|
|
54
86
|
// cause of https://github.com/microsoft/playwright/issues/8114
|
|
55
87
|
// we can just using keypress to fake the paste feature
|
|
56
|
-
let editorMenu = await editor.openLineContextMenuByLineNumber(
|
|
88
|
+
let editorMenu = await editor.openLineContextMenuByLineNumber(2);
|
|
57
89
|
(0, test_1.expect)(await (editorMenu === null || editorMenu === void 0 ? void 0 : editorMenu.isOpen())).toBeTruthy();
|
|
58
90
|
let paste = await (editorMenu === null || editorMenu === void 0 ? void 0 : editorMenu.menuItemByName('Paste'));
|
|
59
91
|
await (paste === null || paste === void 0 ? void 0 : paste.click());
|
|
60
92
|
await app.page.waitForTimeout(200);
|
|
61
|
-
(0, test_1.expect)(await editor.numberOfLines()).toBe(
|
|
62
|
-
(0, test_1.expect)(await editor.textContentOfLineContainingText(`File Path: ${workspace.workspace.resolve('
|
|
93
|
+
(0, test_1.expect)(await editor.numberOfLines()).toBe(2);
|
|
94
|
+
(0, test_1.expect)(await editor.textContentOfLineContainingText(`File Path: ${workspace.workspace.resolve('editor3.js').codeUri.fsPath.toString()}`)).toBeTruthy();
|
|
63
95
|
fileMenu = await (node === null || node === void 0 ? void 0 : node.openContextMenu());
|
|
64
96
|
const copyRelativePath = await (fileMenu === null || fileMenu === void 0 ? void 0 : fileMenu.menuItemByName('Copy Relative Path'));
|
|
65
97
|
await (copyRelativePath === null || copyRelativePath === void 0 ? void 0 : copyRelativePath.click());
|
|
66
98
|
await app.page.waitForTimeout(200);
|
|
67
|
-
await editor.addTextToNewLineAfterLineByLineNumber(
|
|
68
|
-
editorMenu = await editor.openLineContextMenuByLineNumber(
|
|
99
|
+
await editor.addTextToNewLineAfterLineByLineNumber(2, 'File Relative Path: ');
|
|
100
|
+
editorMenu = await editor.openLineContextMenuByLineNumber(3);
|
|
69
101
|
(0, test_1.expect)(await (editorMenu === null || editorMenu === void 0 ? void 0 : editorMenu.isOpen())).toBeTruthy();
|
|
70
102
|
paste = await (editorMenu === null || editorMenu === void 0 ? void 0 : editorMenu.menuItemByName('Paste'));
|
|
71
103
|
await (paste === null || paste === void 0 ? void 0 : paste.click());
|
|
72
104
|
await app.page.waitForTimeout(200);
|
|
73
|
-
(0, test_1.expect)(await editor.numberOfLines()).toBe(
|
|
74
|
-
(0, test_1.expect)(await editor.textContentOfLineContainingText('File Relative Path:
|
|
105
|
+
(0, test_1.expect)(await editor.numberOfLines()).toBe(3);
|
|
106
|
+
(0, test_1.expect)(await editor.textContentOfLineContainingText('File Relative Path: editor3.js')).toBeTruthy();
|
|
75
107
|
});
|
|
76
108
|
(0, hooks_1.default)('Go to Symbol... should be worked', async () => {
|
|
77
109
|
editor = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, 'editor2.js');
|
|
110
|
+
// waiting for extHost process done.
|
|
111
|
+
await app.page.waitForTimeout(1000);
|
|
78
112
|
const editorMenu = await editor.openLineContextMenuByLineNumber(1);
|
|
79
113
|
(0, test_1.expect)(await (editorMenu === null || editorMenu === void 0 ? void 0 : editorMenu.isOpen())).toBeTruthy();
|
|
80
114
|
const goto = await (editorMenu === null || editorMenu === void 0 ? void 0 : editorMenu.menuItemByName('Go to Symbol...'));
|
|
81
115
|
await (goto === null || goto === void 0 ? void 0 : goto.click());
|
|
82
|
-
await app.page.waitForTimeout(
|
|
116
|
+
await app.page.waitForTimeout(1000);
|
|
83
117
|
const input = await app.page.waitForSelector(`#${constans_1.OPENSUMI_VIEW_CONTAINERS.QUICKPICK_INPUT}`);
|
|
84
118
|
await input.focus();
|
|
119
|
+
await app.page.keyboard.press(' ');
|
|
85
120
|
await app.page.keyboard.press('ArrowDown');
|
|
86
121
|
await app.page.keyboard.press('ArrowDown');
|
|
87
122
|
await app.page.keyboard.press('Enter');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.test.js","sourceRoot":"","sources":["../../src/tests/editor.test.ts"],"names":[],"mappings":";;;AAAA,wDAAwB;AAExB,2CAA0C;AAE1C,gCAAqC;AACrC,0CAAuD;AACvD,oDAAwD;AACxD,gDAAoD;AACpD,4CAAiD;AAEjD,yDAAqC;AAErC,IAAI,GAAgB,CAAC;AACrB,IAAI,QAA8B,CAAC;AACnC,IAAI,MAA0B,CAAC;AAC/B,IAAI,SAA4B,CAAC;AAEjC,eAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IACpC,eAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QACxB,SAAS,GAAG,IAAI,6BAAiB,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC;QACpF,GAAG,GAAG,MAAM,iBAAW,CAAC,IAAI,CAAC,YAAI,EAAE,SAAS,CAAC,CAAC;QAC9C,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,oCAAoB,CAAC,CAAC;QAChD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,eAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACjB,GAAG,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,IAAA,eAAI,EAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,gCAAkB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3C,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"editor.test.js","sourceRoot":"","sources":["../../src/tests/editor.test.ts"],"names":[],"mappings":"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"}
|