From aa26dbe74ee81689f242663d39c44520479d158b Mon Sep 17 00:00:00 2001 From: Nicolas Date: Wed, 20 Nov 2024 17:03:04 -0800 Subject: [PATCH] Nick: map e2e tests --- apps/api/src/__tests__/e2e_map/index.test.ts | 117 +++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 apps/api/src/__tests__/e2e_map/index.test.ts diff --git a/apps/api/src/__tests__/e2e_map/index.test.ts b/apps/api/src/__tests__/e2e_map/index.test.ts new file mode 100644 index 00000000..b065dff1 --- /dev/null +++ b/apps/api/src/__tests__/e2e_map/index.test.ts @@ -0,0 +1,117 @@ +import request from "supertest"; +import dotenv from "dotenv"; + +dotenv.config(); +const TEST_URL = "http://127.0.0.1:3002"; + +describe("E2E Tests for Map API Routes", () => { + it.concurrent( + "(feat-search)should return links containing 'smart-crawl'", + async () => { + const response = await request(TEST_URL) + .post("/v1/map") + .set("Authorization", `Bearer ${process.env.TEST_API_KEY}`) + .set("Content-Type", "application/json") + .send({ + url: "https://firecrawl.dev", + sitemapOnly: false, + search: "smart-crawl", + }); + + console.log(response.body); + expect(response.statusCode).toBe(200); + expect(response.body).toHaveProperty("links"); + expect(response.body.links.length).toBeGreaterThan(0); + expect(response.body.links[0]).toContain("firecrawl.dev/smart-crawl"); + }, + 60000 + ); + + it.concurrent( + "(feat-subdomains) should return mapped links for firecrawl.dev with subdomains included", + async () => { + const response = await request(TEST_URL) + .post("/v1/map") + .set("Authorization", `Bearer ${process.env.TEST_API_KEY}`) + .set("Content-Type", "application/json") + .send({ + url: "https://firecrawl.dev", + sitemapOnly: false, + includeSubdomains: true, + }); + + console.log(response.body); + expect(response.statusCode).toBe(200); + expect(response.body).toHaveProperty("links"); + expect(response.body.links.length).toBeGreaterThan(0); + expect(response.body.links[response.body.links.length - 1]).toContain( + "docs.firecrawl.dev" + ); + }, + 60000 + ); + + it.concurrent( + "(feat-sitemap-only) should return mapped links for firecrawl.dev with sitemap only", + async () => { + const response = await request(TEST_URL) + .post("/v1/map") + .set("Authorization", `Bearer ${process.env.TEST_API_KEY}`) + .set("Content-Type", "application/json") + .send({ + url: "https://firecrawl.dev", + sitemapOnly: true, + }); + + console.log(response.body); + expect(response.statusCode).toBe(200); + expect(response.body).toHaveProperty("links"); + expect(response.body.links.length).toBeGreaterThan(0); + expect(response.body.links[response.body.links.length - 1]).not.toContain( + "docs.firecrawl.dev" + ); + }, + 60000 + ); + + it.concurrent( + "(feat-limit) should return mapped links for firecrawl.dev with a limit", + async () => { + const response = await request(TEST_URL) + .post("/v1/map") + .set("Authorization", `Bearer ${process.env.TEST_API_KEY}`) + .set("Content-Type", "application/json") + .send({ + url: "https://firecrawl.dev", + sitemapOnly: false, + limit: 10, + }); + + console.log(response.body); + expect(response.statusCode).toBe(200); + expect(response.body).toHaveProperty("links"); + expect(response.body.links.length).toBeLessThanOrEqual(10); + }, + 60000 + ); + + it.concurrent( + "(feat-sitemap-large) should return more than 1900 links for geekflare sitemap", + async () => { + const response = await request(TEST_URL) + .post("/v1/map") + .set("Authorization", `Bearer ${process.env.TEST_API_KEY}`) + .set("Content-Type", "application/json") + .send({ + url: "https://geekflare.com/sitemap_index.xml", + sitemapOnly: true, + }); + + console.log(response.body); + expect(response.statusCode).toBe(200); + expect(response.body).toHaveProperty("links"); + expect(response.body.links.length).toBeGreaterThan(1900); + }, + 60000 + ); +});