@theia/playwright 1.48.1 → 1.48.3

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 (159) hide show
  1. package/README.md +54 -54
  2. package/lib/index.d.ts +30 -30
  3. package/lib/index.js +48 -48
  4. package/lib/tests/theia-app.test.d.ts +1 -1
  5. package/lib/tests/theia-app.test.js +29 -29
  6. package/lib/tests/theia-application-shell.test.d.ts +1 -1
  7. package/lib/tests/theia-application-shell.test.js +57 -57
  8. package/lib/tests/theia-explorer-view.test.d.ts +1 -1
  9. package/lib/tests/theia-explorer-view.test.js +183 -183
  10. package/lib/tests/theia-getting-started.test.d.ts +1 -1
  11. package/lib/tests/theia-getting-started.test.js +45 -45
  12. package/lib/tests/theia-main-menu.test.d.ts +1 -1
  13. package/lib/tests/theia-main-menu.test.js +111 -111
  14. package/lib/tests/theia-output-view.test.d.ts +1 -1
  15. package/lib/tests/theia-output-view.test.js +78 -78
  16. package/lib/tests/theia-preference-view.test.d.ts +1 -1
  17. package/lib/tests/theia-preference-view.test.js +101 -101
  18. package/lib/tests/theia-problems-view.test.d.ts +1 -1
  19. package/lib/tests/theia-problems-view.test.js +54 -54
  20. package/lib/tests/theia-quick-command.test.d.ts +1 -1
  21. package/lib/tests/theia-quick-command.test.js +69 -69
  22. package/lib/tests/theia-sample-app.test.d.ts +1 -1
  23. package/lib/tests/theia-sample-app.test.js +57 -57
  24. package/lib/tests/theia-status-bar.test.d.ts +1 -1
  25. package/lib/tests/theia-status-bar.test.js +44 -44
  26. package/lib/tests/theia-terminal-view.test.d.ts +1 -1
  27. package/lib/tests/theia-terminal-view.test.js +78 -78
  28. package/lib/tests/theia-text-editor.test.d.ts +1 -1
  29. package/lib/tests/theia-text-editor.test.js +155 -155
  30. package/lib/tests/theia-toolbar.test.d.ts +1 -1
  31. package/lib/tests/theia-toolbar.test.js +61 -61
  32. package/lib/tests/theia-workspace.test.d.ts +1 -1
  33. package/lib/tests/theia-workspace.test.js +72 -72
  34. package/lib/theia-about-dialog.d.ts +4 -4
  35. package/lib/theia-about-dialog.js +26 -26
  36. package/lib/theia-app-loader.d.ts +19 -19
  37. package/lib/theia-app-loader.js +129 -129
  38. package/lib/theia-app.d.ts +50 -50
  39. package/lib/theia-app.js +153 -153
  40. package/lib/theia-context-menu.d.ts +8 -8
  41. package/lib/theia-context-menu.js +37 -37
  42. package/lib/theia-dialog.d.ts +28 -28
  43. package/lib/theia-dialog.js +99 -99
  44. package/lib/theia-editor.d.ts +9 -9
  45. package/lib/theia-editor.js +68 -68
  46. package/lib/theia-explorer-view.d.ts +47 -47
  47. package/lib/theia-explorer-view.js +273 -273
  48. package/lib/theia-main-menu.d.ts +12 -12
  49. package/lib/theia-main-menu.js +53 -53
  50. package/lib/theia-menu-item.d.ts +14 -14
  51. package/lib/theia-menu-item.js +66 -66
  52. package/lib/theia-menu.d.ts +16 -16
  53. package/lib/theia-menu.js +86 -86
  54. package/lib/theia-monaco-editor.d.ts +15 -15
  55. package/lib/theia-monaco-editor.js +75 -75
  56. package/lib/theia-notification-indicator.d.ts +7 -7
  57. package/lib/theia-notification-indicator.js +44 -44
  58. package/lib/theia-notification-overlay.d.ts +22 -22
  59. package/lib/theia-notification-overlay.js +79 -79
  60. package/lib/theia-output-channel.d.ts +24 -24
  61. package/lib/theia-output-channel.js +71 -71
  62. package/lib/theia-output-view.d.ts +9 -9
  63. package/lib/theia-output-view.js +81 -81
  64. package/lib/theia-page-object.d.ts +7 -7
  65. package/lib/theia-page-object.js +27 -27
  66. package/lib/theia-preference-view.d.ts +84 -84
  67. package/lib/theia-preference-view.js +209 -209
  68. package/lib/theia-problem-indicator.d.ts +8 -8
  69. package/lib/theia-problem-indicator.js +38 -38
  70. package/lib/theia-problem-view.d.ts +5 -5
  71. package/lib/theia-problem-view.js +30 -30
  72. package/lib/theia-quick-command-palette.d.ts +12 -12
  73. package/lib/theia-quick-command-palette.js +78 -78
  74. package/lib/theia-rename-dialog.d.ts +5 -5
  75. package/lib/theia-rename-dialog.js +34 -34
  76. package/lib/theia-status-bar.d.ts +13 -13
  77. package/lib/theia-status-bar.js +39 -39
  78. package/lib/theia-status-indicator.d.ts +10 -10
  79. package/lib/theia-status-indicator.js +48 -48
  80. package/lib/theia-terminal.d.ts +13 -13
  81. package/lib/theia-terminal.js +59 -59
  82. package/lib/theia-text-editor.d.ts +26 -26
  83. package/lib/theia-text-editor.js +120 -120
  84. package/lib/theia-toggle-bottom-indicator.d.ts +4 -4
  85. package/lib/theia-toggle-bottom-indicator.js +26 -26
  86. package/lib/theia-toolbar-item.d.ts +10 -10
  87. package/lib/theia-toolbar-item.js +39 -39
  88. package/lib/theia-toolbar.d.ts +19 -19
  89. package/lib/theia-toolbar.js +90 -90
  90. package/lib/theia-tree-node.d.ts +19 -19
  91. package/lib/theia-tree-node.js +72 -72
  92. package/lib/theia-view.d.ts +32 -32
  93. package/lib/theia-view.js +149 -149
  94. package/lib/theia-welcome-view.d.ts +5 -5
  95. package/lib/theia-welcome-view.js +30 -30
  96. package/lib/theia-workspace.d.ts +18 -18
  97. package/lib/theia-workspace.js +69 -69
  98. package/lib/util.d.ts +19 -19
  99. package/lib/util.js +93 -93
  100. package/package.json +2 -2
  101. package/src/index.ts +46 -46
  102. package/src/tests/resources/sample-files1/sample.txt +4 -4
  103. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-1/sampleFile1-1-1.txt +1 -1
  104. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-1/sampleFile1-1-2.txt +1 -1
  105. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-2/sampleFile1-2-1.txt +1 -1
  106. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-2/sampleFile1-2-2.txt +1 -1
  107. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-1/sampleFile2-1-1.txt +1 -1
  108. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-1/sampleFile2-1-2.txt +1 -1
  109. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-2/sampleFile2-2-1.txt +1 -1
  110. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-2/sampleFile2-2-2.txt +1 -1
  111. package/src/tests/resources/sample-files2/another-sample.txt +1 -1
  112. package/src/tests/theia-app.test.ts +33 -33
  113. package/src/tests/theia-application-shell.test.ts +67 -67
  114. package/src/tests/theia-explorer-view.test.ts +211 -211
  115. package/src/tests/theia-getting-started.test.ts +50 -50
  116. package/src/tests/theia-main-menu.test.ts +133 -133
  117. package/src/tests/theia-output-view.test.ts +85 -85
  118. package/src/tests/theia-preference-view.test.ts +122 -122
  119. package/src/tests/theia-problems-view.test.ts +64 -64
  120. package/src/tests/theia-quick-command.test.ts +80 -80
  121. package/src/tests/theia-sample-app.test.ts +66 -66
  122. package/src/tests/theia-status-bar.test.ts +52 -52
  123. package/src/tests/theia-terminal-view.test.ts +90 -90
  124. package/src/tests/theia-text-editor.test.ts +187 -187
  125. package/src/tests/theia-toolbar.test.ts +69 -69
  126. package/src/tests/theia-workspace.test.ts +80 -80
  127. package/src/theia-about-dialog.ts +26 -26
  128. package/src/theia-app-loader.ts +167 -167
  129. package/src/theia-app.ts +188 -188
  130. package/src/theia-context-menu.ts +42 -42
  131. package/src/theia-dialog.ts +114 -114
  132. package/src/theia-editor.ts +73 -73
  133. package/src/theia-explorer-view.ts +311 -311
  134. package/src/theia-main-menu.ts +54 -54
  135. package/src/theia-menu-item.ts +75 -75
  136. package/src/theia-menu.ts +96 -96
  137. package/src/theia-monaco-editor.ts +83 -83
  138. package/src/theia-notification-indicator.ts +44 -44
  139. package/src/theia-notification-overlay.ts +94 -94
  140. package/src/theia-output-channel.ts +88 -88
  141. package/src/theia-output-view.ts +87 -87
  142. package/src/theia-page-object.ts +29 -29
  143. package/src/theia-preference-view.ts +240 -240
  144. package/src/theia-problem-indicator.ts +37 -37
  145. package/src/theia-problem-view.ts +30 -30
  146. package/src/theia-quick-command-palette.ts +81 -81
  147. package/src/theia-rename-dialog.ts +35 -35
  148. package/src/theia-status-bar.ts +44 -44
  149. package/src/theia-status-indicator.ts +50 -50
  150. package/src/theia-terminal.ts +69 -69
  151. package/src/theia-text-editor.ts +141 -141
  152. package/src/theia-toggle-bottom-indicator.ts +21 -21
  153. package/src/theia-toolbar-item.ts +41 -41
  154. package/src/theia-toolbar.ts +99 -99
  155. package/src/theia-tree-node.ts +81 -81
  156. package/src/theia-view.ts +177 -177
  157. package/src/theia-welcome-view.ts +31 -31
  158. package/src/theia-workspace.ts +76 -76
  159. package/src/util.ts +91 -91
