@theia/playwright 1.45.0 → 1.46.0-next.72

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 (164) hide show
  1. package/README.md +54 -54
  2. package/lib/index.d.ts +30 -30
  3. package/lib/index.js +57 -57
  4. package/lib/tests/fixtures/theia-fixture.d.ts +4 -0
  5. package/lib/tests/fixtures/theia-fixture.d.ts.map +1 -0
  6. package/lib/tests/fixtures/theia-fixture.js +24 -0
  7. package/lib/tests/fixtures/theia-fixture.js.map +1 -0
  8. package/lib/tests/theia-app.test.d.ts +1 -1
  9. package/lib/tests/theia-app.test.js +29 -29
  10. package/lib/tests/theia-application-shell.test.d.ts +2 -0
  11. package/lib/tests/theia-application-shell.test.d.ts.map +1 -0
  12. package/lib/tests/theia-application-shell.test.js +58 -0
  13. package/lib/tests/theia-application-shell.test.js.map +1 -0
  14. package/lib/tests/theia-explorer-view.test.d.ts +1 -1
  15. package/lib/tests/theia-explorer-view.test.js +183 -183
  16. package/lib/tests/theia-main-menu.test.d.ts +1 -1
  17. package/lib/tests/theia-main-menu.test.js +92 -92
  18. package/lib/tests/theia-output-view.test.d.ts +1 -1
  19. package/lib/tests/theia-output-view.test.js +78 -78
  20. package/lib/tests/theia-preference-view.test.d.ts +1 -1
  21. package/lib/tests/theia-preference-view.test.js +101 -101
  22. package/lib/tests/theia-problems-view.test.d.ts +1 -1
  23. package/lib/tests/theia-problems-view.test.js +54 -54
  24. package/lib/tests/theia-quick-command.test.d.ts +1 -1
  25. package/lib/tests/theia-quick-command.test.js +69 -69
  26. package/lib/tests/theia-sample-app.test.d.ts +1 -1
  27. package/lib/tests/theia-sample-app.test.js +57 -57
  28. package/lib/tests/theia-status-bar.test.d.ts +1 -1
  29. package/lib/tests/theia-status-bar.test.js +44 -44
  30. package/lib/tests/theia-terminal-view.test.d.ts +1 -1
  31. package/lib/tests/theia-terminal-view.test.js +78 -78
  32. package/lib/tests/theia-text-editor.test.d.ts +1 -1
  33. package/lib/tests/theia-text-editor.test.js +155 -155
  34. package/lib/tests/theia-toolbar.test.d.ts +1 -1
  35. package/lib/tests/theia-toolbar.test.js +61 -61
  36. package/lib/tests/theia-workspace.test.d.ts +1 -1
  37. package/lib/tests/theia-workspace.test.js +72 -72
  38. package/lib/theia-about-dialog.d.ts +4 -4
  39. package/lib/theia-about-dialog.js +26 -26
  40. package/lib/theia-app-loader.d.ts +19 -19
  41. package/lib/theia-app-loader.js +129 -129
  42. package/lib/theia-app.d.ts +50 -50
  43. package/lib/theia-app.js +153 -153
  44. package/lib/theia-context-menu.d.ts +8 -8
  45. package/lib/theia-context-menu.js +37 -37
  46. package/lib/theia-dialog.d.ts +28 -28
  47. package/lib/theia-dialog.js +99 -99
  48. package/lib/theia-editor.d.ts +9 -9
  49. package/lib/theia-editor.js +68 -68
  50. package/lib/theia-explorer-view.d.ts +47 -47
  51. package/lib/theia-explorer-view.js +273 -273
  52. package/lib/theia-main-menu.d.ts +12 -12
  53. package/lib/theia-main-menu.js +53 -53
  54. package/lib/theia-menu-item.d.ts +14 -14
  55. package/lib/theia-menu-item.js +66 -66
  56. package/lib/theia-menu.d.ts +16 -16
  57. package/lib/theia-menu.js +86 -86
  58. package/lib/theia-monaco-editor.d.ts +15 -15
  59. package/lib/theia-monaco-editor.js +75 -75
  60. package/lib/theia-notification-indicator.d.ts +7 -7
  61. package/lib/theia-notification-indicator.js +44 -44
  62. package/lib/theia-notification-overlay.d.ts +22 -22
  63. package/lib/theia-notification-overlay.js +79 -79
  64. package/lib/theia-output-channel.d.ts +24 -24
  65. package/lib/theia-output-channel.js +71 -71
  66. package/lib/theia-output-view.d.ts +9 -9
  67. package/lib/theia-output-view.js +81 -81
  68. package/lib/theia-page-object.d.ts +7 -7
  69. package/lib/theia-page-object.js +27 -27
  70. package/lib/theia-preference-view.d.ts +84 -84
  71. package/lib/theia-preference-view.js +209 -209
  72. package/lib/theia-problem-indicator.d.ts +8 -8
  73. package/lib/theia-problem-indicator.js +38 -38
  74. package/lib/theia-problem-view.d.ts +5 -5
  75. package/lib/theia-problem-view.js +30 -30
  76. package/lib/theia-quick-command-palette.d.ts +12 -12
  77. package/lib/theia-quick-command-palette.js +80 -80
  78. package/lib/theia-rename-dialog.d.ts +5 -5
  79. package/lib/theia-rename-dialog.js +35 -35
  80. package/lib/theia-status-bar.d.ts +13 -13
  81. package/lib/theia-status-bar.js +39 -39
  82. package/lib/theia-status-indicator.d.ts +10 -10
  83. package/lib/theia-status-indicator.js +48 -48
  84. package/lib/theia-terminal.d.ts +13 -13
  85. package/lib/theia-terminal.js +59 -59
  86. package/lib/theia-text-editor.d.ts +26 -26
  87. package/lib/theia-text-editor.js +120 -120
  88. package/lib/theia-toggle-bottom-indicator.d.ts +4 -4
  89. package/lib/theia-toggle-bottom-indicator.js +26 -26
  90. package/lib/theia-toolbar-item.d.ts +10 -10
  91. package/lib/theia-toolbar-item.js +39 -39
  92. package/lib/theia-toolbar.d.ts +19 -19
  93. package/lib/theia-toolbar.js +90 -90
  94. package/lib/theia-tree-node.d.ts +19 -19
  95. package/lib/theia-tree-node.js +72 -72
  96. package/lib/theia-view.d.ts +32 -32
  97. package/lib/theia-view.js +149 -149
  98. package/lib/theia-welcome-view.d.ts +6 -0
  99. package/lib/theia-welcome-view.d.ts.map +1 -0
  100. package/lib/theia-welcome-view.js +31 -0
  101. package/lib/theia-welcome-view.js.map +1 -0
  102. package/lib/theia-workspace.d.ts +18 -18
  103. package/lib/theia-workspace.js +69 -69
  104. package/lib/util.d.ts +19 -19
  105. package/lib/util.js +93 -93
  106. package/package.json +2 -2
  107. package/src/index.ts +46 -46
  108. package/src/tests/resources/sample-files1/sample.txt +4 -4
  109. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-1/sampleFile1-1-1.txt +1 -1
  110. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-1/sampleFile1-1-2.txt +1 -1
  111. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-2/sampleFile1-2-1.txt +1 -1
  112. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-2/sampleFile1-2-2.txt +1 -1
  113. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-1/sampleFile2-1-1.txt +1 -1
  114. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-1/sampleFile2-1-2.txt +1 -1
  115. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-2/sampleFile2-2-1.txt +1 -1
  116. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-2/sampleFile2-2-2.txt +1 -1
  117. package/src/tests/resources/sample-files2/another-sample.txt +1 -1
  118. package/src/tests/theia-app.test.ts +33 -33
  119. package/src/tests/theia-application-shell.test.ts +67 -0
  120. package/src/tests/theia-explorer-view.test.ts +211 -211
  121. package/src/tests/theia-main-menu.test.ts +112 -112
  122. package/src/tests/theia-output-view.test.ts +85 -85
  123. package/src/tests/theia-preference-view.test.ts +122 -122
  124. package/src/tests/theia-problems-view.test.ts +64 -64
  125. package/src/tests/theia-quick-command.test.ts +80 -80
  126. package/src/tests/theia-sample-app.test.ts +66 -66
  127. package/src/tests/theia-status-bar.test.ts +52 -52
  128. package/src/tests/theia-terminal-view.test.ts +90 -90
  129. package/src/tests/theia-text-editor.test.ts +187 -187
  130. package/src/tests/theia-toolbar.test.ts +69 -69
  131. package/src/tests/theia-workspace.test.ts +80 -80
  132. package/src/theia-about-dialog.ts +26 -26
  133. package/src/theia-app-loader.ts +167 -167
  134. package/src/theia-app.ts +188 -188
  135. package/src/theia-context-menu.ts +42 -42
  136. package/src/theia-dialog.ts +114 -114
  137. package/src/theia-editor.ts +73 -73
  138. package/src/theia-explorer-view.ts +311 -311
  139. package/src/theia-main-menu.ts +54 -54
  140. package/src/theia-menu-item.ts +75 -75
  141. package/src/theia-menu.ts +96 -96
  142. package/src/theia-monaco-editor.ts +83 -83
  143. package/src/theia-notification-indicator.ts +44 -44
  144. package/src/theia-notification-overlay.ts +94 -94
  145. package/src/theia-output-channel.ts +88 -88
  146. package/src/theia-output-view.ts +87 -87
  147. package/src/theia-page-object.ts +29 -29
  148. package/src/theia-preference-view.ts +240 -240
  149. package/src/theia-problem-indicator.ts +37 -37
  150. package/src/theia-problem-view.ts +30 -30
  151. package/src/theia-quick-command-palette.ts +83 -83
  152. package/src/theia-rename-dialog.ts +36 -36
  153. package/src/theia-status-bar.ts +44 -44
  154. package/src/theia-status-indicator.ts +50 -50
  155. package/src/theia-terminal.ts +69 -69
  156. package/src/theia-text-editor.ts +141 -141
  157. package/src/theia-toggle-bottom-indicator.ts +21 -21
  158. package/src/theia-toolbar-item.ts +41 -41
  159. package/src/theia-toolbar.ts +99 -99
  160. package/src/theia-tree-node.ts +81 -81
  161. package/src/theia-view.ts +177 -177
  162. package/src/theia-welcome-view.ts +31 -0
  163. package/src/theia-workspace.ts +76 -76
  164. package/src/util.ts +91 -91
