diff --git a/apps/web/__e2e__/search.test.ts b/apps/web/__e2e__/search.test.ts
new file mode 100644
index 000000000..b6fce7260
--- /dev/null
+++ b/apps/web/__e2e__/search.test.ts
@@ -0,0 +1,55 @@
+/*
+This file is part of the Notesnook project (https://notesnook.com/)
+
+Copyright (C) 2023 Streetwriters (Private) Limited
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+import { test, expect } from "@playwright/test";
+import { AppModel } from "./models/app.model";
+import { getTestId } from "./utils";
+
+test("closing search via close button should clear query", async ({ page }) => {
+ const app = new AppModel(page);
+ await app.goto();
+ let searchinput = page.locator(getTestId("search-input"));
+ const searchButton = page.locator(getTestId("search-button"));
+ const openSearch = page.locator(getTestId("open-search"));
+
+ await openSearch.click();
+ await page.keyboard.type("test");
+ await page.waitForTimeout(500);
+ await searchButton.click();
+ await openSearch.click();
+
+ expect(await searchinput.inputValue()).toBe("");
+});
+
+test("closing search via keyboard escape button should not clear query", async ({
+ page
+}) => {
+ const app = new AppModel(page);
+ await app.goto();
+ const searchinput = page.locator(getTestId("search-input"));
+ const openSearch = page.locator(getTestId("open-search"));
+
+ await openSearch.click();
+ await page.keyboard.type("test");
+ await page.waitForTimeout(500);
+ await page.keyboard.press("Escape");
+ await openSearch.click();
+
+ expect(await searchinput.inputValue()).toBe("test");
+});
diff --git a/apps/web/src/components/route-container/index.tsx b/apps/web/src/components/route-container/index.tsx
index 269485344..6da013fdb 100644
--- a/apps/web/src/components/route-container/index.tsx
+++ b/apps/web/src/components/route-container/index.tsx
@@ -110,10 +110,29 @@ function Header(props: RouteContainerProps) {
onClick: () =>
useSearchStore.setState({
isSearching: false,
- searchType: undefined
+ searchType: undefined,
+ query: undefined
})
}}
/>
+ {!isMobile && buttons?.create && (
+
+ )}
);