capybara-webkit 0.14.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +1 -1
- data/NEWS.md +6 -0
- data/README.md +1 -1
- data/lib/capybara/webkit/connection.rb +2 -0
- data/lib/capybara/webkit/version.rb +1 -1
- data/spec/driver_rendering_spec.rb +24 -4
- data/spec/driver_spec.rb +5 -30
- data/src/Render.cpp +1 -2
- data/src/WebPage.cpp +3 -2
- data/src/WebPage.h +1 -1
- metadata +16 -16
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/NEWS.md
    CHANGED
    
    | @@ -1,3 +1,9 @@ | |
| 1 | 
            +
            New for 0.14.1:
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            * Rescue from Errno::ESRCH in the exit hook in case webkit_server has already ended.
         | 
| 4 | 
            +
            * Remove web font override for first-letter and first-line pseudo elements, which was causing issues for some users.
         | 
| 5 | 
            +
            * Restore viewport dimensions after rendering screenshots.
         | 
| 6 | 
            +
             | 
| 1 7 | 
             
            New for 0.14.0:
         | 
| 2 8 |  | 
| 3 9 | 
             
            * URL blacklist support.
         | 
    
        data/README.md
    CHANGED
    
    | @@ -192,4 +192,4 @@ The names and logos for thoughtbot are trademarks of thoughtbot, inc. | |
| 192 192 | 
             
            License
         | 
| 193 193 | 
             
            -------
         | 
| 194 194 |  | 
| 195 | 
            -
            capybara-webkit is Copyright (c) 2010- | 
| 195 | 
            +
            capybara-webkit is Copyright (c) 2010-2013 thoughtbot, inc. It is free software, and may be redistributed under the terms specified in the LICENSE file.
         | 
| @@ -43,7 +43,7 @@ describe Capybara::Webkit::Driver, "rendering an image" do | |
| 43 43 | 
             
                end
         | 
| 44 44 |  | 
| 45 45 | 
             
                it "height should be at least 10px" do
         | 
| 46 | 
            -
                  @image[:height].should >= 10
         | 
| 46 | 
            +
                  @image[:height].should be >= 10
         | 
| 47 47 | 
             
                end
         | 
| 48 48 | 
             
              end
         | 
| 49 49 |  | 
| @@ -55,7 +55,12 @@ describe Capybara::Webkit::Driver, "rendering an image" do | |
| 55 55 | 
             
                end
         | 
| 56 56 |  | 
| 57 57 | 
             
                it "height should match the height given" do
         | 
| 58 | 
            -
                  @image[:height].should  | 
| 58 | 
            +
                  @image[:height].should == 400
         | 
| 59 | 
            +
                end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                it "should reset window dimensions to their default value" do
         | 
| 62 | 
            +
                  driver.evaluate_script('window.innerWidth').should == 1680
         | 
| 63 | 
            +
                  driver.evaluate_script('window.innerHeight').should == 1050
         | 
| 59 64 | 
             
                end
         | 
| 60 65 | 
             
              end
         | 
| 61 66 |  | 
| @@ -63,11 +68,26 @@ describe Capybara::Webkit::Driver, "rendering an image" do | |
| 63 68 | 
             
                before { render(:width => 50, :height => 10) }
         | 
| 64 69 |  | 
| 65 70 | 
             
                it "width should be greater than the width given" do
         | 
| 66 | 
            -
                  @image[:width].should > 50
         | 
| 71 | 
            +
                  @image[:width].should be > 50
         | 
| 67 72 | 
             
                end
         | 
| 68 73 |  | 
| 69 74 | 
             
                it "height should be greater than the height given" do
         | 
| 70 | 
            -
                  @image[:height].should > 10
         | 
| 75 | 
            +
                  @image[:height].should be > 10
         | 
| 76 | 
            +
                end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                it "should restore viewport dimensions after rendering" do
         | 
| 79 | 
            +
                  driver.evaluate_script('window.innerWidth').should == 1680
         | 
| 80 | 
            +
                  driver.evaluate_script('window.innerHeight').should == 1050
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
              end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
              context "with a custom viewport size" do
         | 
| 85 | 
            +
                before { driver.resize_window(800, 600) }
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                it "should restore viewport dimensions after rendering" do
         | 
| 88 | 
            +
                  render({})
         | 
| 89 | 
            +
                  driver.evaluate_script('window.innerWidth').should == 800
         | 
| 90 | 
            +
                  driver.evaluate_script('window.innerHeight').should == 600
         | 
| 71 91 | 
             
                end
         | 
| 72 92 | 
             
              end
         | 
