@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.
Files changed (95) hide show
  1. package/lib/app.d.ts +3 -1
  2. package/lib/app.d.ts.map +1 -1
  3. package/lib/app.js +6 -0
  4. package/lib/app.js.map +1 -1
  5. package/lib/component-editor.d.ts +19 -0
  6. package/lib/component-editor.d.ts.map +1 -0
  7. package/lib/component-editor.js +55 -0
  8. package/lib/component-editor.js.map +1 -0
  9. package/lib/debug-view.d.ts +8 -0
  10. package/lib/debug-view.d.ts.map +1 -0
  11. package/lib/debug-view.js +24 -0
  12. package/lib/debug-view.js.map +1 -0
  13. package/lib/editor.d.ts +7 -3
  14. package/lib/editor.d.ts.map +1 -1
  15. package/lib/editor.js +65 -7
  16. package/lib/editor.js.map +1 -1
  17. package/lib/explorer-view.d.ts +13 -3
  18. package/lib/explorer-view.d.ts.map +1 -1
  19. package/lib/explorer-view.js +58 -10
  20. package/lib/explorer-view.js.map +1 -1
  21. package/lib/filetree-view.d.ts +7 -0
  22. package/lib/filetree-view.d.ts.map +1 -0
  23. package/lib/filetree-view.js +30 -0
  24. package/lib/filetree-view.js.map +1 -0
  25. package/lib/index.d.ts +18 -0
  26. package/lib/index.d.ts.map +1 -1
  27. package/lib/index.js +18 -0
  28. package/lib/index.js.map +1 -1
  29. package/lib/menu-item.d.ts +2 -2
  30. package/lib/menu-item.js +3 -3
  31. package/lib/menu-item.js.map +1 -1
  32. package/lib/menu.d.ts +1 -1
  33. package/lib/menubar.d.ts +1 -2
  34. package/lib/menubar.d.ts.map +1 -1
  35. package/lib/menubar.js +4 -4
  36. package/lib/menubar.js.map +1 -1
  37. package/lib/opened-editor-view.d.ts +7 -0
  38. package/lib/opened-editor-view.d.ts.map +1 -0
  39. package/lib/opened-editor-view.js +30 -0
  40. package/lib/opened-editor-view.js.map +1 -0
  41. package/lib/panel.d.ts +5 -3
  42. package/lib/panel.d.ts.map +1 -1
  43. package/lib/panel.js +14 -4
  44. package/lib/panel.js.map +1 -1
  45. package/lib/quick-command-palette.js +1 -1
  46. package/lib/quick-open-palette.js +1 -1
  47. package/lib/search-view.d.ts +9 -1
  48. package/lib/search-view.d.ts.map +1 -1
  49. package/lib/search-view.js +34 -3
  50. package/lib/search-view.js.map +1 -1
  51. package/lib/terminal.d.ts +7 -0
  52. package/lib/terminal.d.ts.map +1 -0
  53. package/lib/terminal.js +25 -0
  54. package/lib/terminal.js.map +1 -0
  55. package/lib/tests/debug.test.d.ts +2 -0
  56. package/lib/tests/debug.test.d.ts.map +1 -0
  57. package/lib/tests/debug.test.js +59 -0
  58. package/lib/tests/debug.test.js.map +1 -0
  59. package/lib/tests/editor.test.js +46 -11
  60. package/lib/tests/editor.test.js.map +1 -1
  61. package/lib/tests/explorer-view.test.js +118 -9
  62. package/lib/tests/explorer-view.test.js.map +1 -1
  63. package/lib/tests/keymaps.test.d.ts +2 -0
  64. package/lib/tests/keymaps.test.d.ts.map +1 -0
  65. package/lib/tests/keymaps.test.js +94 -0
  66. package/lib/tests/keymaps.test.js.map +1 -0
  67. package/lib/tests/language.test.d.ts +2 -0
  68. package/lib/tests/language.test.d.ts.map +1 -0
  69. package/lib/tests/language.test.js +48 -0
  70. package/lib/tests/language.test.js.map +1 -0
  71. package/lib/tests/scm.test.d.ts +2 -0
  72. package/lib/tests/scm.test.d.ts.map +1 -0
  73. package/lib/tests/scm.test.js +39 -0
  74. package/lib/tests/scm.test.js.map +1 -0
  75. package/lib/tests/search-view.test.js +10 -2
  76. package/lib/tests/search-view.test.js.map +1 -1
  77. package/lib/text-editor.d.ts +31 -3
  78. package/lib/text-editor.d.ts.map +1 -1
  79. package/lib/text-editor.js +113 -19
  80. package/lib/text-editor.js.map +1 -1
  81. package/lib/tree-node.d.ts +4 -0
  82. package/lib/tree-node.d.ts.map +1 -1
  83. package/lib/tree-node.js +17 -0
  84. package/lib/tree-node.js.map +1 -1
  85. package/lib/utils/index.d.ts +1 -0
  86. package/lib/utils/index.d.ts.map +1 -1
  87. package/lib/utils/index.js +1 -0
  88. package/lib/utils/index.js.map +1 -1
  89. package/lib/utils/key.d.ts +2 -0
  90. package/lib/utils/key.d.ts.map +1 -0
  91. package/lib/utils/key.js +10 -0
  92. package/lib/utils/key.js.map +1 -0
  93. package/lib/workspace.js +1 -1
  94. package/lib/workspace.js.map +1 -1
  95. 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.waitForSelector("[class*='label__']");
