Files
Microsoft-Rewards-Script/docs/diagnostics.md
Light 15f62963f8 V2 (#365)
* first commit

* Addition of a personalized activity manager and refactoring of the logic of activities

* Adding diagnostics management, including screenshot and HTML content, as well as improvements to humanize page interactions and +.

* Adding the management of newspapers and webhook settings, including filtering messages and improving the structure of the summaries sent.

* Adding a post-execution auto-date functionality, including options to update via Git and Docker, as well as a new configuration interface to manage these parameters.

* Adding accounts in Docker, with options to use an environmental file or online JSON data, as well as minimum validations for responsible accounts.

* Improving the Microsoft Rewards script display with a new headband and better log management, including colors and improved formatting for the console.

* v2

* Refactor ESLint configuration and scripts for improved TypeScript support and project structure

* Addition of the detection of suspended accounts with the gesture of the improved errors and journalization of banishment reasons

* Adding an integrated planner for programmed task execution, with configuration in Config.json and +

* Edit

* Remove texte

* Updating of documentation and adding the management of humanization in the configuration and +.

* Adding manual purchase method allowing users to spend points without automation, with monitoring of expenses and notifications.

* Correction of documentation and improvement of configuration management for manual purchase mode, adding complete documentation and appropriate banner display.

* Add comprehensive documentation for job state persistence, NTFY notifications, proxy configuration, scheduling, and auto-update features

- Introduced job state persistence documentation to track progress and resume tasks.
- Added NTFY push notifications integration guide for real-time alerts.
- Documented proxy configuration options for enhanced privacy and network management.
- Included scheduling configuration for automated script execution.
- Implemented auto-update configuration to keep installations current with Git and Docker options.

* Ajout d'Unt Système de Rapport d'Erreurs Communautaire pour Améliorerer le Débogage, incluant la Configuration et l'Envoi de Résumés D'Erreurs Anonyés à un webhook Discord.

* Mini Edit

* Mise à Jour du Readme.md pour Améliorerer la Présentation et La Claté, Ajout d'Un section sur les notifications en Temps Raine et Mise à Jour des badges pour la meille unibilité.

* Documentation update

* Edit README.md

* Edit

* Update README with legacy version link

* Improvement of location data management and webhooks, adding configurations normalization

* Force update for PR

* Improvement of documentation and configuration options for Cron integration and Docker use

* Improvement of planning documentation and adding a multi-pan-pancake in the daily execution script

* Deletion of the CommunityReport functionality in accordance with the project policy

* Addition of randomization of start -up schedules and surveillance time for planner executions

* Refactor Docker setup to use built-in scheduler, removing cron dependencies and simplifying configuration options

* Adding TOTP support for authentication, update of interfaces and configuration files to include Totp secret, and automatic generation of the Totp code when connecting.

* Fix [LOGIN-NO-PROMPT] No dialogs (xX)

* Reset the Totp field for email_1 in the accounts.example.json file

* Reset the Totp field for email_1 in the Readme.md file

* Improvement of Bing Research: Use of the 'Attacked' method for the research field, management of overlays and adding direct navigation in the event of entry failure.

* Adding a complete security policy, including directives on vulnerability management, coordinated disclosure and user security advice.

* Remove advanced environment variables section from README

* Configuration and dockerfile update: Passage to Node 22, addition of management of the purchase method, deletion of obsolete scripts

* Correction of the order of the sections in the Readme.md for better readability

* Update of Readm and Security Policy: Addition of the method of purchase and clarification of security and confidentiality practices.

* Improvement of the readability of the Readm and deletion of the mention of reporting of vulnerabilities in the security document.

* Addition of humanization management and adaptive throttling to simulate more human behavior in bot activities.

* Addition of humanization management: activation/deactivation of human gestures, configuration update and adding documentation on human mode.

* Deletion of community error report functionality to respect the privacy policy

* Addition of immediate banning alerts and vacation configuration in the Microsoft Rewards bot

* Addition of immediate banning alerts and vacation configuration in the Microsoft Rewards bot

* Added scheduling support: support for 12h and 24h formats, added options for time zone, and immediate execution on startup.

* Added window size normalization and page rendering to fit typical screens, with injected CSS styles to prevent excessive zooming.

* Added security incident management: detection of hidden recovery emails, automation blocking, and global alerts. Updated configuration files and interfaces to include recovery emails. Improved security incident documentation.

* Refactor incident alert handling: unified alert sender

* s

* Added security incident management: detect recovery email inconsistencies and send unified alerts. Implemented helper methods to manage alerts and compromised modes.

* Added heartbeat management for the scheduler: integrated a heartbeat file to report liveliness and adjusted the watchdog configuration to account for heartbeat updates.

* Edit webook

* Updated security alert management: fixed the recovery email hidden in the documentation and enabled the conclusion webhook for notifications.

* Improved security alert handling: added structured sending to webhooks for better visibility and updated callback interval in compromised mode.

* Edit conf

* Improved dependency installation: Added the --ignore-scripts option for npm ci and npm install. Updated comments in compose.yaml for clarity.

* Refactor documentation structure and enhance logging:
- Moved documentation files from 'information' to 'docs' directory for better organization.
- Added live logging configuration to support webhook logs with email redaction.
- Updated file paths in configuration and loading functions to accommodate new structure.
- Adjusted scheduler behavior to prevent immediate runs unless explicitly set.
- Improved error handling for account and config file loading.
- Enhanced security incident documentation with detailed recovery steps.

* Fix docs

* Remove outdated documentation on NTFY, Proxy, Scheduling, Security, and Auto-Update configurations; update Browser class to prioritize headless mode based on environment variable.

* Addition of documentation for account management and Totp, Docker Guide, and Update of the Documentation Index.

* Updating Docker documentation: simplification of instructions and adding links to detailed guides. Revision of configuration options and troubleshooting sections.

* Edit

* Edit docs

* Enhance documentation for Scheduler, Security, and Auto-Update features

- Revamped the Scheduler documentation to include detailed features, configuration options, and usage examples.
- Expanded the Security guide with comprehensive incident response strategies, privacy measures, and monitoring practices.
- Updated the Auto-Update section to clarify configuration, methods, and best practices for maintaining system integrity.

* Improved error handling and added crash recovery in the Microsoft Rewards bot. Added configuration for automatic restart and handling of local search queries when trends fail.

* Fixed initial point counting in MicrosoftRewardsBot and improved error handling when sending summaries to webhooks.

* Added unified support for notifications and improved handling of webhook configurations in the normalizeConfig and log functions.

* UPDATE LOGIN

* EDIT LOGIN

* Improved login error handling: added recovery mismatch detection and the ability to switch to password authentication.

* Added a full reference to configuration in the documentation and improved log and error handling in the code.

* Added context management for conclusion webhooks and improved user configuration for notifications.

* Mini edit

* Improved logic for extracting masked emails for more accurate matching during account recovery.
2025-09-26 18:58:33 +02:00

5.7 KiB

🔍 Diagnostics & Error Capture

🛠️ Automatic error screenshots and HTML snapshots
Debug smarter with visual evidence


🎯 What is Diagnostics?

The diagnostics system automatically captures error screenshots and HTML snapshots when issues occur during script execution, providing visual evidence for troubleshooting.

Key Features

  • 📸 Auto-screenshot — Visual error capture
  • 📄 HTML snapshots — Complete page source
  • 🚦 Rate limiting — Prevents storage bloat
  • 🗂️ Auto-cleanup — Configurable retention
  • 🔒 Privacy-safe — Local storage only

⚙️ Configuration

Basic Setup

Add to src/config.json:

{
  "diagnostics": {
    "enabled": true,
    "saveScreenshot": true,
    "saveHtml": true,
    "maxPerRun": 2,
    "retentionDays": 7
  }
}

Configuration Options

Setting Default Description
enabled true Master toggle for diagnostics capture
saveScreenshot true Capture PNG screenshots on errors
saveHtml true Save page HTML content on errors
maxPerRun 2 Maximum captures per script run
retentionDays 7 Auto-delete reports older than N days

🚀 How It Works

Automatic Triggers

The system captures when these errors occur:

  • ⏱️ Page navigation timeouts
  • 🎯 Element selector failures
  • 🔐 Authentication errors
  • 🌐 Network request failures
  • JavaScript execution errors

Capture Process

  1. Error Detection — Script encounters unhandled error
  2. Visual Capture — Screenshot + HTML snapshot
  3. Safe Storage — Local reports/ folder
  4. Continue Execution — No blocking or interruption

📁 File Structure

Storage Organization

reports/
├── 2025-01-20/
│   ├── error_abc123_001.png
│   ├── error_abc123_001.html
│   ├── error_def456_002.png
│   └── error_def456_002.html
└── 2025-01-21/
    └── ...

File Naming Convention

error_[runId]_[sequence].[ext]
  • RunId — Unique identifier for each script execution
  • Sequence — Incremental counter (001, 002, etc.)
  • Extension.png for screenshots, .html for source

🧹 Retention Management

Automatic Cleanup

  • Runs after each script completion
  • Deletes entire date folders older than retentionDays
  • Prevents unlimited disk usage growth

Manual Cleanup

# Remove all diagnostic reports
Remove-Item -Recurse -Force reports/

# Remove reports older than 3 days  
Get-ChildItem reports/ | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-3)} | Remove-Item -Recurse -Force

