A modern, subscription-based viewer for TestGrid dashboards with desktop notification support.
- Dashboard Navigation - Browse TestGrid dashboard groups, dashboards, and tabs with an intuitive accordion sidebar
- Virtual Scrolling Grid - Efficiently render thousands of test results with virtual scrolling
- Subscriptions - Subscribe to dashboards, tabs, or individual tests to track their status
- Global Search - Quick search across all groups, dashboards, and tabs (
Cmd/Ctrl+K) - Grid Filtering - Filter test results by status (pass/fail/skip/flaky) or name pattern
- Dark/Light Mode - System-aware theme with manual toggle
- Offline Support - View cached data when offline with status indicators
- Real-time Updates - Auto-refreshing data with configurable intervals
| Layer | Technology |
|---|---|
| Runtime | Bun 1.2+ |
| Frontend | React 19 |
| Build Tool | Vite 6 |
| Styling | Tailwind CSS 4 |
| State Management | Zustand 5 |
| Data Fetching | TanStack Query 5 |
| Routing | TanStack Router |
| Schema Validation | Zod 3 |
| UI Primitives | Radix UI |
- Bun 1.2 or later
# Clone the repository
git clone https://github.com/your-org/pano.git
cd pano
# Install dependencies
bun install# Start development server (frontend + hot reload)
bun run devThe app will be available at http://localhost:5173
# Run all tests
bun test
# Run tests in watch mode
bun test --watch
# Run tests with coverage
bun test --coverage# Build for production
bun run build
# Preview production build
bun run previewpano/
βββ src/
β βββ frontend/ # React application
β β βββ components/ # React components
β β β βββ dashboard/ # Dashboard views
β β β βββ grid/ # Test grid components
β β β βββ layout/ # App shell, sidebar, header
β β β βββ search/ # Global search modal
β β β βββ subscriptions/ # Subscription management
β β βββ hooks/ # Custom React hooks
β β βββ stores/ # Zustand stores
β β βββ routes/ # TanStack Router routes
β β βββ lib/ # Utilities
β β βββ styles/ # Global styles
β βββ shared/ # Shared code (schemas, types)
β βββ schemas/ # Zod schemas for API responses
βββ tests/ # Test files
βββ public/ # Static assets
βββ .github/workflows/ # CI/CD workflows
| Variable | Description | Default |
|---|---|---|
PORT |
Server port | 3000 |
The app fetches data directly from the TestGrid API at https://testgrid-api.prow.k8s.io/api/v1.
- Sidebar - Click on dashboard groups to expand and see dashboards
- Dashboard View - Shows tab summaries with status indicators
- Tab View - Displays the full test results grid
| Shortcut | Action |
|---|---|
Cmd/Ctrl + K |
Open global search |
β / β |
Navigate search results |
Enter |
Select search result |
Escape |
Close search/dialogs |
- Click the bell icon or "Subscribe" button on any dashboard, tab, or test
- View all subscriptions in the "Subscribed" view
- Export/import subscriptions as JSON for backup
On any tab's test grid:
- Text filter - Type to filter tests by name
- Status filter - Dropdown to show only pass/fail/skip/flaky
- Failures only - Toggle to show only failing tests
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
bun test) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- TestGrid - The CI/CD dashboard system
- Kubernetes - The TestGrid data source