10
+ return this.element.$("[class*='label__']");
11
11
  }
12
12
  shortCutElementHandle() {
13
- return this.element.waitForSelector("[class*='shortcut__']");
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();
@@ -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,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC5D,CAAC;IAES,qBAAqB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;IAC/D,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,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF;AAnCD,4CAmCC"}
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<HTMLElement | SVGElement>>;
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
- initMenubar(): Promise<void>;
9
+ getMenubar(): Promise<ElementHandle<SVGElement | HTMLElement>>;
11
10
  trigger(group: string, command: string): Promise<void>;
12
11
  getMenuItems(): Promise<ElementHandle<Node>[]>;
13
12
  }
@@ -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,aAAa,CAAgB;IACrC,OAAO,CAAC,UAAU,CAAkB;IAEpC,QAAQ,SAA0C;gBAEtC,GAAG,EAAE,WAAW;IAKtB,WAAW;IAIX,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAwBtC,YAAY;CAMnB"}
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 initMenubar() {
14
- this.elementHandle = await this.page.waitForSelector(this.selector);
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.elementHandle.$$("[class*='menubar___']");
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
  }
@@ -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;IAQnD,YAAY,GAAgB;QAC1B,KAAK,CAAC,GAAG,CAAC,CAAC;QAHb,aAAQ,GAAG,IAAI,mCAAwB,CAAC,OAAO,EAAE,CAAC;QAIhD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtE,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,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC;SAC7D;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;;AA9CH,0CA+CC;AA9CQ,qCAAqB,GAAG,GAAG,CAAC"}
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 view;
5
+ private viewId;
6
+ view: ElementHandle<HTMLElement | SVGElement> | null;
5
7
  private whenReady;
