[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