( iframe: HTMLIFrameElement, width: number, height: number, )
| 490 | } |
| 491 | |
| 492 | async function setIframeViewport( |
| 493 | iframe: HTMLIFrameElement, |
| 494 | width: number, |
| 495 | height: number, |
| 496 | ) { |
| 497 | const ui = getUiAPI() |
| 498 | if (ui) { |
| 499 | await ui.setIframeViewport(width, height) |
| 500 | } |
| 501 | else if (getBrowserState().provider === 'webdriverio') { |
| 502 | iframe.parentElement?.setAttribute('data-scale', '1') |
| 503 | await client.rpc.triggerCommand( |
| 504 | getBrowserState().sessionId, |
| 505 | '__vitest_viewport', |
| 506 | undefined, |
| 507 | [{ width, height }], |
| 508 | ) |
| 509 | } |
| 510 | else { |
| 511 | const scale = Math.min( |
| 512 | 1, |
| 513 | iframe.parentElement!.parentElement!.clientWidth / width, |
| 514 | iframe.parentElement!.parentElement!.clientHeight / height, |
| 515 | ) |
| 516 | iframe.parentElement!.style.cssText = ` |
| 517 | width: ${width}px; |
| 518 | height: ${height}px; |
| 519 | transform: scale(${scale}); |
| 520 | transform-origin: left top; |
| 521 | ` |
| 522 | iframe.parentElement?.setAttribute('data-scale', String(scale)) |
| 523 | await new Promise(r => requestAnimationFrame(r)) |
| 524 | } |
| 525 | } |
| 526 | |
| 527 | function debug(...args: unknown[]) { |
| 528 | const debug = getConfig().env.VITEST_BROWSER_DEBUG |
no test coverage detected