@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
@@ -3,20 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const path_1 = tslib_1.__importDefault(require("path"));
5
5
  const test_1 = require("@playwright/test");
6
+ const ide_utils_1 = require("@opensumi/ide-utils");
6
7
  const app_1 = require("../app");
7
8
  const explorer_view_1 = require("../explorer-view");
9
+ const terminal_1 = require("../terminal");
10
+ const text_editor_1 = require("../text-editor");
8
11
  const workspace_1 = require("../workspace");
9
12
  const hooks_1 = tslib_1.__importStar(require("./hooks"));
10
13
  let app;
11
14
  let explorer;
12
15
  let fileTreeView;
16
+ let openedEditorView;
17
+ let workspace;
13
18
  hooks_1.default.describe('OpenSumi Explorer Panel', () => {
14
19
  hooks_1.default.beforeAll(async () => {
15
- const workspace = new workspace_1.OpenSumiWorkspace([path_1.default.resolve('./src/tests/workspaces/default')]);
20
+ workspace = new workspace_1.OpenSumiWorkspace([path_1.default.resolve('./src/tests/workspaces/default')]);
16
21
  app = await app_1.OpenSumiApp.load(hooks_1.page, workspace);
17
22
  explorer = await app.open(explorer_view_1.OpenSumiExplorerView);
18
23
  explorer.initFileTreeView(workspace.workspace.displayName);
19
24
  fileTreeView = explorer.fileTreeView;
25
+ openedEditorView = explorer.openedEditorView;
20
26
  });
21
27
  hooks_1.default.afterAll(() => {
22
28
  app.dispose();
@@ -24,13 +30,10 @@ hooks_1.default.describe('OpenSumi Explorer Panel', () => {
24
30
  (0, hooks_1.default)('should show file explorer', async () => {
25
31
  (0, test_1.expect)(explorer.isVisible()).toBeTruthy();
26
32
  await fileTreeView.open();
27
- (0, test_1.expect)(fileTreeView.isVisible()).toBeTruthy();
33
+ (0, test_1.expect)(await fileTreeView.isVisible()).toBeTruthy();
28
34
  });
29
35
  (0, hooks_1.default)('can new single file by context menu', async () => {
30
36
  var _a;
31
- (0, test_1.expect)(explorer.isVisible()).toBeTruthy();
32
- await fileTreeView.open();
33
- (0, test_1.expect)(fileTreeView.isVisible()).toBeTruthy();
34
37
  const node = await explorer.getFileStatTreeNodeByPath('test');
35
38
  await (node === null || node === void 0 ? void 0 : node.expand());
36
39
  (0, test_1.expect)(await (node === null || node === void 0 ? void 0 : node.isCollapsed())).toBeFalsy();
@@ -53,9 +56,6 @@ hooks_1.default.describe('OpenSumi Explorer Panel', () => {
53
56
  });
54
57
  (0, hooks_1.default)('can new folder by context menu', async () => {
55
58
  var _a;
56
- (0, test_1.expect)(explorer.isVisible()).toBeTruthy();
57
- await fileTreeView.open();
58
- (0, test_1.expect)(fileTreeView.isVisible()).toBeTruthy();
59
59
  const node = await explorer.getFileStatTreeNodeByPath('test');
60
60
  await (node === null || node === void 0 ? void 0 : node.expand());
61
61
  (0, test_1.expect)(await (node === null || node === void 0 ? void 0 : node.isCollapsed())).toBeFalsy();
@@ -64,7 +64,7 @@ hooks_1.default.describe('OpenSumi Explorer Panel', () => {
64
64
  const newFileMenu = await (menu === null || menu === void 0 ? void 0 : menu.menuItemByName('New Folder'));
65
65
  await (newFileMenu === null || newFileMenu === void 0 ? void 0 : newFileMenu.click());
66
66
  // type `new_file` as the file name
67
- const newFileName = 'new_Folder';
67
+ const newFileName = 'new_folder';
68
68
  const input = await ((_a = (await fileTreeView.getViewElement())) === null || _a === void 0 ? void 0 : _a.waitForSelector('.kt-input-box'));
69
69
  if (input != null) {
70
70
  await input.focus();
@@ -76,5 +76,114 @@ hooks_1.default.describe('OpenSumi Explorer Panel', () => {
76
76
  (0, test_1.expect)(newFile).toBeDefined();
77
77
  (0, test_1.expect)(await (newFile === null || newFile === void 0 ? void 0 : newFile.isFolder())).toBeTruthy();
78
78
  });
79
+ (0, hooks_1.default)('can new file from toolbar', async () => {
80
+ var _a;
81
+ const node = await explorer.getFileStatTreeNodeByPath('editor.js');
82
+ await (node === null || node === void 0 ? void 0 : node.open());
83
+ const action = await fileTreeView.getTitleActionByName('New File');
84
+ await (action === null || action === void 0 ? void 0 : action.click());
85
+ // type `new_file` as the file name
86
+ const newFileName = 'new_file2';
87
+ const input = await ((_a = (await fileTreeView.getViewElement())) === null || _a === void 0 ? void 0 : _a.waitForSelector('.kt-input-box'));
88
+ if (input != null) {
89
+ await input.focus();
90
+ await input.type(newFileName, { delay: 200 });
91
+ await app.page.keyboard.press('Enter');
92
+ }
93
+ await app.page.waitForTimeout(200);
94
+ const newFile = await explorer.getFileStatTreeNodeByPath(`${newFileName}`);
95
+ (0, test_1.expect)(newFile).toBeDefined();
96
+ (0, test_1.expect)(await (newFile === null || newFile === void 0 ? void 0 : newFile.isFolder())).toBeFalsy();
97
+ });
98
+ (0, hooks_1.default)('can new folder from toolbar', async () => {
99
+ var _a;
100
+ const node = await explorer.getFileStatTreeNodeByPath('editor.js');
101
+ await (node === null || node === void 0 ? void 0 : node.open());
102
+ const action = await fileTreeView.getTitleActionByName('New Folder');
103
+ await (action === null || action === void 0 ? void 0 : action.click());
104
+ // type `new_folder2` as the file name
105
+ const newFileName = 'new_folder2';
106
+ const input = await ((_a = (await fileTreeView.getViewElement())) === null || _a === void 0 ? void 0 : _a.waitForSelector('.kt-input-box'));
107
+ if (input != null) {
108
+ await input.focus();
109
+ await input.type(newFileName, { delay: 200 });
110
+ await app.page.keyboard.press('Enter');
111
+ }
112
+ await app.page.waitForTimeout(200);
113
+ const newFile = await explorer.getFileStatTreeNodeByPath(`${newFileName}`);
114
+ (0, test_1.expect)(newFile).toBeDefined();
115
+ (0, test_1.expect)(await (newFile === null || newFile === void 0 ? void 0 : newFile.isFolder())).toBeTruthy();
116
+ });
117
+ (ide_utils_1.isWindows ? hooks_1.default.skip : hooks_1.default)('fileTree should be updated while create directory from terminal', async () => {
118
+ const dirname = 'dir_from_terminal';
119
+ const terminal = await app.open(terminal_1.OpenSumiTerminal);
120
+ await terminal.sendText(`cd ${workspace.workspace.codeUri.fsPath}`);
121
+ await terminal.sendText(`mkdir ${dirname}`);
122
+ await app.page.waitForTimeout(2000);
123
+ let newDir = await explorer.getFileStatTreeNodeByPath(dirname);
124
+ if (!newDir) {
125
+ const action = await fileTreeView.getTitleActionByName('Refresh');
126
+ await (action === null || action === void 0 ? void 0 : action.click());
127
+ await app.page.waitForTimeout(200);
128
+ newDir = await explorer.getFileStatTreeNodeByPath(dirname);
129
+ }
130
+ (0, test_1.expect)(newDir).toBeDefined();
131
+ });
132
+ (0, hooks_1.default)('can filter files on the filetree', async () => {
133
+ var _a;
134
+ const action = await fileTreeView.getTitleActionByName('Filter on opened files');
135
+ await (action === null || action === void 0 ? void 0 : action.click());
136
+ // type `editor2` to filter existed files
137
+ const filterString = 'editor2';
138
+ const input = await ((_a = (await fileTreeView.getViewElement())) === null || _a === void 0 ? void 0 : _a.waitForSelector('.kt-input-box'));
139
+ if (input != null) {
140
+ await input.focus();
141
+ await input.type(filterString, { delay: 200 });
142
+ }
143
+ await app.page.waitForTimeout(200);
144
+ const file_1 = await explorer.getFileStatTreeNodeByPath(`${filterString}.js`);
145
+ (0, test_1.expect)(file_1).toBeDefined();
146
+ let file_2 = await explorer.getFileStatTreeNodeByPath('editor.js');
147
+ (0, test_1.expect)(file_2).toBeUndefined();
148
+ await app.page.keyboard.press('Escape');
149
+ file_2 = await explorer.getFileStatTreeNodeByPath('editor.js');
150
+ (0, test_1.expect)(file_2).toBeDefined();
151
+ });
152
+ (0, hooks_1.default)('should show opened files on the opened editor panel', async () => {
153
+ await openedEditorView.open();
154
+ (0, test_1.expect)(await openedEditorView.isVisible()).toBeTruthy();
155
+ const testFilePath = 'editor.js';
156
+ await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, testFilePath);
157
+ await app.page.waitForTimeout(500);
158
+ const node = await explorer.getOpenedEditorTreeNodeByPath(testFilePath);
159
+ (0, test_1.expect)(node).toBeDefined();
160
+ });
161
+ (0, hooks_1.default)('should show dirty icon on the opened editor panel', async () => {
162
+ await openedEditorView.open();
163
+ (0, test_1.expect)(await openedEditorView.isVisible()).toBeTruthy();
164
+ const testFilePath = 'editor3.js';
165
+ const editor = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, testFilePath);
166
+ await editor.addTextToNewLineAfterLineByLineNumber(1, `const a = 'a';
167
+ console.log(a);`);
168
+ await app.page.waitForTimeout(1000);
169
+ let node = await explorer.getOpenedEditorTreeNodeByPath(testFilePath);
170
+ (0, test_1.expect)(await (node === null || node === void 0 ? void 0 : node.isDirty())).toBeTruthy();
171
+ await editor.save();
172
+ await app.page.waitForTimeout(1000);
173
+ node = await explorer.getOpenedEditorTreeNodeByPath(testFilePath);
174
+ (0, test_1.expect)(await (node === null || node === void 0 ? void 0 : node.isDirty())).toBeFalsy();
175
+ });
176
+ (0, hooks_1.default)('split file on the editor should showing on two group', async () => {
177
+ await openedEditorView.open();
178
+ (0, test_1.expect)(await openedEditorView.isVisible()).toBeTruthy();
179
+ const testFilePath = 'editor3.js';
180
+ const editor = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, testFilePath);
181
+ await editor.triggerTitleMenuById('editor.splitToRight');
182
+ await app.page.waitForTimeout(2000);
183
+ const group1 = await explorer.getOpenedEditorTreeNodeByPath('Group 1');
184
+ const group2 = await explorer.getOpenedEditorTreeNodeByPath('Group 2');
185
+ (0, test_1.expect)(group1).toBeDefined();
186
+ (0, test_1.expect)(group2).toBeDefined();
187
+ });
79
188
  });
80
189
  //# sourceMappingURL=explorer-view.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"explorer-view.test.js","sourceRoot":"","sources":["../../src/tests/explorer-view.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explorer-view.test.js","sourceRoot":"","sources":["../../src/tests/explorer-view.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=keymaps.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keymaps.test.d.ts","sourceRoot":"","sources":["../../src/tests/keymaps.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,94 @@
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 component_editor_1 = require("../component-editor");
8
+ const constans_1 = require("../constans");
9
+ const context_menu_1 = require("../context-menu");
10
+ const explorer_view_1 = require("../explorer-view");
11
+ const text_editor_1 = require("../text-editor");
12
+ const utils_1 = require("../utils");
13
+ const workspace_1 = require("../workspace");
14
+ const hooks_1 = tslib_1.__importStar(require("./hooks"));
15
+ let app;
16
+ let explorer;
17
+ let workspace;
18
+ hooks_1.default.describe('OpenSumi Keyboard Shortcuts', () => {
19
+ hooks_1.default.beforeAll(async () => {
20
+ workspace = new workspace_1.OpenSumiWorkspace([path_1.default.resolve('./src/tests/workspaces/default')]);
21
+ app = await app_1.OpenSumiApp.load(hooks_1.page, workspace);
22
+ explorer = await app.open(explorer_view_1.OpenSumiExplorerView);
23
+ explorer.initFileTreeView(workspace.workspace.displayName);
24
+ });
25
+ hooks_1.default.afterAll(() => {
26
+ app.dispose();
27
+ });
28
+ const openKeymapsView = async () => {
29
+ const leftTabbar = await app.page.waitForSelector(`#${constans_1.OPENSUMI_VIEW_CONTAINERS.LEFT_TABBAR}`);
30
+ const settingsButton = await leftTabbar.$('[class*="titleActions___"] span');
31
+ await (settingsButton === null || settingsButton === void 0 ? void 0 : settingsButton.click());
32
+ const menu = new context_menu_1.OpenSumiContextMenu(app);
33
+ await menu.clickMenuItem('Keyboard Shortcut');
34
+ };
35
+ (0, hooks_1.default)('open Keyboard Settings by keybinding', async () => {
36
+ await explorer.fileTreeView.focus();
37
+ await app.page.keyboard.press((0, utils_1.keypressWithCmdCtrl)('KeyK'), { delay: 200 });
38
+ await app.page.keyboard.press((0, utils_1.keypressWithCmdCtrl)('KeyS'), { delay: 200 });
39
+ const editor = await app.openComponentEditor(component_editor_1.OpenSumiComponentEditor, 'keymaps:/', 'Keyboard Shortcuts', "[class*='keybinding_container___']");
40
+ (0, test_1.expect)(await editor.isVisible()).toBeTruthy();
41
+ await editor.close();
42
+ await app.page.waitForTimeout(1000);
43
+ (0, test_1.expect)(await editor.isVisible()).toBeFalsy();
44
+ });
45
+ (0, hooks_1.default)('open Keyboard Settings by settings button', async () => {
46
+ await openKeymapsView();
47
+ const editor = await app.openComponentEditor(component_editor_1.OpenSumiComponentEditor, 'keymaps:/', 'Keyboard Shortcuts', "[class*='keybinding_container___']");
48
+ (0, test_1.expect)(await editor.isVisible()).toBeTruthy();
49
+ await editor.close();
50
+ });
51
+ (0, hooks_1.default)("change 'Save Current File' keybinding to 'CMD+SHIFT+S'", async () => {
52
+ var _a, _b, _c;
53
+ await openKeymapsView();
54
+ const editor = await app.openComponentEditor(component_editor_1.OpenSumiComponentEditor, 'keymaps:/', 'Keyboard Shortcuts', "[class*='keybinding_container___']");
55
+ (0, test_1.expect)(await editor.isVisible()).toBeTruthy();
56
+ const searchArea = await ((_a = (await editor.getContainer())) === null || _a === void 0 ? void 0 : _a.$('[class*="search_input___"]'));
57
+ const keyboardButton = await (searchArea === null || searchArea === void 0 ? void 0 : searchArea.$('[class*="search_inline_action___"] span'));
58
+ const searchInput = await (searchArea === null || searchArea === void 0 ? void 0 : searchArea.$('.kt-input-box input'));
59
+ await (keyboardButton === null || keyboardButton === void 0 ? void 0 : keyboardButton.click());
60
+ await (searchInput === null || searchInput === void 0 ? void 0 : searchInput.focus());
61
+ // type 'CMD+S' to filter 'Save Current File' command
62
+ await app.page.keyboard.press((0, utils_1.keypressWithCmdCtrl)('KeyS'), { delay: 200 });
63
+ const items = (await ((_b = (await editor.getContainer())) === null || _b === void 0 ? void 0 : _b.$$('[class*="keybinding_list_item__"]'))) || [];
64
+ let saveFileItem;
65
+ for (const item of items) {
66
+ const command_name = await ((_c = (await item.$('[class*="command_name___"]'))) === null || _c === void 0 ? void 0 : _c.textContent());
67
+ if (command_name === 'Save Current File') {
68
+ saveFileItem = item;
69
+ break;
70
+ }
71
+ }
72
+ (0, test_1.expect)(saveFileItem).toBeDefined();
73
+ await (saveFileItem === null || saveFileItem === void 0 ? void 0 : saveFileItem.hover());
74
+ const edit = await saveFileItem.$('[title="Edit"]');
75
+ await (edit === null || edit === void 0 ? void 0 : edit.click());
76
+ await app.page.keyboard.press((0, utils_1.keypressWithCmdCtrl)('Shift+KeyS'), { delay: 200 });
77
+ await app.page.keyboard.press('Enter');
78
+ // varified file save keybinding
79
+ const textEditor = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, 'editor.js');
80
+ await textEditor.addTextToNewLineAfterLineByLineNumber(1, `const a = 'a';
81
+ console.log(a);`);
82
+ let isDirty = await textEditor.isDirty();
83
+ (0, test_1.expect)(isDirty).toBeTruthy();
84
+ await app.page.keyboard.press((0, utils_1.keypressWithCmdCtrl)('KeyS'), { delay: 200 });
85
+ await app.page.waitForTimeout(1000);
86
+ isDirty = await textEditor.isDirty();
87
+ (0, test_1.expect)(isDirty).toBeTruthy();
88
+ await app.page.keyboard.press((0, utils_1.keypressWithCmdCtrl)('Shift+KeyS'), { delay: 200 });
89
+ await app.page.waitForTimeout(1000);
90
+ isDirty = await textEditor.isDirty();
91
+ (0, test_1.expect)(isDirty).toBeFalsy();
92
+ });
93
+ });
94
+ //# sourceMappingURL=keymaps.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keymaps.test.js","sourceRoot":"","sources":["../../src/tests/keymaps.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=language.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.test.d.ts","sourceRoot":"","sources":["../../src/tests/language.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
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 ide_utils_1 = require("@opensumi/ide-utils");
7
+ const app_1 = require("../app");
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 editor;
15
+ let workspace;
16
+ hooks_1.default.describe('OpenSumi Language', () => {
17
+ hooks_1.default.beforeAll(async () => {
18
+ workspace = new workspace_1.OpenSumiWorkspace([path_1.default.resolve('./src/tests/workspaces/language')]);
19
+ app = await app_1.OpenSumiApp.load(hooks_1.page, workspace);
20
+ explorer = await app.open(explorer_view_1.OpenSumiExplorerView);
21
+ explorer.initFileTreeView(workspace.workspace.displayName);
22
+ await explorer.fileTreeView.open();
23
+ });
24
+ hooks_1.default.afterAll(() => {
25
+ app.dispose();
26
+ });
27
+ (0, hooks_1.default)('Go to Defination by cmd + click', async () => {
28
+ const folder = await explorer.getFileStatTreeNodeByPath('language');
29
+ await (folder === null || folder === void 0 ? void 0 : folder.open());
30
+ editor = await app.openEditor(text_editor_1.OpenSumiTextEditor, explorer, 'reference.ts', false);
31
+ await editor.activate();
32
+ await app.page.waitForTimeout(2000);
33
+ await editor.placeCursorInLineWithPosition(4, 20);
34
+ let cursorHandle = await editor.getCursorElement();
35
+ await (cursorHandle === null || cursorHandle === void 0 ? void 0 : cursorHandle.click({ modifiers: [ide_utils_1.isMacintosh ? 'Meta' : 'Control'] }));
36
+ await app.page.waitForTimeout(2000);
37
+ const definitionTree = await explorer.getFileStatTreeNodeByPath('definition.ts');
38
+ (0, test_1.expect)(await (definitionTree === null || definitionTree === void 0 ? void 0 : definitionTree.isSelected())).toBeTruthy();
39
+ const currentTab = await editor.getCurrentTab();
40
+ (0, test_1.expect)(await (currentTab === null || currentTab === void 0 ? void 0 : currentTab.textContent())).toStrictEqual(' definition.ts');
41
+ cursorHandle = await editor.getCursorElement();
42
+ const cursorLineNumber = await editor.getCursorLineNumber(cursorHandle === null || cursorHandle === void 0 ? void 0 : cursorHandle.asElement());
43
+ (0, test_1.expect)(cursorLineNumber).toBe(1);
44
+ (0, test_1.expect)(await editor.textContentOfLineByLineNumber(cursorLineNumber)).toBe('export class Definition {');
45
+ await editor.close();
46
+ });
47
+ });
48
+ //# sourceMappingURL=language.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.test.js","sourceRoot":"","sources":["../../src/tests/language.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scm.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scm.test.d.ts","sourceRoot":"","sources":["../../src/tests/scm.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
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 explorer_view_1 = require("../explorer-view");
8
+ const terminal_1 = require("../terminal");
9
+ const workspace_1 = require("../workspace");
10
+ const hooks_1 = tslib_1.__importStar(require("./hooks"));
11
+ let app;
12
+ let explorer;
13
+ let fileTreeView;
14
+ let workspace;
15
+ hooks_1.default.describe('OpenSumi SCM Panel', () => {
16
+ hooks_1.default.beforeAll(async () => {
17
+ workspace = new workspace_1.OpenSumiWorkspace([path_1.default.resolve('./src/tests/workspaces/git-workspace')]);
18
+ app = await app_1.OpenSumiApp.load(hooks_1.page, workspace);
19
+ explorer = await app.open(explorer_view_1.OpenSumiExplorerView);
20
+ explorer.initFileTreeView(workspace.workspace.displayName);
21
+ fileTreeView = explorer.fileTreeView;
22
+ });
23
+ hooks_1.default.afterAll(() => {
24
+ app.dispose();
25
+ });
26
+ (0, hooks_1.default)('The "U" charset should on the files tail after git initialized', async () => {
27
+ await explorer.fileTreeView.open();
28
+ const terminal = await app.open(terminal_1.OpenSumiTerminal);
29
+ // There should have GIT on the PATH
30
+ await terminal.sendText('git init');
31
+ const action = await fileTreeView.getTitleActionByName('Refresh');
32
+ await (action === null || action === void 0 ? void 0 : action.click());
33
+ await app.page.waitForTimeout(2000);
34
+ const node = await explorer.getFileStatTreeNodeByPath('a.js');
35
+ const badge = await (node === null || node === void 0 ? void 0 : node.badge());
36
+ (0, test_1.expect)(badge).toBe('U');
37
+ });
38
+ });
39
+ //# sourceMappingURL=scm.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scm.test.js","sourceRoot":"","sources":["../../src/tests/scm.test.ts"],"names":[],"mappings":";;;AAAA,wDAAwB;AAExB,2CAA0C;AAE1C,gCAAqC;AACrC,oDAAwD;AAExD,0CAA+C;AAC/C,4CAAiD;AAEjD,yDAAqC;AAErC,IAAI,GAAgB,CAAC;AACrB,IAAI,QAA8B,CAAC;AACnC,IAAI,YAAkC,CAAC;AACvC,IAAI,SAA4B,CAAC;AAEjC,eAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACvC,eAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QACxB,SAAS,GAAG,IAAI,6BAAiB,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC;QAC1F,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,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,eAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACjB,GAAG,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,IAAA,eAAI,EAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,2BAAgB,CAAC,CAAC;QAClD,oCAAoC;QACpC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAClE,MAAM,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,EAAE,CAAA,CAAC;QACtB,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE,CAAA,CAAC;QAClC,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -15,8 +15,16 @@ hooks_1.default.describe('OpenSumi Search Panel', () => {
15
15
  app = await __1.OpenSumiApp.load(hooks_1.page, workspace);
16
16
  search = await app.open(search_view_1.OpenSumiSearchView);
17
17
  });
18
- (0, hooks_1.default)('Can search files by simple text', () => {
19
- (0, test_1.expect)(search.isVisible()).toBeTruthy();
18
+ (0, hooks_1.default)('Can search files by simple text', async () => {
19
+ const searchText = 'hello';
20
+ (0, test_1.expect)(await search.isVisible()).toBeTruthy();
21
+ await search.focusOnSearch();
22
+ await hooks_1.page.keyboard.type(searchText);
23
+ // search panel should searched after typing
24
+ await app.page.keyboard.press('Enter');
25
+ const { results, files } = await search.getSearchResult();
26
+ (0, test_1.expect)(results).toBe(1);
27
+ (0, test_1.expect)(files).toBe(1);
20
28
  });
21
29
  });
22
30
  //# sourceMappingURL=search-view.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-view.test.js","sourceRoot":"","sources":["../../src/tests/search-view.test.ts"],"names":[],"mappings":";;;AAAA,wDAAwB;AAExB,2CAA0C;AAE1C,0BAAiC;AACjC,gDAAoD;AACpD,4CAAiD;AAEjD,yDAAqC;AAErC,IAAI,GAAgB,CAAC;AACrB,IAAI,MAA0B,CAAC;AAE/B,eAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IAC1C,eAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,SAAS,GAAG,IAAI,6BAAiB,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC;QAC1F,GAAG,GAAG,MAAM,eAAW,CAAC,IAAI,CAAC,YAAI,EAAE,SAAS,CAAC,CAAC;QAC9C,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,gCAAkB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,eAAI,EAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,IAAA,aAAM,EAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"search-view.test.js","sourceRoot":"","sources":["../../src/tests/search-view.test.ts"],"names":[],"mappings":";;;AAAA,wDAAwB;AAExB,2CAA0C;AAE1C,0BAAiC;AACjC,gDAAoD;AACpD,4CAAiD;AAEjD,yDAAqC;AAErC,IAAI,GAAgB,CAAC;AACrB,IAAI,MAA0B,CAAC;AAE/B,eAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IAC1C,eAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,SAAS,GAAG,IAAI,6BAAiB,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC;QAC1F,GAAG,GAAG,MAAM,eAAW,CAAC,IAAI,CAAC,YAAI,EAAE,SAAS,CAAC,CAAC;QAC9C,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,gCAAkB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,eAAI,EAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,UAAU,GAAG,OAAO,CAAC;QAC3B,IAAA,aAAM,EAAC,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;QAC9C,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7B,MAAM,YAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,4CAA4C;QAC5C,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;QAC1D,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,9 +1,34 @@
1
- import { ElementHandle } from '@playwright/test';
1
+ import { ElementHandle, Page } from '@playwright/test';
2
+ import { OpenSumiApp } from './app';
2
3
  import { OpenSumiContextMenu } from './context-menu';
3
4
  import { OpenSumiEditor } from './editor';
5
+ import { OpenSumiExplorerFileStatNode } from './explorer-view';
6
+ declare abstract class ViewsModel {
7
+ readonly page: Page;
8
+ constructor(page: Page);
9
+ protected viewElement: ElementHandle<SVGElement | HTMLElement> | null;
10
+ mount(v: ElementHandle<SVGElement | HTMLElement> | null): Promise<void>;
11
+ }
12
+ declare class GlyphMarginModel extends ViewsModel {
13
+ getElement(): Promise<ElementHandle<any> | null | undefined>;
14
+ getOverlay(lineNumber: number): Promise<ElementHandle<SVGElement | HTMLElement> | undefined>;
15
+ hasBreakpoint(node: ElementHandle<SVGElement | HTMLElement>): Promise<boolean>;
16
+ hasTopStackFrame(node: ElementHandle<SVGElement | HTMLElement>): Promise<boolean>;
17
+ hasTopStackFrameLine(node: ElementHandle<SVGElement | HTMLElement>): Promise<boolean>;
18
+ }
19
+ declare class OverlaysModel extends ViewsModel {
20
+ getElement(): Promise<ElementHandle<SVGElement | HTMLElement> | null | undefined>;
21
+ getOverlay(lineNumber: number): Promise<ElementHandle<SVGElement | HTMLElement> | null | undefined>;
22
+ }
4
23
  export declare class OpenSumiTextEditor extends OpenSumiEditor {
24
+ private glyphMarginModel;
25
+ private overlaysModel;
26
+ constructor(app: OpenSumiApp, filestatElement: OpenSumiExplorerFileStatNode);
27
+ getGlyphMarginModel(): Promise<GlyphMarginModel>;
28
+ getOverlaysModel(): Promise<OverlaysModel>;
5
29
  openLineContextMenuByLineNumber(lineNumber: number): Promise<OpenSumiContextMenu | undefined>;
6
30
  openGlyphMarginContextMenu(): Promise<OpenSumiContextMenu | undefined>;
31
+ openTabContextMenu(): Promise<OpenSumiContextMenu | undefined>;
7
32
  numberOfLines(): Promise<number | undefined>;
8
33
  textContentOfLineByLineNumber(lineNumber: number): Promise<string | undefined>;
9
34
  replaceLineWithLineNumber(text: string, lineNumber: number): Promise<void>;
@@ -12,7 +37,9 @@ export declare class OpenSumiTextEditor extends OpenSumiEditor {
12
37
  placeCursorInLineWithLineNumber(lineNumber: number): Promise<ElementHandle<SVGElement | HTMLElement> | undefined>;
13
38
  placeCursorInLineWithPosition(lineNumber: number, columnNumber: number): Promise<ElementHandle<SVGElement | HTMLElement> | undefined>;
14
39
  deleteLineByLineNumber(lineNumber: number): Promise<void>;
15
- getGlyphMarginElement(): Promise<ElementHandle<HTMLElement | SVGElement> | null | undefined>;
40
+ getGlyphMarginElement(): Promise<ElementHandle<SVGElement | HTMLElement> | null | undefined>;
41
+ getCursorElement(): Promise<ElementHandle<SVGElement | HTMLElement> | undefined>;
42
+ getCursorLineNumber(node: ElementHandle<SVGElement | HTMLElement> | undefined): Promise<number | undefined>;
16
43
  lineByLineNumber(lineNumber: number): Promise<ElementHandle<SVGElement | HTMLElement> | undefined>;
17
44
  textContentOfLineContainingText(text: string): Promise<string | undefined>;
18
45
  replaceLineContainingText(newText: string, oldText: string): Promise<void>;
@@ -24,10 +51,11 @@ export declare class OpenSumiTextEditor extends OpenSumiEditor {
24
51
  pasteContentAfterLineByLineNumber(lineNumber: number): Promise<void>;
25
52
  protected lineContainingText(text: string): Promise<ElementHandle<SVGElement | HTMLElement> | undefined>;
26
53
  protected selectLine(lineElement: ElementHandle<SVGElement | HTMLElement> | undefined): Promise<void>;
27
- protected placeCursorInLine(lineElement: ElementHandle<SVGElement | HTMLElement> | undefined): Promise<void>;
54
+ protected placeCursorInLine(lineElement: ElementHandle<SVGElement | HTMLElement> | undefined, point?: 'start' | 'end'): Promise<void>;
28
55
  protected replaceEditorSymbolsWithSpace(content: string): string | Promise<string | undefined>;
29
56
  protected selectedSuggestion(): Promise<ElementHandle<SVGElement | HTMLElement>>;
30
57
  getSelectedSuggestionText(): Promise<string>;
31
58
  clearContent(): Promise<void>;
32
59
  }
60
+ export {};
33
61
  //# sourceMappingURL=text-editor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-editor.d.ts","sourceRoot":"","sources":["../src/text-editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text-editor.d.ts","sourceRoot":"","sources":["../src/text-editor.ts"],"names":[],"mappings":"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"}