feat: implement fuzzy search and replace functionality with Levenshtein distance
- Added `applySearchReplace` function to handle search and replace operations with fuzzy matching capabilities. - Introduced tests for various scenarios including fuzzy matching with typos, exact matches, and handling whitespace differences. - Created a parser for search/replace blocks to facilitate the new functionality. - Updated prompts for search-replace operations to clarify usage and examples. - Added utility functions for text normalization and language detection based on file extensions. - Implemented a minimal stdio MCP server for local testing with tools for adding numbers and printing environment variables.
This commit is contained in:
50
e2e-tests/chat_input.spec.ts
Normal file
50
e2e-tests/chat_input.spec.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import { test } from "./helpers/test_helper";
|
||||
import { expect } from "@playwright/test";
|
||||
|
||||
test("send button disabled during pending proposal", async ({ po }) => {
|
||||
await po.setUp();
|
||||
|
||||
// Send a prompt that generates a proposal
|
||||
await po.sendPrompt("Create a simple React component");
|
||||
|
||||
// Wait for proposal buttons to appear (ensuring proposal is rendered)
|
||||
await expect(po.page.getByTestId("approve-proposal-button")).toBeVisible();
|
||||
|
||||
// Type something in the input to ensure it's not disabled due to empty input
|
||||
await po.getChatInput().fill("test message");
|
||||
|
||||
// Check send button is disabled due to pending changes
|
||||
const sendButton = po.page.getByRole("button", { name: "Send message" });
|
||||
await expect(sendButton).toBeDisabled();
|
||||
|
||||
// Approve the proposal
|
||||
await po.approveProposal();
|
||||
|
||||
// Check send button is enabled again
|
||||
await expect(sendButton).toBeEnabled();
|
||||
});
|
||||
|
||||
test("send button disabled during pending proposal - reject", async ({
|
||||
po,
|
||||
}) => {
|
||||
await po.setUp();
|
||||
|
||||
// Send a prompt that generates a proposal
|
||||
await po.sendPrompt("Create a simple React component");
|
||||
|
||||
// Wait for proposal buttons to appear (ensuring proposal is rendered)
|
||||
await expect(po.page.getByTestId("reject-proposal-button")).toBeVisible();
|
||||
|
||||
// Type something in the input to ensure it's not disabled due to empty input
|
||||
await po.getChatInput().fill("test message");
|
||||
|
||||
// Check send button is disabled due to pending changes
|
||||
const sendButton = po.page.getByRole("button", { name: "Send message" });
|
||||
await expect(sendButton).toBeDisabled();
|
||||
|
||||
// Reject the proposal
|
||||
await po.rejectProposal();
|
||||
|
||||
// Check send button is enabled again
|
||||
await expect(sendButton).toBeEnabled();
|
||||
});
|
||||
Reference in New Issue
Block a user