Fix screenshots for chrome and safari
diff --git a/script/screenshots.js b/script/screenshots.js
index 6c68b8a..1d1640c 100644
--- a/script/screenshots.js
+++ b/script/screenshots.js
@@ -40,25 +40,50 @@
browserDriver.get(url, function(err) {
if (err) console.log(err);
- browserDriver.safeExecute(widthScript, function(err,width) {
+ browserDriver.safeExecute('document.documentElement.scrollHeight', function(err,scrollHeight) {
if (err) console.log(err);
- browserDriver.safeExecute(heightScript, function(err,height) {
+ browserDriver.safeExecute('document.documentElement.clientHeight', function(err,windowHeight) {
if (err) console.log(err);
- browserDriver.setWindowSize(width,height,function(err) {
- if (err) console.log(err);
+ var position = 0;
+ // loop generates the image(s). Firefox and Internet Explorer will take
+ // a screenshot of the entire webpage, but Opera, Safari, and Chrome
+ // do not. For those browsers we scroll through the page and take
+ // incremental screenshots.
+ (function loop() {
+ var browser = cfg.browserName.replace(/\s/g, '_')+(!!cap ? '_'+cap.version : '');
+ var platform = (cap ? cap : cfg).platform.replace(/\s/g, '_');
+ var shot = (position/windowHeight) + 1;
- var browser = cfg.browserName+(!!cap ? '_'+cap.version : '');
- var platform = cap.platform.replace(/\s/g, '_');
+ if (cfg.browserName == 'firefox' || cfg.browserName == 'Internet Explorer') {
+ // saves file in the file `dir/browser_version_platform.png`
+ var filename = dir+'/'+browser+'_'+platform+'.png';
+ browserDriver.saveScreenshot(filename, function(err) {
+ if (err) console.log(err);
- // saves file in the file `dir/browser_version_platform.png`
- var filename = dir+'/'+browser+'_'+platform+'.png';
- browserDriver.saveScreenshot(filename, function(err) {
- if (err) console.log(err);
- browserDriver.quit()
- });
- });
+ browserDriver.quit();
+ });
+ } else {
+ // Use `window.scrollTo` because thats what jQuery does
+ // https://github.com/jquery/jquery/blob/1.12.3/src/offset.js#L186
+ browserDriver.safeEval('window.scrollTo(0,'+position+');', function(err) {
+ if (err) console.log(JSON.stringify(err));
+ // saves file in the file `dir/browser_version_platform_#.png`
+ var filename = dir+'/'+browser+'_'+platform+'_'+shot+'.png';
+ browserDriver.saveScreenshot(filename, function(err) {
+ if (err) console.log(err);
+
+ position += windowHeight;
+ if (position >= scrollHeight) {
+ browserDriver.quit();
+ } else {
+ loop();
+ }
+ });
+ });
+ }
+ })();
});
});
});