@@ -1,210 +1,210 @@
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.TheiaPreferenceView = exports.TheiaPreferenceScope = exports.DefaultPreferences = exports.PreferenceIds = void 0;
19
- const theia_view_1 = require("./theia-view");
20
- const TheiaSettingsViewData = {
21
- tabSelector: '#shell-tab-settings_widget',
22
- viewSelector: '#settings_widget'
23
- };
24
- exports.PreferenceIds = {
25
- Editor: {
26
- AutoSave: 'files.autoSave',
27
- RenderWhitespace: 'editor.renderWhitespace'
28
- },
29
- Explorer: {
30
- AutoReveal: 'explorer.autoReveal'
31
- },
32
- DiffEditor: {
33
- MaxComputationTime: 'diffEditor.maxComputationTime'
34
- },
35
- Files: {
36
- EnableTrash: 'files.enableTrash'
37
- }
38
- };
39
- exports.DefaultPreferences = {
40
- Editor: {
41
- AutoSave: {
42
- Off: 'off',
43
- AfterDelay: 'afterDelay',
44
- OnFocusChange: 'onFocusChange',
45
- OnWindowChange: 'onWindowChange'
46
- },
47
- RenderWhitespace: {
48
- None: 'none',
49
- Boundary: 'boundary',
50
- Selection: 'selection',
51
- Trailing: 'trailing',
52
- All: 'all'
53
- }
54
- },
55
- Explorer: {
56
- AutoReveal: {
57
- Enabled: true
58
- }
59
- },
60
- DiffEditor: {
61
- MaxComputationTime: '5000'
62
- },
63
- Files: {
64
- EnableTrash: {
65
- Enabled: true
66
- }
67
- }
68
- };
69
- var TheiaPreferenceScope;
70
- (function (TheiaPreferenceScope) {
71
- TheiaPreferenceScope["User"] = "User";
72
- TheiaPreferenceScope["Workspace"] = "Workspace";
73
- })(TheiaPreferenceScope = exports.TheiaPreferenceScope || (exports.TheiaPreferenceScope = {}));
74
- class TheiaPreferenceView extends theia_view_1.TheiaView {
75
- constructor(app) {
76
- super(TheiaSettingsViewData, app);
77
- this.modificationIndicator = '.theia-mod-item-modified';
78
- this.optionSelectLabel = '.theia-select-component-label';
79
- this.optionSelectDropdown = '.theia-select-component-dropdown';
80
- this.optionSelectDropdownValue = '.theia-select-component-option-value';
81
- }
82
- async open(preferenceScope = TheiaPreferenceScope.Workspace) {
83
- await this.app.quickCommandPalette.trigger('Preferences: Open Settings (UI)');
84
- await this.waitForVisible();
85
- await this.openPreferenceScope(preferenceScope);
86
- return this;
87
- }
88
- getScopeSelector(scope) {
89
- return `li.preferences-scope-tab div.p-TabBar-tabLabel:has-text("${scope}")`;
90
- }
91
- async openPreferenceScope(scope) {
92
- await this.activate();
93
- const scopeTab = await this.page.waitForSelector(this.getScopeSelector(scope));
94
- await scopeTab.click();
95
- }
96
- async getBooleanPreferenceByPath(sectionTitle, name) {
97
- const preferenceId = await this.findPreferenceId(sectionTitle, name);
98
- return this.getBooleanPreferenceById(preferenceId);
99
- }
100
- async getBooleanPreferenceById(preferenceId) {
101
- const element = await this.findPreferenceEditorById(preferenceId);
102
- return element.isChecked();
103
- }
104
- async setBooleanPreferenceByPath(sectionTitle, name, value) {
105
- const preferenceId = await this.findPreferenceId(sectionTitle, name);
106
- return this.setBooleanPreferenceById(preferenceId, value);
107
- }
108
- async setBooleanPreferenceById(preferenceId, value) {
109
- const element = await this.findPreferenceEditorById(preferenceId);
110
- return value ? element.check() : element.uncheck();
111
- }
112
- async getStringPreferenceByPath(sectionTitle, name) {
113
- const preferenceId = await this.findPreferenceId(sectionTitle, name);
114
- return this.getStringPreferenceById(preferenceId);
115
- }
116
- async getStringPreferenceById(preferenceId) {
117
- const element = await this.findPreferenceEditorById(preferenceId);
118
- return element.evaluate(e => e.value);
119
- }
120
- async setStringPreferenceByPath(sectionTitle, name, value) {
121
- const preferenceId = await this.findPreferenceId(sectionTitle, name);
122
- return this.setStringPreferenceById(preferenceId, value);
123
- }
124
- async setStringPreferenceById(preferenceId, value) {
125
- const element = await this.findPreferenceEditorById(preferenceId);
126
- return element.fill(value);
127
- }
128
- async getOptionsPreferenceByPath(sectionTitle, name) {
129
- const preferenceId = await this.findPreferenceId(sectionTitle, name);
130
- return this.getOptionsPreferenceById(preferenceId);
131
- }
132
- async getOptionsPreferenceById(preferenceId) {
133
- const element = await this.findPreferenceEditorById(preferenceId, this.optionSelectLabel);
134
- return element.evaluate(e => { var _a; return (_a = e.textContent) !== null && _a !== void 0 ? _a : ''; });
135
- }
136
- async setOptionsPreferenceByPath(sectionTitle, name, value) {
137
- const preferenceId = await this.findPreferenceId(sectionTitle, name);
138
- return this.setOptionsPreferenceById(preferenceId, value);
139
- }
140
- async setOptionsPreferenceById(preferenceId, value) {
141
- const element = await this.findPreferenceEditorById(preferenceId, this.optionSelectLabel);
142
- await element.click();
143
- const option = await this.page.waitForSelector(`${this.optionSelectDropdown} ${this.optionSelectDropdownValue}:has-text("${value}")`);
144
- await option.click();
145
- }
146
- async resetPreferenceByPath(sectionTitle, name) {
147
- const preferenceId = await this.findPreferenceId(sectionTitle, name);
148
- return this.resetPreferenceById(preferenceId);
149
- }
150
- async resetPreferenceById(preferenceId) {
151
- // this is just to fail if the preference doesn't exist at all
152
- await this.findPreferenceEditorById(preferenceId, '');
153
- const resetPreferenceButton = await this.findPreferenceResetButton(preferenceId);
154
- await resetPreferenceButton.click();
155
- await this.waitForUnmodified(preferenceId);
156
- }
157
- async findPreferenceId(sectionTitle, name) {
158
- const viewElement = await this.viewElement();
159
- const sectionElement = await (viewElement === null || viewElement === void 0 ? void 0 : viewElement.$(`xpath=//li[contains(@class, 'settings-section-title') and text() = '${sectionTitle}']/..`));
160
- const firstPreferenceAfterSection = await (sectionElement === null || sectionElement === void 0 ? void 0 : sectionElement.$(`xpath=following-sibling::li[div/text() = '${name}'][1]`));
161
- const preferenceId = await (firstPreferenceAfterSection === null || firstPreferenceAfterSection === void 0 ? void 0 : firstPreferenceAfterSection.getAttribute('data-pref-id'));
162
- if (!preferenceId) {
163
- throw new Error(`Could not find preference id for "${sectionTitle}" > (...) > "${name}"`);
164
- }
165
- return preferenceId;
166
- }
167
- async findPreferenceEditorById(preferenceId, elementType = 'input') {
168
- const viewElement = await this.viewElement();
169
- const element = await (viewElement === null || viewElement === void 0 ? void 0 : viewElement.waitForSelector(this.getPreferenceEditorSelector(preferenceId, elementType), { timeout: this.customTimeout }));
170
- if (!element) {
171
- throw new Error(`Could not find element with preference id "${preferenceId}"`);
172
- }
173
- return element;
174
- }
175
- getPreferenceSelector(preferenceId) {
176
- return `li[data-pref-id="${preferenceId}"]`;
177
- }
178
- getPreferenceEditorSelector(preferenceId, elementType) {
179
- return `${this.getPreferenceSelector(preferenceId)} ${elementType}`;
180
- }
181
- async findPreferenceResetButton(preferenceId) {
182
- await this.activate();
183
- const viewElement = await this.viewElement();
184
- const settingsContextMenuBtn = await (viewElement === null || viewElement === void 0 ? void 0 : viewElement.waitForSelector(`${this.getPreferenceSelector(preferenceId)} .settings-context-menu-btn`));
185
- if (!settingsContextMenuBtn) {
186
- throw new Error(`Could not find context menu button for element with preference id "${preferenceId}"`);
187
- }
188
- await settingsContextMenuBtn.click();
189
- const resetPreferenceButton = await this.page.waitForSelector('li[data-command="preferences:reset"]');
190
- if (!resetPreferenceButton) {
191
- throw new Error(`Could not find menu entry to reset preference with id "${preferenceId}"`);
192
- }
193
- return resetPreferenceButton;
194
- }
195
- async waitForModified(preferenceId) {
196
- await this.activate();
197
- const viewElement = await this.viewElement();
198
- await (viewElement === null || viewElement === void 0 ? void 0 : viewElement.waitForSelector(`${this.getPreferenceGutterSelector(preferenceId)}${this.modificationIndicator}`, { timeout: this.customTimeout }));
199
- }
200
- async waitForUnmodified(preferenceId) {
201
- await this.activate();
202
- const viewElement = await this.viewElement();
203
- await (viewElement === null || viewElement === void 0 ? void 0 : viewElement.waitForSelector(`${this.getPreferenceGutterSelector(preferenceId)}${this.modificationIndicator}`, { state: 'detached', timeout: this.customTimeout }));
204
- }
205
- getPreferenceGutterSelector(preferenceId) {
206
- return `${this.getPreferenceSelector(preferenceId)} .pref-context-gutter`;
207
- }
208
- }
209
- exports.TheiaPreferenceView = TheiaPreferenceView;
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.TheiaPreferenceView = exports.TheiaPreferenceScope = exports.DefaultPreferences = exports.PreferenceIds = void 0;
19
+ const theia_view_1 = require("./theia-view");
20
+ const TheiaSettingsViewData = {
21
+ tabSelector: '#shell-tab-settings_widget',
22
+ viewSelector: '#settings_widget'
23
+ };
24
+ exports.PreferenceIds = {
25
+ Editor: {
26
+ AutoSave: 'files.autoSave',
27
+ RenderWhitespace: 'editor.renderWhitespace'
28
+ },
29
+ Explorer: {
30
+ AutoReveal: 'explorer.autoReveal'
31
+ },
32
+ DiffEditor: {
33
+ MaxComputationTime: 'diffEditor.maxComputationTime'
34
+ },
35
+ Files: {
36
+ EnableTrash: 'files.enableTrash'
37
+ }
38
+ };
39
+ exports.DefaultPreferences = {
40
+ Editor: {
41
+ AutoSave: {
42
+ Off: 'off',
43
+ AfterDelay: 'afterDelay',
44
+ OnFocusChange: 'onFocusChange',
45
+ OnWindowChange: 'onWindowChange'
46
+ },
47
+ RenderWhitespace: {
48
+ None: 'none',
49
+ Boundary: 'boundary',
50
+ Selection: 'selection',
51
+ Trailing: 'trailing',
52
+ All: 'all'
53
+ }
54
+ },
55
+ Explorer: {
56
+ AutoReveal: {
57
+ Enabled: true
58
+ }
59
+ },
60
+ DiffEditor: {
61
+ MaxComputationTime: '5000'
62
+ },
63
+ Files: {
64
+ EnableTrash: {
65
+ Enabled: true
66
+ }
67
+ }
68
+ };
69
+ var TheiaPreferenceScope;
70
+ (function (TheiaPreferenceScope) {
71
+ TheiaPreferenceScope["User"] = "User";
72
+ TheiaPreferenceScope["Workspace"] = "Workspace";
73
+ })(TheiaPreferenceScope = exports.TheiaPreferenceScope || (exports.TheiaPreferenceScope = {}));
74
+ class TheiaPreferenceView extends theia_view_1.TheiaView {
75
+ constructor(app) {
76
+ super(TheiaSettingsViewData, app);
77
+ this.modificationIndicator = '.theia-mod-item-modified';
78
+ this.optionSelectLabel = '.theia-select-component-label';
79
+ this.optionSelectDropdown = '.theia-select-component-dropdown';
80
+ this.optionSelectDropdownValue = '.theia-select-component-option-value';
81
+ }
82
+ async open(preferenceScope = TheiaPreferenceScope.Workspace) {
83
+ await this.app.quickCommandPalette.trigger('Preferences: Open Settings (UI)');
84
+ await this.waitForVisible();
85
+ await this.openPreferenceScope(preferenceScope);
86
+ return this;
87
+ }
88
+ getScopeSelector(scope) {
89
+ return `li.preferences-scope-tab div.p-TabBar-tabLabel:has-text("${scope}")`;
90
+ }
91
+ async openPreferenceScope(scope) {
92
+ await this.activate();
93
+ const scopeTab = await this.page.waitForSelector(this.getScopeSelector(scope));
94
+ await scopeTab.click();
95
+ }
96
+ async getBooleanPreferenceByPath(sectionTitle, name) {
97
+ const preferenceId = await this.findPreferenceId(sectionTitle, name);
98
+ return this.getBooleanPreferenceById(preferenceId);
99
+ }
100
+ async getBooleanPreferenceById(preferenceId) {
101
+ const element = await this.findPreferenceEditorById(preferenceId);
102
+ return element.isChecked();
103
+ }
104
+ async setBooleanPreferenceByPath(sectionTitle, name, value) {
105
+ const preferenceId = await this.findPreferenceId(sectionTitle, name);
106
+ return this.setBooleanPreferenceById(preferenceId, value);
107
+ }
108
+ async setBooleanPreferenceById(preferenceId, value) {
109
+ const element = await this.findPreferenceEditorById(preferenceId);
110
+ return value ? element.check() : element.uncheck();
111
+ }
112
+ async getStringPreferenceByPath(sectionTitle, name) {
113
+ const preferenceId = await this.findPreferenceId(sectionTitle, name);
114
+ return this.getStringPreferenceById(preferenceId);
115
+ }
116
+ async getStringPreferenceById(preferenceId) {
117
+ const element = await this.findPreferenceEditorById(preferenceId);
118
+ return element.evaluate(e => e.value);
119
+ }
120
+ async setStringPreferenceByPath(sectionTitle, name, value) {
121
+ const preferenceId = await this.findPreferenceId(sectionTitle, name);
122
+ return this.setStringPreferenceById(preferenceId, value);
123
+ }
124
+ async setStringPreferenceById(preferenceId, value) {
125
+ const element = await this.findPreferenceEditorById(preferenceId);
126
+ return element.fill(value);
127
+ }
128
+ async getOptionsPreferenceByPath(sectionTitle, name) {
129
+ const preferenceId = await this.findPreferenceId(sectionTitle, name);
130
+ return this.getOptionsPreferenceById(preferenceId);
131
+ }
132
+ async getOptionsPreferenceById(preferenceId) {
133
+ const element = await this.findPreferenceEditorById(preferenceId, this.optionSelectLabel);
134
+ return element.evaluate(e => { var _a; return (_a = e.textContent) !== null && _a !== void 0 ? _a : ''; });
135
+ }
136
+ async setOptionsPreferenceByPath(sectionTitle, name, value) {
137
+ const preferenceId = await this.findPreferenceId(sectionTitle, name);
138
+ return this.setOptionsPreferenceById(preferenceId, value);
139
+ }
140
+ async setOptionsPreferenceById(preferenceId, value) {
141
+ const element = await this.findPreferenceEditorById(preferenceId, this.optionSelectLabel);
142
+ await element.click();
143
+ const option = await this.page.waitForSelector(`${this.optionSelectDropdown} ${this.optionSelectDropdownValue}:has-text("${value}")`);
144
+ await option.click();
145
+ }
146
+ async resetPreferenceByPath(sectionTitle, name) {
147
+ const preferenceId = await this.findPreferenceId(sectionTitle, name);
148
+ return this.resetPreferenceById(preferenceId);
149
+ }
150
+ async resetPreferenceById(preferenceId) {
151
+ // this is just to fail if the preference doesn't exist at all
152
+ await this.findPreferenceEditorById(preferenceId, '');
153
+ const resetPreferenceButton = await this.findPreferenceResetButton(preferenceId);
154
+ await resetPreferenceButton.click();
155
+ await this.waitForUnmodified(preferenceId);
156
+ }
157
+ async findPreferenceId(sectionTitle, name) {
158
+ const viewElement = await this.viewElement();
159
+ const sectionElement = await (viewElement === null || viewElement === void 0 ? void 0 : viewElement.$(`xpath=//li[contains(@class, 'settings-section-title') and text() = '${sectionTitle}']/..`));
160
+ const firstPreferenceAfterSection = await (sectionElement === null || sectionElement === void 0 ? void 0 : sectionElement.$(`xpath=following-sibling::li[div/text() = '${name}'][1]`));
161
+ const preferenceId = await (firstPreferenceAfterSection === null || firstPreferenceAfterSection === void 0 ? void 0 : firstPreferenceAfterSection.getAttribute('data-pref-id'));
162
+ if (!preferenceId) {
163
+ throw new Error(`Could not find preference id for "${sectionTitle}" > (...) > "${name}"`);
164
+ }
165
+ return preferenceId;
166
+ }
167
+ async findPreferenceEditorById(preferenceId, elementType = 'input') {
168
+ const viewElement = await this.viewElement();
169
+ const element = await (viewElement === null || viewElement === void 0 ? void 0 : viewElement.waitForSelector(this.getPreferenceEditorSelector(preferenceId, elementType), { timeout: this.customTimeout }));
170
+ if (!element) {
171
+ throw new Error(`Could not find element with preference id "${preferenceId}"`);
172
+ }
173
+ return element;
174
+ }
175
+ getPreferenceSelector(preferenceId) {
176
+ return `li[data-pref-id="${preferenceId}"]`;
177
+ }
178
+ getPreferenceEditorSelector(preferenceId, elementType) {
179
+ return `${this.getPreferenceSelector(preferenceId)} ${elementType}`;
180
+ }
181
+ async findPreferenceResetButton(preferenceId) {
182
+ await this.activate();
183
+ const viewElement = await this.viewElement();
184
+ const settingsContextMenuBtn = await (viewElement === null || viewElement === void 0 ? void 0 : viewElement.waitForSelector(`${this.getPreferenceSelector(preferenceId)} .settings-context-menu-btn`));
185
+ if (!settingsContextMenuBtn) {
186
+ throw new Error(`Could not find context menu button for element with preference id "${preferenceId}"`);
187
+ }
188
+ await settingsContextMenuBtn.click();
189
+ const resetPreferenceButton = await this.page.waitForSelector('li[data-command="preferences:reset"]');
190
+ if (!resetPreferenceButton) {
191
+ throw new Error(`Could not find menu entry to reset preference with id "${preferenceId}"`);
192
+ }
193
+ return resetPreferenceButton;
194
+ }
195
+ async waitForModified(preferenceId) {
196
+ await this.activate();
197
+ const viewElement = await this.viewElement();
198
+ await (viewElement === null || viewElement === void 0 ? void 0 : viewElement.waitForSelector(`${this.getPreferenceGutterSelector(preferenceId)}${this.modificationIndicator}`, { timeout: this.customTimeout }));
199
+ }
200
+ async waitForUnmodified(preferenceId) {
201
+ await this.activate();
202
+ const viewElement = await this.viewElement();
203
+ await (viewElement === null || viewElement === void 0 ? void 0 : viewElement.waitForSelector(`${this.getPreferenceGutterSelector(preferenceId)}${this.modificationIndicator}`, { state: 'detached', timeout: this.customTimeout }));
204
+ }
205
+ getPreferenceGutterSelector(preferenceId) {
206
+ return `${this.getPreferenceSelector(preferenceId)} .pref-context-gutter`;
207
+ }
208
+ }
209
+ exports.TheiaPreferenceView = TheiaPreferenceView;
210
210
  //# sourceMappingURL=theia-preference-view.js.map
