|
- import { chromium } from '@playwright/test'
-
- const browser = await chromium.launch({ headless: true })
- const results = []
- try {
- for (const suffix of ['', '1']) {
- const page = await browser.newPage()
- const responses = []
- page.on('response', (response) => {
- if (response.url().endsWith('.mp4')) responses.push({ status: response.status(), headers: response.headers() })
- })
- await page.goto('http://127.0.0.1:6180/')
- const result = await page.evaluate(async (suffix) => {
- const video = document.createElement('video')
- document.body.replaceChildren(video)
- const source = `/videos/chinese-maintenance/china-military-repair-workshop-hd-45s-system-pose${suffix}.mp4`
- video.muted = true
- video.preload = 'auto'
- video.autoplay = true
- const event = await new Promise((resolve) => {
- const timer = setTimeout(() => resolve('timeout'), 15000)
- for (const name of ['loadeddata', 'error']) video.addEventListener(name, () => { clearTimeout(timer); resolve(name) }, { once: true })
- video.src = source
- video.load()
- })
- return { source, event, canPlayH264: video.canPlayType('video/mp4; codecs="avc1.4d402a, mp4a.40.2"'), readyState: video.readyState, networkState: video.networkState, duration: Number.isFinite(video.duration) ? video.duration : null, width: video.videoWidth, height: video.videoHeight, error: video.error ? { code: video.error.code, message: video.error.message } : null }
- }, suffix)
- results.push({ ...result, responses })
- await page.close()
- }
- } finally {
- await browser.close()
- }
- console.log(JSON.stringify(results, null, 2))
|