1717
1818package org .openqa .selenium .server .htmlrunner ;
1919
20+ import static java .util .concurrent .TimeUnit .SECONDS ;
21+
22+ import com .google .common .collect .ImmutableMap ;
23+
2024import com .beust .jcommander .JCommander ;
2125import com .beust .jcommander .Parameter ;
2226import com .beust .jcommander .ParameterException ;
2327import com .beust .jcommander .internal .Console ;
24- import com .google .common .collect .ImmutableMap ;
2528import com .thoughtworks .selenium .Selenium ;
2629import com .thoughtworks .selenium .webdriven .WebDriverBackedSelenium ;
30+
2731import org .openqa .selenium .By ;
2832import org .openqa .selenium .WebDriver ;
2933import org .openqa .selenium .WebElement ;
5862import java .util .logging .Level ;
5963import java .util .logging .Logger ;
6064
61- import static java .util .concurrent .TimeUnit .SECONDS ;
62-
6365/**
6466 * Runs HTML Selenium test suites.
6567 */
@@ -72,6 +74,100 @@ public class HTMLLauncher {
7274
7375 private Server <?> server ;
7476
77+ private static String printUsage (JCommander commander ) {
78+ StringBuilder usage = new StringBuilder ();
79+ commander .setConsole (new Console () {
80+ @ Override
81+ public void print (String msg ) {
82+ usage .append (msg );
83+ }
84+
85+ @ Override
86+ public void println (String msg ) {
87+ usage .append (msg ).append ("\n " );
88+ }
89+
90+ @ Override
91+ public char [] readPassword (boolean echoInput ) {
92+ throw new UnsupportedOperationException ("readPassword" );
93+ }
94+ });
95+ commander .usage ();
96+
97+ return usage .toString ();
98+ }
99+
100+ public static int mainInt (String ... args ) throws Exception {
101+ Args processed = new Args ();
102+ JCommander jCommander = new JCommander (processed );
103+ jCommander .setCaseSensitiveOptions (false );
104+ try {
105+ jCommander .parse (args );
106+ } catch (ParameterException ex ) {
107+ System .err .print (ex .getMessage () + "\n " + printUsage (jCommander ));
108+ return 0 ;
109+ }
110+
111+ if (processed .help ) {
112+ System .err .print (printUsage (jCommander ));
113+ return 0 ;
114+ }
115+
116+ warnAboutLegacyOptions (processed );
117+
118+ Path resultsPath = Paths .get (processed .htmlSuite .get (3 ));
119+ Files .createDirectories (resultsPath );
120+
121+ String suite = processed .htmlSuite .get (2 );
122+ String startURL = processed .htmlSuite .get (1 );
123+ String [] browsers = new String [] {processed .htmlSuite .get (0 )};
124+
125+ HTMLLauncher launcher = new HTMLLauncher ();
126+
127+ boolean passed = true ;
128+ for (String browser : browsers ) {
129+ // Turns out that Windows doesn't like "*" in a path name
130+ String reportFileName = browser .contains (" " ) ? browser .substring (0 , browser .indexOf (' ' )) : browser ;
131+ File results = resultsPath .resolve (reportFileName .substring (1 ) + ".results.html" ).toFile ();
132+ String result = "FAILED" ;
133+
134+ try {
135+ long timeout ;
136+ try {
137+ timeout = Long .parseLong (processed .timeout );
138+ } catch (NumberFormatException e ) {
139+ System .err .println ("Timeout does not appear to be a number: " + processed .timeout );
140+ return -2 ;
141+ }
142+ result = launcher .runHTMLSuite (browser , startURL , suite , results , timeout , processed .userExtensions );
143+ passed &= "PASSED" .equals (result );
144+ } catch (Throwable e ) {
145+ log .log (Level .WARNING , "Test of browser failed: " + browser , e );
146+ passed = false ;
147+ }
148+ }
149+
150+ return passed ? 1 : 0 ;
151+ }
152+
153+ private static void warnAboutLegacyOptions (Args processed ) {
154+ if (processed .multiWindow ) {
155+ System .err .println ("Multi-window mode is no longer used as an option and will be ignored." );
156+ }
157+
158+ if (processed .port != 0 ) {
159+ System .err .println ("Port is no longer used as an option and will be ignored." );
160+ }
161+
162+ if (processed .trustAllSSLCertificates ) {
163+ System .err .println ("Trusting all ssl certificates is no longer a user-settable option." );
164+ }
165+ }
166+
167+ public static void main (String [] args ) throws Exception {
168+ System .exit (mainInt (args ));
169+ }
170+
75171 /**
76172 * Launches a single HTML Selenium test suite.
77173 *
@@ -193,100 +289,6 @@ private URL verifySuiteUrl(URL url) throws IOException {
193289 return url ;
194290 }
195291
196- private static String printUsage (JCommander commander ) {
197- StringBuilder usage = new StringBuilder ();
198- commander .setConsole (new Console () {
199- @ Override
200- public void print (String msg ) {
201- usage .append (msg );
202- }
203-
204- @ Override
205- public void println (String msg ) {
206- usage .append (msg ).append ("\n " );
207- }
208-
209- @ Override
210- public char [] readPassword (boolean echoInput ) {
211- throw new UnsupportedOperationException ("readPassword" );
212- }
213- });
214- commander .usage ();
215-
216- return usage .toString ();
217- }
218-
219- public static int mainInt (String ... args ) throws Exception {
220- Args processed = new Args ();
221- JCommander jCommander = new JCommander (processed );
222- jCommander .setCaseSensitiveOptions (false );
223- try {
224- jCommander .parse (args );
225- } catch (ParameterException ex ) {
226- System .err .print (ex .getMessage () + "\n " + printUsage (jCommander ));
227- return 0 ;
228- }
229-
230- if (processed .help ) {
231- System .err .print (printUsage (jCommander ));
232- return 0 ;
233- }
234-
235- warnAboutLegacyOptions (processed );
236-
237- Path resultsPath = Paths .get (processed .htmlSuite .get (3 ));
238- Files .createDirectories (resultsPath );
239-
240- String suite = processed .htmlSuite .get (2 );
241- String startURL = processed .htmlSuite .get (1 );
242- String [] browsers = new String [] {processed .htmlSuite .get (0 )};
243-
244- HTMLLauncher launcher = new HTMLLauncher ();
245-
246- boolean passed = true ;
247- for (String browser : browsers ) {
248- // Turns out that Windows doesn't like "*" in a path name
249- String reportFileName = browser .contains (" " ) ? browser .substring (0 , browser .indexOf (' ' )) : browser ;
250- File results = resultsPath .resolve (reportFileName .substring (1 ) + ".results.html" ).toFile ();
251- String result = "FAILED" ;
252-
253- try {
254- long timeout ;
255- try {
256- timeout = Long .parseLong (processed .timeout );
257- } catch (NumberFormatException e ) {
258- System .err .println ("Timeout does not appear to be a number: " + processed .timeout );
259- return -2 ;
260- }
261- result = launcher .runHTMLSuite (browser , startURL , suite , results , timeout , processed .userExtensions );
262- passed &= "PASSED" .equals (result );
263- } catch (Throwable e ) {
264- log .log (Level .WARNING , "Test of browser failed: " + browser , e );
265- passed = false ;
266- }
267- }
268-
269- return passed ? 1 : 0 ;
270- }
271-
272- private static void warnAboutLegacyOptions (Args processed ) {
273- if (processed .multiWindow ) {
274- System .err .println ("Multi-window mode is no longer used as an option and will be ignored." );
275- }
276-
277- if (processed .port != 0 ) {
278- System .err .println ("Port is no longer used as an option and will be ignored." );
279- }
280-
281- if (processed .trustAllSSLCertificates ) {
282- System .err .println ("Trusting all ssl certificates is no longer a user-settable option." );
283- }
284- }
285-
286- public static void main (String [] args ) throws Exception {
287- System .exit (mainInt (args ));
288- }
289-
290292 private WebDriver createDriver (String browser ) {
291293 String [] parts = browser .split (" " , 2 );
292294 browser = parts [0 ];
@@ -296,7 +298,7 @@ private WebDriver createDriver(String browser) {
296298 case "*firefoxproxy" :
297299 case "*firefoxchrome" :
298300 case "*pifirefox" :
299- FirefoxOptions options = new FirefoxOptions (). setLegacy ( false ) ;
301+ FirefoxOptions options = new FirefoxOptions ();
300302 if (parts .length > 1 ) {
301303 options .setBinary (parts [1 ]);
302304 }
0 commit comments