Change tab selection to use 0-based indexing instead of 1-based

Co-authored-by: Skn0tt <14912729+Skn0tt@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2025-06-19 09:38:10 +00:00
parent c82a17ddfd
commit 708aa6d6a5
4 changed files with 12 additions and 12 deletions

View File

@ -662,9 +662,9 @@ X Y coordinate space, based on the provided screenshot.
- **browser_tab_select** - **browser_tab_select**
- Title: Select a tab - Title: Select a tab
- Description: Select a tab by index (1-based indexing) - Description: Select a tab by index (0-based indexing)
- Parameters: - Parameters:
- `index` (number): The index of the tab to select (1-based: first tab is 1, second tab is 2, etc.) - `index` (number): The index of the tab to select (0-based: first tab is 0, second tab is 1, etc.)
- Read-only: **true** - Read-only: **true**
<!-- NOTE: This has been generated via update-readme.js --> <!-- NOTE: This has been generated via update-readme.js -->
@ -673,7 +673,7 @@ X Y coordinate space, based on the provided screenshot.
- Title: Close a tab - Title: Close a tab
- Description: Close a tab - Description: Close a tab
- Parameters: - Parameters:
- `index` (number, optional): The index of the tab to close (1-based: first tab is 1, second tab is 2, etc.). Closes current tab if not provided. - `index` (number, optional): The index of the tab to close (0-based: first tab is 0, second tab is 1, etc.). Closes current tab if not provided.
- Read-only: **false** - Read-only: **false**
</details> </details>

View File

@ -101,7 +101,7 @@ export class Context {
} }
async selectTab(index: number) { async selectTab(index: number) {
this._currentTab = this._tabs[index - 1]; this._currentTab = this._tabs[index];
await this._currentTab.page.bringToFront(); await this._currentTab.page.bringToFront();
} }
@ -127,7 +127,7 @@ export class Context {
} }
async closeTab(index: number | undefined) { async closeTab(index: number | undefined) {
const tab = index === undefined ? this._currentTab : this._tabs[index - 1]; const tab = index === undefined ? this._currentTab : this._tabs[index];
await tab?.page.close(); await tab?.page.close();
return await this.listTabsMarkdown(); return await this.listTabsMarkdown();
} }

View File

@ -50,9 +50,9 @@ const selectTab: ToolFactory = captureSnapshot => defineTool({
schema: { schema: {
name: 'browser_tab_select', name: 'browser_tab_select',
title: 'Select a tab', title: 'Select a tab',
description: 'Select a tab by index (1-based indexing)', description: 'Select a tab by index (0-based indexing)',
inputSchema: z.object({ inputSchema: z.object({
index: z.number().describe('The index of the tab to select (1-based: first tab is 1, second tab is 2, etc.)'), index: z.number().describe('The index of the tab to select (0-based: first tab is 0, second tab is 1, etc.)'),
}), }),
type: 'readOnly', type: 'readOnly',
}, },
@ -108,7 +108,7 @@ const closeTab: ToolFactory = captureSnapshot => defineTool({
title: 'Close a tab', title: 'Close a tab',
description: 'Close a tab', description: 'Close a tab',
inputSchema: z.object({ inputSchema: z.object({
index: z.number().optional().describe('The index of the tab to close (1-based: first tab is 1, second tab is 2, etc.). Closes current tab if not provided.'), index: z.number().optional().describe('The index of the tab to close (0-based: first tab is 0, second tab is 1, etc.). Closes current tab if not provided.'),
}), }),
type: 'destructive', type: 'destructive',
}, },

View File

@ -90,12 +90,12 @@ test('select tab', async ({ client }) => {
expect(await client.callTool({ expect(await client.callTool({
name: 'browser_tab_select', name: 'browser_tab_select',
arguments: { arguments: {
index: 2, index: 1,
}, },
})).toHaveTextContent(` })).toHaveTextContent(`
- Ran Playwright code: - Ran Playwright code:
\`\`\`js \`\`\`js
// <internal code to select tab 2> // <internal code to select tab 1>
\`\`\` \`\`\`
### Open tabs ### Open tabs
@ -118,12 +118,12 @@ test('close tab', async ({ client }) => {
expect(await client.callTool({ expect(await client.callTool({
name: 'browser_tab_close', name: 'browser_tab_close',
arguments: { arguments: {
index: 3, index: 2,
}, },
})).toHaveTextContent(` })).toHaveTextContent(`
- Ran Playwright code: - Ran Playwright code:
\`\`\`js \`\`\`js
// <internal code to close tab 3> // <internal code to close tab 2>
\`\`\` \`\`\`
### Open tabs ### Open tabs