[Checkins] SVN: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/ - add code to save the current web page as a PNG

Benji York benji at zope.com
Thu Sep 6 06:35:06 EDT 2007


Log message for revision 79494:
  - add code to save the current web page as a PNG
  - XXX time.sleep is there because of a bug in the page load finish detection
  - put timeout back at reasonable value
  

Changed:
  U   zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.js
  U   zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.py
  A   zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/screen-shots.txt
  U   zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py

-=-
Modified: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.js
===================================================================
--- zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.js	2007-09-06 09:50:44 UTC (rev 79493)
+++ zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.js	2007-09-06 10:35:05 UTC (rev 79494)
@@ -109,3 +109,28 @@
             return a.href.indexOf(url) == 0;
         }, index)
 }
+
+function tb_take_screen_shot() {
+    // The `subject` is what we want to take a screen shot of.
+    var subject = content.document;
+    var canvas = content.document.createElement('canvas');
+    canvas.width = subject.width;
+    canvas.height = subject.height;
+
+    var ctx = canvas.getContext('2d');
+    ctx.drawWindow(content, 0, 0, subject.width, subject.height, 'rgb(0,0,0)');
+    tb_save_canvas(canvas, '/tmp/1.png');
+}
+
+function tb_save_canvas(canvas, out_path, overwrite) {
+    var io = Components.classes['@mozilla.org/network/io-service;1'
+        ].getService(Components.interfaces.nsIIOService);
+    var source = io.newURI(canvas.toDataURL('image/png', ''), 'UTF8', null);
+    var persist = Components.classes[
+        '@mozilla.org/embedding/browser/nsWebBrowserPersist;1'
+        ].createInstance(Components.interfaces.nsIWebBrowserPersist);
+    var file = Components.classes['@mozilla.org/file/local;1'
+        ].createInstance(Components.interfaces.nsILocalFile);
+    file.initWithPath(out_path);
+    persist.saveURI(source, null, null, null, null, file);
+}

Modified: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.py
===================================================================
--- zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.py	2007-09-06 09:50:44 UTC (rev 79493)
+++ zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.py	2007-09-06 10:35:05 UTC (rev 79494)
@@ -49,7 +49,7 @@
         for line in lines:
             self.execute(line)
 
-    def expect(self, res, timeout=1):
+    def expect(self, res, timeout=60):
         i, match, text = self.telnet.expect([PROMPT], timeout)
         if match is None:
             import pdb;pdb.set_trace()

Added: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/screen-shots.txt
===================================================================
--- zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/screen-shots.txt	                        (rev 0)
+++ zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/screen-shots.txt	2007-09-06 10:35:05 UTC (rev 79494)
@@ -0,0 +1,6 @@
+    >>> from zope.testbrowser.real import Browser
+    >>> browser = Browser()
+    >>> browser.open('http://slashdot.org')
+    >>> import time
+    >>> time.sleep(3)
+    >>> browser.execute('tb_take_screen_shot()')


Property changes on: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/screen-shots.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py
===================================================================
--- zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py	2007-09-06 09:50:44 UTC (rev 79493)
+++ zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py	2007-09-06 10:35:05 UTC (rev 79494)
@@ -394,6 +394,9 @@
     wire = doctest.DocFileSuite('real.txt', optionflags=flags)
     wire.level = 3
 
+    wire = doctest.DocFileSuite('screen-shots.txt', optionflags=flags)
+    wire.level = 3
+
     this_file = doctest.DocTestSuite(checker=checker)
     return unittest.TestSuite((this_file, readme, wire))
 



More information about the Checkins mailing list