From e791fc5478e84588300cb4dff440ca1e44e04da3 Mon Sep 17 00:00:00 2001 From: Dmytro Stanchiev Date: Thu, 30 Apr 2026 22:44:28 -0400 Subject: [PATCH] test(facebook): add live parser suite --- packages/core/test/live/facebook.live.test.ts | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 packages/core/test/live/facebook.live.test.ts diff --git a/packages/core/test/live/facebook.live.test.ts b/packages/core/test/live/facebook.live.test.ts new file mode 100644 index 0000000..4c5fda7 --- /dev/null +++ b/packages/core/test/live/facebook.live.test.ts @@ -0,0 +1,34 @@ +import { describe, expect, test } from "bun:test"; +import fetchFacebookItems from "../../src/scrapers/facebook"; + +const LIVE_RESULT_LIMIT = 3; +const LIVE_TEST_TIMEOUT_MS = 30_000; + +describe("Facebook live parser", () => { + test( + "scrapes live marketplace search results into listing details", + async () => { + if (!process.env.FACEBOOK_COOKIE?.trim()) { + throw new Error("FACEBOOK_COOKIE is required for Facebook live tests"); + } + + const results = await fetchFacebookItems( + "iphone", + 1, + "toronto", + LIVE_RESULT_LIMIT, + ); + + expect(results.length).toBeGreaterThan(0); + for (const listing of results) { + expect(listing.url).toStartWith( + "https://www.facebook.com/marketplace/item/", + ); + expect(listing.title.length).toBeGreaterThan(0); + expect(listing.listingPrice.cents).toBeGreaterThanOrEqual(0); + expect(listing.listingPrice.currency.length).toBeGreaterThan(0); + } + }, + LIVE_TEST_TIMEOUT_MS, + ); +});