Skip to content

Commit 19405f6

Browse files
sjhuclaude
andcommitted
fix(perplexity-web): always navigate home before new search
Perplexity was returning stale results because the page stayed on the previous search URL. Now always navigates to home page, clears input, types fresh query, and waits for URL change confirmation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent f03bafd commit 19405f6

1 file changed

Lines changed: 12 additions & 9 deletions

File tree

src/zero-token/providers/perplexity-web-client-browser.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -146,11 +146,9 @@ export class PerplexityWebClientBrowser {
146146
// Perplexity's /search API now returns HTML, not SSE, so we interact via DOM.
147147
const page = this.page;
148148

149-
// Navigate to home page if currently on a search result page
150-
if (page.url().includes("/search/") || page.url().includes("/c/")) {
151-
await page.goto("https://www.perplexity.ai/", { waitUntil: "domcontentloaded" });
152-
await page.waitForTimeout(2000);
153-
}
149+
// Always navigate to home page for a fresh search
150+
await page.goto("https://www.perplexity.ai/", { waitUntil: "domcontentloaded" });
151+
await page.waitForTimeout(2000);
154152

155153
// Find and focus the input
156154
const inputSel = 'div[contenteditable="true"], [role="textbox"], textarea';
@@ -161,18 +159,23 @@ export class PerplexityWebClientBrowser {
161159
await inputHandle.click();
162160
await page.waitForTimeout(300);
163161

164-
// Type message using Playwright keyboard (more reliable than dispatchEvent)
162+
// Clear any residual text, then type message
163+
await page.keyboard.press("Meta+a");
164+
await page.keyboard.press("Backspace");
165165
await page.keyboard.type(message, { delay: 20 });
166166
await page.waitForTimeout(500);
167167

168168
// Press Enter to submit
169169
await page.keyboard.press("Enter");
170170
console.log("[Perplexity Web Browser] DOM: typed message and pressed Enter");
171171

172-
// Wait for URL change (Perplexity navigates to /search/... on submit)
172+
// Wait for URL to change from home to a search result page
173173
try {
174-
await page.waitForURL(/perplexity\.ai\/(search|c)\//, { timeout: 15000 });
175-
console.log("[Perplexity Web Browser] DOM: navigated to search result page");
174+
await page.waitForURL(
175+
(url) => url.pathname.startsWith("/search/") || url.pathname.startsWith("/c/"),
176+
{ timeout: 15000 },
177+
);
178+
console.log("[Perplexity Web Browser] DOM: navigated to", page.url());
176179
} catch {
177180
console.log("[Perplexity Web Browser] DOM: no URL change after Enter, polling anyway");
178181
}

0 commit comments

Comments
 (0)