[MM-61969] Fix regression where search suggestion would break when using uppercase letters (#29400)

Этот коммит содержится в:
Julien Tant
2024-11-27 10:53:14 -07:00
коммит произвёл GitHub
родитель 25ff7a3779
Коммит dabf383d4c
3 изменённых файлов: 40 добавлений и 1 удалений

Просмотреть файл

@@ -9,6 +9,7 @@ export default class GlobalHeader {
readonly productSwitchMenu;
readonly recentMentionsButton;
readonly settingsButton;
readonly searchBox;
constructor(container: Locator) {
this.container = container;
@@ -16,6 +17,7 @@ export default class GlobalHeader {
this.productSwitchMenu = container.getByRole('button', {name: 'Product switch menu'});
this.recentMentionsButton = container.getByRole('button', {name: 'Recent mentions'});
this.settingsButton = container.getByRole('button', {name: 'Settings'});
this.searchBox = container.locator('#searchFormContainer');
}
async toBeVisible(name: string) {
@@ -36,6 +38,11 @@ export default class GlobalHeader {
await expect(this.recentMentionsButton).toBeVisible();
await this.recentMentionsButton.click();
}
async openSearch() {
await expect(this.searchBox).toBeVisible();
await this.searchBox.click();
}
}
export {GlobalHeader};

Просмотреть файл

@@ -0,0 +1,32 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {expect, test} from '@e2e-support/test_fixture';
test('Search box suggestion must be case insensitive', async ({pw, pages}) => {
const {user} = await pw.initSetup();
// # Log in a user in new browser context
const {page} = await pw.testBrowser.login(user);
// # Visit a default channel page
const channelsPage = new pages.ChannelsPage(page);
await channelsPage.goto();
await channelsPage.toBeVisible();
// # Open the search UI
await channelsPage.globalHeader.openSearch();
const searchInput = await page.getByPlaceholder('Search messages');
// * it's working when using lowercase
await searchInput.fill('In:off');
await searchInput.press('Enter');
await expect(searchInput).toHaveValue('In:off-topic ');
// * it's working when using uppercase
await searchInput.clear();
await searchInput.fill('In:Off');
await searchInput.press('Enter');
await expect(searchInput).toHaveValue('In:off-topic ');
});

Просмотреть файл

@@ -144,7 +144,7 @@ const SearchBox = forwardRef(
const caretPosition = getCaretPosition();
const extraSpace = caretPosition === searchTerms.length ? ' ' : '';
setSearchTerms(
searchTerms.slice(0, caretPosition).replace(new RegExp(escapedMatchedPretext + '$'), '') +
searchTerms.slice(0, caretPosition).replace(new RegExp(escapedMatchedPretext + '$', 'i'), '') +
value +
extraSpace +
searchTerms.slice(caretPosition),