@@ -1,100 +1,100 @@
1
- "use strict";
2
- // *****************************************************************************
3
- // Copyright (C) 2021 logi.cals GmbH, EclipseSource and others.
4
- //
5
- // This program and the accompanying materials are made available under the
6
- // terms of the Eclipse Public License v. 2.0 which is available at
7
- // http://www.eclipse.org/legal/epl-2.0.
8
- //
9
- // This Source Code may also be made available under the following Secondary
10
- // Licenses when the conditions for such availability set forth in the Eclipse
11
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
- // with the GNU Classpath Exception which is available at
13
- // https://www.gnu.org/software/classpath/license.html.
14
- //
15
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
- // *****************************************************************************
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.TheiaDialog = void 0;
19
- const theia_page_object_1 = require("./theia-page-object");
20
- class TheiaDialog extends theia_page_object_1.TheiaPageObject {
21
- constructor() {
22
- super(...arguments);
23
- this.overlaySelector = '#theia-dialog-shell';
24
- this.blockSelector = this.overlaySelector + ' .dialogBlock';
25
- this.titleBarSelector = this.blockSelector + ' .dialogTitle';
26
- this.titleSelector = this.titleBarSelector + ' > div';
27
- this.contentSelector = this.blockSelector + ' .dialogContent > div';
28
- this.controlSelector = this.blockSelector + ' .dialogControl';
29
- this.errorSelector = this.blockSelector + ' .dialogContent';
30
- }
31
- async waitForVisible() {
32
- await this.page.waitForSelector(`${this.blockSelector}`, { state: 'visible' });
33
- }
34
- async waitForClosed() {
35
- await this.page.waitForSelector(`${this.blockSelector}`, { state: 'detached' });
36
- }
37
- async isVisible() {
38
- const pouDialogElement = await this.page.$(this.blockSelector);
39
- return pouDialogElement ? pouDialogElement.isVisible() : false;
40
- }
41
- async title() {
42
- const titleElement = await this.page.waitForSelector(`${this.titleSelector}`);
43
- return titleElement.textContent();
44
- }
45
- async waitUntilTitleIsDisplayed(title) {
46
- await this.page.waitForFunction(predicate => {
47
- const element = document.querySelector(predicate.titleSelector);
48
- return !!element && element.textContent === predicate.expectedTitle;
49
- }, { titleSelector: this.titleSelector, expectedTitle: title });
50
- }
51
- async contentElement() {
52
- return this.page.waitForSelector(this.contentSelector);
53
- }
54
- async buttonElement(label) {
55
- return this.page.waitForSelector(`${this.controlSelector} button:has-text("${label}")`);
56
- }
57
- async buttonElementByClass(buttonClass) {
58
- return this.page.waitForSelector(`${this.controlSelector} button${buttonClass}`);
59
- }
60
- async validationElement() {
61
- return this.page.waitForSelector(`${this.errorSelector} div.error`, { state: 'attached' });
62
- }
63
- async getValidationText() {
64
- const element = await this.validationElement();
65
- return element.textContent();
66
- }
67
- async validationResult() {
68
- const validationText = await this.getValidationText();
69
- return validationText !== '' ? false : true;
70
- }
71
- async close() {
72
- const closeButton = await this.page.waitForSelector(`${this.titleBarSelector} i.closeButton`);
73
- await closeButton.click();
74
- await this.waitForClosed();
75
- }
76
- async clickButton(buttonLabel) {
77
- const buttonElement = await this.buttonElement(buttonLabel);
78
- await buttonElement.click();
79
- }
80
- async isButtonDisabled(buttonLabel) {
81
- const buttonElement = await this.buttonElement(buttonLabel);
82
- return buttonElement.isDisabled();
83
- }
84
- async clickMainButton() {
85
- const buttonElement = await this.buttonElementByClass('.theia-button.main');
86
- await buttonElement.click();
87
- }
88
- async clickSecondaryButton() {
89
- const buttonElement = await this.buttonElementByClass('.theia-button.secondary');
90
- await buttonElement.click();
91
- }
92
- async waitUntilMainButtonIsEnabled() {
93
- await this.page.waitForFunction(predicate => {
94
- const button = document.querySelector(predicate.buttonSelector);
95
- return !!button && !button.disabled;
96
- }, { buttonSelector: `${this.controlSelector} > button.theia-button.main` });
97
- }
98
- }
99
- exports.TheiaDialog = TheiaDialog;
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2021 logi.cals GmbH, EclipseSource and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.TheiaDialog = void 0;
19
+ const theia_page_object_1 = require("./theia-page-object");
20
+ class TheiaDialog extends theia_page_object_1.TheiaPageObject {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.overlaySelector = '#theia-dialog-shell';
24
+ this.blockSelector = this.overlaySelector + ' .dialogBlock';
25
+ this.titleBarSelector = this.blockSelector + ' .dialogTitle';
26
+ this.titleSelector = this.titleBarSelector + ' > div';
27
+ this.contentSelector = this.blockSelector + ' .dialogContent > div';
28
+ this.controlSelector = this.blockSelector + ' .dialogControl';
29
+ this.errorSelector = this.blockSelector + ' .dialogContent';
30
+ }
31
+ async waitForVisible() {
32
+ await this.page.waitForSelector(`${this.blockSelector}`, { state: 'visible' });
33
+ }
34
+ async waitForClosed() {
35
+ await this.page.waitForSelector(`${this.blockSelector}`, { state: 'detached' });
36
+ }
37
+ async isVisible() {
38
+ const pouDialogElement = await this.page.$(this.blockSelector);
39
+ return pouDialogElement ? pouDialogElement.isVisible() : false;
40
+ }
41
+ async title() {
42
+ const titleElement = await this.page.waitForSelector(`${this.titleSelector}`);
43
+ return titleElement.textContent();
44
+ }
45
+ async waitUntilTitleIsDisplayed(title) {
46
+ await this.page.waitForFunction(predicate => {
47
+ const element = document.querySelector(predicate.titleSelector);
48
+ return !!element && element.textContent === predicate.expectedTitle;
49
+ }, { titleSelector: this.titleSelector, expectedTitle: title });
50
+ }
51
+ async contentElement() {
52
+ return this.page.waitForSelector(this.contentSelector);
53
+ }
54
+ async buttonElement(label) {
55
+ return this.page.waitForSelector(`${this.controlSelector} button:has-text("${label}")`);
56
+ }
57
+ async buttonElementByClass(buttonClass) {
58
+ return this.page.waitForSelector(`${this.controlSelector} button${buttonClass}`);
59
+ }
60
+ async validationElement() {
61
+ return this.page.waitForSelector(`${this.errorSelector} div.error`, { state: 'attached' });
62
+ }
63
+ async getValidationText() {
64
+ const element = await this.validationElement();
65
+ return element.textContent();
66
+ }
67
+ async validationResult() {
68
+ const validationText = await this.getValidationText();
69
+ return validationText !== '' ? false : true;
70
+ }
71
+ async close() {
72
+ const closeButton = await this.page.waitForSelector(`${this.titleBarSelector} i.closeButton`);
73
+ await closeButton.click();
74
+ await this.waitForClosed();
75
+ }
76
+ async clickButton(buttonLabel) {
77
+ const buttonElement = await this.buttonElement(buttonLabel);
78
+ await buttonElement.click();
79
+ }
80
+ async isButtonDisabled(buttonLabel) {
81
+ const buttonElement = await this.buttonElement(buttonLabel);
82
+ return buttonElement.isDisabled();
83
+ }
84
+ async clickMainButton() {
85
+ const buttonElement = await this.buttonElementByClass('.theia-button.main');
86
+ await buttonElement.click();
87
+ }
88
+ async clickSecondaryButton() {
89
+ const buttonElement = await this.buttonElementByClass('.theia-button.secondary');
90
+ await buttonElement.click();
91
+ }
92
+ async waitUntilMainButtonIsEnabled() {
93
+ await this.page.waitForFunction(predicate => {
94
+ const button = document.querySelector(predicate.buttonSelector);
95
+ return !!button && !button.disabled;
96
+ }, { buttonSelector: `${this.controlSelector} > button.theia-button.main` });
97
+ }
98
+ }
99
+ exports.TheiaDialog = TheiaDialog;
100
100
  //# sourceMappingURL=theia-dialog.js.map
