New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

I still get WebkitNoResponseError #181

Closed
tmaier opened this Issue Oct 4, 2011 · 63 comments

Comments

Projects
None yet
@tmaier
Copy link

tmaier commented Oct 4, 2011

This is a followup of #68.
Also after upgrade of capybara-webkit (0.7.1) and capybara (1.1.1) the specs still fail when running more than one spec with js: true.

rspec spec/requests/delivery_notes_spec.rb spec/requests/organizations_spec.rb spec/requests/people_spec.rb spec/requests/projects_spec.rb spec/requests/schedules_spec.rb spec/requests/work_breakdown_structures_spec.rb
Run filtered including {:focus=>true}

DeliveryNotes
  GET /projects/12345/work_breakdown_structures/12345/destroy
 >> Visit
 >> 1
 >> 36
 >> http://127.0.0.1:62396/users/sign_in
 << ok
 << 0
 << 
 >> Find
 >> 1
 >> 489
 >> .//*[self::input | self::textarea][not(./@type = 'submit' or ./@type = 'image' or ./@type = 'radio' or ./@type = 'checkbox' or ./@type = 'hidden' or ./@type = 'file')][((./@id = 'Email' or ./@name = 'Email') or ./@id = //label[normalize-space(string(.)) = 'Email']/@for)] | .//label[normalize-space(string(.)) = 'Email']//.//*[self::input | self::textarea][not(./@type = 'submit' or ./@type = 'image' or ./@type = 'radio' or ./@type = 'checkbox' or ./@type = 'hidden' or ./@type = 'file')]
 << ok
 << 1
 << 1
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 1
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 7
 >> visible
 >> 1
 >> 1
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 1
 << ok
 << 4
 << true
 >> Node
 >> 3
 >> 3
 >> set
 >> 1
 >> 1
 >> 19
 >> email-0@example.com
 << ok
 << 0
 << 
 >> Find
 >> 1
 >> 501
 >> .//*[self::input | self::textarea][not(./@type = 'submit' or ./@type = 'image' or ./@type = 'radio' or ./@type = 'checkbox' or ./@type = 'hidden' or ./@type = 'file')][((./@id = 'Password' or ./@name = 'Password') or ./@id = //label[normalize-space(string(.)) = 'Password']/@for)] | .//label[normalize-space(string(.)) = 'Password']//.//*[self::input | self::textarea][not(./@type = 'submit' or ./@type = 'image' or ./@type = 'radio' or ./@type = 'checkbox' or ./@type = 'hidden' or ./@type = 'file')]
 << ok
 << 1
 << 2
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 2
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 7
 >> visible
 >> 1
 >> 2
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 2
 << ok
 << 4
 << true
 >> Node
 >> 3
 >> 3
 >> set
 >> 1
 >> 2
 >> 7
 >> Geheim!
 << ok
 << 0
 << 
 >> Find
 >> 1
 >> 369
 >> .//input[./@type = 'submit' or ./@type = 'image' or ./@type = 'button'][((./@id = 'Sign in' or ./@value = 'Sign in') or ./@title = 'Sign in')] | .//input[./@type = 'image'][./@alt = 'Sign in'] | .//button[(((./@id = 'Sign in' or ./@value = 'Sign in') or normalize-space(string(.)) = 'Sign in') or ./@title = 'Sign in')] | .//input[./@type = 'image'][./@alt = 'Sign in']
 << ok
 << 1
 << 3
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 3
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 7
 >> visible
 >> 1
 >> 3
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 3
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 5
 >> click
 >> 1
 >> 3
 << ok
 << 0
 << 
 >> Visit
 >> 1
 >> 71
 >> http://127.0.0.1:62396/projects/4e8ab5513e81a7640e000007/delivery_notes
 << ok
 << 0
 << 
 >> Find
 >> 1
 >> 21
 >> .//*[@id = 'content']
 << ok
 << 1
 << 1
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 1
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 7
 >> visible
 >> 1
 >> 1
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 1
 << ok
 << 4
 << true
 >> Node
 >> 3
 >> 10
 >> findWithin
 >> 1
 >> 1
 >> 201
 >> .//a[./@href = '/projects/4e8ab5513e81a7640e000007/delivery_notes/4e8ab5513e81a7640e00000c'][(((./@id = 'Show' or normalize-space(string(.)) = 'Show') or ./@title = 'Show') or .//img[./@alt = 'Show'])]
 << ok
 << 1
 << 2
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 1
 << ok
 << 4
 << true
 >> Node
 >> 3
 >> 10
 >> findWithin
 >> 1
 >> 1
 >> 228
 >> .//a[./@href = '/projects/4e8ab5513e81a7640e000007/delivery_notes/4e8ab5513e81a7640e00000c'][(((./@id = 'Show' or contains(normalize-space(string(.)), 'Show')) or contains(./@title, 'Show')) or .//img[contains(./@alt, 'Show')])]
 << ok
 << 1
 << 3
 >> Evaluate
 >> 1
 >> 49
 >> window.original_confirm_function = window.confirm
 << ok
 << 2
 << {}
 >> Evaluate
 >> 1
 >> 47
 >> window.confirm = function(msg) { return true; }
 << ok
 << 2
 << {}
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 1
 << ok
 << 4
 << true
 >> Node
 >> 3
 >> 10
 >> findWithin
 >> 1
 >> 1
 >> 134
 >> .//a[./@href][(((./@id = 'Destroy' or normalize-space(string(.)) = 'Destroy') or ./@title = 'Destroy') or .//img[./@alt = 'Destroy'])]
 << ok
 << 1
 << 4
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 4
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 7
 >> visible
 >> 1
 >> 4
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 4
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 5
 >> click
 >> 1
 >> 4
 << ok
 << 0
 << 
 >> Evaluate
 >> 1
 >> 49
 >> window.confirm = window.original_confirm_function
 << ok
 << 4
 << null
 >> Find
 >> 1
 >> 21
 >> .//*[@id = 'content']
 << ok
 << 1
 << 1
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 1
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 7
 >> visible
 >> 1
 >> 1
 << ok
 << 4
 << true
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 1
 << ok
 << 4
 << true
 >> Node
 >> 3
 >> 10
 >> findWithin
 >> 1
 >> 1
 >> 98
 >> ./descendant-or-self::*[contains(normalize-space(.), 'Delivery note was successfully destroyed.')]
 << ok
 << 3
 << 2,3
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 1
 << ok
 << 4
 << true
 >> Node
 >> 3
 >> 10
 >> findWithin
 >> 1
 >> 1
 >> 201
 >> .//a[./@href = '/projects/4e8ab5513e81a7640e000007/delivery_notes/4e8ab5513e81a7640e00000c'][(((./@id = 'Show' or normalize-space(string(.)) = 'Show') or ./@title = 'Show') or .//img[./@alt = 'Show'])]
 << ok
 << 0
 << 
 >> Node
 >> 2
 >> 10
 >> isAttached
 >> 1
 >> 1
 << ok
 << 4
 << true
 >> Node
 >> 3
 >> 10
 >> findWithin
 >> 1
 >> 1
 >> 228
 >> .//a[./@href = '/projects/4e8ab5513e81a7640e000007/delivery_notes/4e8ab5513e81a7640e00000c'][(((./@id = 'Show' or contains(normalize-space(string(.)), 'Show')) or contains(./@title, 'Show')) or .//img[contains(./@alt, 'Show')])]
 << ok
 << 0
 << 
 >> Reset
 >> 0
 << ok
 << 0
 << 
    destroy delivery note

