pos_bluetooth_thermal_printer/TESTING_SCENARIOS.md

5.0 KiB

Testing Scenarios

Current Status

The code is working! It correctly detects when no Bluetooth printer is configured and attempts to fall back to standard print.

Enhanced Logging

Added comprehensive logging to track:

  1. When originalPrintHtml is called
  2. What it returns
  3. Any errors that occur
  4. Connection status checks
  5. Reconnection attempts

Test Scenarios

Scenario 1: No Bluetooth Printer Configured

Current behavior:

[BluetoothPrint] printHtml() called
[BluetoothPrint] Web Bluetooth API available
[BluetoothPrint] No Bluetooth printer configured, using standard print
[BluetoothPrint] Calling originalPrintHtml with: [element]
[BluetoothPrint] originalPrintHtml returned: [result]

Expected: Browser print dialog should open If not working: Check the console for errors from originalPrintHtml

Scenario 2: Bluetooth Printer Configured but Not Connected

Steps:

  1. Connect to printer once (saves config)
  2. Disconnect printer or turn it off
  3. Try to print receipt

Expected logs:

[BluetoothPrint] Bluetooth printer configured: RPP02N
[BluetoothPrint] Current connection status: disconnected
[BluetoothPrint] Printer not connected, attempting to reconnect...
[BluetoothPrint] Reconnection failed: [error]
[BluetoothPrint] Falling back to standard print

Expected: Browser print dialog should open

Scenario 3: Bluetooth Printer Connected

Steps:

  1. Click Bluetooth icon
  2. Connect to RPP02N
  3. Make a sale and print

Expected logs:

[BluetoothPrint] Bluetooth printer configured: RPP02N
[BluetoothPrint] Current connection status: connected
[BluetoothPrint] Attempting bluetooth print...
[BluetoothPrint] Starting bluetooth print from HTML...
[BluetoothPrint] Parsing receipt data from HTML...
[BluetoothPrint] Parsed X lines from HTML
[BluetoothPrint] Generating ESC/POS commands...
[BluetoothPrint] Generated XXX bytes of ESC/POS data
[BluetoothPrint] Sending to printer...
[BluetoothPrint] Print completed successfully

Expected: Receipt prints to Bluetooth printer

Scenario 4: Bluetooth Print Fails Mid-Process

What happens: Connection drops during print

Expected logs:

[BluetoothPrint] Attempting bluetooth print...
[BluetoothPrint] Bluetooth print failed: [error]
[BluetoothPrint] Falling back to standard print after error
[BluetoothPrint] Fallback print returned: [result]

Expected: Browser print dialog opens as fallback

What to Test Now

Test 1: Connect Bluetooth Printer

  1. Update module: ./odoo-bin -u pos_bluetooth_thermal_printer -d your_database
  2. Clear browser cache
  3. Click Bluetooth icon in POS
  4. Scan and connect to RPP02N
  5. Make a sale and print receipt
  6. Check console logs
  7. Verify receipt prints to Bluetooth printer

Test 2: Standard Print Fallback

  1. Disconnect Bluetooth printer (turn off or unpair)
  2. Make a sale and print receipt
  3. Check console logs - should show reconnection attempt
  4. Verify browser print dialog opens

Debugging Standard Print Issue

If standard print (browser dialog) doesn't open, check:

1. Check Console for Errors

Look for:

[BluetoothPrint] Error calling originalPrintHtml: [error]
[BluetoothPrint] Standard print failed: [error]
[BluetoothPrint] Fallback print also failed: [error]

2. Check originalPrintHtml Return Value

Look for:

[BluetoothPrint] originalPrintHtml returned: [value]

If it returns undefined or null, the original method might not be opening the print dialog.

3. Possible Issues

Issue A: Original method doesn't exist

  • originalPrintHtml might be undefined
  • Check if PosPrinterService.prototype.printHtml exists before patching

Issue B: Original method needs different context

  • Might need to pass additional parameters
  • Might need different this binding

Issue C: Browser blocks print dialog

  • Some browsers block print dialogs not triggered by user action
  • Might need user interaction first

4. Alternative Fallback

If originalPrintHtml doesn't work, we can implement a direct print fallback:

// Direct browser print as last resort
const printWindow = window.open('', '_blank');
printWindow.document.write(el.outerHTML);
printWindow.document.close();
printWindow.print();

Expected Results After Update

With Bluetooth Printer Connected:

Receipt prints to Bluetooth printer automatically No browser print dialog Console shows successful print process

Without Bluetooth Printer:

Console shows "No Bluetooth printer configured" Falls back to standard print Browser print dialog opens (or should open)

With Bluetooth Error:

Console shows error details Falls back to standard print Sale completes successfully

Next Steps

  1. Update module
  2. Test with Bluetooth printer connected - Should print!
  3. Test without Bluetooth printer - Check if standard print works
  4. Share console logs if any issues

The Bluetooth printing should work now when printer is connected! 🎉