12-reuse-session.t 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. use strict;
  2. use warnings;
  3. use Test::More;
  4. use Test::MockModule;
  5. use Test::Selenium::Remote::Driver;
  6. use Selenium::Remote::Mock::RemoteConnection;
  7. use FindBin;
  8. use lib $FindBin::Bin . '/lib';
  9. use TestHarness;
  10. $Selenium::Remote::Driver::FORCE_WD2 = 1;
  11. my $harness = TestHarness->new(
  12. this_file => $FindBin::Script
  13. );
  14. my @browsers = qw/chrome/;
  15. foreach (@browsers) {
  16. my @mock_session_ids = qw{2257c1cf-17d9-401a-a13b-fc7a279d7db5 dddddddd-17d9-401a-a13b-fc7a279d7db5 17c83f3a-3f23-4ffc-a50f-06ba5f5202d1};
  17. my $mock = Test::MockModule->new('Selenium::Remote::Driver');
  18. $mock->mock('new_session', sub { my $s = shift; $s->{session_id} //= shift @mock_session_ids } );
  19. my %selenium_args = (
  20. default_finder => 'css',
  21. javascript => 1,
  22. %{ $harness->base_caps },
  23. browser_name => $_,
  24. );
  25. my $s1 = Test::Selenium::Remote::Driver->new(
  26. %selenium_args
  27. );
  28. my $s2 = Test::Selenium::Remote::Driver->new(
  29. %selenium_args,
  30. auto_close => 0,
  31. session_id => $s1->session_id,
  32. );
  33. my $s3 = Test::Selenium::Remote::Driver->new(
  34. %selenium_args,
  35. );
  36. is($s1->session_id, $s2->session_id, "session_id is reused when specified");
  37. isnt($s1->session_id, $s3->session_id, "session_id not reused");
  38. pass("session_id.1=". $s2->session_id);
  39. pass("session_id.2=". $s2->session_id);
  40. pass("session_id.3=". $s3->session_id);
  41. my $perl_title = 'The Perl Programming Language - www.perl.org';
  42. my $cpan_title = 'The Comprehensive Perl Archive Network - www.cpan.org';
  43. $s1->get_ok('http://perl.org/');
  44. $s1->title_is($perl_title, 'perl.org title matches correctly');
  45. $s3->get_ok('http://perl.org/');
  46. $s3->title_is($perl_title, 'perl.org title matches correctly');
  47. }
  48. done_testing;