Projects
  POST /projects/12345/destroy
 >> Visit
 >> 1
 >> 36
 >> http://127.0.0.1:62396/users/sign_in
 << 
 >> Reset
 >> 0
    destroy (FAILED - 1)

Failures:

  1) Projects POST /projects/12345/destroy destroy
     Failure/Error: login_as user
     Capybara::Driver::Webkit::WebkitNoResponseError:
       No response received from the server.
     # ./spec/support/auth_methods.rb:14:in `login_as'
     # ./spec/requests/projects_spec.rb:7:in `block (2 levels) in <top (required)>'

Finished in 19.31 seconds
2 examples, 1 failure

Failed examples:

rspec ./spec/requests/projects_spec.rb:169 # Projects POST /projects/12345/destroy destroy

This is the code of the specs:

  describe "POST /projects/12345/destroy" do
    it "destroy", js: true, focus: true do
      own_p1 = Fabricate(:project, :name => "Mein Projekt 1", :owner => user.organization)

      visit projects_path

      within("#content") do
        page.should have_content "Mein Projekt 1"

        handle_js_confirm do
          click_link "Destroy"
        end
      end

      within("#content") do
        page.should have_content "Project was successfully destroyed."
        page.should_not have_content "Mein Projekt 1"
      end
    end
  end
  describe "GET /projects/12345/work_breakdown_structures/12345/destroy" do
    let!(:delivery_note) {Fabricate(:delivery_note, project: project)}

    it "destroy delivery note", js: true, focus: true do
      visit project_delivery_notes_path(project)

      within("#content") do
        page.should have_link "Show", href: project_delivery_note_path(project, delivery_note)

        handle_js_confirm do
          click_link "Destroy"
        end
      end

      within("#content") do
        page.should have_content "Delivery note was successfully destroyed."

        page.should_not have_link "Show", href: project_delivery_note_path(project, delivery_note)
      end
    end
  end
