Skip to content

Commit

Permalink
fix: soft error on setting headers for broken target
Browse files Browse the repository at this point in the history
Fixes #210
  • Loading branch information
harlan-zw committed Apr 24, 2024
1 parent 22fe300 commit e4619d9
Showing 1 changed file with 18 additions and 7 deletions.
25 changes: 18 additions & 7 deletions packages/core/src/puppeteer/util.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
import type { Page } from 'puppeteer-core'
import { useUnlighthouse } from '../unlighthouse'
import { useLogger, useUnlighthouse } from '../unlighthouse'

export async function setupPage(page: Page) {
const { resolvedConfig, hooks } = useUnlighthouse()

const logger = useLogger()
const softErrorHandler = (ctx: string) => (err: Error) => {
logger.error(ctx, err)
}
const browser = page.browser()
// ignore csp errors
await page.setBypassCSP(true)

if (resolvedConfig.auth)
await page.authenticate(resolvedConfig.auth)
await page.authenticate(resolvedConfig.auth).catch(softErrorHandler('Failed to authenticate'))

// set local storage
if (resolvedConfig.localStorage) {
Expand All @@ -22,21 +25,29 @@ export async function setupPage(page: Page) {
resolvedConfig.localStorage,
)
}
if (resolvedConfig.cookies)
if (resolvedConfig.cookies) {
await page.setCookie(...resolvedConfig.cookies.map(cookie => ({ domain: resolvedConfig.site, ...cookie })))
if (resolvedConfig.extraHeaders)
.catch(softErrorHandler('Failed to set cookies'))
}
if (resolvedConfig.extraHeaders) {
await page.setExtraHTTPHeaders(resolvedConfig.extraHeaders)
.catch(softErrorHandler('Failed to set extra headers'))
}

// Wait for Lighthouse to open url, then allow hook to run
browser.on('targetchanged', async (target) => {
const page = await target.page()
if (page) {
// in case they get reset
if (resolvedConfig.cookies)
if (resolvedConfig.cookies) {
await page.setCookie(...resolvedConfig.cookies.map(cookie => ({ domain: resolvedConfig.site, ...cookie })))
.catch(softErrorHandler('Failed to set cookies'))
}
// set local storage
if (resolvedConfig.extraHeaders)
if (resolvedConfig.extraHeaders) {
await page.setExtraHTTPHeaders(resolvedConfig.extraHeaders)
.catch(softErrorHandler('Failed to set extra headers'))
}
await hooks.callHook('puppeteer:before-goto', page)
}
})
Expand Down

0 comments on commit e4619d9

Please sign in to comment.