@@ -1,10 +1,10 @@
1
- import { TheiaView } from './theia-view';
2
- export declare abstract class TheiaEditor extends TheiaView {
3
- isDirty(): Promise<boolean>;
4
- save(): Promise<void>;
5
- closeWithoutSave(): Promise<void>;
6
- saveAndClose(): Promise<void>;
7
- undo(times?: number): Promise<void>;
8
- redo(times?: number): Promise<void>;
9
- }
1
+ import { TheiaView } from './theia-view';
2
+ export declare abstract class TheiaEditor extends TheiaView {
3
+ isDirty(): Promise<boolean>;
4
+ save(): Promise<void>;
5
+ closeWithoutSave(): Promise<void>;
6
+ saveAndClose(): Promise<void>;
7
+ undo(times?: number): Promise<void>;
8
+ redo(times?: number): Promise<void>;
9
+ }
10
10
  //# sourceMappingURL=theia-editor.d.ts.map
@@ -1,69 +1,69 @@
1
- "use strict";
2
- // *****************************************************************************
3
- // Copyright (C) 2021 logi.cals GmbH, EclipseSource and others.
4
- //
5
- // This program and the accompanying materials are made available under the
6
- // terms of the Eclipse Public License v. 2.0 which is available at
7
- // http://www.eclipse.org/legal/epl-2.0.
8
- //
9
- // This Source Code may also be made available under the following Secondary
10
- // Licenses when the conditions for such availability set forth in the Eclipse
11
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
- // with the GNU Classpath Exception which is available at
13
- // https://www.gnu.org/software/classpath/license.html.
14
- //
15
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
- // *****************************************************************************
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.TheiaEditor = void 0;
19
- const theia_dialog_1 = require("./theia-dialog");
20
- const theia_view_1 = require("./theia-view");
21
- const util_1 = require("./util");
22
- class TheiaEditor extends theia_view_1.TheiaView {
23
- async isDirty() {
24
- return await this.isTabVisible() && (0, util_1.containsClass)(this.tabElement(), 'theia-mod-dirty');
25
- }
26
- async save() {
27
- await this.activate();
28
- if (!await this.isDirty()) {
29
- return;
30
- }
31
- const fileMenu = await this.app.menuBar.openMenu('File');
32
- const saveItem = await fileMenu.menuItemByName('Save');
33
- await (saveItem === null || saveItem === void 0 ? void 0 : saveItem.click());
34
- await this.page.waitForSelector(this.tabSelector + '.theia-mod-dirty', { state: 'detached' });
35
- }
36
- async closeWithoutSave() {
37
- if (!await this.isDirty()) {
38
- return super.close(true);
39
- }
40
- await super.close(false);
41
- const saveDialog = new theia_dialog_1.TheiaDialog(this.app);
42
- await saveDialog.clickButton('Don\'t save');
43
- await super.waitUntilClosed();
44
- }
45
- async saveAndClose() {
46
- await this.save();
47
- await this.close();
48
- }
49
- async undo(times = 1) {
50
- await this.activate();
51
- for (let i = 0; i < times; i++) {
52
- const editMenu = await this.app.menuBar.openMenu('Edit');
53
- const undoItem = await editMenu.menuItemByName('Undo');
54
- await (undoItem === null || undoItem === void 0 ? void 0 : undoItem.click());
55
- await this.app.page.waitForTimeout(200);
56
- }
57
- }
58
- async redo(times = 1) {
59
- await this.activate();
60
- for (let i = 0; i < times; i++) {
61
- const editMenu = await this.app.menuBar.openMenu('Edit');
62
- const undoItem = await editMenu.menuItemByName('Redo');
63
- await (undoItem === null || undoItem === void 0 ? void 0 : undoItem.click());
64
- await this.app.page.waitForTimeout(200);
65
- }
66
- }
67
- }
68
- exports.TheiaEditor = TheiaEditor;
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2021 logi.cals GmbH, EclipseSource and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.TheiaEditor = void 0;
19
+ const theia_dialog_1 = require("./theia-dialog");
20
+ const theia_view_1 = require("./theia-view");
21
+ const util_1 = require("./util");
22
+ class TheiaEditor extends theia_view_1.TheiaView {
23
+ async isDirty() {
24
+ return await this.isTabVisible() && (0, util_1.containsClass)(this.tabElement(), 'theia-mod-dirty');
25
+ }
26
+ async save() {
27
+ await this.activate();
28
+ if (!await this.isDirty()) {
29
+ return;
30
+ }
31
+ const fileMenu = await this.app.menuBar.openMenu('File');
32
+ const saveItem = await fileMenu.menuItemByName('Save');
33
+ await (saveItem === null || saveItem === void 0 ? void 0 : saveItem.click());
34
+ await this.page.waitForSelector(this.tabSelector + '.theia-mod-dirty', { state: 'detached' });
35
+ }
36
+ async closeWithoutSave() {
37
+ if (!await this.isDirty()) {
38
+ return super.close(true);
39
+ }
40
+ await super.close(false);
41
+ const saveDialog = new theia_dialog_1.TheiaDialog(this.app);
42
+ await saveDialog.clickButton('Don\'t save');
43
+ await super.waitUntilClosed();
44
+ }
45
+ async saveAndClose() {
46
+ await this.save();
47
+ await this.close();
48
+ }
49
+ async undo(times = 1) {
50
+ await this.activate();
51
+ for (let i = 0; i < times; i++) {
52
+ const editMenu = await this.app.menuBar.openMenu('Edit');
53
+ const undoItem = await editMenu.menuItemByName('Undo');
54
+ await (undoItem === null || undoItem === void 0 ? void 0 : undoItem.click());
55
+ await this.app.page.waitForTimeout(200);
56
+ }
57
+ }
58
+ async redo(times = 1) {
59
+ await this.activate();
60
+ for (let i = 0; i < times; i++) {
61
+ const editMenu = await this.app.menuBar.openMenu('Edit');
62
+ const undoItem = await editMenu.menuItemByName('Redo');
63
+ await (undoItem === null || undoItem === void 0 ? void 0 : undoItem.click());
64
+ await this.app.page.waitForTimeout(200);
65
+ }
66
+ }
67
+ }
68
+ exports.TheiaEditor = TheiaEditor;
69
69
  //# sourceMappingURL=theia-editor.js.map