# Confirms an JavaScript Alert box
# Source: https://github.com/thoughtbot/capybara-webkit/issues/84
def handle_js_confirm(accept=true)
  page.evaluate_script "window.original_confirm_function = window.confirm"
  page.evaluate_script "window.confirm = function(msg) { return #{!!accept}; }"
  yield
ensure
  page.evaluate_script "window.confirm = window.original_confirm_function"
end
@groman-me

This comment has been minimized.

Copy link

groman-me commented Feb 22, 2012

I've had the same problem. The solution for me was put the visit call at first line inside of it block (before Factory calls). For example it could be something like that:

describe "POST /projects/12345/destroy" do
  it "destroy", js: true, focus: true do        
    visit index_path
    own_p1 = Fabricate(:project, :name => "Mein Projekt 1", :owner => user.organization)
    visit projects_path
@mattscilipoti

This comment has been minimized.

Copy link

mattscilipoti commented Mar 21, 2012

Temporary workaround: we found that removing rails_footnotes fixed this error for us. We haven't found what it was about the footnotes that caused an issue.

@simonoff

This comment has been minimized.

Copy link

simonoff commented Apr 10, 2012

Any updates?

@Ken-Richard

This comment has been minimized.

Copy link

Ken-Richard commented Apr 12, 2012

I am getting similar errors when running on my CI server (ubuntu/jenkins) with both xvfb-run and headless. The test work fine running on my OSX development machine. The tests run for a little while and then I get the error. Once the error appears the rest of the tests fail.

Any work arounds or debugging recommendations?

@vidriloco

This comment has been minimized.

Copy link

vidriloco commented Apr 23, 2012

Here also having the same problems: "No response received from the server" followed by "Broken pipe" error.

Using capybara-webkit 0.7.2

@flynfish

This comment has been minimized.

Copy link

flynfish commented Jun 15, 2012

+1 same issue but on capybara-webkit 0.12.1 and capybara 1.1.2

@andruby

This comment has been minimized.

Copy link

andruby commented Jun 15, 2012

+1 I also get a "No response received from the server" followed by "Broken pipe" errors for all remaining specs. Using capybara-webkit 0.12.1 and capybara 1.1.2 (tried WEBrick and Unicorn as test server)

@flynfish

This comment has been minimized.

Copy link

flynfish commented Jun 15, 2012

I have tried QT versions 4.8.0, 4.8.1 and 4.8.2 to no avail. A coworker is on QT 4.7.4 and does not get these errors. I tried switching versions to 4.7.4 with brew, but that bottle is no longer hosted. I then tried to install that version through brew with the --build_from_source option but I get a build error.

