Skip to content

feat(crawler): P3b — remove Playwright entirely, Firecrawl everywhere#9

Merged
Bharath-code merged 3 commits into
mainfrom
feat/p3b-playwright-exit
Jul 12, 2026
Merged

feat(crawler): P3b — remove Playwright entirely, Firecrawl everywhere#9
Bharath-code merged 3 commits into
mainfrom
feat/p3b-playwright-exit

Conversation

@Bharath-code

Copy link
Copy Markdown
Owner

Completes the Firecrawl consolidation (P3b of docs/FIRECRAWL_CONSOLIDATION.md). The playwright dependency and the Trigger.dev playwright build extension are gone — container builds get lighter and there's no Chromium to install anywhere.

What moved

  • screenshot.ts — rewritten on Firecrawl (full-page screenshot format → buffer). Returns a sniffed contentType (png/jpeg) so Gemini vision gets the real mime type instead of assumed jpeg.
  • techStackDetector.ts — Firecrawl-rendered HTML (script srcs parsed from markup) + a plain fetch for response headers. Header signatures (cf-ray, x-vercel, x-nf, x-amz-cf) survive; only window globals signatures were dropped — the accepted browserless tradeoff from the blueprint.
  • performanceInsights.ts — deleted outright: it had zero callers; deepAudit already uses Google PageSpeed Insights.
  • analyzeCompetitor / dailyAnalysis — inline chromium screenshot blocks replaced with captureScreenshot(); screenshot failure now skips the competitor instead of crashing the run.
  • pricing_snapshots.source written as firecrawl (type union keeps playwright for reading old rows).

Verification

  • npm run verify green: typecheck clean, 482 tests pass, production build succeeds.
  • All four affected test files rewritten against Firecrawl mocks (24 tests).

⚠️ Reminder: production needs FIRECRAWL_API_KEY set in Trigger.dev env vars — the vision/daily-analysis jobs now call Firecrawl too.

🤖 Generated with Claude Code

- screenshot.ts: Firecrawl full-page screenshot + fetchScreenshotBuffer,
  returns sniffed contentType (png/jpeg) for Gemini vision
- techStackDetector: Firecrawl-rendered HTML for script/html/meta signatures
  + plain fetch for response headers (cf-ray/x-vercel/x-nf survive);
  window-globals signatures dropped (browserless tradeoff, per blueprint)
- performanceInsights.ts deleted — zero callers; deepAudit already uses
  Google PageSpeed Insights
- analyzeCompetitor + dailyAnalysis: inline chromium blocks -> captureScreenshot()
- pricing_snapshots.source now 'firecrawl' on write (union keeps 'playwright' for old rows)
- Removed playwright + @trigger.dev/build deps and the Trigger playwright
  build extension; tests rewritten against Firecrawl mocks

Verified: npm run verify green (typecheck, 482 tests, build).

Co-Authored-By: Claude Fable 5 <[email protected]>
@vercel

vercel Bot commented Jul 11, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
rivaleye Ready Ready Preview, Comment Jul 11, 2026 5:07pm

@kilo-code-bot

kilo-code-bot Bot commented Jul 11, 2026

Copy link
Copy Markdown

Kilo Code Review could not run — your account is out of credits.

Add credits or switch to a free model to enable reviews on this change.

Bharath-code and others added 2 commits July 11, 2026 22:35
The changes job read outputs from the wrong step (steps.filter has no
backend/frontend/any outputs, and 'files' is an input not an output),
so 'any' was always empty and Lint/TypeScript/Tests/Build always skipped.

Co-Authored-By: Claude Fable 5 <[email protected]>
…on passes

/api/webhook constructs Webhooks() at module scope; standardwebhooks throws
'Secret can't be empty' during build page-data collection without it.
Pre-existing failure surfaced by the changes-filter fix (Build never ran before).

Co-Authored-By: Claude Fable 5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant