Files
ArtPlayer/test/browser/fixtures.js
T

34 lines
1.6 KiB
JavaScript

import process from 'node:process'
import { test as base, expect } from '@playwright/test'
export const test = base.extend({
diagnostics: [async ({ page, browser, request }, use, testInfo) => {
const errors = []
const consoleErrors = []
const failedRequests = []
page.on('pageerror', error => errors.push(error.message))
page.on('console', (message) => {
if (message.type() === 'error')
consoleErrors.push(message.text())
})
page.on('requestfailed', request => failedRequests.push({ url: request.url(), resourceType: request.resourceType(), failure: request.failure() }))
await use({ errors, consoleErrors, failedRequests })
const manifest = await (await request.get('/test/manifest.json')).json()
const state = page.isClosed()
? null
: await page.evaluate(() => {
const video = document.querySelector('video')
return {
url: location.href,
userAgent: navigator.userAgent,
events: window.events,
media: video ? { source: video.currentSrc, width: video.videoWidth, height: video.videoHeight, duration: video.duration, currentTime: video.currentTime, error: video.error?.code } : null,
}
}).catch(() => null)
await testInfo.attach('browser-evidence', { contentType: 'application/json', body: JSON.stringify({ browser: browser.version(), platform: process.platform, manifest, state, errors, consoleErrors, failedRequests }, null, 2) })
expect(errors, 'Unhandled browser errors').toEqual([])
}, { auto: true }],
})
export { expect }