| 73 93 | 
             
            end
         | 
    
        data/spec/driver_spec.rb
    CHANGED
    
    | @@ -1334,14 +1334,10 @@ describe Capybara::Webkit::Driver do | |
| 1334 1334 | 
             
                          p { font-family: "Verdana"; }
         | 
| 1335 1335 | 
             
                          p:before { font-family: "Verdana"; }
         | 
| 1336 1336 | 
             
                          p:after { font-family: "Verdana"; }
         | 
| 1337 | 
            -
                          #first-line-div:first-line { font-family: "Verdana"; }
         | 
| 1338 | 
            -
                          #first-letter-div:first-letter { font-family: "Verdana"; }
         | 
| 1339 1337 | 
             
                        </style>
         | 
| 1340 1338 | 
             
                      </head>
         | 
| 1341 1339 | 
             
                      <body>
         | 
| 1342 1340 | 
             
                        <p id="text">Hello</p>
         | 
| 1343 | 
            -
                        <p id="first-line-div">Hello first line.</p>
         | 
| 1344 | 
            -
                        <p id="first-letter-div">Hello first letter.</p>
         | 
| 1345 1341 | 
             
                      </body>
         | 
| 1346 1342 | 
             
                    </html>
         | 
| 1347 1343 | 
             
                  HTML
         | 
| @@ -1349,43 +1345,22 @@ describe Capybara::Webkit::Driver do | |
| 1349 1345 |  | 
| 1350 1346 | 
             
                before { visit("/") }
         | 
| 1351 1347 |  | 
| 1352 | 
            -
                 | 
| 1353 | 
            -
                   | 
| 1348 | 
            +
                let(:font_family) do
         | 
| 1349 | 
            +
                  driver.evaluate_script(<<-SCRIPT)
         | 
| 1354 1350 | 
             
                    var element = document.getElementById("text");
         | 
| 1355 1351 | 
             
                    element.ownerDocument.defaultView.getComputedStyle(element, null).getPropertyValue("font-family");
         | 
| 1356 1352 | 
             
                  SCRIPT
         | 
| 1357 | 
            -
                  font_family.should == "Arial"
         | 
| 1358 | 
            -
                end
         | 
| 1359 | 
            -
             | 
| 1360 | 
            -
                it "ignores custom fonts before an element" do
         | 
| 1361 | 
            -
                  font_family = driver.evaluate_script(<<-SCRIPT)
         | 
| 1362 | 
            -
                    var element = document.getElementById("text");
         | 
| 1363 | 
            -
                    element.ownerDocument.defaultView.getComputedStyle(element, 'before').getPropertyValue("font-family");
         | 
| 1364 | 
            -
                  SCRIPT
         | 
| 1365 | 
            -
                  font_family.should == "Arial"
         | 
| 1366 1353 | 
             
                end
         | 
| 1367 1354 |  | 
| 1368 | 
            -
                it "ignores custom fonts | 
| 1369 | 
            -
                  font_family = driver.evaluate_script(<<-SCRIPT)
         | 
| 1370 | 
            -
                    var element = document.getElementById("text");
         | 
| 1371 | 
            -
                    element.ownerDocument.defaultView.getComputedStyle(element, 'after').getPropertyValue("font-family");
         | 
| 1372 | 
            -
                  SCRIPT
         | 
| 1355 | 
            +
                it "ignores custom fonts" do
         | 
| 1373 1356 | 
             
                  font_family.should == "Arial"
         | 
| 1374 1357 | 
             
                end
         | 
| 1375 1358 |  | 
| 1376 | 
            -
                it "ignores custom fonts  | 
| 1377 | 
            -
                  font_family = driver.evaluate_script(<<-SCRIPT)
         | 
| 1378 | 
            -
                    var element = document.getElementById("first-line-div");
         | 
| 1379 | 
            -
                    element.ownerDocument.defaultView.getComputedStyle(element, 'first-line').getPropertyValue("font-family");
         | 
| 1380 | 
            -
                  SCRIPT
         | 
| 1359 | 
            +
                it "ignores custom fonts before an element" do
         | 
| 1381 1360 | 
             
                  font_family.should == "Arial"
         | 
| 1382 1361 | 
             
                end
         | 
| 1383 1362 |  | 
| 1384 | 
            -
                it "ignores custom fonts  | 
| 1385 | 
            -
                  font_family = driver.evaluate_script(<<-SCRIPT)
         | 
| 1386 | 
            -
                    var element = document.getElementById("first-letter-div");
         | 
