@@ -23,52 +23,94 @@ const createServer = require("http-server").createServer;
2323 * @param {string } browserType
2424 * @returns {Promise<[string, Results]> }
2525 */
26- async function run ( browserType ) {
26+ async function runBrowser ( browserType , waitFor , file ) {
2727 console . log ( "Starting" , browserType ) ;
2828 const browser = await playwright [ browserType ] . launch ( ) ;
2929 const context = await browser . newContext ( ) ;
3030 const page = await context . newPage ( ) ;
3131
32- await page . goto ( "http://127.0.0.1:8080/test/index.html?hidepassed" ) ;
33-
34- let result ;
35- do {
36- result = await page . evaluate ( ( ) => {
37- return window . global_test_results ;
38- } ) ;
39- } while ( ! result ) ;
32+ await page . goto ( `http://127.0.0.1:8080/test/${ file } ` ) ;
33+ const result = await waitFor ( page ) ;
4034
4135 console . log ( "Closing" , browserType ) ;
4236 await browser . close ( ) ;
4337
4438 return [ browserType , result ] ;
4539}
4640
47- async function main ( ) {
41+ async function runBrowsers ( waitFor , file ) {
4842 const browsersTypes = [ "chromium" , "firefox" , "webkit" ] ;
4943
5044 const server = createServer ( { root : path . join ( __dirname , ".." ) } ) ;
5145 await new Promise ( resolve => server . listen ( 8080 , "127.0.0.1" , resolve ) ) ;
5246 console . log ( "Server started" ) ;
5347
5448 try {
55- const results = await Promise . all ( browsersTypes . map ( run ) ) ;
49+ const results = await Promise . all ( browsersTypes . map ( b => runBrowser ( b , waitFor , file ) ) ) ;
50+ return results ;
51+ } finally {
52+ server . close ( ) ;
53+ }
54+ }
5655
57- let failures = false ;
58- for ( const result of results ) {
59- console . log ( ...result ) ;
60- failures = failures || result [ 1 ] . failed > 0 ;
61- }
56+ async function waitForTests ( page ) {
57+ let result ;
58+ do {
59+ result = await page . evaluate ( ( ) => {
60+ return window . global_test_results ;
61+ } ) ;
62+ } while ( ! result ) ;
63+ return result ;
64+ }
65+
66+ async function runTests ( ) {
67+ const results = await runBrowsers ( waitForTests , "index.html?hidepassed" ) ;
68+
69+ let failures = false ;
70+ for ( const result of results ) {
71+ console . log ( ...result ) ;
72+ failures = failures || result [ 1 ] . failed > 0 ;
73+ }
74+
75+ if ( failures ) {
76+ console . log ( "Tests failed" ) ;
77+ process . exit ( 1 ) ;
78+ } else {
79+ console . log ( "Tests passed!" ) ;
80+ }
81+ }
6282
63- if ( failures ) {
64- console . log ( "Tests failed" ) ;
65- process . exit ( 1 ) ;
66- } else {
67- console . log ( "Tests passed!" ) ;
83+ async function waitForBenchmark ( page ) {
84+ return new Promise ( resolve => {
85+ const logs = [ ] ;
86+
87+ page . on ( "console" , async message => {
88+ if ( message . text ( ) === "Benchmark complete" ) {
89+ resolve ( logs ) ;
90+ } else {
91+ logs . push ( message . text ( ) ) ;
92+ }
93+ } ) ;
94+ } ) ;
95+ }
96+
97+ async function runBenchmark ( ) {
98+ const results = await runBrowsers ( waitForBenchmark , "benchmark/index.html" ) ;
99+
100+ for ( const [ browser , logs ] of results ) {
101+ for ( const log of logs ) {
102+ console . log ( browser , log ) ;
68103 }
69- } finally {
70- server . close ( ) ;
71104 }
72105}
73106
74- main ( ) ;
107+ switch ( process . argv [ 2 ] ) {
108+ case "--test" :
109+ runTests ( ) ;
110+ break ;
111+ case "--benchmark" :
112+ runBenchmark ( ) ;
113+ break ;
114+ default :
115+ throw new Error ( `Unknown argument: ${ process . argv [ 2 ] } ` ) ;
116+ }
0 commit comments