#! /usr/bin/perl use strict; use warnings; use Cwd qw/abs_path/; my $this_file = abs_path(__FILE__); my $srd_folder = $this_file; $srd_folder =~ s/t\/bin\/record\.pl//; resetEnv(); startServer(); print 'Cleaning...and building... '; print `cd $srd_folder && dzil build`; if ($^O eq 'linux') { 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"; } my @files = map { $srd_folder . $_ } ( 't/01-driver.t', 't/02-webelement.t', 't/Firefox-Profile.t' ); my $srdLib = glob($srd_folder . 'Selenium-Remote-Driver*/lib'); my $tLib = glob($srd_folder . 'Selenium-Remote-Driver*'); my $executeTests = join( ' && ', map { 'perl -I' . $srdLib . ' -I' . $tLib . ' ' . $_ } @files); my $export = $^O eq 'MSWin32' ? 'set' : 'export'; print `$export WD_MOCKING_RECORD=1 && $executeTests`; resetEnv(); sub startServer { if ($^O eq 'MSWin32') { system('start "TEMP_HTTP_SERVER" /MIN perl ' . $srd_folder . 't/http-server.pl'); } else { system('perl ' . $srd_folder . 't/http-server.pl > /dev/null &'); } } sub killServer { if ($^O eq 'MSWin32') { system("taskkill /FI \"WINDOWTITLE eq TEMP_HTTP_SERVER\""); } else { `ps aux | grep [h]ttp-server\.pl | awk '{print \$2}' | xargs kill`; } } sub resetEnv { `cd $srd_folder && dzil clean`; killServer(); }