6
- abstract id: string;
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
@@ -1 +1 @@
1
- {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../src/panel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,8BAAsB,aAAc,SAAQ,gBAAgB;IAC1D,OAAO,CAAC,IAAI,CAAiD;IAC7D,OAAO,CAAC,SAAS,CAAgB;IAEjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAER,GAAG,EAAE,WAAW;IAK5B,IAAI,YAAY,WAEf;IAEK,IAAI;IAIJ,SAAS;IAKT,IAAI;IAUJ,cAAc;CAGrB"}
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.id}`;
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.id) {
23
+ if (!this.viewId) {
23
24
  return;
24
25
  }
25
26
  await this.app.quickOpenPalette.type('view ');
26
- await this.app.quickOpenPalette.trigger(this.id.toLocaleUpperCase());
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;IAM1D,YAAY,GAAgB;QAC1B,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;IACvB,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,EAAE,EAAE;YACZ,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,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,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;AArCD,sCAqCC"}
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 = 100;
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 = 100;
57
+ OpenSumiQuickOpenPalette.USER_KEY_TYPING_DELAY = 200;
58
58
  //# sourceMappingURL=quick-open-palette.js.map
@@ -1,5 +1,13 @@
1
+ import { OpenSumiApp } from './app';
1
2
  import { OpenSumiPanel } from './panel';
2
3
  export declare class OpenSumiSearchView extends OpenSumiPanel {
3
- id: string;
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
@@ -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;IACnD,EAAE,SAAY;CACf"}
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"}
@@ -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(...arguments);
8
- this.id = 'search';
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;
@@ -1 +1 @@
1
- {"version":3,"file":"search-view.js","sourceRoot":"","sources":["../src/search-view.ts"],"names":[],"mappings":";;;AAAA,mCAAwC;AAExC,MAAa,kBAAmB,SAAQ,qBAAa;IAArD;;QACE,OAAE,GAAG,QAAQ,CAAC;IAChB,CAAC;CAAA;AAFD,gDAEC"}
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,7 @@
1
+ import { OpenSumiApp } from './app';
2
+ import { OpenSumiPanel } from './panel';
3
+ export declare class OpenSumiTerminal extends OpenSumiPanel {
4
+ constructor(app: OpenSumiApp);
5
+ sendText(text: string): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=terminal.d.ts.map
@@ -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"}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=debug.test.d.ts.map
@@ -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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"}
@@ -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(200);
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)('copy path from file explorer to the editor content', async () => {
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 editor.addTextToNewLineAfterLineByLineNumber(3, 'File Path: ');
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(4);
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(4);
62
- (0, test_1.expect)(await editor.textContentOfLineContainingText(`File Path: ${workspace.workspace.resolve('editor.js').codeUri.fsPath.toString()}`)).toBeTruthy();
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(4, 'File Relative Path: ');
68
- editorMenu = await editor.openLineContextMenuByLineNumber(5);
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(5);
74
- (0, test_1.expect)(await editor.textContentOfLineContainingText('File Relative Path: editor.js')).toBeTruthy();
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(200);
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;IACjC,CAAC,CAAC,CAAC;IAEH,IAAA,eAAI,EAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,gCAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAChF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3C,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAA,eAAI,EAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,MAAM,CAAC,qCAAqC,CAChD,CAAC,EACD;gBACU,CACX,CAAC;QACF,IAAI,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACrC,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;QAC7B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACjC,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAA,eAAI,EAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,QAAQ,GAAG,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,EAAE,CAAA,CAAC;QAC7C,IAAA,aAAM,EAAC,MAAM,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,EAAE,CAAA,CAAC,CAAC,UAAU,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAC,WAAW,CAAC,CAAA,CAAC;QAC7D,MAAM,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,EAAE,CAAA,CAAC;QACxB,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QACrE,+DAA+D;QAC/D,uDAAuD;QACvD,IAAI,UAAU,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;QACjE,IAAA,aAAM,EAAC,MAAM,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,EAAE,CAAA,CAAC,CAAC,UAAU,EAAE,CAAC;QAChD,IAAI,KAAK,GAAG,MAAM,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,cAAc,CAAC,OAAO,CAAC,CAAA,CAAC;QACtD,MAAM,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,CAAA,CAAC;QACrB,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,IAAA,aAAM,EAAC,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAA,aAAM,EACJ,MAAM,MAAM,CAAC,+BAA+B,CAC1C,cAAc,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CACnF,CACF,CAAC,UAAU,EAAE,CAAC;QACf,QAAQ,GAAG,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,EAAE,CAAA,CAAC;QACzC,MAAM,gBAAgB,GAAG,MAAM,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAC,oBAAoB,CAAC,CAAA,CAAC;QAC9E,MAAM,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,KAAK,EAAE,CAAA,CAAC;QAChC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC9E,UAAU,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAA,aAAM,EAAC,MAAM,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,EAAE,CAAA,CAAC,CAAC,UAAU,EAAE,CAAC;QAChD,KAAK,GAAG,MAAM,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,cAAc,CAAC,OAAO,CAAC,CAAA,CAAC;QAClD,MAAM,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,CAAA,CAAC;QACrB,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,IAAA,aAAM,EAAC,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAA,aAAM,EAAC,MAAM,MAAM,CAAC,+BAA+B,CAAC,+BAA+B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACrG,CAAC,CAAC,CAAC;IAEH,IAAA,eAAI,EAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,gCAAkB,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;QACnE,IAAA,aAAM,EAAC,MAAM,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,EAAE,CAAA,CAAC,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,cAAc,CAAC,iBAAiB,CAAC,CAAA,CAAC;QACjE,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE,CAAA,CAAC;QACpB,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,mCAAwB,CAAC,eAAe,EAAE,CAAC,CAAC;QAC7F,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAA,aAAM,EAAC,MAAM,MAAM,CAAC,+BAA+B,CAAC,6BAA6B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACnG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"editor.test.js","sourceRoot":"","sources":["../../src/tests/editor.test.ts"],"names":[],"mappings":"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"}