| 1387 | 
            -
                    element.ownerDocument.defaultView.getComputedStyle(element, 'first-letter').getPropertyValue("font-family");
         | 
| 1388 | 
            -
                  SCRIPT
         | 
| 1363 | 
            +
                it "ignores custom fonts after an element" do
         | 
| 1389 1364 | 
             
                  font_family.should == "Arial"
         | 
| 1390 1365 | 
             
                end
         | 
| 1391 1366 | 
             
              end
         | 
    
        data/src/Render.cpp
    CHANGED
    
    | @@ -11,9 +11,8 @@ void Render::start() { | |
| 11 11 | 
             
              int height = arguments()[2].toInt();
         | 
| 12 12 |  | 
| 13 13 | 
             
              QSize size(width, height);
         | 
| 14 | 
            -
              page()->setViewportSize(size);
         | 
| 15 14 |  | 
| 16 | 
            -
              bool result = page()->render( imagePath );
         | 
| 15 | 
            +
              bool result = page()->render( imagePath, size );
         | 
| 17 16 |  | 
| 18 17 | 
             
              emitFinished(result);
         | 
| 19 18 | 
             
            }
         | 
    
        data/src/WebPage.cpp
    CHANGED
    
    | @@ -70,7 +70,7 @@ void WebPage::loadJavascript() { | |
| 70 70 | 
             
            }
         | 
