1
0
Fork 0
mirror of https://github.com/teampoltergeist/poltergeist.git synced 2022-11-09 12:05:00 -05:00

Added ability to set paper_size via a driver setter

This commit is contained in:
Philippe-Antoine Lehoux 2013-08-30 14:47:43 -04:00 committed by Dmitry Vorotilin
parent d063199ba9
commit 25a51f13f8
9 changed files with 45 additions and 0 deletions

View file

@ -1,6 +1,7 @@
### Next release ###
#### Features ####
* Added ability to set paper_size via a driver setter (Philippe Lehoux)
#### Bug fixes ####

View file

@ -171,6 +171,10 @@ module Capybara::Poltergeist
command 'render_base64', format.to_s, !!options[:full], options[:selector]
end
def set_paper_size(size)
command 'set_paper_size', size
end
def resize(width, height)
command 'resize', width, height
end

View file

@ -277,6 +277,10 @@ class Poltergeist.Browser
@page.setClipRect(rect)
dimensions
set_paper_size: (size) ->
@page.setPaperSize(size)
this.sendResponse(true)
resize: (width, height) ->
@page.setViewportSize(width: width, height: height)
this.sendResponse(true)

View file

@ -371,6 +371,11 @@ Poltergeist.Browser = (function() {
return dimensions;
};
Browser.prototype.set_paper_size = function(size) {
this.page.setPaperSize(size);
return this.sendResponse(true);
};
Browser.prototype.resize = function(width, height) {
this.page.setViewportSize({
width: width,

View file

@ -198,6 +198,10 @@ Poltergeist.WebPage = (function() {
return this["native"].viewportSize = size;
};
WebPage.prototype.setPaperSize = function(size) {
return this["native"].paperSize = size;
};
WebPage.prototype.scrollPosition = function() {
return this["native"].scrollPosition;
};

View file

@ -132,6 +132,9 @@ class Poltergeist.WebPage
setViewportSize: (size) ->
@native.viewportSize = size
setPaperSize: (size) ->
@native.paperSize = size
scrollPosition: ->
@native.scrollPosition

View file

@ -161,6 +161,10 @@ module Capybara::Poltergeist
browser.render_base64(format, options)
end
def paper_size=(size = {})
browser.set_paper_size(size)
end
def resize(width, height)
browser.resize(width, height)
end

View file

@ -25,6 +25,7 @@ Gem::Specification.new do |s|
s.add_development_dependency 'sinatra', '~> 1.0'
s.add_development_dependency 'rake', '~> 10.0'
s.add_development_dependency 'image_size', '~> 1.0'
s.add_development_dependency 'pdf-reader', '~> 1.3.3'
s.add_development_dependency 'coffee-script', '~> 2.2.0'
s.add_development_dependency 'guard-coffeescript', '~> 1.0.0'
s.add_development_dependency 'rspec-rerun', '~> 0.1'

View file

@ -1,5 +1,6 @@
require 'spec_helper'
require 'image_size'
require 'pdf/reader'
module Capybara::Poltergeist
describe Driver do
@ -180,6 +181,24 @@ module Capybara::Poltergeist
expect(File.exist?(file)).to be_true
end
context 'when #paper_size= is set' do
let(:format) { :pdf }
it 'changes pdf size' do
@session.visit('/poltergeist/long_page')
@driver.paper_size = { width: '1in', height: '1in' }
@driver.save_screenshot(file)
reader = PDF::Reader.new(file)
reader.pages.each do |page|
bbox = page.attributes[:MediaBox]
width = (bbox[2] - bbox[0]) / 72
expect(width).to eq(1)
end
end
end
include_examples 'render screen'
end