summaryrefslogtreecommitdiff
path: root/test/format.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'test/format.test.ts')
-rw-r--r--test/format.test.ts20
1 files changed, 19 insertions, 1 deletions
diff --git a/test/format.test.ts b/test/format.test.ts
index 3060a62..74e37e1 100644
--- a/test/format.test.ts
+++ b/test/format.test.ts
@@ -15,9 +15,16 @@ test("results are numbered, with the URL on its own line", () => {
searchUrl: "https://www.google.com/search?q=q",
finalUrl: "https://www.google.com/search?q=q",
endpoint: "10.88.0.25:9223 (built-in default)",
+ engine: "Google",
+ engineSource: "built-in default",
results,
});
- assert.match(text, /^Search results for "q" \(2 hits, via Chrome at 10\.88\.0\.25:9223 \(built-in default\)\)/);
+ // The engine has to be named on every result set: the agent may have switched
+ // engines to get around a block, and two indexes are not interchangeable.
+ assert.match(
+ text,
+ /^Search results for "q" — 2 hits from Google \(built-in default\), via Chrome at 10\.88\.0\.25:9223 \(built-in default\)$/m,
+ );
assert.match(text, /^1\. First$/m);
assert.match(text, /^ {3}https:\/\/example\.com\/1$/m);
assert.match(text, /^2\. Second$/m);
@@ -31,6 +38,8 @@ test("a redirect is reported, because the query URL is then not where we looked"
searchUrl: "https://www.google.com/search?q=q",
finalUrl: "https://www.google.com/search?q=q&sei=abc",
endpoint: "e",
+ engine: "Bing",
+ engineSource: "/search-engine",
results,
});
assert.match(text, /^Landed on: https:\/\/www\.google\.com\/search\?q=q&sei=abc$/m);
@@ -41,6 +50,8 @@ test("the challenge error tells the agent to hand off to a human, with the URL",
challenge: "captcha-widget",
pageUrl: "https://www.google.com/sorry/index?continue=x",
endpoint: "10.88.0.25:9223 (built-in default)",
+ engine: "Google",
+ alternatives: ["duckduckgo", "bing", "brave"],
detail: "Our systems have detected unusual traffic",
});
assert.equal(err.name, "SearchChallengeError");
@@ -49,4 +60,11 @@ test("the challenge error tells the agent to hand off to a human, with the URL",
assert.match(err.message, /https:\/\/www\.google\.com\/sorry\/index\?continue=x/);
assert.match(err.message, /Ask the user/);
assert.match(err.message, /10\.88\.0\.25:9223/);
+ // Switching engines is the agent's own move and must be offered before the
+ // human handoff, since a block on one engine says nothing about the others.
+ for (const alt of ["duckduckgo", "bing", "brave"]) assert.match(err.message, new RegExp(alt));
+ assert.ok(
+ err.message.indexOf("retry the same query with engine") < err.message.indexOf("Ask the user"),
+ "the self-service fallback must come before the human handoff",
+ );
});