Skip to content

Commit f7eed7f

Browse files
danilsomsikovDevtools-frontend LUCI CQ
authored andcommitted
Migrate network/preview-searchable-expected.txt to an e2e test
Bug: 393175977 Change-Id: I2b65124b932e0d8451a82d603f286271071912b6 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/7252350 Auto-Submit: Danil Somsikov <dsv@chromium.org> Reviewed-by: Nikolay Vitkov <nvitkov@chromium.org> Commit-Queue: Danil Somsikov <dsv@chromium.org>
1 parent 04fa35a commit f7eed7f

1 file changed

Lines changed: 89 additions & 0 deletions

File tree

test/e2e/network/network-request-view.test.ts

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -638,4 +638,93 @@ describe('The Network Request view', () => {
638638

639639
await devToolsPage.waitFor(SEARCH_RESULT);
640640
});
641+
642+
describe('preview', () => {
643+
async function searchInPreview(devToolsPage: DevToolsPage, query: string, totalMatches: number) {
644+
const SEARCH_QUERY = '.search-replace.search';
645+
646+
await devToolsPage.summonSearchBox();
647+
const inputElement = await devToolsPage.waitFor(SEARCH_QUERY);
648+
assert.isOk(inputElement, 'Unable to find search input field');
649+
650+
await inputElement.focus();
651+
await inputElement.click({clickCount: 3}); // Select all text.
652+
await inputElement.type(query);
653+
654+
await devToolsPage.waitForFunction(async () => {
655+
const searchStatusText = await devToolsPage.getTextContent('.search-results-matches');
656+
if (totalMatches > 0) {
657+
return searchStatusText.endsWith(`of ${totalMatches}`);
658+
}
659+
return !searchStatusText;
660+
});
661+
}
662+
663+
async function setupPreviewTest(
664+
devToolsPage: DevToolsPage, inspectedPage: InspectedPage, url: string, resourceName?: string) {
665+
await navigateToNetworkTab('hello.html', devToolsPage, inspectedPage);
666+
await inspectedPage.evaluate(url => fetch(url), url);
667+
await waitForSomeRequestsToAppear(3, devToolsPage);
668+
669+
if (!resourceName) {
670+
resourceName = url.length > 20 ? url.substring(0, 19) + '…' : url;
671+
}
672+
673+
await selectRequestByName(resourceName, {devToolsPage});
674+
675+
const networkView = await devToolsPage.waitFor('.network-item-view');
676+
await devToolsPage.click('[aria-label=Preview][role="tab"]', {
677+
root: networkView,
678+
});
679+
await devToolsPage.waitFor('[aria-label=Preview][role=tab][aria-selected=true]', networkView);
680+
// Wait for the preview to load.
681+
await devToolsPage.click(
682+
'.json-view, .shadow-xml-view, devtools-text-editor, .html-preview-frame',
683+
{clickOptions: {offset: {x: 10, y: 10}}});
684+
}
685+
686+
it('can be searched for JSON content', async ({devToolsPage, inspectedPage}) => {
687+
const url = 'data:application/json,%5B533%2C3223%5D';
688+
await setupPreviewTest(devToolsPage, inspectedPage, url);
689+
690+
await searchInPreview(devToolsPage, '533', 1);
691+
await searchInPreview(devToolsPage, '322', 1);
692+
});
693+
694+
it('can be searched for JSON content with special mime type', async ({devToolsPage, inspectedPage}) => {
695+
const url = 'data:application/vnd.document+json,%7B%22foo0foo%22%3A%20123%7D';
696+
await setupPreviewTest(devToolsPage, inspectedPage, url);
697+
await searchInPreview(devToolsPage, 'foo', 1);
698+
});
699+
700+
it('can be searched for XML content', async ({devToolsPage, inspectedPage}) => {
701+
const url = 'data:text/xml,%3Cbar%3E%3Cfoo%2F%3Etest%3C%2Fbar%3E';
702+
await setupPreviewTest(devToolsPage, inspectedPage, url);
703+
await searchInPreview(devToolsPage, 'bar', 2);
704+
await searchInPreview(devToolsPage, 'foo', 1);
705+
await searchInPreview(devToolsPage, 'test', 1);
706+
});
707+
708+
it('can be searched for XML content with comments', async ({devToolsPage, inspectedPage}) => {
709+
const url = 'data:text/xml,%3Cbar%3E%3C!--%20FOO%20--%3E%3C%2Fbar%3E';
710+
await setupPreviewTest(devToolsPage, inspectedPage, url);
711+
await searchInPreview(devToolsPage, 'FOO', 1);
712+
await searchInPreview(devToolsPage, 'bar', 2);
713+
});
714+
715+
it('can be searched for XML content with CDATA', async ({devToolsPage, inspectedPage}) => {
716+
const url = 'data:text/xml,%3Ca%3E%3C!%5BCDATA%5BGGG%5D%5D%3E%3Cg%20tee%3D%22gee%22%3Etee%3C%2Fg%3E%3C%2Fa%3E';
717+
await setupPreviewTest(devToolsPage, inspectedPage, url);
718+
await searchInPreview(devToolsPage, 'GGG', 1);
719+
await searchInPreview(devToolsPage, 'tee', 2);
720+
await searchInPreview(devToolsPage, 'CDATA', 1);
721+
});
722+
723+
it('can be searched for JSON content with XML mime type', async ({devToolsPage, inspectedPage}) => {
724+
const url = 'data:text/xml,%7B%22foo0%22%3A%20%22barr%22%2C%20%22barr%22%3A%20%22fooo%22%7D';
725+
await setupPreviewTest(devToolsPage, inspectedPage, url);
726+
await searchInPreview(devToolsPage, 'fooo', 1);
727+
await searchInPreview(devToolsPage, 'bar', 2);
728+
});
729+
});
641730
});

0 commit comments

Comments
 (0)