test: skip recording test, write proper test flow for manual testing

This commit is contained in:
Tommy D. Rossi
2026-01-23 17:23:49 +01:00
parent b52928cc90
commit e79dd472db
+38 -21
View File
@@ -2616,19 +2616,19 @@ describe('MCP Server Tests', () => {
await page.close() await page.close()
}, 60000) }, 60000)
it('should record screen with navigation using chrome.tabCapture', async () => { // Skip: chrome.tabCapture.getMediaStreamId() requires activeTab permission,
// chrome.tabCapture.getMediaStreamId() requires activeTab permission, // which Chrome only grants through actual user gestures (clicking extension icon).
// which Chrome only grants through actual user gestures (clicking extension icon). // To run manually: remove .skip, click extension icon on the tab, then run test.
// This test verifies the code paths work; actual recording requires user interaction. it.skip('should record screen with navigation using chrome.tabCapture', async () => {
const browserContext = getBrowserContext() const browserContext = getBrowserContext()
const serviceWorker = await getExtensionServiceWorker(browserContext) const serviceWorker = await getExtensionServiceWorker(browserContext)
// Create a page with extension enabled // Create a page with extension enabled
const recordingPage = await browserContext.newPage() const recordingPage = await browserContext.newPage()
await recordingPage.goto('https://example.com/', { waitUntil: 'domcontentloaded' }) await recordingPage.goto('https://news.ycombinator.com/', { waitUntil: 'domcontentloaded' })
await recordingPage.bringToFront() await recordingPage.bringToFront()
// Enable extension on this tab (user must click extension icon for activeTab)
await serviceWorker.evaluate(async () => { await serviceWorker.evaluate(async () => {
await globalThis.toggleExtensionForActiveTab() await globalThis.toggleExtensionForActiveTab()
}) })
@@ -2639,24 +2639,41 @@ describe('MCP Server Tests', () => {
fs.mkdirSync(path.dirname(outputPath), { recursive: true }) fs.mkdirSync(path.dirname(outputPath), { recursive: true })
} }
const { startRecording } = await import('./screen-recording.js') const { startRecording, stopRecording, isRecording } = await import('./screen-recording.js')
try { // Start recording
await startRecording({ const startResult = await startRecording({
page: recordingPage, page: recordingPage,
outputPath, outputPath,
relayPort: TEST_PORT, frameRate: 30,
}) audio: false,
// If we get here, recording started (unlikely without user gesture) videoBitsPerSecond: 1500000,
console.log('Recording started successfully') relayPort: TEST_PORT,
} catch (error: any) { })
// Expected: activeTab not granted without user clicking extension icon expect(startResult.isRecording).toBe(true)
expect(error.message).toContain('not been invoked')
console.log('Expected error: activeTab requires user gesture')
}
// Navigate - recording should survive
await recordingPage.locator('.titleline a').first().click()
await recordingPage.waitForLoadState('domcontentloaded')
await new Promise(r => setTimeout(r, 500))
await recordingPage.goBack()
await recordingPage.waitForLoadState('domcontentloaded')
// Verify still recording after navigation
const status = await isRecording({ page: recordingPage, relayPort: TEST_PORT })
expect(status.isRecording).toBe(true)
// Stop and verify output
const stopResult = await stopRecording({ page: recordingPage, relayPort: TEST_PORT })
expect(stopResult.path).toBe(outputPath)
expect(stopResult.size).toBeGreaterThan(10000)
expect(fs.existsSync(outputPath)).toBe(true)
// Cleanup
await recordingPage.close() await recordingPage.close()
}, 30000) fs.unlinkSync(outputPath)
}, 60000)
}) })