node-mac-recorder
Version:
Native macOS screen recording package for Node.js applications
95 lines (78 loc) β’ 3.67 kB
JavaScript
const WindowSelector = require('./window-selector');
async function debugTest() {
console.log('π Debug Window Selector Test');
console.log('==============================\n');
const selector = new WindowSelector();
try {
// Δ°zinleri kontrol et
console.log('π Checking permissions...');
const permissions = await selector.checkPermissions();
console.log('Permissions:', JSON.stringify(permissions, null, 2));
if (!permissions.screenRecording || !permissions.accessibility) {
console.log('\nβ MISSING PERMISSIONS!');
console.log('Please enable in System Preferences > Security & Privacy:');
console.log(' β Screen Recording - Add Terminal/your IDE');
console.log(' β Accessibility - Add Terminal/your IDE');
console.log('\nAfter enabling permissions, restart this test.');
return;
}
console.log('β
Permissions OK\n');
// Debug mode ile baΕlat
console.log('π Starting selection with debug info...');
await selector.startSelection();
let windowCount = 0;
selector.on('windowEntered', (window) => {
windowCount++;
console.log(`\n[${windowCount}] π― WINDOW DETECTED:`);
console.log(` App: ${window.appName}`);
console.log(` Title: "${window.title}"`);
console.log(` ID: ${window.id}`);
console.log(` Position: (${window.x}, ${window.y})`);
console.log(` Size: ${window.width} Γ ${window.height}`);
console.log(` π Should auto-focus now...`);
});
selector.on('windowLeft', (window) => {
console.log(`\nπͺ LEFT WINDOW: ${window.appName} - "${window.title}"`);
});
selector.on('error', (error) => {
console.error('\nβ ERROR:', error.message);
});
console.log('π Test Instructions:');
console.log(' 1. Move cursor over different application windows');
console.log(' 2. You should see:');
console.log(' - Blue overlay rectangle around windows');
console.log(' - "Select Window" button in center');
console.log(' - Windows automatically coming to front');
console.log(' 3. If overlay not visible, check permissions');
console.log(' 4. Press Ctrl+C to exit\n');
console.log('π±οΈ START MOVING CURSOR NOW...\n');
// Status monitoring
let statusCount = 0;
setInterval(() => {
statusCount++;
const status = selector.getStatus();
if (statusCount % 50 === 0) { // Every 5 seconds
console.log(`β±οΈ Status Check #${statusCount/50}:`);
console.log(` - Selecting: ${status.isSelecting}`);
console.log(` - Windows found: ${status.nativeStatus?.windowCount || 0}`);
console.log(` - Overlay active: ${status.nativeStatus?.hasOverlay || false}`);
if (status.nativeStatus?.currentWindow) {
console.log(` - Current: ${status.nativeStatus.currentWindow.appName}`);
}
console.log('');
}
}, 100);
} catch (error) {
console.error('β Fatal Error:', error.message);
console.error(error.stack);
}
}
// Handle Ctrl+C gracefully
process.on('SIGINT', async () => {
console.log('\n\nπ Stopping debug test...');
process.exit(0);
});
if (require.main === module) {
debugTest();
}