設計について少し質問があります。他のユーザーがこれに遭遇したかどうか、また最も洗練されたソリューションを開発する方法に興味があります。Capybara/Celerity/Selenium を使用して、Cucumber でいくつかの統合タイプの機能テストを行っています。これらのテストの一部では、外部 Web サイトを起動して、リソース (Cookie、Javascript など) がどの程度統合されているかを確認します。
ある特定の外部サイトは、類似しているが大幅に異なるサイト設計で独自の厳しい A/B テストを受けているため、私のテストは新しいサイトでは失敗し、古いサイトでは機能するため、約 50% の確率でしかパスしません。明らかに、新しいテストを書き直すことは無意味です。これらは残りの 50% を失敗させるからです。
次のような方法で関数をパラメータ化しようとしました:
Given I visit the new site
And I click on the link that is labeled "new link text"
Given I visit the old site
And I click on the link that is labeled "old link text"
...
When /^I visit the (old|new) site$/ do |version|
version_url = "http://www.example.com/?backdoorversionparam=0"
if version == "new"
version_url = "http://www.example.com/?backdoorversionparam=1"
end
When "I go to the page \"#{version_url}\""
end
これには、基本的に同一でかなり大きな機能ファイルを 2 つ作成する必要があります (ただし、すべてのパラメーターが変更されています)。後で古いものを非推奨にする必要があるだけで、コードはすべて複雑になります。失敗した場合に別のテストにフォールバックする方法はありますか? ページ デザインのテストが 1 か月ほど続き、サイト全体が別の年に再び変更される可能性があることを知っている場合、これをデザインする最もエレガントな方法は何ですか?