@theia/playwright 1.76.0-next.6 → 1.76.0-next.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/tests/theia-preference-view.test.js +23 -0
- package/lib/tests/theia-preference-view.test.js.map +1 -1
- package/lib/theia-preference-view.d.ts +34 -0
- package/lib/theia-preference-view.d.ts.map +1 -1
- package/lib/theia-preference-view.js +74 -5
- package/lib/theia-preference-view.js.map +1 -1
- package/package.json +3 -3
- package/src/tests/theia-preference-view.test.ts +29 -1
- package/src/theia-preference-view.ts +82 -5
|
@@ -98,5 +98,28 @@ test_1.test.describe('Preference View', () => {
|
|
|
98
98
|
preferences.customTimeout = undefined;
|
|
99
99
|
}
|
|
100
100
|
});
|
|
101
|
+
(0, test_1.test)('should keep the selected sub-category when switching the scope', async () => {
|
|
102
|
+
const preferences = await app.openPreferences(theia_preference_view_1.TheiaPreferenceView);
|
|
103
|
+
await preferences.openPreferenceScope(theia_preference_view_1.TheiaPreferenceScope.User);
|
|
104
|
+
await preferences.selectCategory('Text Editor', 'Files');
|
|
105
|
+
(0, test_1.expect)(await preferences.getSelectedCategory()).toBe('Files');
|
|
106
|
+
await preferences.openPreferenceScope(theia_preference_view_1.TheiaPreferenceScope.Workspace);
|
|
107
|
+
(0, test_1.expect)(await preferences.getSelectedCategory()).toBe('Files');
|
|
108
|
+
});
|
|
109
|
+
(0, test_1.test)('should keep the fallback category selected when switching back to a scope where the previous category exists', async () => {
|
|
110
|
+
const preferences = await app.openPreferences(theia_preference_view_1.TheiaPreferenceView);
|
|
111
|
+
await preferences.openPreferenceScope(theia_preference_view_1.TheiaPreferenceScope.User);
|
|
112
|
+
// Scroll first: selecting a category then scrolls back to the top, which records the
|
|
113
|
+
// section at the top of the new page as the row to keep in view on scope changes.
|
|
114
|
+
await preferences.selectCategory('Commonly Used');
|
|
115
|
+
await preferences.scrollEditorBy(300);
|
|
116
|
+
// Workspace trust settings are not available in the Workspace scope.
|
|
117
|
+
await preferences.selectCategory('Security', 'Workspace');
|
|
118
|
+
(0, test_1.expect)(await preferences.getSelectedCategory()).toBe('Workspace');
|
|
119
|
+
await preferences.openPreferenceScope(theia_preference_view_1.TheiaPreferenceScope.Workspace);
|
|
120
|
+
(0, test_1.expect)(await preferences.getSelectedCategory()).toBe('Commonly Used');
|
|
121
|
+
await preferences.openPreferenceScope(theia_preference_view_1.TheiaPreferenceScope.User);
|
|
122
|
+
(0, test_1.expect)(await preferences.getSelectedCategory()).toBe('Commonly Used');
|
|
123
|
+
});
|
|
101
124
|
});
|
|
102
125
|
//# sourceMappingURL=theia-preference-view.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-preference-view.test.js","sourceRoot":"","sources":["../../src/tests/theia-preference-view.test.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+DAA+D;AAC/D,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,2CAAgD;AAEhD,0DAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"theia-preference-view.test.js","sourceRoot":"","sources":["../../src/tests/theia-preference-view.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,6 +52,9 @@ export declare enum TheiaPreferenceScope {
|
|
|
52
52
|
export declare class TheiaPreferenceView extends TheiaView {
|
|
53
53
|
customTimeout?: number;
|
|
54
54
|
protected modificationIndicator: string;
|
|
55
|
+
protected searchInput: string;
|
|
56
|
+
protected categoryTree: string;
|
|
57
|
+
protected editorScrollContainer: string;
|
|
55
58
|
protected optionSelectLabel: string;
|
|
56
59
|
protected optionSelectDropdown: string;
|
|
57
60
|
protected optionSelectDropdownValue: string;
|
|
@@ -65,6 +68,27 @@ export declare class TheiaPreferenceView extends TheiaView {
|
|
|
65
68
|
open(preferenceScope?: TheiaPreferenceScope, useMenu?: boolean): Promise<TheiaView>;
|
|
66
69
|
protected getScopeSelector(scope: TheiaPreferenceScope): string;
|
|
67
70
|
openPreferenceScope(scope: TheiaPreferenceScope): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Clears the search box, so that the complete settings tree is shown again and the
|
|
73
|
+
* settings editor returns to the default category.
|
|
74
|
+
*/
|
|
75
|
+
clearSearch(): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Selects a category in the settings tree by following the given path of labels,
|
|
78
|
+
* e.g. `'Text Editor', 'Files'`. The settings editor is narrowed to the selected category.
|
|
79
|
+
* An active search is cleared first, as it prunes the tree and adds result counts to the labels.
|
|
80
|
+
*/
|
|
81
|
+
selectCategory(...labelPath: string[]): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* @returns the label of the category currently selected in the settings tree, or `undefined` if none is selected.
|
|
84
|
+
*/
|
|
85
|
+
getSelectedCategory(): Promise<string | undefined>;
|
|
86
|
+
/**
|
|
87
|
+
* Scrolls the settings editor by the given number of pixels. Scrolling syncs the tree
|
|
88
|
+
* selection to the section shown at the top of the editor.
|
|
89
|
+
*/
|
|
90
|
+
scrollEditorBy(deltaY: number): Promise<void>;
|
|
91
|
+
protected getCategoryNodeSelector(label: string): string;
|
|
68
92
|
getBooleanPreferenceByPath(sectionTitle: string, name: string): Promise<boolean>;
|
|
69
93
|
getBooleanPreferenceById(preferenceId: string): Promise<boolean>;
|
|
70
94
|
setBooleanPreferenceByPath(sectionTitle: string, name: string, value: boolean): Promise<void>;
|
|
@@ -81,6 +105,16 @@ export declare class TheiaPreferenceView extends TheiaView {
|
|
|
81
105
|
resetPreferenceById(preferenceId: string): Promise<void>;
|
|
82
106
|
private findPreferenceId;
|
|
83
107
|
private findPreferenceEditorById;
|
|
108
|
+
/**
|
|
109
|
+
* Preferences outside the currently selected category are hidden in the settings editor.
|
|
110
|
+
* If the preference is not visible, search for its id, which clears the category filter
|
|
111
|
+
* and reveals the preference.
|
|
112
|
+
*/
|
|
113
|
+
protected ensurePreferenceVisible(preferenceId: string): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* @param visibleOnly filters out hidden rows, e.g. the copy of a preference in the
|
|
116
|
+
* 'Commonly Used' section, which is hidden while a search filter is active.
|
|
117
|
+
*/
|
|
84
118
|
private getPreferenceSelector;
|
|
85
119
|
private getPreferenceEditorSelector;
|
|
86
120
|
private findPreferenceResetButton;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-preference-view.d.ts","sourceRoot":"","sources":["../src/theia-preference-view.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;CAczB,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B9B,CAAC;AAEF,oBAAY,oBAAoB;IAC5B,IAAI,SAAS;IACb,SAAS,cAAc;CAC1B;AAED,qBAAa,mBAAoB,SAAQ,SAAS;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,qBAAqB,SAA8B;IAC7D,SAAS,CAAC,iBAAiB,SAAmC;IAC9D,SAAS,CAAC,oBAAoB,SAAsC;IACpE,SAAS,CAAC,yBAAyB,SAA0C;gBAEjE,GAAG,EAAE,QAAQ;IAIzB;;;;;OAKG;IACY,IAAI,CAAC,eAAe,uBAAiC,EAAE,OAAO,GAAE,OAAc,GAAG,OAAO,CAAC,SAAS,CAAC;IAalH,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM;IAIzD,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"theia-preference-view.d.ts","sourceRoot":"","sources":["../src/theia-preference-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -75,6 +75,9 @@ class TheiaPreferenceView extends theia_view_1.TheiaView {
|
|
|
75
75
|
constructor(app) {
|
|
76
76
|
super(TheiaSettingsViewData, app);
|
|
77
77
|
this.modificationIndicator = '.theia-mod-item-modified';
|
|
78
|
+
this.searchInput = '.settings-search-input';
|
|
79
|
+
this.categoryTree = '.preferences-tree-widget';
|
|
80
|
+
this.editorScrollContainer = '.settings-main-scroll-container';
|
|
78
81
|
this.optionSelectLabel = '.theia-select-component-label';
|
|
79
82
|
this.optionSelectDropdown = '.theia-select-component-dropdown';
|
|
80
83
|
this.optionSelectDropdownValue = '.theia-select-component-option-value';
|
|
@@ -106,6 +109,51 @@ class TheiaPreferenceView extends theia_view_1.TheiaView {
|
|
|
106
109
|
const scopeTab = await this.page.waitForSelector(this.getScopeSelector(scope));
|
|
107
110
|
await scopeTab.click();
|
|
108
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Clears the search box, so that the complete settings tree is shown again and the
|
|
114
|
+
* settings editor returns to the default category.
|
|
115
|
+
*/
|
|
116
|
+
async clearSearch() {
|
|
117
|
+
await this.activate();
|
|
118
|
+
const viewElement = await this.viewElement();
|
|
119
|
+
const input = await viewElement?.waitForSelector(this.searchInput, { timeout: this.customTimeout });
|
|
120
|
+
await input?.fill('');
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Selects a category in the settings tree by following the given path of labels,
|
|
124
|
+
* e.g. `'Text Editor', 'Files'`. The settings editor is narrowed to the selected category.
|
|
125
|
+
* An active search is cleared first, as it prunes the tree and adds result counts to the labels.
|
|
126
|
+
*/
|
|
127
|
+
async selectCategory(...labelPath) {
|
|
128
|
+
await this.clearSearch();
|
|
129
|
+
const viewElement = await this.viewElement();
|
|
130
|
+
for (const label of labelPath) {
|
|
131
|
+
const node = await viewElement?.waitForSelector(this.getCategoryNodeSelector(label), { timeout: this.customTimeout });
|
|
132
|
+
await node?.click();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* @returns the label of the category currently selected in the settings tree, or `undefined` if none is selected.
|
|
137
|
+
*/
|
|
138
|
+
async getSelectedCategory() {
|
|
139
|
+
await this.activate();
|
|
140
|
+
const viewElement = await this.viewElement();
|
|
141
|
+
const label = await viewElement?.$(`${this.categoryTree} .theia-TreeNode.theia-mod-selected .theia-TreeNodeSegmentGrow`);
|
|
142
|
+
return (await label?.textContent())?.trim();
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Scrolls the settings editor by the given number of pixels. Scrolling syncs the tree
|
|
146
|
+
* selection to the section shown at the top of the editor.
|
|
147
|
+
*/
|
|
148
|
+
async scrollEditorBy(deltaY) {
|
|
149
|
+
await this.activate();
|
|
150
|
+
const viewElement = await this.viewElement();
|
|
151
|
+
const container = await viewElement?.waitForSelector(this.editorScrollContainer, { timeout: this.customTimeout });
|
|
152
|
+
await container?.evaluate((element, delta) => { element.scrollTop += delta; }, deltaY);
|
|
153
|
+
}
|
|
154
|
+
getCategoryNodeSelector(label) {
|
|
155
|
+
return `${this.categoryTree} .theia-TreeNode:has(.theia-TreeNodeSegmentGrow:text-is("${label}"))`;
|
|
156
|
+
}
|
|
109
157
|
async getBooleanPreferenceByPath(sectionTitle, name) {
|
|
110
158
|
const preferenceId = await this.findPreferenceId(sectionTitle, name);
|
|
111
159
|
return this.getBooleanPreferenceById(preferenceId);
|
|
@@ -178,6 +226,7 @@ class TheiaPreferenceView extends theia_view_1.TheiaView {
|
|
|
178
226
|
return preferenceId;
|
|
179
227
|
}
|
|
180
228
|
async findPreferenceEditorById(preferenceId, elementType = 'input') {
|
|
229
|
+
await this.ensurePreferenceVisible(preferenceId);
|
|
181
230
|
const viewElement = await this.viewElement();
|
|
182
231
|
const element = await viewElement?.waitForSelector(this.getPreferenceEditorSelector(preferenceId, elementType), { timeout: this.customTimeout });
|
|
183
232
|
if (!element) {
|
|
@@ -185,8 +234,26 @@ class TheiaPreferenceView extends theia_view_1.TheiaView {
|
|
|
185
234
|
}
|
|
186
235
|
return element;
|
|
187
236
|
}
|
|
188
|
-
|
|
189
|
-
|
|
237
|
+
/**
|
|
238
|
+
* Preferences outside the currently selected category are hidden in the settings editor.
|
|
239
|
+
* If the preference is not visible, search for its id, which clears the category filter
|
|
240
|
+
* and reveals the preference.
|
|
241
|
+
*/
|
|
242
|
+
async ensurePreferenceVisible(preferenceId) {
|
|
243
|
+
const viewElement = await this.viewElement();
|
|
244
|
+
if (await viewElement?.$(this.getPreferenceSelector(preferenceId))) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
const input = await viewElement?.waitForSelector(this.searchInput, { timeout: this.customTimeout });
|
|
248
|
+
await input?.fill(preferenceId);
|
|
249
|
+
await viewElement?.waitForSelector(this.getPreferenceSelector(preferenceId), { timeout: this.customTimeout });
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* @param visibleOnly filters out hidden rows, e.g. the copy of a preference in the
|
|
253
|
+
* 'Commonly Used' section, which is hidden while a search filter is active.
|
|
254
|
+
*/
|
|
255
|
+
getPreferenceSelector(preferenceId, visibleOnly = true) {
|
|
256
|
+
return `li[data-pref-id="${preferenceId}"]${visibleOnly ? ':visible' : ''}`;
|
|
190
257
|
}
|
|
191
258
|
getPreferenceEditorSelector(preferenceId, elementType) {
|
|
192
259
|
return `${this.getPreferenceSelector(preferenceId)} ${elementType}`;
|
|
@@ -213,10 +280,12 @@ class TheiaPreferenceView extends theia_view_1.TheiaView {
|
|
|
213
280
|
async waitForUnmodified(preferenceId) {
|
|
214
281
|
await this.activate();
|
|
215
282
|
const viewElement = await this.viewElement();
|
|
216
|
-
|
|
283
|
+
// Match hidden rows too: a row hidden by the category filter must not satisfy the
|
|
284
|
+
// 'detached' wait while its modification indicator is still present.
|
|
285
|
+
await viewElement?.waitForSelector(`${this.getPreferenceGutterSelector(preferenceId, false)}${this.modificationIndicator}`, { state: 'detached', timeout: this.customTimeout });
|
|
217
286
|
}
|
|
218
|
-
getPreferenceGutterSelector(preferenceId) {
|
|
219
|
-
return `${this.getPreferenceSelector(preferenceId)} .pref-context-gutter`;
|
|
287
|
+
getPreferenceGutterSelector(preferenceId, visibleOnly = true) {
|
|
288
|
+
return `${this.getPreferenceSelector(preferenceId, visibleOnly)} .pref-context-gutter`;
|
|
220
289
|
}
|
|
221
290
|
}
|
|
222
291
|
exports.TheiaPreferenceView = TheiaPreferenceView;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-preference-view.js","sourceRoot":"","sources":["../src/theia-preference-view.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+DAA+D;AAC/D,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAIhF,6CAAyC;AAEzC,MAAM,qBAAqB,GAAG;IAC1B,WAAW,EAAE,4BAA4B;IACzC,YAAY,EAAE,kBAAkB;CACnC,CAAC;AAEW,QAAA,aAAa,GAAG;IACzB,MAAM,EAAE;QACJ,QAAQ,EAAE,gBAAgB;QAC1B,gBAAgB,EAAE,yBAAyB;KAC9C;IACD,QAAQ,EAAE;QACN,UAAU,EAAE,qBAAqB;KACpC;IACD,UAAU,EAAE;QACR,kBAAkB,EAAE,+BAA+B;KACtD;IACD,KAAK,EAAE;QACH,WAAW,EAAE,mBAAmB;KACnC;CACJ,CAAC;AAEW,QAAA,kBAAkB,GAAG;IAC9B,MAAM,EAAE;QACJ,QAAQ,EAAE;YACN,GAAG,EAAE,KAAK;YACV,UAAU,EAAE,YAAY;YACxB,aAAa,EAAE,eAAe;YAC9B,cAAc,EAAE,gBAAgB;SACnC;QACD,gBAAgB,EAAE;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,WAAW;YACtB,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,KAAK;SACb;KACJ;IACD,QAAQ,EAAE;QACN,UAAU,EAAE;YACR,OAAO,EAAE,IAAI;SAChB;KACJ;IACD,UAAU,EAAE;QACR,kBAAkB,EAAE,MAAM;KAC7B;IACD,KAAK,EAAE;QACH,WAAW,EAAE;YACT,OAAO,EAAE,IAAI;SAChB;KACJ;CACJ,CAAC;AAEF,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC5B,qCAAa,CAAA;IACb,+CAAuB,CAAA;AAC3B,CAAC,EAHW,oBAAoB,oCAApB,oBAAoB,QAG/B;AAED,MAAa,mBAAoB,SAAQ,sBAAS;
|
|
1
|
+
{"version":3,"file":"theia-preference-view.js","sourceRoot":"","sources":["../src/theia-preference-view.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/playwright",
|
|
3
|
-
"version": "1.76.0-next.
|
|
3
|
+
"version": "1.76.0-next.7+7c303b183",
|
|
4
4
|
"description": "System tests for Theia",
|
|
5
5
|
"license": "EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"tslib": "^2.8.1"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@theia/cli": "1.76.0-next.
|
|
40
|
+
"@theia/cli": "1.76.0-next.7+7c303b183",
|
|
41
41
|
"@types/fs-extra": "^9.0.13",
|
|
42
42
|
"allure-commandline": "^2.43.0",
|
|
43
43
|
"allure-playwright": "^2.15.1",
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"access": "public"
|
|
50
50
|
},
|
|
51
51
|
"main": "lib/index",
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "7c303b1836421183d7013f0bd679a9a30ff0b5dc"
|
|
53
53
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import { expect, test } from '@playwright/test';
|
|
18
18
|
import { TheiaApp } from '../theia-app';
|
|
19
19
|
import { TheiaAppLoader } from '../theia-app-loader';
|
|
20
|
-
import { DefaultPreferences, PreferenceIds, TheiaPreferenceView } from '../theia-preference-view';
|
|
20
|
+
import { DefaultPreferences, PreferenceIds, TheiaPreferenceScope, TheiaPreferenceView } from '../theia-preference-view';
|
|
21
21
|
|
|
22
22
|
test.describe('Preference View', () => {
|
|
23
23
|
|
|
@@ -119,4 +119,32 @@ test.describe('Preference View', () => {
|
|
|
119
119
|
preferences.customTimeout = undefined;
|
|
120
120
|
}
|
|
121
121
|
});
|
|
122
|
+
|
|
123
|
+
test('should keep the selected sub-category when switching the scope', async () => {
|
|
124
|
+
const preferences = await app.openPreferences(TheiaPreferenceView);
|
|
125
|
+
await preferences.openPreferenceScope(TheiaPreferenceScope.User);
|
|
126
|
+
await preferences.selectCategory('Text Editor', 'Files');
|
|
127
|
+
expect(await preferences.getSelectedCategory()).toBe('Files');
|
|
128
|
+
|
|
129
|
+
await preferences.openPreferenceScope(TheiaPreferenceScope.Workspace);
|
|
130
|
+
expect(await preferences.getSelectedCategory()).toBe('Files');
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
test('should keep the fallback category selected when switching back to a scope where the previous category exists', async () => {
|
|
134
|
+
const preferences = await app.openPreferences(TheiaPreferenceView);
|
|
135
|
+
await preferences.openPreferenceScope(TheiaPreferenceScope.User);
|
|
136
|
+
// Scroll first: selecting a category then scrolls back to the top, which records the
|
|
137
|
+
// section at the top of the new page as the row to keep in view on scope changes.
|
|
138
|
+
await preferences.selectCategory('Commonly Used');
|
|
139
|
+
await preferences.scrollEditorBy(300);
|
|
140
|
+
// Workspace trust settings are not available in the Workspace scope.
|
|
141
|
+
await preferences.selectCategory('Security', 'Workspace');
|
|
142
|
+
expect(await preferences.getSelectedCategory()).toBe('Workspace');
|
|
143
|
+
|
|
144
|
+
await preferences.openPreferenceScope(TheiaPreferenceScope.Workspace);
|
|
145
|
+
expect(await preferences.getSelectedCategory()).toBe('Commonly Used');
|
|
146
|
+
|
|
147
|
+
await preferences.openPreferenceScope(TheiaPreferenceScope.User);
|
|
148
|
+
expect(await preferences.getSelectedCategory()).toBe('Commonly Used');
|
|
149
|
+
});
|
|
122
150
|
});
|
|
@@ -78,6 +78,9 @@ export enum TheiaPreferenceScope {
|
|
|
78
78
|
export class TheiaPreferenceView extends TheiaView {
|
|
79
79
|
public customTimeout?: number;
|
|
80
80
|
protected modificationIndicator = '.theia-mod-item-modified';
|
|
81
|
+
protected searchInput = '.settings-search-input';
|
|
82
|
+
protected categoryTree = '.preferences-tree-widget';
|
|
83
|
+
protected editorScrollContainer = '.settings-main-scroll-container';
|
|
81
84
|
protected optionSelectLabel = '.theia-select-component-label';
|
|
82
85
|
protected optionSelectDropdown = '.theia-select-component-dropdown';
|
|
83
86
|
protected optionSelectDropdownValue = '.theia-select-component-option-value';
|
|
@@ -115,6 +118,56 @@ export class TheiaPreferenceView extends TheiaView {
|
|
|
115
118
|
await scopeTab.click();
|
|
116
119
|
}
|
|
117
120
|
|
|
121
|
+
/**
|
|
122
|
+
* Clears the search box, so that the complete settings tree is shown again and the
|
|
123
|
+
* settings editor returns to the default category.
|
|
124
|
+
*/
|
|
125
|
+
async clearSearch(): Promise<void> {
|
|
126
|
+
await this.activate();
|
|
127
|
+
const viewElement = await this.viewElement();
|
|
128
|
+
const input = await viewElement?.waitForSelector(this.searchInput, { timeout: this.customTimeout });
|
|
129
|
+
await input?.fill('');
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Selects a category in the settings tree by following the given path of labels,
|
|
134
|
+
* e.g. `'Text Editor', 'Files'`. The settings editor is narrowed to the selected category.
|
|
135
|
+
* An active search is cleared first, as it prunes the tree and adds result counts to the labels.
|
|
136
|
+
*/
|
|
137
|
+
async selectCategory(...labelPath: string[]): Promise<void> {
|
|
138
|
+
await this.clearSearch();
|
|
139
|
+
const viewElement = await this.viewElement();
|
|
140
|
+
for (const label of labelPath) {
|
|
141
|
+
const node = await viewElement?.waitForSelector(this.getCategoryNodeSelector(label), { timeout: this.customTimeout });
|
|
142
|
+
await node?.click();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* @returns the label of the category currently selected in the settings tree, or `undefined` if none is selected.
|
|
148
|
+
*/
|
|
149
|
+
async getSelectedCategory(): Promise<string | undefined> {
|
|
150
|
+
await this.activate();
|
|
151
|
+
const viewElement = await this.viewElement();
|
|
152
|
+
const label = await viewElement?.$(`${this.categoryTree} .theia-TreeNode.theia-mod-selected .theia-TreeNodeSegmentGrow`);
|
|
153
|
+
return (await label?.textContent())?.trim();
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Scrolls the settings editor by the given number of pixels. Scrolling syncs the tree
|
|
158
|
+
* selection to the section shown at the top of the editor.
|
|
159
|
+
*/
|
|
160
|
+
async scrollEditorBy(deltaY: number): Promise<void> {
|
|
161
|
+
await this.activate();
|
|
162
|
+
const viewElement = await this.viewElement();
|
|
163
|
+
const container = await viewElement?.waitForSelector(this.editorScrollContainer, { timeout: this.customTimeout });
|
|
164
|
+
await container?.evaluate((element, delta) => { element.scrollTop += delta; }, deltaY);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
protected getCategoryNodeSelector(label: string): string {
|
|
168
|
+
return `${this.categoryTree} .theia-TreeNode:has(.theia-TreeNodeSegmentGrow:text-is("${label}"))`;
|
|
169
|
+
}
|
|
170
|
+
|
|
118
171
|
async getBooleanPreferenceByPath(sectionTitle: string, name: string): Promise<boolean> {
|
|
119
172
|
const preferenceId = await this.findPreferenceId(sectionTitle, name);
|
|
120
173
|
return this.getBooleanPreferenceById(preferenceId);
|
|
@@ -203,6 +256,7 @@ export class TheiaPreferenceView extends TheiaView {
|
|
|
203
256
|
}
|
|
204
257
|
|
|
205
258
|
private async findPreferenceEditorById(preferenceId: string, elementType: string = 'input'): Promise<ElementHandle<SVGElement | HTMLElement>> {
|
|
259
|
+
await this.ensurePreferenceVisible(preferenceId);
|
|
206
260
|
const viewElement = await this.viewElement();
|
|
207
261
|
const element = await viewElement?.waitForSelector(this.getPreferenceEditorSelector(preferenceId, elementType), { timeout: this.customTimeout });
|
|
208
262
|
if (!element) {
|
|
@@ -211,8 +265,27 @@ export class TheiaPreferenceView extends TheiaView {
|
|
|
211
265
|
return element;
|
|
212
266
|
}
|
|
213
267
|
|
|
214
|
-
|
|
215
|
-
|
|
268
|
+
/**
|
|
269
|
+
* Preferences outside the currently selected category are hidden in the settings editor.
|
|
270
|
+
* If the preference is not visible, search for its id, which clears the category filter
|
|
271
|
+
* and reveals the preference.
|
|
272
|
+
*/
|
|
273
|
+
protected async ensurePreferenceVisible(preferenceId: string): Promise<void> {
|
|
274
|
+
const viewElement = await this.viewElement();
|
|
275
|
+
if (await viewElement?.$(this.getPreferenceSelector(preferenceId))) {
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
const input = await viewElement?.waitForSelector(this.searchInput, { timeout: this.customTimeout });
|
|
279
|
+
await input?.fill(preferenceId);
|
|
280
|
+
await viewElement?.waitForSelector(this.getPreferenceSelector(preferenceId), { timeout: this.customTimeout });
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* @param visibleOnly filters out hidden rows, e.g. the copy of a preference in the
|
|
285
|
+
* 'Commonly Used' section, which is hidden while a search filter is active.
|
|
286
|
+
*/
|
|
287
|
+
private getPreferenceSelector(preferenceId: string, visibleOnly: boolean = true): string {
|
|
288
|
+
return `li[data-pref-id="${preferenceId}"]${visibleOnly ? ':visible' : ''}`;
|
|
216
289
|
}
|
|
217
290
|
|
|
218
291
|
private getPreferenceEditorSelector(preferenceId: string, elementType: string): string {
|
|
@@ -243,10 +316,14 @@ export class TheiaPreferenceView extends TheiaView {
|
|
|
243
316
|
async waitForUnmodified(preferenceId: string): Promise<void> {
|
|
244
317
|
await this.activate();
|
|
245
318
|
const viewElement = await this.viewElement();
|
|
246
|
-
|
|
319
|
+
// Match hidden rows too: a row hidden by the category filter must not satisfy the
|
|
320
|
+
// 'detached' wait while its modification indicator is still present.
|
|
321
|
+
await viewElement?.waitForSelector(
|
|
322
|
+
`${this.getPreferenceGutterSelector(preferenceId, false)}${this.modificationIndicator}`, { state: 'detached', timeout: this.customTimeout }
|
|
323
|
+
);
|
|
247
324
|
}
|
|
248
325
|
|
|
249
|
-
private getPreferenceGutterSelector(preferenceId: string): string {
|
|
250
|
-
return `${this.getPreferenceSelector(preferenceId)} .pref-context-gutter`;
|
|
326
|
+
private getPreferenceGutterSelector(preferenceId: string, visibleOnly: boolean = true): string {
|
|
327
|
+
return `${this.getPreferenceSelector(preferenceId, visibleOnly)} .pref-context-gutter`;
|
|
251
328
|
}
|
|
252
329
|
}
|