@andruby

This comment has been minimized.

Copy link

andruby commented Jun 15, 2012

@flynfish, @vidriloco do you use twitter-bootstrap-rails? Or any other less css gem?
My acceptance specs used to run fine until I moved from a sass version of twitter bootstrap to the less version (twitter-bootstrap-rails).

It might have something to do with this bug or it might be a coincidence..

@flynfish

This comment has been minimized.

Copy link

flynfish commented Jun 15, 2012

@andruby I am indeed using less-rails-bootstrap. Were you able to fix the issue?

On a sidenote related to my previous comment, I got QT 4.7.4 installed and my tests are still failing with the same no response from server and broken pipe errors. Not sure why it worked on my coworkers environment.

@andruby

This comment has been minimized.

Copy link

andruby commented Jun 19, 2012

@flynfish I've not tried many solutions yet. Maybe precompiling assets in test environment might work around the bug?
Please let me know when you find a fix.

@apangeajwrubel

This comment has been minimized.

Copy link

apangeajwrubel commented Jun 26, 2012

Having the same issue - none of the other engineers are seeing this. Feels like it might be a version issue. I'm on capybara 1.1.2 and capybara-webkit 0.12.1, but all of the rest of the engineers use the same versions. I'm on qt 4.8.2.

@flynfish

This comment has been minimized.

Copy link

flynfish commented Jun 26, 2012

So I think we found the root cause, it has to do with font rendering. Not sure if everyone having the issue is running bootstrap, but if we comment out our @import of the font.less file, then the errors go away.

@apangeajwrubel

This comment has been minimized.

Copy link

apangeajwrubel commented Jun 26, 2012

Hmm - we aren't using bootstrap but we are using zurb foundation. Let me see if there are any fonts being included in our project that might be the cause....

@mkrisher

This comment has been minimized.

Copy link

mkrisher commented Jun 26, 2012

what @flynfish and I found was some console output from capybara-webkit complaining about web font rendering. Bootstrap or not, any web font rendering can randomly cause a font render exception to be thrown in webkit in various version of Qt in our experience.

@apangeajwrubel

This comment has been minimized.

Copy link

apangeajwrubel commented Jun 26, 2012

The only reference to @font in our project is in modernizr - but we do have a javascript library that loads assets from a remote server. I bet the core issue is actually any call to a remote server... Hmmm.. off to do some testing.

@mkrisher

This comment has been minimized.

Copy link

mkrisher commented Jun 26, 2012

Below is the error I'm seeing:

webkit_server[86928] : ATSFontGetFileReference failed: error -50.

@apangeajwrubel

This comment has been minimized.

Copy link

apangeajwrubel commented Jun 26, 2012

@mkrisher how are you getting to that log? It's not in the rails stack trace... is webkit generating a separate log?

@mkrisher

This comment has been minimized.

Copy link

mkrisher commented Jun 26, 2012

@apangeajwrubel yes, I'm seeing it in the console. Likewise console output gets rendered when say running RSpec in the terminal.

@flynfish

This comment has been minimized.

Copy link

flynfish commented Jun 26, 2012

ok, this is really weird. Apparently when I commented out that import, webkit decided not to throw any errors. After running it again I got the errors again. :rage1:

@apangeajwrubel

This comment has been minimized.

Copy link

apangeajwrubel commented Jun 27, 2012

Ah - that's it. We're not using RSpec. Output must be different. Still looking in to the cause but we're fairly confident it's related to remote asset loading, which would explain the problem happening with web fonts and external js includes.

@mutewinter

This comment has been minimized.

Copy link

mutewinter commented Jun 28, 2012

I started getting this error today. I happened after running a bundle update. I reverted the updates one by one and tracked it down to the gem twitter-boostrap-rails (2.1.0). The update had brought me from 2.0.7 to 2.1.0.

Reverting to 2.0.7 fixes this problem entirely for me. I'm going to snoop around in twitter-boostrap-rails and see what might be the culprit.

I'm using

gem 'twitter-bootstrap-rails', '= 2.0.7'