| 71 71 |  | 
| 72 72 | 
             
            void WebPage::setUserStylesheet() {
         | 
| 73 | 
            -
              QString data = QString("*, : | 
| 73 | 
            +
              QString data = QString("*, :before, :after { font-family: 'Arial' ! important; }").toUtf8().toBase64();
         | 
| 74 74 | 
             
              QUrl url = QUrl(QString("data:text/css;charset=utf-8;base64,") + data);
         | 
| 75 75 | 
             
              settings()->setUserStyleSheetUrl(url);
         | 
| 76 76 | 
             
            }
         | 
| @@ -193,12 +193,13 @@ QString WebPage::failureString() { | |
| 193 193 | 
             
                return message + m_errorPageMessage;
         | 
| 194 194 | 
             
            }
         | 
| 195 195 |  | 
| 196 | 
            -
            bool WebPage::render(const QString &fileName) {
         | 
| 196 | 
            +
            bool WebPage::render(const QString &fileName, const QSize &minimumSize) {
         | 
| 197 197 | 
             
              QFileInfo fileInfo(fileName);
         | 
| 198 198 | 
             
              QDir dir;
         | 
| 199 199 | 
             
              dir.mkpath(fileInfo.absolutePath());
         | 
| 200 200 |  | 
| 201 201 | 
             
              QSize viewportSize = this->viewportSize();
         | 
| 202 | 
            +
              this->setViewportSize(minimumSize);
         | 
| 202 203 | 
             
              QSize pageSize = this->mainFrame()->contentsSize();
         | 
| 203 204 | 
             
              if (pageSize.isEmpty()) {
         | 
| 204 205 | 
             
                return false;
         | 
    
        data/src/WebPage.h
    CHANGED
    
    | @@ -20,7 +20,7 @@ class WebPage : public QWebPage { | |
| 20 20 | 
             
                void setPromptText(QString action);
         | 
| 21 21 | 
             
                int getLastStatus();
         | 
| 22 22 | 
             
                void setCustomNetworkAccessManager();
         | 
| 23 | 
            -
                bool render(const QString &fileName);
         | 
| 23 | 
            +
                bool render(const QString &fileName, const QSize &minimumSize);
         | 
| 24 24 | 
             
                virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0);
         | 
| 25 25 | 
             
                void setSkipImageLoading(bool skip);
         | 
| 26 26 | 
             
                QVariantList consoleMessages();
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: capybara-webkit
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.14. | 
| 4 | 
            +
              version: 0.14.1
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -14,11 +14,11 @@ authors: | |
| 14 14 | 
             
            autorequire: 
         | 
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 | 
            -
            date: 2013-01- | 
| 17 | 
            +
            date: 2013-01-13 00:00:00.000000000 Z
         | 
| 18 18 | 
             
            dependencies:
         | 
| 19 19 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 20 20 | 
             
              name: capybara
         | 
| 21 | 
            -
              requirement: & | 
| 21 | 
            +
              requirement: &9711180 !ruby/object:Gem::Requirement
         | 
| 22 22 | 
             
                none: false
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - ~>
         | 
| @@ -29,10 +29,10 @@ dependencies: | |
| 29 29 | 
             
                    version: 2.0.2
         | 
| 30 30 | 
             
              type: :runtime
         | 
| 31 31 | 
             
              prerelease: false
         | 
| 32 | 
            -
              version_requirements: * | 
| 32 | 
            +
              version_requirements: *9711180
         | 
| 33 33 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 34 34 | 
             
              name: json
         | 
| 35 | 
            -
              requirement: & | 
| 35 | 
            +
              requirement: &7355880 !ruby/object:Gem::Requirement
         | 
| 36 36 | 
             
                none: false
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 38 | 
             
                - - ! '>='
         | 
| @@ -40,10 +40,10 @@ dependencies: | |
| 40 40 | 
             
                    version: '0'
         | 
| 41 41 | 
             
              type: :runtime
         | 
| 42 42 | 
             
              prerelease: false
         | 
| 43 | 
            -
              version_requirements: * | 
| 43 | 
            +
              version_requirements: *7355880
         | 
| 44 44 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 45 45 | 
             
              name: rspec
         | 
| 46 | 
            -
              requirement: & | 
| 46 | 
            +
              requirement: &7240560 !ruby/object:Gem::Requirement
         | 
| 47 47 | 
             
                none: false
         | 
| 48 48 | 
             
                requirements:
         | 
| 49 49 | 
             
                - - ~>
         | 
| @@ -51,10 +51,10 @@ dependencies: | |
| 51 51 | 
             
                    version: 2.6.0
         | 
| 52 52 | 
             
              type: :development
         | 
| 53 53 | 
             
              prerelease: false
         | 
| 54 | 
            -
              version_requirements: * | 
| 54 | 
            +
              version_requirements: *7240560
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 56 | 
             
              name: sinatra
         | 
| 57 | 
            -
              requirement: & | 
| 57 | 
            +
              requirement: &7239700 !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                none: false
         | 
| 59 59 | 
             
                requirements:
         | 
| 60 60 | 
             
                - - ! '>='
         | 
| @@ -62,10 +62,10 @@ dependencies: | |
| 62 62 | 
             
                    version: '0'
         | 
| 63 63 | 
             
              type: :development
         | 
| 64 64 | 
             
              prerelease: false
         | 
| 65 | 
            -
              version_requirements: * | 
| 65 | 
            +
              version_requirements: *7239700
         | 
| 66 66 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 67 67 | 
             
              name: mini_magick
         | 
| 68 | 
            -
              requirement: & | 
| 68 | 
            +
              requirement: &7238900 !ruby/object:Gem::Requirement
         | 
| 69 69 | 
             
                none: false
         | 
| 70 70 | 
             
                requirements:
         | 
| 71 71 | 
             
                - - ! '>='
         | 
| @@ -73,10 +73,10 @@ dependencies: | |
| 73 73 | 
             
                    version: '0'
         | 
| 74 74 | 
             
              type: :development
         | 
| 75 75 | 
             
              prerelease: false
         | 
| 76 | 
            -
              version_requirements: * | 
| 76 | 
            +
              version_requirements: *7238900
         | 
| 77 77 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 78 78 | 
             
              name: rake
         | 
| 79 | 
            -
              requirement: & | 
| 79 | 
            +
              requirement: &7238420 !ruby/object:Gem::Requirement
         | 
| 80 80 | 
             
                none: false
         | 
| 81 81 | 
             
                requirements:
         | 
| 82 82 | 
             
                - - ! '>='
         | 
| @@ -84,10 +84,10 @@ dependencies: | |
| 84 84 | 
             
                    version: '0'
         | 
| 85 85 | 
             
              type: :development
         | 
| 86 86 | 
             
              prerelease: false
         | 
| 87 | 
            -
              version_requirements: * | 
| 87 | 
            +
              version_requirements: *7238420
         | 
| 88 88 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 89 89 | 
             
              name: appraisal
         | 
| 90 | 
            -
              requirement: & | 
| 90 | 
            +
              requirement: &7237740 !ruby/object:Gem::Requirement
         | 
| 91 91 | 
             
                none: false
         | 
| 92 92 | 
             
                requirements:
         | 
| 93 93 | 
             
                - - ~>
         | 
| @@ -95,7 +95,7 @@ dependencies: | |
| 95 95 | 
             
                    version: 0.4.0
         | 
| 96 96 | 
             
              type: :development
         | 
| 97 97 | 
             
              prerelease: false
         | 
| 98 | 
            -
              version_requirements: * | 
| 98 | 
            +
              version_requirements: *7237740
         | 
| 99 99 | 
             
            description: 
         | 
| 100 100 | 
             
            email: support@thoughtbot.com
         | 
| 101 101 | 
             
            executables: []
         |