@@ -1,9 +1,9 @@
1
- import { ElementHandle } from '@playwright/test';
2
- import { TheiaStatusIndicator } from './theia-status-indicator';
3
- export declare class TheiaProblemIndicator extends TheiaStatusIndicator {
4
- id: string;
5
- numberOfProblems(): Promise<number>;
6
- numberOfWarnings(): Promise<number>;
7
- protected getSpans(): Promise<ElementHandle[] | undefined>;
8
- }
1
+ import { ElementHandle } from '@playwright/test';
2
+ import { TheiaStatusIndicator } from './theia-status-indicator';
3
+ export declare class TheiaProblemIndicator extends TheiaStatusIndicator {
4
+ id: string;
5
+ numberOfProblems(): Promise<number>;
6
+ numberOfWarnings(): Promise<number>;
7
+ protected getSpans(): Promise<ElementHandle[] | undefined>;
8
+ }
9
9
  //# sourceMappingURL=theia-problem-indicator.d.ts.map
@@ -1,39 +1,39 @@
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.TheiaProblemIndicator = void 0;
19
- const theia_status_indicator_1 = require("./theia-status-indicator");
20
- class TheiaProblemIndicator extends theia_status_indicator_1.TheiaStatusIndicator {
21
- constructor() {
22
- super(...arguments);
23
- this.id = 'problem-marker-status';
24
- }
25
- async numberOfProblems() {
26
- const spans = await this.getSpans();
27
- return spans ? +await spans[1].innerText() : -1;
28
- }
29
- async numberOfWarnings() {
30
- const spans = await this.getSpans();
31
- return spans ? +await spans[3].innerText() : -1;
32
- }
33
- async getSpans() {
34
- const handle = await this.getElementHandle();
35
- return handle === null || handle === void 0 ? void 0 : handle.$$('span');
36
- }
37
- }
38
- exports.TheiaProblemIndicator = TheiaProblemIndicator;
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.TheiaProblemIndicator = void 0;
19
+ const theia_status_indicator_1 = require("./theia-status-indicator");
20
+ class TheiaProblemIndicator extends theia_status_indicator_1.TheiaStatusIndicator {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.id = 'problem-marker-status';
24
+ }
25
+ async numberOfProblems() {
26
+ const spans = await this.getSpans();
27
+ return spans ? +await spans[1].innerText() : -1;
28
+ }
29
+ async numberOfWarnings() {
30
+ const spans = await this.getSpans();
31
+ return spans ? +await spans[3].innerText() : -1;
32
+ }
33
+ async getSpans() {
34
+ const handle = await this.getElementHandle();
35
+ return handle === null || handle === void 0 ? void 0 : handle.$$('span');
36
+ }
37
+ }
38
+ exports.TheiaProblemIndicator = TheiaProblemIndicator;
39
39
  //# sourceMappingURL=theia-problem-indicator.js.map
