// import { batchScrape, crawl, creditUsage, extract, map, scrape, search, tokenUsage } from "./lib"; // const sleep = (ms: number) => new Promise(x => setTimeout(() => x(true), ms)); // const sleepForBatchBilling = () => sleep(20000); // beforeAll(async () => { // // Wait for previous test runs to stop billing processing // if (!process.env.TEST_SUITE_SELF_HOSTED) { // await sleep(40000); // } // }, 50000); // describe("Billing tests", () => { // if (process.env.TEST_SUITE_SELF_HOSTED) { // it("dummy", () => { // expect(true).toBe(true); // }); // } else { // it("bills scrape correctly", async () => { // const rc1 = (await creditUsage()).remaining_credits; // // Run all scrape operations in parallel with Promise.all // await Promise.all([ // // scrape 1: regular fc.dev scrape (1 credit) // scrape({ // url: "https://firecrawl.dev" // }), // // scrape 1.1: regular fc.dev scrape (1 credit) // scrape({ // url: "https://firecrawl.dev" // }), // // scrape 2: fc.dev with json (5 credits) // scrape({ // url: "https://firecrawl.dev", // formats: ["json"], // jsonOptions: { // schema: { // type: "object", // properties: { // is_open_source: { type: "boolean" }, // }, // required: ["is_open_source"], // }, // }, // }) // ]); // // sum: 7 credits // await sleepForBatchBilling(); // const rc2 = (await creditUsage()).remaining_credits; // expect(rc1 - rc2).toBe(7); // }, 120000); // it("bills batch scrape correctly", async () => { // const rc1 = (await creditUsage()).remaining_credits; // // Run both scrape operations in parallel with Promise.all // const [scrape1, scrape2] = await Promise.all([ // // scrape 1: regular batch scrape with failing domain (2 credits) // batchScrape({ // urls: [ // "https://firecrawl.dev", // "https://mendable.ai", // "https://thisdomaindoesnotexistandwillfail.fcr", // ], // }), // // scrape 2: batch scrape with json (10 credits) // batchScrape({ // urls: [ // "https://firecrawl.dev", // "https://mendable.ai", // "https://thisdomaindoesnotexistandwillfail.fcr", // ], // formats: ["json"], // jsonOptions: { // schema: { // type: "object", // properties: { // four_word_summary: { type: "string" }, // }, // required: ["four_word_summary"], // }, // }, // }) // ]); // // sum: 12 credits // await sleepForBatchBilling(); // const rc2 = (await creditUsage()).remaining_credits; // expect(rc1 - rc2).toBe(12); // }, 600000); // it("bills crawl correctly", async () => { // const rc1 = (await creditUsage()).remaining_credits; // // Run both crawl operations in parallel with Promise.all // const [crawl1, crawl2] = await Promise.all([ // // crawl 1: regular fc.dev crawl (x credits) // crawl({ // url: "https://firecrawl.dev", // }), // // crawl 2: fc.dev crawl with json (5y credits) // crawl({ // url: "https://firecrawl.dev", // scrapeOptions: { // formats: ["json"], // jsonOptions: { // schema: { // type: "object", // properties: { // four_word_summary: { type: "string" }, // }, // required: ["four_word_summary"], // }, // }, // } // }) // ]); // expect(crawl1.success).toBe(true); // expect(crawl2.success).toBe(true); // // sum: x+5y credits // await sleepForBatchBilling(); // const rc2 = (await creditUsage()).remaining_credits; // if (crawl1.success && crawl2.success) { // expect(rc1 - rc2).toBe(crawl1.completed + crawl2.completed * 5); // } // }, 600000); // it("bills map correctly", async () => { // const rc1 = (await creditUsage()).remaining_credits; // await map({ url: "https://firecrawl.dev" }); // await sleepForBatchBilling(); // const rc2 = (await creditUsage()).remaining_credits; // expect(rc1 - rc2).toBe(1); // }, 60000); // it("bills search correctly", async () => { // const rc1 = (await creditUsage()).remaining_credits; // const results = await search({ // query: "firecrawl" // }); // await sleepForBatchBilling(); // const rc2 = (await creditUsage()).remaining_credits; // expect(rc1 - rc2).toBe(results.length); // }, 60000); // it("bills extract correctly", async () => { // const rc1 = (await tokenUsage()).remaining_tokens; // await extract({ // urls: ["https://firecrawl.dev"], // schema: { // "type": "object", // "properties": { // "is_open_source": { // "type": "boolean" // } // }, // "required": [ // "is_open_source" // ] // }, // origin: "api-sdk", // }); // await sleepForBatchBilling(); // const rc2 = (await tokenUsage()).remaining_tokens; // expect(rc1 - rc2).toBe(305); // }, 300000); // } // }); // temporarily disabled it("is mocked", () => { expect(true).toBe(true); });