+
+
+
+
+
+
+
+
+
+
+`;
+
+test('browser_find marks gaps within off-path context with an ellipsis', async ({ client, server }) => {
+ server.setContent('/', toolbarPage, 'text/html');
+ await client.callTool({ name: 'browser_navigate', arguments: { url: server.PREFIX } });
+
+ // The match sits under "Content"; the "Toolbar" group is off-path context
+ // whose truncated buttons are marked with an ellipsis, while the path down to
+ // the match stays unmarked.
+ expect(await client.callTool({
+ name: 'browser_find',
+ arguments: { text: 'Target Button' },
+ })).toHaveResponse({
+ result: expect.stringContaining(`Found 1 match for "Target Button":
+
+- main [ref=e2]:
+ - group "Toolbar" [ref=e3]:
+ ...
+ - button "Three" [ref=e6]
+ - button "Four" [ref=e7]
+ - group "Content" [ref=e8]:
+ - button "Target Button" [ref=e9]`),
+ });
+});
+
test('browser_find is case-insensitive for text', async ({ client, server }) => {
server.setContent('/', listPage, 'text/html');
await client.callTool({ name: 'browser_navigate', arguments: { url: server.PREFIX } });