📊 Use Cases

Scenario Benefit
🐛 Development & Debugging Visual confirmation of page state during errors
🔍 Element Detection Issues HTML source analysis for selector problems
📈 Production Monitoring Evidence collection for account issues
Performance Analysis Timeline reconstruction of automation failures

Performance Impact

Resource Usage

  • Screenshots — ~100-500KB each
  • HTML files — ~50-200KB each
  • CPU overhead — Minimal (only during errors)
  • Memory impact — Asynchronous, non-blocking

Storage Optimization

  • Daily cleanup prevents accumulation
  • Rate limiting via maxPerRun
  • Configurable retention period

🎛️ Environment Settings

Development Mode

{
  "diagnostics": {
    "enabled": true,
    "maxPerRun": 5,
    "retentionDays": 14
  }
}

Production Mode

{
  "diagnostics": {
    "enabled": true,
    "maxPerRun": 2,
    "retentionDays": 3
  }
}

Debug Verbose Logging

$env:DEBUG_REWARDS_VERBOSE=1; npm start

🛠️ Troubleshooting

Problem Solution
No captures despite errors Check enabled: true; verify reports/ write permissions
Excessive storage usage Reduce maxPerRun; decrease retentionDays
Missing screenshots Verify browser screenshot API; check memory availability
Cleanup not working Ensure script completes successfully for auto-cleanup

Common Capture Locations

  • Login issues — Authentication page screenshots
  • Activity failures — Element detection errors
  • Network problems — Timeout and connection errors
  • Navigation issues — Page load failures

🔗 Integration

With Notifications

Diagnostics complement Discord Webhooks and NTFY:

  • Webhooks — Immediate error alerts
  • Diagnostics — Visual evidence for investigation
  • Combined — Complete error visibility

With Development Workflow

# 1. Run script with diagnostics
npm start

# 2. Check for captures after errors
ls reports/$(date +%Y-%m-%d)/

# 3. Analyze screenshots and HTML
# Open .png files for visual state
# Review .html files for DOM structure

🔒 Privacy & Security

  • Local Only — All captures stored locally
  • No Uploads — Zero external data transmission
  • Account Info — May contain sensitive data
  • Secure Storage — Use appropriate folder permissions
  • Regular Cleanup — Recommended for sensitive environments