@@ -1,6 +1,6 @@
1
- import { TheiaApp } from './theia-app';
2
- import { TheiaView } from './theia-view';
3
- export declare class TheiaProblemsView extends TheiaView {
4
- constructor(app: TheiaApp);
5
- }
1
+ import { TheiaApp } from './theia-app';
2
+ import { TheiaView } from './theia-view';
3
+ export declare class TheiaProblemsView extends TheiaView {
4
+ constructor(app: TheiaApp);
5
+ }
6
6
  //# sourceMappingURL=theia-problem-view.d.ts.map
@@ -1,31 +1,31 @@
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.TheiaProblemsView = void 0;
19
- const theia_view_1 = require("./theia-view");
20
- const TheiaProblemsViewData = {
21
- tabSelector: '#shell-tab-problems',
22
- viewSelector: '#problems',
23
- viewName: 'Problems'
24
- };
25
- class TheiaProblemsView extends theia_view_1.TheiaView {
26
- constructor(app) {
27
- super(TheiaProblemsViewData, app);
28
- }
29
- }
30
- exports.TheiaProblemsView = TheiaProblemsView;
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.TheiaProblemsView = void 0;
19
+ const theia_view_1 = require("./theia-view");
20
+ const TheiaProblemsViewData = {
21
+ tabSelector: '#shell-tab-problems',
22
+ viewSelector: '#problems',
23
+ viewName: 'Problems'
24
+ };
25
+ class TheiaProblemsView extends theia_view_1.TheiaView {
26
+ constructor(app) {
27
+ super(TheiaProblemsViewData, app);
28
+ }
29
+ }
30
+ exports.TheiaProblemsView = TheiaProblemsView;
31
31
  //# sourceMappingURL=theia-problem-view.js.map
