testcasemaster-pro / test-cases.html
ShadowWolf1999's picture
这个 是不是没有凸显出来 这个阶段? 必读 SIT uat?
279c973 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Test Cases - TestCaseMaster Pro</title>
<link rel="stylesheet" href="style.css">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script src="components/navbar.js"></script>
<script src="components/sidebar.js"></script>
<script src="components/test-case-item.js"></script>
</head>
<body class="bg-gray-50">
<custom-navbar></custom-navbar>
<div class="flex">
<custom-sidebar></custom-sidebar>
<main class="flex-1 p-8">
<div class="flex justify-between items-center mb-8">
<h1 class="text-3xl font-bold text-gray-800" id="page-title">Test Cases</h1>
<button class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-lg flex items-center">
<i data-feather="plus" class="mr-2"></i> Create Test Case
</button>
</div>
<div class="bg-white rounded-lg shadow p-6 mb-6">
<div class="flex items-center justify-between mb-4">
<h2 class="text-xl font-semibold">Filter Test Cases</h2>
<div class="flex items-center space-x-4">
<div class="relative">
<input type="text" placeholder="Search test cases..."
class="pl-10 pr-4 py-2 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent">
<i data-feather="search" class="absolute left-3 top-2.5 text-gray-400"></i>
</div>
<select class="border border-gray-300 rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
<option>All Status</option>
<option>Passed</option>
<option>Failed</option>
<option>Pending</option>
</select>
</div>
</div>
</div>
<div class="grid grid-cols-1 gap-4" id="test-cases-container">
<!-- Test case items will be loaded here -->
</div>
</main>
</div>
<script>
feather.replace();
// Load test cases based on type from URL
document.addEventListener('DOMContentLoaded', function() {
const urlParams = new URLSearchParams(window.location.search);
const type = urlParams.get('type') || 'all';
// Update page title
document.getElementById('page-title').textContent =
`${type.charAt(0).toUpperCase() + type.slice(1)} Test Cases`;
// Load sample test cases
loadTestCases(type);
});
function loadTestCases(type) {
const container = document.getElementById('test-cases-container');
container.innerHTML = '';
// Sample test case data
const testCases = [
{
id: 1,
title: 'SIT - Login functionality',
description: 'Validate login flow in system integration environment',
priority: 'High',
status: 'Passed',
type: 'SIT',
lastRun: '2 hours ago'
},
{
id: 2,
title: 'UAT - Checkout process',
description: 'End-to-end checkout validation with real users',
priority: 'Critical',
status: 'Pending',
type: 'UAT',
lastRun: 'Not run yet'
},
{
id: 3,
title: 'Functional - Password reset',
description: 'Verify password reset functionality',
priority: 'High',
status: 'Passed',
type: 'Functional',
lastRun: '1 day ago'
},
{
id: 4,
title: 'SIT - API integration',
description: 'Validate all API integrations',
priority: 'Medium',
status: 'Warning',
type: 'SIT',
lastRun: '3 days ago'
},
{
id: 5,
title: 'UAT - Mobile responsiveness',
description: 'User acceptance testing for mobile devices',
priority: 'High',
status: 'Failed',
type: 'UAT',
lastRun: '5 days ago'
}
];
// Filter by type if specified
const filteredCases = type === 'all'
? testCases
: testCases.filter(c => c.type.toLowerCase() === type);
// Add test cases to container
filteredCases.forEach(testCase => {
const el = document.createElement('test-case-item');
el.setAttribute('data', JSON.stringify(testCase));
container.appendChild(el);
});
}
</script>
<script src="script.js"></script>
</body>
</html>