@@ -1,48 +1,48 @@
1
- import { ElementHandle } from '@playwright/test';
2
- import { TheiaApp } from './theia-app';
3
- import { TheiaMenuItem } from './theia-menu-item';
4
- import { TheiaTreeNode } from './theia-tree-node';
5
- import { TheiaView } from './theia-view';
6
- export declare class TheiaExplorerFileStatNode extends TheiaTreeNode {
7
- protected elementHandle: ElementHandle<SVGElement | HTMLElement>;
8
- protected explorerView: TheiaExplorerView;
9
- constructor(elementHandle: ElementHandle<SVGElement | HTMLElement>, explorerView: TheiaExplorerView);
10
- absolutePath(): Promise<string | null>;
11
- isFile(): Promise<boolean>;
12
- isFolder(): Promise<boolean>;
13
- getMenuItemByNamePath(names: string[], nodeSegmentLabel?: string): Promise<TheiaMenuItem>;
14
- }
15
- export declare type TheiaExplorerFileStatNodePredicate = (node: TheiaExplorerFileStatNode) => Promise<boolean>;
16
- export declare const DOT_FILES_FILTER: TheiaExplorerFileStatNodePredicate;
17
- export declare class TheiaExplorerView extends TheiaView {
18
- constructor(app: TheiaApp);
19
- activate(): Promise<void>;
20
- refresh(): Promise<void>;
21
- collapseAll(): Promise<void>;
22
- protected clickButton(id: string): Promise<void>;
23
- visibleFileStatNodes(filterPredicate?: TheiaExplorerFileStatNodePredicate): Promise<TheiaExplorerFileStatNode[]>;
24
- getFileStatNodeByLabel(label: string, compact?: boolean): Promise<TheiaExplorerFileStatNode>;
25
- fileStatNode(filePath: string, compact?: boolean): Promise<TheiaExplorerFileStatNode | undefined>;
26
- protected fileStatNodeBySegments(...pathFragments: string[]): Promise<TheiaExplorerFileStatNode | undefined>;
27
- protected compactFileStatNode(path: string): Promise<TheiaExplorerFileStatNode | undefined>;
28
- selectTreeNode(filePath: string): Promise<void>;
29
- isTreeNodeSelected(filePath: string): Promise<boolean>;
30
- protected treeNodeSelector(filePath: string): string;
31
- protected treeNodeId(filePath: string): string;
32
- clickContextMenuItem(file: string, path: string[], nodeSegmentLabel?: string): Promise<void>;
33
- protected existsNode(path: string, isDirectory: boolean, compact?: boolean): Promise<boolean>;
34
- existsFileNode(path: string): Promise<boolean>;
35
- existsDirectoryNode(path: string, compact?: boolean): Promise<boolean>;
36
- waitForTreeNodeVisible(path: string): Promise<void>;
37
- getNumberOfVisibleNodes(): Promise<number>;
38
- deleteNode(path: string, confirm?: boolean, nodeSegmentLabel?: string): Promise<void>;
39
- renameNode(path: string, newName: string, confirm?: boolean, nodeSegmentLabel?: string): Promise<void>;
40
- waitForVisible(): Promise<void>;
41
- /**
42
- * Waits until some non-dot file nodes are visible
43
- */
44
- waitForVisibleFileNodes(): Promise<void>;
45
- waitForFileNodesToIncrease(numberBefore: number): Promise<void>;
46
- waitForFileNodesToDecrease(numberBefore: number): Promise<void>;
47
- }
1
+ import { ElementHandle } from '@playwright/test';
2
+ import { TheiaApp } from './theia-app';
3
+ import { TheiaMenuItem } from './theia-menu-item';
4
+ import { TheiaTreeNode } from './theia-tree-node';
5
+ import { TheiaView } from './theia-view';
6
+ export declare class TheiaExplorerFileStatNode extends TheiaTreeNode {
7
+ protected elementHandle: ElementHandle<SVGElement | HTMLElement>;
8
+ protected explorerView: TheiaExplorerView;
9
+ constructor(elementHandle: ElementHandle<SVGElement | HTMLElement>, explorerView: TheiaExplorerView);
10
+ absolutePath(): Promise<string | null>;
11
+ isFile(): Promise<boolean>;
12
+ isFolder(): Promise<boolean>;
13
+ getMenuItemByNamePath(names: string[], nodeSegmentLabel?: string): Promise<TheiaMenuItem>;
14
+ }
15
+ export declare type TheiaExplorerFileStatNodePredicate = (node: TheiaExplorerFileStatNode) => Promise<boolean>;
16
+ export declare const DOT_FILES_FILTER: TheiaExplorerFileStatNodePredicate;
17
+ export declare class TheiaExplorerView extends TheiaView {
18
+ constructor(app: TheiaApp);
19
+ activate(): Promise<void>;
20
+ refresh(): Promise<void>;
21
+ collapseAll(): Promise<void>;
22
+ protected clickButton(id: string): Promise<void>;
23
+ visibleFileStatNodes(filterPredicate?: TheiaExplorerFileStatNodePredicate): Promise<TheiaExplorerFileStatNode[]>;
24
+ getFileStatNodeByLabel(label: string, compact?: boolean): Promise<TheiaExplorerFileStatNode>;
25
+ fileStatNode(filePath: string, compact?: boolean): Promise<TheiaExplorerFileStatNode | undefined>;
26
+ protected fileStatNodeBySegments(...pathFragments: string[]): Promise<TheiaExplorerFileStatNode | undefined>;
27
+ protected compactFileStatNode(path: string): Promise<TheiaExplorerFileStatNode | undefined>;
28
+ selectTreeNode(filePath: string): Promise<void>;
29
+ isTreeNodeSelected(filePath: string): Promise<boolean>;
30
+ protected treeNodeSelector(filePath: string): string;
31
+ protected treeNodeId(filePath: string): string;
32
+ clickContextMenuItem(file: string, path: string[], nodeSegmentLabel?: string): Promise<void>;
33
+ protected existsNode(path: string, isDirectory: boolean, compact?: boolean): Promise<boolean>;
34
+ existsFileNode(path: string): Promise<boolean>;
35
+ existsDirectoryNode(path: string, compact?: boolean): Promise<boolean>;
36
+ waitForTreeNodeVisible(path: string): Promise<void>;
37
+ getNumberOfVisibleNodes(): Promise<number>;
38
+ deleteNode(path: string, confirm?: boolean, nodeSegmentLabel?: string): Promise<void>;
39
+ renameNode(path: string, newName: string, confirm?: boolean, nodeSegmentLabel?: string): Promise<void>;
40
+ waitForVisible(): Promise<void>;
41
+ /**
42
+ * Waits until some non-dot file nodes are visible
43
+ */
44
+ waitForVisibleFileNodes(): Promise<void>;
45
+ waitForFileNodesToIncrease(numberBefore: number): Promise<void>;
46
+ waitForFileNodesToDecrease(numberBefore: number): Promise<void>;
47
+ }
48
48
  //# sourceMappingURL=theia-explorer-view.d.ts.map