問題タブ [poltergeist]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
selenium - カピバラの仕様は、個別に実行すると合格しますが、スイートの一部として実行すると失敗します
bundle exec rspec spec
リクエスト仕様がで実行されたときに渡されることはなく、直接実行されたときに渡されるという特定の理由を知っている人はいbundle exec rspec spec/requests/models_spec.rb
ますか?
セレンとポルターガイストの両方でスペックを試しましたが、同じ結果が得られました。テストスイート全体を実行すると仕様が失敗し、個別に実行すると合格します。
モデル仕様に関して関連する質問があります。RSpecが同じタイプの複数の検証エラーを報告するのはなぜですか?それはおそらく関連している可能性があります。
ruby-on-rails-3 - Poltergeist PhantomJS Capybara Driver で Cookie を設定する
Poltergeist gem を使用して Cookie を設定しようとしている問題が発生しています。Poltergeist gem でクローズされた問題を読んだところ、これは私の側のユーザー エラーの問題のようですが、試行に丸一日費やしましたCookie を適切に設定するには、適切に設定できないようです。
注: このテストはセレンで問題なく動作しますが、セレンの実行時の問題によりポルターガイストを使用したいと思います。
私が取り組んでいるアプリケーションは、「_location」Cookie を使用して全体的な設定を決定しています。アプリケーションの任意のページに初めてアクセスしたときに、Cookie にアクセスできるようにする必要があります。そうしないと、場所が設定されていないために設定されていない値を探していると、javascript エラーが発生します。
Poltergeist gem の README には、 Cookie の次の使用法が示されています。
クッキーの操作
Cookie の検査と操作には、次のメソッドが使用されます。
page.driver.cookies
- 現在のページにアクセスできる Cookie のハッシュ。キーは Cookie 名です。値は Cookie オブジェクトで、メソッドname
は 、value
、domain
、path
、secure?
、httponly?
ですexpires
。
page.driver.set_cookie(name, value, options = {})
- クッキーを設定します。オプション ハッシュは、次のキーを取ることができます: :domain
、:path
、:secure
、。Time オブジェクトである必要があります。:httponly
:expires
:expires
page.driver.remove_cookie(name)
- クッキーを削除する
-- specs/spec_helper.rb
-- ビュー/管理者/記事/new.html.haml
-- specs/requests/article_products_spec.rb
テスト応答
この失敗により、おそらくページにアクセスする前に Cookie を設定する必要があると思いましたが、Capybara スクリプトで「visit」を使用する前に page.driver.set_cookie コマンドを使用すると、実際には何も設定されないようです。 . この変更されたコード ブロックとこの結果セットからわかるように。
-- specs/requests/article_products_spec.rb
テスト応答
外部 Cookie ファイルを使用して、phantomjs_options ブロックをポルターガイスト ドライバーに渡すことも試みました。それは実際にはもう少し先に進んでいるように見えましたが、null cookie_jar になってしまいました。この試みを以下に示します。
--spec/spec_helper.rb
-- cookie.txt
テスト応答 F
capybara - カピバラポルターガイストphantomjsJavascriptErroron Audio
例外が発生します:
カピバラ::ポルターガイスト::JavascriptError
そしてデバッグ出力:
"args" => [[{"message" => "ReferenceError:変数が見つかりません:オーディオ"
この問題は、依存関係を解決するためにphantomjsを使用するsencha2.0が原因です。PhantomjsはHTML5オーディオAPIをサポートしていません。
質問は次のとおりです。capybara/poltergeistを使用しているときにjavascriptオーディオタイプのjavascriptエラーを無視するにはどうすればよいですか?
私は試した
ただし、visitメソッドでエラーがスローされます。
ruby-on-rails - 「undefined」はオブジェクトではありません (「action.handler」を評価しています)
私はテストのためにレールとポルターガイストでエンバーを使用しています!
ember-pre2 にアップグレードした後の開発では問題なく動作しますが、1 つのテストで ember ビューを閉じると次のエラーがスローされます。
それは ember.jsの行https://github.com/emberjs/ember.js/blob/v1.0.0-pre.2/lib/ember.js#L12330であり、なぜこれが起こるのか..いつ「X」をクリックすると、簡単なトランジションしかありません。
ruby-on-rails-3 - Rails Phantomjs、ポルターガイスト、カピバラがうまく連携しない
Rails 3.1.2 プロジェクト (mac OS X) で作業して、PhantomJS を適切にインストールしました (次のようなコードを実行でき、完全に動作し、ページのタイトルを正確に取得し、正確なスクリーンショットを保存します)。
try_phantom.coffee
ただし、次のようにrspecでカピバラ/ポルターガイストを使用しようとすると:
spec_helper.rb
次に、javascript を必要とする呼び出しで仕様を使用します。
party_spec.rb
私のJavaScriptがレンダリングされているようには見えず、スクリーンショットも常に空白です!
デバッガーを試してみましたが、空白の HTML ページ (head タグと body タグが空の HTML のみ) が表示されるようです。
問題は、カピバラとポルターガイストの間のインターフェース、または(可能性が高い)ポルターガイストとファントムジスのいずれかであると確信しています。関連する gem のバージョンは次のとおりです。
capybara 1.1.3
capybara-webkit 0.13.0
ポルターガイスト 1.0.2 phantomjs
は 1.7.0
さらにトラブルシューティングする方法がわからない...どんな助けでも大歓迎です。
ruby-on-rails-3 - Capybara::DSL を含めると、間違った数の引数ですべてのテストがクラッシュします
私はまだこの質問で概説されている根本的な問題を解決しようとしています: Rails Phantomjs、ポルターガイスト、およびカピバラがうまく連携していない
基本的にすべてのテストは正常に実行されていますが、rspec テストから PhantomJS / Poltergeist / Capybara を使用して画面の有効なレンダリングを取得できません。
@theSociable.me から提供された小さなスクリプトを使用して (そのテストを単独で実行した場合) 、Poltergeist/Capbybara を介して画面の 1 つのレンダリングを取得できます。すごい!
ただし、行include Capybara::DSLをテストに追加すると、すべてが次のエラーで失敗し始めます。
バックトレースをたどると、次のようになります。
私の訪問のsignin_path行に問題があるようです
..私のプロジェクトに Capybara::DSL を含めると、認証/サインインに関するこれらすべての大規模な失敗が突然発生する理由はありますか?
ありがとう!
select - Capybarnested_form ポルターガイスト選択アクション
完全に機能するネストされた属性を処理するために、素晴らしいnested_form gemを使用しています。
ネストされたフォームの選択フィールドでいくつかの統合テストを実行するためのドライバーとして Poltergeist で Capybara/rspec を使用しようとすると、問題が発生します。
私のテストは次のとおりです。
rspec で次のエラーが表示されます
「select:last」を検索する前に html コンテンツを印刷すると、正しい html が表示されます。以下に貼り付けます。
私のhtmlはIDと名前のフィールドにタイムスタンプが添付されて動的に生成されるため、fill_inの代わりにfindを使用しています。
このように使用しようとしたカピバラの選択アクションで運が悪かったことも言及する価値があるかもしれません.
以下のエラーで失敗します。
カピバラは、何らかの理由で、ラベルが実際のフォームから隠されているためか、ラベルを見つけることができません。
ruby-on-rails - Rails アプリをテストするための Rspec オプション
spec を実行すると、データベース トランザクションのすべての出力も得られます。
これはノイズが多すぎます。どうすれば無効化/削減できますか?
以下は私の spec_helper です。
database - Capybara仕様を取得してデータベースレコードを作成し、Googleにログインして、それらのレコードが表示されるようにするにはどうすればよいですか?
質問:Googleにログインしてデータベースと何らかの方法で(アプリまたはコードで)対話するRSpec / Capybaraテストを作成し、それらの対話の結果を正常に表示するには、何を設定する必要がありますか?アプリ?
具体的には、次のことを行う1つの仕様が必要です。
Projects
データベースにいくつか作成する- プロジェクトインデックスに移動します(ログインのためにGoogleにリダイレクトされます)
- Googleからログインして、アプリへのアクセスを許可します
- ページにリストされている外観をアサートし
Projects
ます
そしてこのような別のもの:
- プロジェクトインデックスに移動します(ログインのためにGoogleにリダイレクトされます)
- Googleからログインして、アプリへのアクセスを許可します
- [プロジェクトの追加]をクリックします(フォームにリダイレクトされます)
- フォームに入力して[保存]をクリックします(これにより、インデックスにリダイレクトされます)
- 新しく作成さ
Project
れたものがページに表示されることをアサートします
これを行うために私が書いたテストは機能しません。
最初の試み(「標準」のRSpec / Capybara / Seleniumを使用)
js: true
適切なdescribe
ブロックWebMock
を設定し、各仕様の接続設定を切り替えます。両方のテストの最後のステップは失敗します。最初のものはプロジェクトを表示していません。puts Project.count
ページにいくつかのプロジェクトが表示されているというアサーションの直前にできます。ゼロ以外の数値が表示されますが、それでもページには何も表示されません。2番目のテストの最後のステップで、内部サーバーエラーが発生します。
これに基づいて、いくつかのデータベース関連の問題があったように見えました
2回目の試行(いくつかのデータベース構成の追加)
次のコードに加えて、構成DatabaseCleaner.strategy = :truncation
ブロックを挿入しました。spec_helper
RSpec
最初の試みと同じ結果。
3回目の試み(セレンの代わりにポルターガイストを使用)
インストールし、Gemfileにphantomjs
追加して、バンドルしました。poltergeist
でspec_helper
必要capybara/poltergeist
と設定しCapybara.javascript_driver = :poltergeist
ました。そのボタンをクリックしても何も起こらないように見えたため(または、ドライバーがボタンをクリックしなかったため)、アクセスを許可する手順を実行できなくなったため、状況はさらに悪化したようです。
追加情報
テストを機能させるために最初にやらなければならなかったのは、Google APIには事前登録されたコールバックURLが必要なため、Capybaraサーバーのポートを修正することでした。これは、で設定することCapybara.server_port = <some_number>
で簡単に実現できましたspec_helper.rb
。
私のコントローラーの仕様は問題なく合格し、実際にアプリを使用すると問題なく動作します。最初のテストのコード(のわずかに変更されたバージョン)は次のとおりです。