@@ -1,13 +1,13 @@
1
- import { ElementHandle } from '@playwright/test';
2
- import { TheiaPageObject } from './theia-page-object';
3
- export declare class TheiaQuickCommandPalette extends TheiaPageObject {
4
- selector: string;
5
- open(): Promise<void>;
6
- hide(): Promise<void>;
7
- isOpen(): Promise<boolean>;
8
- trigger(...commandName: string[]): Promise<void>;
9
- protected triggerSingleCommand(commandName: string): Promise<void>;
10
- type(value: string, confirm?: boolean): Promise<void>;
11
- protected selectedCommand(): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
12
- }
1
+ import { ElementHandle } from '@playwright/test';
2
+ import { TheiaPageObject } from './theia-page-object';
3
+ export declare class TheiaQuickCommandPalette extends TheiaPageObject {
4
+ selector: string;
5
+ open(): Promise<void>;
6
+ hide(): Promise<void>;
7
+ isOpen(): Promise<boolean>;
8
+ trigger(...commandName: string[]): Promise<void>;
9
+ protected triggerSingleCommand(commandName: string): Promise<void>;
10
+ type(value: string, confirm?: boolean): Promise<void>;
11
+ protected selectedCommand(): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
12
+ }
13
13
  //# sourceMappingURL=theia-quick-command-palette.d.ts.map