feat(amazon-shopping): scrape and filter amazon product results
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { describe, it } from "node:test";
|
||||
|
||||
import { createMarkdownReport, createResponse } from "../src/report.js";
|
||||
|
||||
describe("report", () => {
|
||||
it("creates a structured JSON response", () => {
|
||||
const response = createResponse({
|
||||
query: "usb c cable",
|
||||
filters: { includeKeywords: [], excludeKeywords: [], minReviews: 1000 },
|
||||
limit: 1,
|
||||
maxSearchPages: 2,
|
||||
results: [],
|
||||
filteredOutCount: 4,
|
||||
warnings: ["partial extraction"],
|
||||
now: () => new Date("2026-04-15T00:00:00.000Z")
|
||||
});
|
||||
|
||||
assert.equal(response.source.site, "amazon.com");
|
||||
assert.equal(response.filteredOutCount, 4);
|
||||
assert.equal(response.source.scrapedAt, "2026-04-15T00:00:00.000Z");
|
||||
});
|
||||
|
||||
it("creates concise markdown with product details and warnings", () => {
|
||||
const markdown = createMarkdownReport(createResponse({
|
||||
query: "usb c cable",
|
||||
filters: { includeKeywords: [], excludeKeywords: [] },
|
||||
limit: 1,
|
||||
maxSearchPages: 2,
|
||||
filteredOutCount: 0,
|
||||
warnings: ["price missing for one item"],
|
||||
now: () => new Date("2026-04-15T00:00:00.000Z"),
|
||||
results: [{
|
||||
asin: "B0TEST0001",
|
||||
title: "USB-C Cable",
|
||||
url: "https://www.amazon.com/dp/B0TEST0001",
|
||||
price: { amount: 9.99, currency: "USD", display: "$9.99" },
|
||||
rating: 4.7,
|
||||
reviewCount: 1234,
|
||||
delivery: { display: "FREE delivery Tomorrow", free: true },
|
||||
specs: [{ name: "Length", value: "6 ft" }],
|
||||
bullets: ["Braided cable"],
|
||||
matchedFilters: [],
|
||||
missingFields: ["starBreakdown"],
|
||||
extractionNotes: []
|
||||
}]
|
||||
}));
|
||||
|
||||
assert.match(markdown, /USB-C Cable/);
|
||||
assert.match(markdown, /\$9\.99/);
|
||||
assert.match(markdown, /4\.7 stars/);
|
||||
assert.match(markdown, /price missing/);
|
||||
assert.match(markdown, /https:\/\/www\.amazon\.com\/dp\/B0TEST0001/);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user