to specify the gem since version 2.0.9 also breaks capybara-webkit.

Update: I specified 2.0.8 and it doesn't break. The error is somewhere between 2.0.8 and 2.0.9

@apangeajwrubel

This comment has been minimized.

Copy link

apangeajwrubel commented Jun 28, 2012

Still debugging this on our end since we don't use twitter bootstrap. I happened to have activity monitor up and noticed a very brief flash of fontd soaking CPU when I started up my test suite. I figure it might be a useful data point since others have seen commenting out web font imports solve the problem.

@mutewinter

This comment has been minimized.

Copy link

mutewinter commented Jun 28, 2012

My guess is that there's some sort of timeout threshold that's being hit. Perhaps if the assets take too long to compile this happens.

@apangeajwrubel

This comment has been minimized.

Copy link

apangeajwrubel commented Jun 28, 2012

Gotta be longer than 60 seconds then - that's as high as I set the default wait time and it didn't seem to change the outcomes.

@mutewinter

This comment has been minimized.

Copy link

mutewinter commented Jun 28, 2012

@apangeajwrubel I tried that too. I was so sure that was going to fix it. The hunt continues.

@apangeajwrubel

This comment has been minimized.

Copy link

apangeajwrubel commented Jun 28, 2012

Do any of you know how to install this gem against a specific version of qt? Thought maybe this was a 4.8.x issue so I grabbed 4.7.4 - this article (https://engineering.purdue.edu/elab/wiki/index.php/Torch_7_Installation_on_Mac_OS_X) indicated 4.8.X might have issues. But there's no bottle for the 4.7.x line of qt anymore so I had to install from the .dmg, and now I can't figure out how capybara-webkit is linking to qt when it installs.

@dhiemstra

This comment has been minimized.

Copy link

dhiemstra commented Jun 28, 2012

twitter-bootstrap-rails 2.0.9 introduces font-awesome support.
According to this thread it has something to do with Qt not being able to handle a font on your system.
I suspect Qt can't handle font-awesome.

@rschmukler

This comment has been minimized.

Copy link

rschmukler commented Jul 2, 2012

I can confirm that I am having this bug on a non twitter-bootstrap-rails project which independently uses font-awesome

edit:
A temp hack fix for me was:

Switch application.css to application.scss.erb and then manually import font-awesome only if Rails.env.test? is false.

ie:
<% unless Rails.env.test? %>
@import "font-awesome"
<% end %>

@carloslopes

This comment has been minimized.

Copy link
Contributor

carloslopes commented Oct 26, 2012

Sure. Here is the output: https://gist.github.com/3959987

@jferris

This comment has been minimized.

Copy link
Member

jferris commented Oct 26, 2012

@carloslopes from the backtraces there, it looks like it's running the released version of capybara-webkit (0.12.1) and not the ref you mentioned. Did you remember to run bundle install and bundle exec? Also, there have been a couple new fixes on master since that ref, so you may want to use master instead.

@carloslopes

This comment has been minimized.

Copy link
Contributor

carloslopes commented Oct 26, 2012

@jferris sorry for the last gist, i forgot that i reverted my gemfile to use the version 0.12.1 so i could make the tests pass on my another machine with linux.

here is the new output: https://gist.github.com/3959987

@jferris

This comment has been minimized.

Copy link
Member

jferris commented Oct 26, 2012

@carloslopes great - thanks. I think that will help us narrow down where the segfault may be occurring.

@carloslopes

This comment has been minimized.

Copy link
Contributor

carloslopes commented Oct 26, 2012

@jferris great!

if i can help with something else, just ask me 😄

@jamilbk

This comment has been minimized.

Copy link

jamilbk commented Nov 26, 2012

+1

Seems to be a QtWebKit issue with certain web fonts with on OS X. Possibly this one? https://bugs.webkit.org/show_bug.cgi?id=61031

@jesseclark

This comment has been minimized.

Copy link

jesseclark commented Dec 8, 2012

Using OS X 10.6.8, Qt 4.7
Using capybara (2.0.1)
Using capybara-webkit (0.13.0) from git://github.com/thoughtbot/capybara-webkit.git (at master) with native extensions

I get this exception when running my integration tests:

          Broken pipe
        @ /Users/jesse/.rvm/gems/ruby-1.9.3-p327@corengi.com/bundler/gems/capybara-webkit-2eb38b3c0235/lib/capybara/webkit/connection.rb:21:in `write'
          /Users/jesse/.rvm/gems/ruby-1.9.3-p327@corengi.com/bundler/gems/capybara-webkit-2eb38b3c0235/lib/capybara/webkit/connection.rb:21:in `puts'
          /Users/jesse/.rvm/gems/ruby-1.9.3-p327@corengi.com/bundler/gems/capybara-webkit-2eb38b3c0235/lib/capybara/webkit/connection.rb:21:in `puts'
          /Users/jesse/.rvm/gems/ruby-1.9.3-p327@corengi.com/bundler/gems/capybara-webkit-2eb38b3c0235/lib/capybara/webkit/browser.rb:140:in `command'
          /Users/jesse/.rvm/gems/ruby-1.9.3-p327@corengi.com/bundler/gems/capybara-webkit-2eb38b3c0235/lib/capybara/webkit/browser.rb:30:in `reset!'
          /Users/jesse/.rvm/gems/ruby-1.9.3-p327@corengi.com/bundler/gems/capybara-webkit-2eb38b3c0235/lib/capybara/webkit/driver.rb:145:in `reset!'
          /Users/jesse/.rvm/gems/ruby-1.9.3-p327@corengi.com/gems/capybara-2.0.1/lib/capybara/session.rb:72:in `reset!'
          /Users/jesse/.rvm/gems/ruby-1.9.3-p327@corengi.com/gems/capybara-2.0.1/lib/capybara.rb:261:in `block in reset_sessions!'
          /Users/jesse/.rvm/gems/ruby-1.9.3-p327@corengi.com/gems/capybara-2.0.1/lib/capybara.rb:261:in `each'
          /Users/jesse/.rvm/gems/ruby-1.9.3-p327@corengi.com/gems/capybara-2.0.1/lib/capybara.rb:261:in `reset_sessions!'
          test/test_helper.rb:76:in `reset_capybara'

Not importing font-awesome fixes the issue (btw - I am using font-awesome via the compass_twitter_bootstrap gem ).

@dsci

This comment has been minimized.

Copy link

dsci commented Dec 18, 2012

I second @jesseclark 's comment.

Using OS X 10.7.5, Qt 4.8.2, Capybara 1.1.4, capybara-webkit 0.13.0, removing font-awesome fixes the issue.

@panozzaj

This comment has been minimized.

Copy link

panozzaj commented Dec 27, 2012

For another potential workaround, check out the gists at teampoltergeist/poltergeist#44. I was able to use one like:

if Rails.env.test?
  require 'rack/contrib/simple_endpoint'
  Rails.application.config.middleware.insert_after Rack::Runtime, Rack::SimpleEndpoint, /\.ttf$/ do |req, res, match|
    res.status = '403'
    "I will not serve TTF fonts in test mode."
  end
end

(after installing the rack-contrib gem)

@mhoran

This comment has been minimized.

Copy link
Collaborator

mhoran commented Jan 1, 2013

Could folks give #442 a shot? I've implemented a workaround that resolves these crashes with Font Awesome.

@Govinda-Fichtner

This comment has been minimized.

Copy link

Govinda-Fichtner commented Jan 2, 2013

I am also having this issue with fonts from http://fontello.com/. So this seems not a problem of font-awesome.
According to http://code.google.com/p/wkhtmltopdf/issues/detail?id=410 and there comment 11 it seems to be related to qt 4.x... I could not get it working with qt 4.8.4 and latest capybara-webkit master...
I also found this http://trac.webkit.org/changeset/113968, but cannot say if it will remove the problems with custom fonts.
Will we see support for QT5 in the near future?

@mhoran

This comment has been minimized.

Copy link
Collaborator

mhoran commented Jan 2, 2013

@Govinda-Fichtner, could you try out PR #442? I also have a Qt 5 compatibility branch, but I'm not sure that it will fix the issue.

@Govinda-Fichtner

This comment has been minimized.

Copy link

Govinda-Fichtner commented Jan 2, 2013

Going to test PR #442 first thing in the morning...

@mhoran

This comment has been minimized.

Copy link
Collaborator

mhoran commented Jan 2, 2013

@Govinda-Fichtner, thanks for the link to http://trac.webkit.org/changeset/113968. Although the wkhtmltopdf link looks unrelated, the changeset does lead me to believe this issue may be resolved in Qt 5. However, the workaround in #442 should work as well.

Maintaining compatibility between Qt 4.8 and 5.0 will be difficult, as internal naming of some APIs has changed, among other things. I'd hat to have a bunch of #if statements throughout the code, but it may come down to that.

Looking forward to hearing about your tests.

@carloslopes

This comment has been minimized.

Copy link
Contributor

carloslopes commented Jan 2, 2013

@mhoran i tested your patch on Mac OS X 10.8 with Qt 4.8.3 and Capybara 2.0.2

It worked perfectly

@mhoran

This comment has been minimized.

Copy link
Collaborator

mhoran commented Jan 2, 2013

Fantastic, thanks! I've also confirmed that the issue is resolved in Qt 5. However, we'll probably still leave the workaround in pace for Qt 4.8.

@carloslopes

This comment has been minimized.

Copy link
Contributor

carloslopes commented Jan 2, 2013

Np, you are welcome! 😄

@mhoran

This comment has been minimized.

Copy link
Collaborator

mhoran commented Jan 3, 2013

I've merged 11c596f to master. Once we hear from @Govinda-Fichtner, I think it's safe to say this issue is resolved.

@jamilbk

This comment has been minimized.

Copy link

jamilbk commented Jan 3, 2013

@mhoran Just confirming -- this is a work-around for Qt 4.8 and the Qt 5.0 compatibility branch is still in the works?

@mhoran

This comment has been minimized.

Copy link
Collaborator

mhoran commented Jan 3, 2013

The latest commit is just a workaround for Qt 4.8. I've not committed Qt 5 support as it is not backwards compatible with Qt 4.8. Though Qt 5 properly fixes the issue, the workaround should be sufficient for headless testing. It simply disables web fonts when applied. Qt 5 resolves the issue by loading web fonts via a different mechanism on OS X, which bypasses the segfault inducing code.

@mhoran

This comment has been minimized.

Copy link
Collaborator

mhoran commented Jan 4, 2013

capybara-webkit 0.14.0 has been released, which includes the fix for this issue.

@mhoran mhoran closed this Jan 4, 2013

@Govinda-Fichtner

This comment has been minimized.

Copy link

Govinda-Fichtner commented Jan 4, 2013

@mhoran OK. Took me some time to test this as I had to fix several issues in my tests with capybara 2.x. But in the end I can say that the workaround fixes the issues for me. Great work!
Is the dependency on capybara 2.x necessary?

@carloslopes

This comment has been minimized.

Copy link
Contributor

carloslopes commented Jan 4, 2013

I think it is. When you update the capybara-webkit in your Gemfile, it will update your capybara gem too (maybe it cause some incompatibilities if you are setting the capybara's version explicity to an older version, like 1.1.4)

And if you are using rspec-rails, take a look at this blog post, it explain the new spec's pattern

@Govinda-Fichtner

This comment has been minimized.

Copy link

Govinda-Fichtner commented Jan 16, 2013

After some time with capybara 2 I must say that I still have issues with capybara 2 where tests sometimes work and sometimes are not working... lost already 2 days trying to fix this. These were all tests that were stable with capybara 1.x. With the dependency on capybara 2 if I want to have the fixes of the lastest capybara-webkit I have no choice but to use capybara 2...

@bosunolanrewaju bosunolanrewaju assigned kenyonj and unassigned kenyonj Apr 9, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment