quarc/tests/unit/run-tests.ts

90 lines
2.6 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env node
/**
* Główny skrypt do uruchamiania wszystkich testów Quarc
*/
import { execSync } from 'child_process';
import { existsSync } from 'fs';
import { join } from 'path';
const testDir = __dirname;
console.log('🧪 Uruchamianie wszystkich testów Quarc Framework\n');
// Lista plików testowych (tylko testy działające w Node.js)
// test-style-injection.ts i test-ngif-alias.ts wymagają środowiska przeglądarki (HTMLElement)
const testFiles = [
'test-processors.ts',
'test-inject.ts',
'test-functionality.ts',
'test-lifecycle.ts',
'test-signals-reactivity.ts',
'test-directives.ts',
];
let totalPassed = 0;
let totalFailed = 0;
for (const testFile of testFiles) {
const testPath = join(testDir, testFile);
if (!existsSync(testPath)) {
console.log(`⚠️ Plik testowy nie istnieje: ${testFile}`);
continue;
}
console.log(`\n📂 Uruchamianie testów z: ${testFile}`);
console.log('─'.repeat(50));
try {
// Uruchom test przez ts-node lub node (jeśli skompilowany)
const isCompiled = testFile.endsWith('.js');
const command = isCompiled
? `node "${testPath}"`
: `npx ts-node "${testPath}"`;
const output = execSync(command, {
encoding: 'utf8',
stdio: 'pipe',
cwd: testDir
});
console.log(output);
// Próba wyodrębnienia wyników
const lines = output.split('\n');
const summaryLine = lines.find(line => line.includes('✅') || line.includes('❌'));
if (summaryLine) {
const passed = (summaryLine.match(/✅/g) || []).length;
const failed = (summaryLine.match(/❌/g) || []).length;
totalPassed += passed;
totalFailed += failed;
}
} catch (error: any) {
console.error(`❌ Błąd podczas uruchamiania ${testFile}:`);
console.error(error.stdout || error.message);
totalFailed++;
}
}
console.log('\n' + '='.repeat(60));
console.log('📊 PODSUMOWANIE WSZYSTKICH TESTÓW');
console.log('='.repeat(60));
console.log(`✅ Przeszło: ${totalPassed}`);
console.log(`❌ Niepowodzenia: ${totalFailed}`);
console.log(`📈 Współczynnik sukcesu: ${totalPassed + totalFailed > 0 ? ((totalPassed / (totalPassed + totalFailed)) * 100).toFixed(1) : 0}%`);
if (totalFailed > 0) {
console.log('\n❌ Niektóre testy nie przeszły!');
process.exit(1);
} else if (totalPassed === 0) {
console.log('\n⚠ Żadne testy nie zostały uruchomione!');
process.exit(1);
} else {
console.log('\n✅ Wszystkie testy przeszły pomyślnie!');
process.exit(0);
}