A comprehensive web-based Connected TV (CTV) simulator designed for UK-based Smart TV ad tech testing and debugging. This tool mimics the behavior of a UK Smart TV app for testing VAST tags, OpenRTB endpoints, and ad monetization workflows.
- Realistic CTV Environment: Mimics Samsung Tizen, LG WebOS, Android TV, and Roku devices
- UK Geo-targeting: Pre-configured with UK IP addresses and geolocation data
- Smart TV User Agents: Authentic user agent strings for major CTV platforms
- Video Player: HTML5 video player with ad breakpoint triggers
- VAST Tag Support: Test VAST 2.0/3.0/4.0 ad tags with real-time validation
- OpenRTB Integration: Full OpenRTB 2.5 request generation with UK-specific parameters
- SSP Endpoint Presets: Pre-configured endpoints for major SSPs (Magnite, Xandr, FreeWheel, etc.)
- Custom Endpoints: Support for custom VAST and OpenRTB endpoints
- Network Logger: Real-time logging of ad requests and responses (similar to Chrome DevTools)
- Request/Response Inspector: Detailed view of headers, payloads, and response data
- VAST Parser: Automatic parsing and validation of VAST responses
- Error Detection: Automatic flagging of empty responses, timeouts, and malformed data
- GDPR Compliance: Built-in GDPR consent management with TCF string support
- UK IP Simulation: Multiple UK IP addresses for different regions
- Geo Parameters: Accurate UK geolocation data (London, Manchester, Birmingham, Edinburgh)
- Currency Support: GBP currency settings for bid requests
- Frontend: React 18 + TypeScript
- Styling: Tailwind CSS with custom CTV theme
- Video Player: Video.js with ad support
- State Management: Zustand
- HTTP Client: Axios
- Icons: Lucide React
- Build Tool: Vite
- Date Handling: date-fns
-
Clone the repository:
git clone <repository-url> cd ctv-simulator
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser: Navigate to
http://localhost:3000
-
Configure Device Settings:
- Select your target CTV platform (Samsung Tizen, LG WebOS, etc.)
- Choose device type (Connected TV is default)
-
Set Geo Parameters:
- Select a UK IP address from presets
- Configure country, region, and coordinates
- Default: London, UK (51.5074, -0.1278)
-
Configure Ad Endpoints:
- Choose from SSP presets or enter custom URLs
- Support for both VAST tags and OpenRTB endpoints
- GDPR consent settings with TCF string support
- Start Video Playback: Click play to trigger pre-roll ad requests
- Monitor Network Activity: View real-time ad requests in the right panel
- Inspect Responses: Click on any request to view detailed information
- Debug Issues: Use the console logs to identify and troubleshoot problems
- Pre-roll: Triggered when video starts playing
- Mid-roll: Triggered at 30-second mark (configurable)
- Manual Testing: Use configuration panel to test different scenarios
{
userAgent: "Mozilla/5.0 (SMART-TV; LINUX; Tizen 6.0)...",
deviceType: 3, // Connected TV
make: "Samsung",
model: "Smart TV",
os: "Tizen",
osv: "6.0"
}
{
country: "GB",
region: "England",
city: "London",
lat: 51.5074,
lon: -0.1278,
ip: "91.245.227.10"
}
The simulator generates comprehensive OpenRTB 2.5 requests with:
- Video impression parameters (1920x1080, various protocols)
- UK-specific geo data
- CTV device information
- GDPR compliance parameters
- Realistic bid floor and currency settings
- VAST Tag Validation: Test VAST XML parsing and creative loading
- OpenRTB Bid Requests: Validate bid request structure and SSP responses
- Geo-targeting: Test UK-specific targeting parameters
- GDPR Compliance: Verify consent string handling
- Error Handling: Test timeout scenarios and malformed responses
- Magnite (Rubicon): OpenRTB endpoint testing
- Xandr (AppNexus): Bid request validation
- FreeWheel: VAST tag integration
- Google Ad Manager: DFP tag testing
- SpotX: Video ad serving
- Request/response timing
- HTTP status codes
- Header inspection
- Payload validation
- Response parsing
- Empty VAST responses (204 status)
- Request timeouts (>5 seconds)
- Malformed XML/JSON responses
- Missing required OpenRTB fields
- GDPR compliance issues
- Real-time event logging
- Filterable log levels (info, warning, error, success)
- Timestamped entries
- Request correlation
- Toggle GDPR consent on/off
- Custom TCF consent string input
- Automatic
regs.ext.gdpr
parameter inclusion - UK-specific privacy regulations
- All testing data stays in browser memory
- No external data transmission except to configured endpoints
- Clear logs and requests functionality
- No persistent storage of sensitive data
src/
โโโ components/ # React components
โ โโโ VideoPlayer.tsx # Video.js integration
โ โโโ ConfigPanel.tsx # Configuration UI
โ โโโ LogPanel.tsx # Network logs and inspector
โโโ store/ # Zustand state management
โ โโโ useStore.ts # Global app state
โโโ types/ # TypeScript definitions
โ โโโ index.ts # Interface definitions
โโโ utils/ # Utility functions
โ โโโ adRequests.ts # Ad request generation and parsing
โโโ App.tsx # Main application component
npm run dev
- Start development servernpm run build
- Build for productionnpm run preview
- Preview production buildnpm run lint
- Run ESLint
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For issues, questions, or contributions:
- Create an issue on GitHub
- Submit a pull request
- Contact the development team
- SSAI (Server-Side Ad Insertion) simulation
- Header bidding wrapper testing
- Advanced VAST creative validation
- Multi-currency bid request support
- Custom device profile creation
- Automated testing scenarios
- Performance metrics dashboard
- Export/import configuration profiles
Built for UK CTV ad monetization debugging and testing ๐ฌ๐ง๐บ