record.pl 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #! /usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use Cwd qw/abs_path/;
  5. use FindBin;
  6. # We can only dzil from the root of the repository.
  7. my $this_folder = $FindBin::Bin . '/../../'; # t/bin/../../
  8. my $srd_folder = abs_path($this_folder) . '/';
  9. reset_env();
  10. start_server();
  11. print 'Cleaning...and building...
  12. ';
  13. print `cd $srd_folder && dzil build`;
  14. if ($^O eq 'linux') {
  15. print "Headless and need a webdriver server started? Try\n\n\tDISPLAY=:1 xvfb-run --auto-servernum java -jar /usr/lib/node_modules/protractor/selenium/selenium-server-standalone-2.42.2.jar\n\n";
  16. }
  17. my @files = map {
  18. $srd_folder . $_
  19. } (
  20. 't/01-driver.t',
  21. 't/02-webelement.t',
  22. 't/Firefox-Profile.t'
  23. );
  24. my $srd_lib = glob($srd_folder . 'Selenium-Remote-Driver*/lib');
  25. my $t_lib = glob($srd_folder . 'Selenium-Remote-Driver*');
  26. my $execute_tests = join( ' && ', map {
  27. 'perl -I' . $srd_lib
  28. . ' -I' . $t_lib
  29. . ' ' . $_
  30. } @files);
  31. my $export = $^O eq 'MSWin32' ? 'set' : 'export';
  32. my $wait = $^O eq 'MSWin32' ? 'START /WAIT' : '';
  33. print `$export WD_MOCKING_RECORD=1 && $wait $execute_tests`;
  34. reset_env();
  35. sub start_server {
  36. if ($^O eq 'MSWin32') {
  37. system('start "TEMP_HTTP_SERVER" /MIN perl ' . $srd_folder . 't/http-server.pl');
  38. }
  39. else {
  40. system('perl ' . $srd_folder . 't/http-server.pl > /dev/null &');
  41. }
  42. }
  43. sub kill_server {
  44. if ($^O eq 'MSWin32') {
  45. system("taskkill /FI \"WINDOWTITLE eq TEMP_HTTP_SERVER\"");
  46. }
  47. else {
  48. `ps aux | grep [h]ttp-server\.pl | awk '{print \$2}' | xargs kill`;
  49. }
  50. }
  51. sub reset_env {
  52. `cd $srd_folder && dzil clean`;
  53. kill_server();
  54. }