# Manual Smoke Test Documentation

**Author**: Matthew Raymer  
**Version**: 1.0.0  
**Created**: 2025-01-27 18:00:00 UTC  
**Last Updated**: 2025-01-27 18:00:00 UTC

## Overview

This document provides step-by-step instructions for manually testing the TimeSafari Daily Notification Plugin across all target platforms (Android, iOS, Electron). This smoke test validates basic functionality and ensures the plugin works correctly in the TimeSafari PWA environment.

## Prerequisites

- TimeSafari PWA project set up and running
- Plugin integrated into TimeSafari PWA
- Development environment configured for all platforms
- Test devices/emulators available for each platform

## Test Execution Log

### Latest Test Run

**Date**: 2025-01-27 18:00:00 UTC  
**Commit/Tag**: `main` (pre-integration)  
**Platforms Covered**: Android (Emulator), iOS (Simulator), Electron (Desktop)  
**Status**: ⏳ **Pending** - To be executed after integration

## Electron Platform Testing

### Setup
1. Start TimeSafari PWA in development mode
2. Open Chrome browser
3. Navigate to local development URL
4. Open browser developer tools

### Test Steps

#### 1. Plugin Installation Verification
- [ ] Plugin loads without console errors
- [ ] Plugin API is accessible via `window.DailyNotification`
- [ ] TypeScript definitions are available

#### 2. Basic Notification Scheduling
- [ ] Schedule a daily notification for 1 minute from now
- [ ] Verify notification appears in browser
- [ ] Test notification interaction (click/dismiss)
- [ ] Verify callback functions are called

#### 3. Permission Handling
- [ ] Request notification permissions
- [ ] Handle permission denied gracefully
- [ ] Test permission re-request flow

#### 4. Storage Integration
- [ ] Verify notification data persists in native storage
- [ ] Test data retrieval after page refresh
- [ ] Validate storage adapter integration

### Expected Results
- All notifications appear on schedule
- No console errors or warnings
- Data persists across page refreshes
- Permission flows work correctly

## Android Platform Testing

### Setup
1. Build TimeSafari PWA for Android
2. Install on Android device/emulator
3. Enable developer options and USB debugging
4. Connect device or start emulator

### Test Steps

#### 1. Plugin Registration
- [ ] Plugin registers with Capacitor bridge
- [ ] Native Android code compiles and loads
- [ ] No runtime crashes or errors

#### 2. Notification Channel Creation
- [ ] Notification channels are created on first run
- [ ] Channel settings are applied correctly
- [ ] Channel importance levels work as expected

#### 3. Background Scheduling
- [ ] WorkManager schedules background tasks
- [ ] Notifications fire at scheduled times
- [ ] Background execution works with Doze/App Standby

#### 4. Permission Handling
- [ ] Request notification permissions
- [ ] Handle permission denied gracefully
- [ ] Test battery optimization exemption request

### Expected Results
- Notifications appear on schedule
- Background tasks execute reliably
- No crashes or ANRs
- Permission flows work correctly

## iOS Platform Testing

### Setup
1. Build TimeSafari PWA for iOS
2. Install on iOS device/simulator
3. Enable developer mode
4. Configure code signing

### Test Steps

#### 1. Plugin Registration
- [ ] Plugin registers with Capacitor bridge
- [ ] Native iOS code compiles and loads
- [ ] No runtime crashes or errors

#### 2. Notification Center Integration
- [ ] UNUserNotificationCenter delegates are set
- [ ] Notification categories are registered
- [ ] Background modes are configured

#### 3. Background Task Scheduling
- [ ] BGTaskScheduler registers background tasks
- [ ] Notifications fire at scheduled times
- [ ] Background execution works within iOS limits

#### 4. Permission Handling
- [ ] Request notification permissions
- [ ] Handle provisional authorization
- [ ] Test permission upgrade/downgrade flows

### Expected Results
- Notifications appear on schedule
- Background tasks execute within iOS limits
- No crashes or memory warnings
- Permission flows work correctly

## Cross-Platform Validation

### Data Consistency
- [ ] Notification data syncs across platforms
- [ ] Storage adapter works consistently
- [ ] Timezone handling is consistent

### API Consistency
- [ ] Plugin API behaves identically across platforms
- [ ] Callback functions work the same way
- [ ] Error handling is consistent

### Performance
- [ ] Plugin initialization is fast (< 1 second)
- [ ] Memory usage is reasonable
- [ ] Battery impact is minimal

## Test Results Template

```markdown
## Test Run Results

**Date**: [YYYY-MM-DD HH:MM:SS UTC]  
**Commit/Tag**: [commit hash or tag]  
**Tester**: [name]  
**Environment**: [development/staging/production]

### Electron Platform
- **Status**: [PASS/FAIL/PARTIAL]
- **Issues**: [list any issues found]
- **Notes**: [additional observations]

### Android Platform
- **Status**: [PASS/FAIL/PARTIAL]
- **Device**: [device model/emulator version]
- **Issues**: [list any issues found]
- **Notes**: [additional observations]

### iOS Platform
- **Status**: [PASS/FAIL/PARTIAL]
- **Device**: [device model/simulator version]
- **Issues**: [list any issues found]
- **Notes**: [additional observations]

### Overall Assessment
- **Integration Status**: [READY/NOT_READY]
- **Blocking Issues**: [list any blocking issues]
- **Recommendations**: [next steps or improvements]
```

## Troubleshooting

### Common Issues

#### Electron Platform
- **Notifications not appearing**: Check system notification permissions
- **Storage errors**: Verify local storage is available and not blocked
- **API not accessible**: Check plugin registration and build output

#### Android Platform
- **Notifications not firing**: Check WorkManager constraints and battery optimization
- **Crashes on startup**: Verify native code compilation and permissions
- **Background tasks not running**: Check Doze/App Standby settings

#### iOS Platform
- **Notifications not appearing**: Check notification permissions and categories
- **Background tasks not running**: Verify BGTaskScheduler registration and iOS limits
- **Crashes on startup**: Check native code compilation and capabilities

### Debug Steps

1. **Check Logs**: Review console logs, native logs, and system logs
2. **Verify Permissions**: Ensure all required permissions are granted
3. **Test Isolation**: Test each platform independently
4. **Compare with Examples**: Compare behavior with plugin examples
5. **Check Dependencies**: Verify all dependencies are correctly installed

## Success Criteria

### Must Pass
- [ ] Plugin loads without errors on all platforms
- [ ] Basic notification scheduling works on all platforms
- [ ] Permission handling works correctly
- [ ] No crashes or memory leaks
- [ ] Data persistence works across app restarts

### Should Pass
- [ ] Background execution works reliably
- [ ] Performance is acceptable
- [ ] Error handling is graceful
- [ ] Cross-platform consistency is maintained

### Nice to Have
- [ ] Advanced features work correctly
- [ ] Edge cases are handled gracefully
- [ ] User experience is smooth
- [ ] Integration with TimeSafari features works

---

**Next Review**: After first integration test run  
**Stakeholders**: TimeSafari Development Team, Plugin Development Team  
**Dependencies**: TimeSafari PWA Integration, Plugin Build Completion
