02-07-2012, 03:01 PM
Je vais te décevoir, mais tu ne peux pas différencier techniquement un robot d'un véritable utilisateur. En ce moment, je suis en plein dedans : j'écris les tests d'une application riche en Javascript. De ce style :
Quand je l'exécute, ça lance un moteur de rendu Webkit et effectue les actions que je demande (en l'occurrence, visiter la page, cliquer sur un bouton qui fait apparaître une fenêtre modale, puis tester la présence d'un certain contenu dans la page). Et c'est même capable de faire des screenshots !
Même en injectant une page dans le processus, je pourrais la détecter et gérer ce cas.
Il va donc falloir admettre que tes joueurs puissent créer des robots qui joueront pour eux, ou bien pénaliser tes joueurs trop réactifs…
context "when the user is french and an english user suggested a fix for the label" do
let(:french_user) { FactoryGirl.create(:user, :french) }
let(:english_user) { FactoryGirl.create(:user, :english) }
let(uggested_value) { 'English label suggestion' }
it "should not appear for the french user" do
UserSuggestsFix.new(english_user, automobile_brand, 'label', suggested_value).perform!
visit '/data_sheets/automobile'
find('.btn.review-suggestions').click
page.should_not have_content(suggested_value)
page.driver.render 'tmp/screenshots/english-fix-should-not-appear-to-french-users.png'
end
end
Quand je l'exécute, ça lance un moteur de rendu Webkit et effectue les actions que je demande (en l'occurrence, visiter la page, cliquer sur un bouton qui fait apparaître une fenêtre modale, puis tester la présence d'un certain contenu dans la page). Et c'est même capable de faire des screenshots !
Même en injectant une page dans le processus, je pourrais la détecter et gérer ce cas.
Il va donc falloir admettre que tes joueurs puissent créer des robots qui joueront pour eux, ou bien pénaliser tes joueurs trop réactifs…