blob: a36797c5a97519f2edd4d0c7960e0d3617e131f7 [file] [log] [blame]
Wolfgang Beyerceebc652022-08-22 11:24:581// Copyright 2022 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5import {assert} from 'chai';
6
7import {
8 $$,
9 click,
10 goToResource,
Wolfgang Beyer733ddfa2024-01-16 11:53:5711 hasClass,
12 pressKey,
Jecelyn Yeen67b8ebb2023-07-31 11:22:1913 step,
Wolfgang Beyerceebc652022-08-22 11:24:5814 typeText,
15 waitFor,
Jecelyn Yeen67b8ebb2023-07-31 11:22:1916 waitForAria,
Wolfgang Beyer733ddfa2024-01-16 11:53:5717 waitForFunction,
Jecelyn Yeenfca70182023-08-18 10:14:4118 waitForNone,
Wolfgang Beyerceebc652022-08-22 11:24:5819} from '../../shared/helper.js';
20import {describe, it} from '../../shared/mocha-extensions.js';
Benedikt Meurer5a9f6992023-12-14 14:25:2421import {openSoftContextMenuAndClickOnItem} from '../helpers/context-menu-helpers.js';
Wolfgang Beyerceebc652022-08-22 11:24:5822import {
Jecelyn Yeen67b8ebb2023-07-31 11:22:1923 openNetworkTab,
24 selectRequestByName,
Wolfgang Beyerfe7f1142023-12-11 14:22:5625 setCacheDisabled,
Jecelyn Yeen2dec31e2023-08-23 12:13:0726 waitForSomeRequestsToAppear,
Jecelyn Yeen67b8ebb2023-07-31 11:22:1927} from '../helpers/network-helpers.js';
28import {
29 readQuickOpenResults,
30 typeIntoQuickOpen,
31} from '../helpers/quick_open-helpers.js';
32import {
Wolfgang Beyerceebc652022-08-22 11:24:5833 ENABLE_OVERRIDES_SELECTOR,
34 enableLocalOverrides,
35 openSourcesPanel,
36} from '../helpers/sources-helpers.js';
37
38const OVERRIDES_FILESYSTEM_SELECTOR = '[aria-label="overrides, fs"]';
39
Wolfgang Beyer733ddfa2024-01-16 11:53:5740async function waitForOverrideContentMenuItemIsEnabled(requestName: string) {
41 await waitForFunction(async () => {
42 await selectRequestByName(requestName, {button: 'right'});
43 const menuItem = await waitForAria('Override content');
44 const isDisabled = await hasClass(menuItem, 'soft-context-menu-disabled');
45 if (!isDisabled) {
46 return true;
47 }
48 await pressKey('Escape');
49 return false;
50 });
51}
52
Benedikt Meurercb7952f2024-02-21 13:32:2353describe('Overrides panel', function() {
Wolfgang Beyerceebc652022-08-22 11:24:5854 afterEach(async () => {
55 await openSourcesPanel();
Jecelyn Yeen67b8ebb2023-07-31 11:22:1956 await click('[aria-label="Overrides"]');
Wolfgang Beyerceebc652022-08-22 11:24:5857 await click('[aria-label="Clear configuration"]');
58 await waitFor(ENABLE_OVERRIDES_SELECTOR);
59 });
60
61 it('can create multiple new files', async () => {
62 await goToResource('empty.html');
63 await openSourcesPanel();
64 await enableLocalOverrides();
Benedikt Meurer5a9f6992023-12-14 14:25:2465 await openSoftContextMenuAndClickOnItem(OVERRIDES_FILESYSTEM_SELECTOR, 'New file');
Wolfgang Beyerceebc652022-08-22 11:24:5866 await waitFor('[aria-label="NewFile, file"]');
67 await typeText('foo\n');
68
Benedikt Meurer5a9f6992023-12-14 14:25:2469 await openSoftContextMenuAndClickOnItem(OVERRIDES_FILESYSTEM_SELECTOR, 'New file');
Wolfgang Beyerceebc652022-08-22 11:24:5870 await waitFor('[aria-label="NewFile, file"]');
71 await typeText('bar\n');
Wolfgang Beyer94f99c32022-08-24 08:22:0872 await waitFor('[aria-label="bar, file"]');
Wolfgang Beyerceebc652022-08-22 11:24:5873
74 const treeItems = await $$('.navigator-file-tree-item');
75 const treeItemNames = await Promise.all(treeItems.map(x => x.evaluate(y => y.textContent)));
76 assert.deepEqual(treeItemNames, ['bar', 'foo']);
77 });
Jecelyn Yeen67b8ebb2023-07-31 11:22:1978
79 it('can save fetch request for overrides via network panel', async () => {
80 await step('enable overrides', async () => {
81 await goToResource('network/fetch-json.html');
82 await openSourcesPanel();
83 await enableLocalOverrides();
84 });
85
86 await step('can create content overrides via request\'s context menu', async () => {
87 await openNetworkTab();
Wolfgang Beyer733ddfa2024-01-16 11:53:5788 await waitForOverrideContentMenuItemIsEnabled('coffees.json');
Jecelyn Yeen5cc23742023-08-01 13:12:4189 await click('aria/Override content');
Jecelyn Yeen67b8ebb2023-07-31 11:22:1990 await waitFor('[aria-label="coffees.json, file"]');
91 });
92
93 await step('should not show fetch request in the Sources > Page Tree', async () => {
94 const pageTree = await waitForAria('Page');
95 await pageTree.click();
96
97 const treeItems = await $$('.navigator-file-tree-item');
98 const treeItemNames = (await Promise.all(treeItems.map(x => x.evaluate(y => y.textContent))));
99 assert.isFalse(treeItemNames?.includes('coffees.json'));
100 });
101
102 await step('should show overidden fetch request in Quick Open', async () => {
103 await typeIntoQuickOpen('coffees.json');
104 const list = await readQuickOpenResults();
105 assert.deepEqual(list, ['coffees.json']);
106 });
107 });
108
109 it('can save XHR request for overrides via network panel', async () => {
110 await step('enable overrides', async () => {
111 await goToResource('network/xhr-json.html');
112 await openSourcesPanel();
113 await enableLocalOverrides();
114 });
115
116 await step('can create content overrides via request\'s context menu', async () => {
117 await openNetworkTab();
Wolfgang Beyer733ddfa2024-01-16 11:53:57118 await waitForOverrideContentMenuItemIsEnabled('coffees.json');
Jecelyn Yeen5cc23742023-08-01 13:12:41119 await click('aria/Override content');
Jecelyn Yeen67b8ebb2023-07-31 11:22:19120 await waitFor('[aria-label="coffees.json, file"]');
121 });
122
123 await step('should not show xhr request in the Sources > Page Tree', async () => {
124 const pageTree = await waitForAria('Page');
125 await pageTree.click();
126
127 const treeItems = await $$('.navigator-file-tree-item');
128 const treeItemNames = (await Promise.all(treeItems.map(x => x.evaluate(y => y.textContent))));
129 assert.isFalse(treeItemNames?.includes('coffees.json'));
130 });
131
132 await step('should show overidden xhr request in Quick Open', async () => {
133 await typeIntoQuickOpen('coffees.json');
134 const list = await readQuickOpenResults();
135 assert.deepEqual(list, ['coffees.json']);
136 });
137 });
Jecelyn Yeen5cc23742023-08-01 13:12:41138
Wolfgang Beyerfe7f1142023-12-11 14:22:56139 it('can always override content via the Network panel', async () => {
Jecelyn Yeen5cc23742023-08-01 13:12:41140 await step('can override without local overrides folder set up', async () => {
141 await goToResource('network/fetch-json.html');
142 await openNetworkTab();
Wolfgang Beyer733ddfa2024-01-16 11:53:57143 await waitForOverrideContentMenuItemIsEnabled('coffees.json');
Jecelyn Yeen5cc23742023-08-01 13:12:41144 await click('aria/Override content');
145
146 // File permission pop up
147 const infoBar = await waitForAria('Select a folder to store override files in.');
148 await click('.infobar-main-row .infobar-button', {root: infoBar});
149
Jecelyn Yeen69e61432023-08-08 08:59:53150 // Open & close the file in the Sources panel
Jecelyn Yeen5cc23742023-08-01 13:12:41151 const fileTab = await waitFor('[aria-label="coffees.json, file"]');
152 assert.isNotNull(fileTab);
153
154 await click('aria/Close coffees.json');
155 });
156
157 await step('can open the overridden file in the Sources panel if it exists', async () => {
158 await openNetworkTab();
Wolfgang Beyer733ddfa2024-01-16 11:53:57159 await waitForOverrideContentMenuItemIsEnabled('coffees.json');
Jecelyn Yeen5cc23742023-08-01 13:12:41160 await click('aria/Override content');
161
162 // No file permission pop up
163 const popups = await $$('aria/Select a folder to store override files in.', undefined, 'aria');
164 assert.strictEqual(popups.length, 0);
165
166 // Open & close the file in the Sources panel
167 const fileTab = await waitFor('[aria-label="coffees.json, file"]');
168 assert.isNotNull(fileTab);
169
170 await click('aria/Close coffees.json');
171 });
172
173 await step('can enable the local overrides setting and override content', async () => {
174 // Disable Local overrides
175 await click('aria/Enable Local Overrides');
176
177 // Navigate to files
178 await openNetworkTab();
Wolfgang Beyer733ddfa2024-01-16 11:53:57179 await waitForOverrideContentMenuItemIsEnabled('coffees.json');
Jecelyn Yeen5cc23742023-08-01 13:12:41180 await click('aria/Override content');
181
182 // No file permission pop up
183 const popups = await $$('aria/Select a folder to store override files in.', undefined, 'aria');
184 assert.strictEqual(popups.length, 0);
185
186 // Open & close the file in the Sources panel
187 const fileTab = await waitFor('[aria-label="coffees.json, file"]');
188 assert.isNotNull(fileTab);
189
190 await click('aria/Close coffees.json');
191 });
192 });
Jecelyn Yeen57fdda42023-08-06 23:33:15193
Wolfgang Beyerfe7f1142023-12-11 14:22:56194 it('overrides indicator on the Network panel title', async () => {
Jecelyn Yeen57fdda42023-08-06 23:33:15195 await step('no indicator when overrides setting is disabled', async () => {
196 await goToResource('network/fetch-json.html');
197
198 await openNetworkTab();
199 const networkPanel = await waitFor('.tabbed-pane-header-tab.selected');
200 const icons = await networkPanel.$$('.tabbed-pane-header-tab-icon');
201
202 assert.strictEqual(icons.length, 0);
203 });
204
205 await step('shows indicator when overrides setting is enabled', async () => {
206 // Set up & enable overrides
Wolfgang Beyer733ddfa2024-01-16 11:53:57207 await waitForOverrideContentMenuItemIsEnabled('coffees.json');
Jecelyn Yeen57fdda42023-08-06 23:33:15208 await click('aria/Override content');
209
210 // File permission pop up
211 const infoBar = await waitForAria('Select a folder to store override files in.');
212 await click('.infobar-main-row .infobar-button', {root: infoBar});
213 await waitFor('[aria-label="coffees.json, file"]');
214
215 await openNetworkTab();
Wolfgang Beyerfe7f1142023-12-11 14:22:56216 await setCacheDisabled(false);
Jecelyn Yeen57fdda42023-08-06 23:33:15217 const networkPanel = await waitFor('.tabbed-pane-header-tab.selected');
218 const icons = await networkPanel.$$('.tabbed-pane-header-tab-icon');
Wolfgang Beyerfe7f1142023-12-11 14:22:56219 const iconTitleElement = await icons[0].$('aria/Requests may be overridden locally, see the Sources panel');
Jecelyn Yeen57fdda42023-08-06 23:33:15220
221 assert.strictEqual(icons.length, 1);
Wolfgang Beyerfe7f1142023-12-11 14:22:56222 assert.isNotNull(iconTitleElement);
Jecelyn Yeen57fdda42023-08-06 23:33:15223 });
224
225 await step('no indicator after clearing overrides configuration', async () => {
Wolfgang Beyer733ddfa2024-01-16 11:53:57226 await waitForOverrideContentMenuItemIsEnabled('coffees.json');
Jecelyn Yeen57fdda42023-08-06 23:33:15227 await click('aria/Override content');
228 await click('aria/Clear configuration');
229
230 await openNetworkTab();
Wolfgang Beyerfe7f1142023-12-11 14:22:56231 await setCacheDisabled(false);
Jecelyn Yeen57fdda42023-08-06 23:33:15232 const networkPanel = await waitFor('.tabbed-pane-header-tab.selected');
233 const icons = await networkPanel.$$('.tabbed-pane-header-tab-icon');
234
235 assert.strictEqual(icons.length, 0);
236 });
237
238 await step('shows indicator after enabling override in Overrides tab', async () => {
239 await click('aria/Sources');
240 await click('aria/Select folder for overrides');
Benedikt Meurer5a9f6992023-12-14 14:25:24241 await openSoftContextMenuAndClickOnItem(OVERRIDES_FILESYSTEM_SELECTOR, 'New file');
Jecelyn Yeen57fdda42023-08-06 23:33:15242 await waitFor('[aria-label="NewFile, file"]');
243
244 await openNetworkTab();
Wolfgang Beyerfe7f1142023-12-11 14:22:56245 await setCacheDisabled(false);
Jecelyn Yeen57fdda42023-08-06 23:33:15246 const networkPanel = await waitFor('.tabbed-pane-header-tab.selected');
247 const icons = await networkPanel.$$('.tabbed-pane-header-tab-icon');
Wolfgang Beyerfe7f1142023-12-11 14:22:56248 const iconTitleElement = await icons[0].$('aria/Requests may be overridden locally, see the Sources panel');
Jecelyn Yeen57fdda42023-08-06 23:33:15249
250 assert.strictEqual(icons.length, 1);
Wolfgang Beyerfe7f1142023-12-11 14:22:56251 assert.isNotNull(iconTitleElement);
Jecelyn Yeen57fdda42023-08-06 23:33:15252 });
253 });
Jecelyn Yeen3755eef2023-08-07 10:04:02254
255 it('can show all overrides in the Sources panel', async () => {
256 await step('when overrides setting is disabled', async () => {
257 await goToResource('network/fetch-json.html');
258
259 await openNetworkTab();
Wolfgang Beyer733ddfa2024-01-16 11:53:57260 await waitForOverrideContentMenuItemIsEnabled('coffees.json');
Jecelyn Yeen3755eef2023-08-07 10:04:02261 await click('aria/Show all overrides');
262
263 // In the Sources panel
264 await waitForAria('Select folder for overrides');
265
266 const assertElements = await $$('Select folder for overrides', undefined, 'aria');
267 assert.strictEqual(assertElements.length, 1);
268 });
269
270 await step('when overrides setting is enabled', async () => {
271 // Set up & enable overrides in the Sources panel
272 await click('aria/Select folder for overrides');
Benedikt Meurer5a9f6992023-12-14 14:25:24273 await openSoftContextMenuAndClickOnItem(OVERRIDES_FILESYSTEM_SELECTOR, 'New file');
Jecelyn Yeen3755eef2023-08-07 10:04:02274
275 await openNetworkTab();
276 await selectRequestByName('coffees.json', {button: 'right'});
277 await click('aria/Show all overrides');
278
279 // In the Sources panel
280 await waitForAria('Enable Local Overrides');
281
282 const assertElements = await $$('Enable Local Overrides', undefined, 'aria');
283 assert.strictEqual(assertElements.length, 1);
284 });
285 });
Jecelyn Yeen69e61432023-08-08 08:59:53286
Wolfgang Beyerfe7f1142023-12-11 14:22:56287 it('has correct context menu for overrides files', async () => {
Jecelyn Yeen69e61432023-08-08 08:59:53288 await goToResource('network/fetch-json.html');
289 await openNetworkTab();
Wolfgang Beyer733ddfa2024-01-16 11:53:57290 await waitForOverrideContentMenuItemIsEnabled('coffees.json');
Jecelyn Yeen69e61432023-08-08 08:59:53291 await click('aria/Override content');
292
293 // File permission pop up
294 const infoBar = await waitForAria('Select a folder to store override files in.');
295 await click('.infobar-main-row .infobar-button', {root: infoBar});
296
297 // Open the file in the Sources panel
298 const fileTab = await waitFor('[aria-label="coffees.json, file"]');
299 await fileTab.click({button: 'right'});
300
301 const assertShowAllElements = await $$('Show all overrides', undefined, 'aria');
302 const assertAddFolderElements = await $$('Add folder to workspace', undefined, 'aria');
303 const assertOverrideContentElements = await $$('Override content', undefined, 'aria');
304 const assertOpenInElements = await $$('Open in containing folder', undefined, 'aria');
305
306 assert.strictEqual(assertShowAllElements.length, 0);
307 assert.strictEqual(assertAddFolderElements.length, 0);
308 assert.strictEqual(assertOverrideContentElements.length, 0);
309 assert.strictEqual(assertOpenInElements.length, 1);
310 });
311
Wolfgang Beyerfe7f1142023-12-11 14:22:56312 it('has correct context menu for main overrides folder', async () => {
Jecelyn Yeen69e61432023-08-08 08:59:53313 await goToResource('network/fetch-json.html');
314 await openNetworkTab();
Wolfgang Beyer733ddfa2024-01-16 11:53:57315 await waitForOverrideContentMenuItemIsEnabled('coffees.json');
Jecelyn Yeen69e61432023-08-08 08:59:53316 await click('aria/Override content');
317
318 // File permission pop up
319 const infoBar = await waitForAria('Select a folder to store override files in.');
320 await click('.infobar-main-row .infobar-button', {root: infoBar});
321
322 // Open the main folder in the Sources panel
323 await waitFor('[aria-label="coffees.json, file"]');
324 const folderTab = await waitFor('.navigator-folder-tree-item');
325 await folderTab.click({button: 'right'});
326
327 const assertAddFolderElements = await $$('Add folder to workspace', undefined, 'aria');
328 const assertRemoveFolderElements = await $$('Remove folder from workspace', undefined, 'aria');
Jecelyn Yeenfca70182023-08-18 10:14:41329 const assertDeleteElements = await $$('Delete', undefined, 'aria');
Jecelyn Yeen69e61432023-08-08 08:59:53330
331 assert.strictEqual(assertAddFolderElements.length, 0);
332 assert.strictEqual(assertRemoveFolderElements.length, 0);
Jecelyn Yeenfca70182023-08-18 10:14:41333 assert.strictEqual(assertDeleteElements.length, 0);
Jecelyn Yeen69e61432023-08-08 08:59:53334 });
335
Wolfgang Beyerfe7f1142023-12-11 14:22:56336 it('has correct context menu for sub overrides folder', async () => {
Jecelyn Yeen69e61432023-08-08 08:59:53337 await goToResource('network/fetch-json.html');
338 await openNetworkTab();
Wolfgang Beyer733ddfa2024-01-16 11:53:57339 await waitForOverrideContentMenuItemIsEnabled('coffees.json');
Jecelyn Yeen69e61432023-08-08 08:59:53340 await click('aria/Override content');
341
342 // File permission pop up
343 const infoBar = await waitForAria('Select a folder to store override files in.');
344 await click('.infobar-main-row .infobar-button', {root: infoBar});
345
346 // Open the sub folder in the Sources panel
347 await waitFor('[aria-label="coffees.json, file"]');
348 const subfolderTab = await waitFor('[role="group"] > .navigator-folder-tree-item');
349 await subfolderTab.click({button: 'right'});
350
351 const assertAddFolderElements = await $$('Add folder to workspace', undefined, 'aria');
352 const assertRemoveFolderElements = await $$('Remove folder from workspace', undefined, 'aria');
Jecelyn Yeenfca70182023-08-18 10:14:41353 const assertDeleteElements = await $$('Delete', undefined, 'aria');
Jecelyn Yeen69e61432023-08-08 08:59:53354
355 assert.strictEqual(assertAddFolderElements.length, 0);
356 assert.strictEqual(assertRemoveFolderElements.length, 0);
Jecelyn Yeenfca70182023-08-18 10:14:41357 assert.strictEqual(assertDeleteElements.length, 1);
Jecelyn Yeen69e61432023-08-08 08:59:53358 });
Jecelyn Yeen2b9c9f92023-08-25 08:15:47359
Wolfgang Beyer733ddfa2024-01-16 11:53:57360 it('show redirect dialog when override content of source mapped js file', async () => {
Jecelyn Yeen2b9c9f92023-08-25 08:15:47361 await goToResource('sources/sourcemap-origin.html');
362 await openSourcesPanel();
363 await enableLocalOverrides();
364
365 await openNetworkTab();
366 await waitForSomeRequestsToAppear(4);
Wolfgang Beyer733ddfa2024-01-16 11:53:57367 await waitForOverrideContentMenuItemIsEnabled('sourcemap-origin.min.js');
Jecelyn Yeen2b9c9f92023-08-25 08:15:47368 await click('aria/Open in Sources panel');
369
370 // Actual file > Has override content
371 const file = await waitFor('[aria-label="sourcemap-origin.min.js"]');
372 await file.click({button: 'right'});
373 await click('aria/Close');
374
375 // Source mapped file > Show redirect confirmation dialog
376 const mappedfile = await waitFor('[aria-label="sourcemap-origin.js, file"]');
377 await mappedfile.click({button: 'right'});
378 await click('aria/Override content');
379 const p = await waitFor('.dimmed-pane');
380 const dialog = await p.waitForSelector('>>>> [role="dialog"]');
381 const okButton = await dialog?.waitForSelector('>>> .primary-button');
382 await okButton?.click();
383 await waitFor('[aria-label="Close sourcemap-origin.min.js"]');
384 });
385
Wolfgang Beyer733ddfa2024-01-16 11:53:57386 it('show redirect dialog when override content of source mapped css file', async () => {
Jecelyn Yeen2b9c9f92023-08-25 08:15:47387 await goToResource('sources/sourcemap-origin.html');
388 await openSourcesPanel();
389 await enableLocalOverrides();
390
391 await openNetworkTab();
392 await waitForSomeRequestsToAppear(4);
Wolfgang Beyer733ddfa2024-01-16 11:53:57393 await waitForOverrideContentMenuItemIsEnabled('sourcemap-origin.css');
Jecelyn Yeen2b9c9f92023-08-25 08:15:47394 await click('aria/Open in Sources panel');
395
Wolfgang Beyer733ddfa2024-01-16 11:53:57396 // Actual file > Has override content
Jecelyn Yeen2b9c9f92023-08-25 08:15:47397 const file = await waitFor('[aria-label="sourcemap-origin.css"]');
398 await file.click({button: 'right'});
399 await click('aria/Close');
400
Wolfgang Beyer733ddfa2024-01-16 11:53:57401 // Source mapped file > Show redirect confirmation dialog
Jecelyn Yeen2b9c9f92023-08-25 08:15:47402 const mappedfile = await waitFor('[aria-label="sourcemap-origin.scss, file"]');
403 await mappedfile.click({button: 'right'});
404 await click('aria/Override content');
405 const p = await waitFor('.dimmed-pane');
406 const dialog = await p.waitForSelector('>>>> [role="dialog"]');
407 const okButton = await dialog?.waitForSelector('>>> .primary-button');
408 await okButton?.click();
409 await waitFor('[aria-label="Close sourcemap-origin.css"]');
410 });
Jecelyn Yeen69e61432023-08-08 08:59:53411});
412
413describe('Overrides panel', () => {
Wolfgang Beyer733ddfa2024-01-16 11:53:57414 it('appends correct overrides context menu for Sources > Page file', async () => {
Jecelyn Yeen2dec31e2023-08-23 12:13:07415 await goToResource('elements/elements-panel-styles.html');
416 await openNetworkTab();
417 await waitForSomeRequestsToAppear(2);
Wolfgang Beyer733ddfa2024-01-16 11:53:57418 await waitForOverrideContentMenuItemIsEnabled('elements-panel-styles.css');
Jecelyn Yeen2dec31e2023-08-23 12:13:07419 await click('aria/Open in Sources panel');
Jecelyn Yeen69e61432023-08-08 08:59:53420
Jecelyn Yeen2dec31e2023-08-23 12:13:07421 // Open the file in the Sources panel
422 const file = await waitFor('[aria-label="elements-panel-styles.css, file"]');
423 await file.click({button: 'right'});
Jecelyn Yeen69e61432023-08-08 08:59:53424
Jecelyn Yeen2dec31e2023-08-23 12:13:07425 const assertShowAllElements = await $$('Show all overrides', undefined, 'aria');
426 const assertOverridesContentElements = await $$('Override content', undefined, 'aria');
Jecelyn Yeen69e61432023-08-08 08:59:53427
Jecelyn Yeen2dec31e2023-08-23 12:13:07428 assert.strictEqual(assertShowAllElements.length, 0);
429 assert.strictEqual(assertOverridesContentElements.length, 1);
430 });
Wolfgang Beyerceebc652022-08-22 11:24:58431});
Jecelyn Yeenfca70182023-08-18 10:14:41432
433describe('Overrides panel > Delete context menus', () => {
434 beforeEach(async () => {
435 // set up 3 overriden files - .header, json, custom js
Jecelyn Yeenfca70182023-08-18 10:14:41436 await goToResource('network/fetch-json.html');
437 await openSourcesPanel();
438 await enableLocalOverrides();
439
440 await step('add a content override file', async () => {
441 await openNetworkTab();
Wolfgang Beyer733ddfa2024-01-16 11:53:57442 await waitForOverrideContentMenuItemIsEnabled('coffees.json');
Jecelyn Yeenfca70182023-08-18 10:14:41443 await click('aria/Override content');
444 });
445
446 await step('add a custom override file', async () => {
447 const subfolderTab = await waitFor('[role="group"] > .navigator-folder-tree-item');
448 await subfolderTab.click({button: 'right'});
449 await click('aria/New file');
450 await waitFor('[aria-label="NewFile, file"]');
451 await typeText('foo.js\n');
452 });
453
454 await step('add a header override file', async () => {
455 await openNetworkTab();
456 await selectRequestByName('coffees.json', {button: 'right'});
457 await click('aria/Override headers');
458 await waitFor('[title="Reveal header override definitions"]');
459 });
460 });
461
462 afterEach(async () => {
463 await click('[aria-label="Clear configuration"]');
464 await waitFor(ENABLE_OVERRIDES_SELECTOR);
465 });
466
Jecelyn Yeenfca70182023-08-18 10:14:41467 it('delete all files from sub folder', async () => {
468 await step('files exist in Sources panel', async () => {
469 await selectRequestByName('coffees.json', {button: 'right'});
470 await click('aria/Show all overrides');
471
472 await waitFor('[aria-label=".headers, file"]');
473 await waitFor('[aria-label="coffees.json, file"]');
474 await waitFor('[aria-label="foo.js, file"]');
475 });
476
477 await step('delete all files', async () => {
478 const subfolderTab = await waitFor('[role="group"] > .navigator-folder-tree-item');
479 await subfolderTab.click({button: 'right'});
480
481 await click('aria/Delete');
482 await waitFor('[role="dialog"]');
483 await click('aria/OK');
484 await waitForNone('[role="dialog"]');
485
486 const treeItems = await $$('.navigator-file-tree-item');
487 assert.strictEqual(treeItems.length, 0);
488 });
489 });
490});