TL:DR-Cucumberにアプリを介してページをリクエストさせ、リクエストが「http://mysubdomain.mydomain.dev」からのものであると偽って、JavaScriptを適切に実行するにはどうすればよいですか?
わかりました、これは説明するのに少し時間がかかるかもしれませんが、私に耐えてください...
私は「比較的」経験豊富なRails開発者ですが、つい最近、完全なBDD/TDDに突入しました。
私がキュウリでテストしているページには、新しいネストされたオブジェクトを作成するためのJavaScriptが含まれています(このRailsCastと非常によく似ています)。
ここで問題となるのは、可変サブドメインがあるだけでなく、可変ドメインもあるという事実です(そのドメインを信頼してください...)
そのため、アプリは、request.host
を検索するためにクエリを実行する必要があります。すべてがバックグラウンドで拘束される前に、アプリはアプリの適切なビットを提供し続けることができますcurrent_domain
。current_subdomain
host! domain
バックグラウンドステップのとCapybara.default_host = domain
テクニックを使用して、すべてのテストに合格することができました。
ただし、.jsが含まれるページをテストする機能で@javascriptタグを使用すると、Firefoxがフォーカスを取得し、完全なURLを読み込もうとします。
また、Powを実行していて、それらのURLを開発サーバーに接続していることもあります。当然のことながら、ユーザーがログインしようとしたときに、開発DBを検索しているように機能しません。powサーバーをオフにした後でスイートを実行しようとしましたが、タイムアウトになりました。
確かに、javascript Webドライバーは実際にURLにアクセスするべきではありませんが、単にアプリ自体を実行し、ホストが私が言っているものであるかのように見せかけますか?
私は明らかにここに何かが欠けています-どうすればCucumberにページを内部で構築させることができますが、リクエストが「http://mysubdomain.mydomain.dev」から来たように見せかけますか?
編集: ジェイソン-可変ドメインのトリックはサブドメインとまったく同じように達成されます...に基づいてアカウントのデータベースをクエリできる場合はrequest.subdomains.first
、を介してドメインをクエリできますrequest.domain
。不正な形式のURLを壊すリスクを最小限に抑えるために、大文字と小文字の区別などを再確認する必要があります。もちろん、ドメインレコードが最初にデータベースに存在することを確認する必要があります...
ああ-そしてドメインレコードリクエストを注意してキャッシュしてください...
つまり、同じアプリを提供できますが、スタイルやランディングページなどが異なります。幅広い顧客ベースを持つPaaSアプリに役立ちます。ブランドを変更して、あるグループの問題に対する特定のソリューションとして販売できます。下にある同じ内臓。