This commit is contained in:
Ralph Khreish
2025-07-11 13:29:52 +03:00
parent 74232d0e0d
commit 14cc09d241
27 changed files with 5699 additions and 958 deletions

View File

@@ -9,34 +9,37 @@ const { join } = require('path');
module.exports = async () => {
console.log('\n🚀 Setting up E2E test environment...\n');
try {
// Ensure task-master is linked globally
const projectRoot = join(__dirname, '../../..');
console.log('📦 Linking task-master globally...');
execSync('npm link', {
execSync('npm link', {
cwd: projectRoot,
stdio: 'inherit'
});
// Verify .env file exists
const envPath = join(projectRoot, '.env');
if (!existsSync(envPath)) {
console.warn('⚠️ Warning: .env file not found. Some tests may fail without API keys.');
console.warn(
'⚠️ Warning: .env file not found. Some tests may fail without API keys.'
);
} else {
console.log('✅ .env file found');
}
// Verify task-master command is available
try {
execSync('task-master --version', { stdio: 'pipe' });
console.log('✅ task-master command is available\n');
} catch (error) {
throw new Error('task-master command not found. Please ensure npm link succeeded.');
throw new Error(
'task-master command not found. Please ensure npm link succeeded.'
);
}
} catch (error) {
console.error('❌ Global setup failed:', error.message);
throw error;
}
};
};

View File

@@ -5,7 +5,7 @@
module.exports = async () => {
console.log('\n🧹 Cleaning up E2E test environment...\n');
// Any global cleanup needed
// Note: Individual test directories are cleaned up in afterEach hooks
};
};

View File

@@ -14,7 +14,7 @@ expect.extend({
toContainTaskId(received) {
const taskIdRegex = /#?\d+/;
const pass = taskIdRegex.test(received);
if (pass) {
return {
message: () => `expected ${received} not to contain a task ID`,
@@ -27,10 +27,10 @@ expect.extend({
};
}
},
toHaveExitCode(received, expected) {
const pass = received.exitCode === expected;
if (pass) {
return {
message: () => `expected exit code not to be ${expected}`,
@@ -38,16 +38,17 @@ expect.extend({
};
} else {
return {
message: () => `expected exit code ${expected} but got ${received.exitCode}\nstderr: ${received.stderr}`,
message: () =>
`expected exit code ${expected} but got ${received.exitCode}\nstderr: ${received.stderr}`,
pass: false
};
}
},
toContainInOutput(received, expected) {
const output = (received.stdout || '') + (received.stderr || '');
const pass = output.includes(expected);
if (pass) {
return {
message: () => `expected output not to contain "${expected}"`,
@@ -55,7 +56,8 @@ expect.extend({
};
} else {
return {
message: () => `expected output to contain "${expected}"\nstdout: ${received.stdout}\nstderr: ${received.stderr}`,
message: () =>
`expected output to contain "${expected}"\nstdout: ${received.stdout}\nstderr: ${received.stderr}`,
pass: false
};
}
@@ -76,5 +78,5 @@ global.createTestContext = (testName) => {
// Clean up any hanging processes
afterAll(async () => {
// Give time for any async operations to complete
await new Promise(resolve => setTimeout(resolve, 100));
});
await new Promise((resolve) => setTimeout(resolve, 100));
});