feat: strengthen backup and mobile workflows
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import { expect, test as base } from '@playwright/test'
|
||||
|
||||
export const expectedErrors = new WeakMap<object, Set<string>>()
|
||||
export function allowExpectedError(page: object, fragment: string) {
|
||||
expectedErrors.get(page)?.add(fragment)
|
||||
}
|
||||
|
||||
export const test = base.extend({
|
||||
page: async ({ page }, use) => {
|
||||
const failures: string[] = []
|
||||
const allowed = new Set<string>()
|
||||
expectedErrors.set(page, allowed)
|
||||
const record = (message: string) => {
|
||||
if (![...allowed].some(pattern => message.includes(pattern))) failures.push(message)
|
||||
}
|
||||
page.on('pageerror', error => record(`pageerror: ${error.message}`))
|
||||
page.on('console', message => { if (message.type() === 'error') record(`console.error: ${message.text()}`) })
|
||||
page.on('requestfailed', request => record(`requestfailed: ${request.method()} ${request.url()} ${request.failure()?.errorText ?? ''}`))
|
||||
page.on('response', response => {
|
||||
const url = new URL(response.url())
|
||||
const baseURL = new URL(page.url() || 'http://127.0.0.1:5173')
|
||||
if (url.origin === baseURL.origin && response.status() >= 400) record(`http ${response.status()}: ${response.request().method()} ${url.pathname}`)
|
||||
})
|
||||
await use(page)
|
||||
expect(failures, 'unexpected browser/runtime errors').toEqual([])
|
||||
},
|
||||
})
|
||||
|
||||
export { expect }
|
||||
Reference in New Issue
Block a user