mirror of
https://github.com/germondai/trawl.git
synced 2026-08-17 12:11:23 +02:00
test: add browser pool smoke tests
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
import { Camoufox } from "camoufox-js"
|
||||
|
||||
// Prevent crash when Firefox page errors have no location (CF/captcha JS errors)
|
||||
process.on("uncaughtException", (err) => {
|
||||
if (err instanceof TypeError && err.message.includes("undefined is not an object")) return
|
||||
console.error("[uncaught]", err.message)
|
||||
process.exit(1)
|
||||
})
|
||||
|
||||
async function main() {
|
||||
const browser: any = await Camoufox({
|
||||
headless: true,
|
||||
geoip: true,
|
||||
humanize: true,
|
||||
disable_coop: true,
|
||||
block_webrtc: true,
|
||||
iKnowWhatImDoing: true,
|
||||
})
|
||||
const ctx = await browser.newContext({ viewport: null })
|
||||
const page = await ctx.newPage()
|
||||
|
||||
console.log("[1] example.com...")
|
||||
await page
|
||||
.goto("https://example.com", { waitUntil: "networkidle", timeout: 15000 })
|
||||
.catch((e) => console.log("err:", e.message))
|
||||
console.log(
|
||||
"[1] content:",
|
||||
(await page.content().catch(() => "")).length,
|
||||
"title:",
|
||||
await page.title().catch(() => "?"),
|
||||
)
|
||||
|
||||
const page2 = await ctx.newPage()
|
||||
console.log("[2] nopecha.com...")
|
||||
await page2
|
||||
.goto("https://nopecha.com", { waitUntil: "domcontentloaded", timeout: 15000 })
|
||||
.catch((e) => console.log("err:", e.message))
|
||||
await new Promise((r) => setTimeout(r, 3000))
|
||||
console.log(
|
||||
"[2] content:",
|
||||
(await page2.content().catch(() => "")).length,
|
||||
"title:",
|
||||
await page2.title().catch(() => "?"),
|
||||
)
|
||||
|
||||
console.log("[3] nopecha.com/demo/cloudflare...")
|
||||
await page2
|
||||
.goto("https://nopecha.com/demo/cloudflare", { waitUntil: "domcontentloaded", timeout: 30000 })
|
||||
.catch((e) => console.log("err:", e.message))
|
||||
for (let i = 0; i < 15; i++) {
|
||||
await new Promise((r) => setTimeout(r, 2000))
|
||||
const html = await page2.content().catch(() => "")
|
||||
const title = await page2.title().catch(() => "?")
|
||||
const url = page2.url()
|
||||
console.log(`[3.${i}] len=${html.length} title="${title}" url=${url.slice(0, 80)}`)
|
||||
if (!/Just a moment/i.test(title) && html.length > 200) break
|
||||
}
|
||||
|
||||
const cookies = await ctx.cookies()
|
||||
console.log(
|
||||
"[3] cf_clearance:",
|
||||
cookies.some((c: any) => c.name === "cf_clearance"),
|
||||
)
|
||||
|
||||
await browser.close()
|
||||
}
|
||||
|
||||
main().catch((e) => {
|
||||
console.error("FAIL:", e.message)
|
||||
process.exit(1)
|
||||
})
|
||||
Reference in New Issue
Block a user