feat: re-enable billing tests

This commit is contained in:
Gergő Móricz 2025-06-03 15:41:40 +02:00
parent 1307648781
commit d3b6b0da34

View File

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