npm run dev
# or
npx serve -p 8000Navigate to: http://localhost:8000/demo/index.html
Test: Click the increment (+) button
- Expected: Counter value increases by 1
- Verify:
t-text="count"updates correctly
Test: Click the decrement (-) button
- Expected: Counter value decreases by 1
Test: Click the reset button
- Expected: Counter resets to 0
Test: Type in the input field
- Expected: Name property updates in state
- Verify: Message "Hello, [name]!" appears below
- Check: Message updates as you type
Test: Enter a name in the input
- Expected: Welcome message container becomes visible
- Verify:
t-show="name"works correctly
Test: Leave input empty
- Expected: Welcome message container is hidden
Test: Click increment to make count > 0
- Expected: Counter badge gets green background (positive class)
Test: Click decrement to make count < 0
- Expected: Counter badge gets red background (negative class)
Test: Click reset to make count = 0
- Expected: Counter badge gets gray background (zero class)
Test: Check the welcome message
- Expected:
'Hello, ' + name + '! 👋'concatenates correctly - Verify: Complex expressions work
Test: Check for scope isolation
- Expected: Each
t-datacreates its own scope - Verify: State doesn't leak between scopes
Open browser DevTools Console and check for:
- Initialization: No errors on page load
- Warnings: Check for
[TinyPine] Unknown directivewarnings - Expression Errors: Look for
[TinyPine] Expression evaluation failed
- Check: Is
t-clickattribute present? - Check: Is
t-dataparent scope defined? - Verify: State variable exists in scope
- Check: Property exists in
t-dataobject - Verify: No syntax errors in expression
- Check: Browser console for errors
- Check: CSS classes are defined
- Verify: Expression evaluates to boolean
- Check: Class name syntax (t-class:className)
- ✅ Chrome 49+
- ✅ Firefox 18+
- ✅ Safari 10+
- ✅ Edge 79+
- IE 11: Proxy support limited
- Requires ES6 modules (use http server, not file://)
- Counter increments correctly
- Counter decrements correctly
- Reset button works
- Input two-way binding works
- Welcome message appears/disappears
- Class toggles apply correctly
- No console errors
- No console warnings (or only expected warnings)
- Responsive layout works
- Events fire only once per click
- State changes update DOM immediately
- Open DevTools → Memory tab
- Take heap snapshot
- Click buttons 100 times
- Take another heap snapshot
- Expected: Minimal memory increase
- Verify: No event listeners accumulating
- Initial load: < 4KB (minified target)
- Runtime overhead: Minimal (Proxy is native)
- DOM updates: Instant
- All directives are reactive
- State changes trigger automatic DOM updates
- Event listeners are properly cleaned up
- No memory leaks in normal usage
- Zero external dependencies