diff --git a/spec/driver_spec.rb b/spec/driver_spec.rb index 1dd1f5d..451cca4 100644 --- a/spec/driver_spec.rb +++ b/spec/driver_spec.rb @@ -1670,4 +1670,45 @@ describe Capybara::Driver::Webkit do subject.window_handles.should_not include(last_handle) end end + + context "timers app" do + before(:all) do + @app = lambda do |env| + case env["PATH_INFO"] + when "/success" + [200, {'Content-Type' => 'text/html'}, ['']] + when "/not-found" + [404, {}, []] + when "/outer" + body = <<-HTML + + + + + + + + HTML + [200, + { 'Content-Type' => 'text/html', 'Content-Length' => body.length.to_s }, + [body]] + else + body = "" + return [200, {'Content-Type' => 'text/html', 'Content-Length' => body.length.to_s}, [body]] + end + end + end + + it "raises error for any loadFinished failure" do + expect do + subject.visit("/outer") + sleep 1 + subject.find("//body") + end.to raise_error(Capybara::Driver::Webkit::WebkitInvalidResponseError) + end + end end diff --git a/src/Connection.cpp b/src/Connection.cpp index bb9f219..8dc8566 100644 --- a/src/Connection.cpp +++ b/src/Connection.cpp @@ -41,7 +41,7 @@ void Connection::startCommand() { } void Connection::pendingLoadFinished(bool success) { - m_pageSuccess = success; + m_pageSuccess = m_pageSuccess && success; if (m_commandWaiting) startCommand(); } diff --git a/src/WebPage.cpp b/src/WebPage.cpp index b269fb5..d5a92b9 100644 --- a/src/WebPage.cpp +++ b/src/WebPage.cpp @@ -155,10 +155,10 @@ bool WebPage::isLoading() const { QString WebPage::failureString() { QString message = QString("Unable to load URL: ") + currentFrame()->requestedUrl().toString(); - if(m_errorPageMessage.isEmpty()) + if (m_errorPageMessage.isEmpty()) return message; else - return message + ": " + m_errorPageMessage; + return message + m_errorPageMessage; } bool WebPage::render(const QString &fileName) { @@ -203,7 +203,7 @@ bool WebPage::extension(Extension extension, const ExtensionOption *option, Exte } else if (extension == QWebPage::ErrorPageExtension) { ErrorPageExtensionOption *errorOption = (ErrorPageExtensionOption*) option; - m_errorPageMessage = "Because of error loading " + errorOption->url.toString() + ": " + errorOption->errorString; + m_errorPageMessage = " because of error loading " + errorOption->url.toString() + ": " + errorOption->errorString; return false; } return false; @@ -250,6 +250,15 @@ void WebPage::handleUnsupportedContent(QNetworkReply *reply) { Q_UNUSED(handler); } +bool WebPage::supportsExtension(Extension extension) const { + if (extension == ErrorPageExtension) + return true; + else if (extension == ChooseMultipleFilesExtension) + return true; + else + return false; +} + QWebPage *WebPage::createWindow(WebWindowType type) { Q_UNUSED(type); return m_manager->createPage(this); @@ -278,9 +287,3 @@ bool WebPage::matchesWindowSelector(QString selector) { void WebPage::setFocus() { m_manager->setCurrentPage(this); } - -bool WebPage::supportsExtension(Extension extension) const { - if(extension == ErrorPageExtension) { return true; } - else if(extension == ChooseMultipleFilesExtension) { return true; } - else return false; -}