diff --git a/packages/jupyterlab-chat-extension/src/chat-commands/providers/user-mention.tsx b/packages/jupyterlab-chat-extension/src/chat-commands/providers/user-mention.tsx index 97107df..201f3ae 100644 --- a/packages/jupyterlab-chat-extension/src/chat-commands/providers/user-mention.tsx +++ b/packages/jupyterlab-chat-extension/src/chat-commands/providers/user-mention.tsx @@ -54,7 +54,7 @@ class MentionCommandProvider implements IChatCommandProvider { // Build the commands for each user. const commands: ChatCommand[] = Array.from(this._users) .sort() - .filter(user => user[0].startsWith(match)) + .filter(user => user[0].toLowerCase().startsWith(match.toLowerCase())) .map(user => { return { name: user[0], diff --git a/ui-tests/tests/user-mention.spec.ts b/ui-tests/tests/user-mention.spec.ts index d4e6d61..e170a40 100644 --- a/ui-tests/tests/user-mention.spec.ts +++ b/ui-tests/tests/user-mention.spec.ts @@ -124,4 +124,24 @@ test.describe('#collaborator-mention', () => { ); } }); + + test('should not be case sensitive', async ({ page }) => { + const chatPanel = await openChat(page, FILENAME); + + // Send a message from guest. + await sendMessage(guestPage, FILENAME, 'test'); + + const input = chatPanel + .locator('.jp-chat-input-container') + .getByRole('combobox'); + const chatCommandName = page.locator('.jp-chat-command-name'); + + await input.pressSequentially('@JO'); + await expect(chatCommandName).toHaveCount(2); + for (let i = 0; i < (await chatCommandName.count()); i++) { + expect(['@jovyan', '@jovyan_2']).toContain( + await chatCommandName.nth(i).textContent() + ); + } + }); });