diff --git a/base_report_to_printer/models/printing_printer.py b/base_report_to_printer/models/printing_printer.py
index 2dcea19..5e37bad 100644
--- a/base_report_to_printer/models/printing_printer.py
+++ b/base_report_to_printer/models/printing_printer.py
@@ -242,3 +242,18 @@ class PrintingPrinter(models.Model):
self.mapped("server_id").update_printers()
return True
+
+ def print_test_page(self):
+ for printer in self:
+ connection = printer.server_id._open_connection()
+ if printer.model == "Local Raw Printer":
+ fd, file_name = mkstemp()
+ try:
+ os.write(fd, b"TEST")
+ finally:
+ os.close(fd)
+ connection.printTestPage(printer.system_name, file=file_name)
+ else:
+ connection.printTestPage(printer.system_name)
+
+ self.mapped("server_id").update_jobs(which="completed")
diff --git a/base_report_to_printer/tests/test_printing_printer.py b/base_report_to_printer/tests/test_printing_printer.py
index 2352766..fe78c16 100644
--- a/base_report_to_printer/tests/test_printing_printer.py
+++ b/base_report_to_printer/tests/test_printing_printer.py
@@ -173,3 +173,10 @@ class TestPrintingPrinter(TransactionCase):
printer = self.new_record()
printer.disable()
cups.Connection().disablePrinter.assert_called_once_with(printer.system_name)
+
+ @mock.patch("%s.cups" % server_model)
+ def test_print_test_page(self, cups):
+ """ It should print a test page """
+ printer = self.new_record()
+ printer.print_test_page()
+ cups.Connection().printTestPage.assert_called_once_with(printer.system_name)
diff --git a/base_report_to_printer/views/printing_printer.xml b/base_report_to_printer/views/printing_printer.xml
index 379aedd..5c7657c 100644
--- a/base_report_to_printer/views/printing_printer.xml
+++ b/base_report_to_printer/views/printing_printer.xml
@@ -31,6 +31,12 @@
string="Cancel all running jobs"
confirm="Are you sure to want to cancel all jobs of this printer?"
/>
+