2017-08-23 2 views
0

Das JQuery DataTables-Plug-In wird nicht für meine Capybara-Integrationstests geladen, wobei Poltergeist als JS-Treiber verwendet wird.Rails: Capybara (Poltergeist-Treiber) wird nicht geladen JQuery DataTables

Zunächst sollte mein Test auf den DataTables-Header klicken, um die Tabelle zu sortieren, aber als das nicht funktionierte, habe ich meine Tests geändert, um zu sehen, ob DataTables überhaupt nicht geladen wird. Es ist nicht.

Es gibt keine Fehler in den Testprotokollen und es funktioniert gut mit manuellen Browsertests (keine JS-Konsolenfehler). Alle Edelsteine ​​sind auf dem neuesten Stand.

Der Treiber funktioniert gut mit anderen Bereichen der App mit JQuery/JS. Es ist nur dieses spezielle Plugin, das nicht geladen wird.

Integrationstest

class ClientFlowsTest < ActionDispatch::IntegrationTest 

    setup :use_js_driver 

    setup do 
    @user = User.create(email: "[email protected]", password: "isthisgood?", password_confirmation: "isthisgood?") 
    #create 10 clients for the user (pagination limit is 9) 
    for i in 1..10 
     @user.clients.create(name: "Happy client #{i}") 
    end 

    sign_in @user 
    end 

    test "sort list of clients" do 
    visit clients_path 
    click_link "sidebar-client-index" 

    # should be present even without DataTables 
    assert page.has_css? "#client-table" 

    # should only be present if DataTables has loaded 
    assert page.has_css? "#client-table_wrapper" 
    end 
end 

Konsolenausgabe

rake test test/integration/client_flows_test.rb 
Run options: --seed 10558 

# Running: 

Fontconfig warning: ignoring C.UTF-8: not a valid language tag 
F 

Finished in 3.320688s, 0.3011 runs/s, 0.6023 assertions/s. 

    1) Failure: 
ClientFlowsTest#test_sort_list_of_clients [/home/ubuntu/workspace/test/integration/client_flows_test.rb:23]: 
Expected false to be truthy. 

1 runs, 2 assertions, 1 failures, 0 errors, 0 skips 
+0

Vielleicht kann diese [Frage] (https://stackoverflow.com/questions/29809462/uncss-error-c-utf-8-not-a-valid-language-tag) Ihnen helfen, Ihre zu beantworten. – Roshan

Antwort

0

Poltergeist hängt von PhantomJS, die neueste Version (Entwicklung auf sie aufgehört hat, so wahrscheinlich letzte Version), von denen nur Träger bis ES5. Wenn Ihr Code ES5.1 + Funktionen verwendet, funktioniert es nicht, und es kann im Stillen fehlschlagen, wenn Sie Dinge wie let, const usw. verwenden. Im Moment werden Sie viel besser dran sein, wenn Sie nur mit Headless testen Chrom über Selen.

Poltergeist wird derzeit neu geschrieben, um Puppenspieler anstelle von PhantomJS zu verwenden, daher werden diese Einschränkungen hoffentlich bald verschwinden.

Verwandte Themen