import assert from "node:assert/strict"; import { readFile } from "node:fs/promises"; import { join } from "node:path"; import { describe, it } from "node:test"; import { extractDetailPage } from "../src/detail-page.js"; const fixturePath = join(import.meta.dirname, "fixtures", "product-detail.html"); describe("extractDetailPage", () => { it("extracts visible product detail fields from sanitized HTML", async () => { const html = await readFile(fixturePath, "utf8"); const details = extractDetailPage(html, { asin: "B0TESTLED1", title: "Search title", url: "https://www.amazon.com/dp/B0TESTLED1", specs: [], bullets: [], matchedFilters: [], missingFields: [], extractionNotes: [] }); assert.equal(details.title, "Bright Daylight LED Bulbs 100W Equivalent, 50 Count"); assert.equal(details.price?.amount, 18.99); assert.equal(details.delivery?.free, true); assert.equal(details.availability, "In Stock"); assert.equal(details.seller, "Ships from Amazon.com"); assert.equal(details.bullets.length, 2); assert.deepEqual(details.specs[0], { name: "Brand", value: "BrightCo" }); assert.equal(details.rating, 4.6); assert.equal(details.reviewCount, 1234); assert.equal(details.starBreakdown?.five, 72); }); it("records missing detail-only fields", () => { const details = extractDetailPage("
| Special Feature | (function(P) { tracking(); }) Real feature text |
| A19 Add to Cart logShoppableMetrics("x", true) | Buying Options |
| Wattage | 15 watts |
| Customer Reviews | 4.7 out of 5 stars tracking payload |