You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

35 line
1.6 KiB

  1. import { chromium } from '@playwright/test'
  2. const browser = await chromium.launch({ headless: true })
  3. const results = []
  4. try {
  5. for (const suffix of ['', '1']) {
  6. const page = await browser.newPage()
  7. const responses = []
  8. page.on('response', (response) => {
  9. if (response.url().endsWith('.mp4')) responses.push({ status: response.status(), headers: response.headers() })
  10. })
  11. await page.goto('http://127.0.0.1:6180/')
  12. const result = await page.evaluate(async (suffix) => {
  13. const video = document.createElement('video')
  14. document.body.replaceChildren(video)
  15. const source = `/videos/chinese-maintenance/china-military-repair-workshop-hd-45s-system-pose${suffix}.mp4`
  16. video.muted = true
  17. video.preload = 'auto'
  18. video.autoplay = true
  19. const event = await new Promise((resolve) => {
  20. const timer = setTimeout(() => resolve('timeout'), 15000)
  21. for (const name of ['loadeddata', 'error']) video.addEventListener(name, () => { clearTimeout(timer); resolve(name) }, { once: true })
  22. video.src = source
  23. video.load()
  24. })
  25. 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 }
  26. }, suffix)
  27. results.push({ ...result, responses })
  28. await page.close()
  29. }
  30. } finally {
  31. await browser.close()
  32. }
  33. console.log(JSON.stringify(results, null, 2))