Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Testing multiple concurrent browser sessions

I'm developing a card-game in Ruby on Rails, and trying to work out how best to test it.

When a player joins a game, their Player object is stored in the session. Obviously, in order for the game to work, I need more than one Player in a game at once. Since sessions are the same for different tabs in one browser, I'm currently testing a 2-player game by having the app open in FireFox and Internet Explorer at the same time.

Before I go off and download Chrome in order to test a third player... is there an easier way of doing this?

Edit: To clarify, I'm not yet at the stage where I want to run automated tests to see if it breaks. I'm at the stage where I want to be able to hack the back-end db, then refresh the page and see how it looks now, or click a button to see the (usually) failure response, or whether the behaviour is looking right.

like image 707
Chowlett Avatar asked Feb 17 '10 13:02

Chowlett


3 Answers

You can run Firefox with multiple profiles. From a command line go to the directory Firefox is installed in and run firefox -P. Create a profile for every instance that you want to run. Close the profile manager, then for each profile run firefox -no-remote -P "profile name". You can run as many instances of Firefox as you want, and each one runs with an independent profile and thus independent session.

like image 79
JamesH Avatar answered Nov 13 '22 03:11

JamesH


Automate it!


You really don't want to be manually testing this. You could use a Ruby script with the curl libs to generate the 'moves' and manage the response including the session cookie.
As a teaser, see this snippet from the API docs, sounds like it would help you..

easy.cookiejar = "cookiejar.file" => "pwd string"

Set a cookiejar file to use for this Curl::Easy instance. 
This file will be used to persist cookies. 
like image 24
Chris McCauley Avatar answered Nov 13 '22 03:11

Chris McCauley


Use http://watir.com/ to create ruby scripts exercising your game.

Use multiple Watir::Browser instances to run multiple browsers.

Use firefox' profiles and -no-remote switch to keep them separated. See also this question.

like image 1
David Schmitt Avatar answered Nov 13 '22 01:11

David Schmitt