@@ -23,52 +23,94 @@ const createServer = require("http-server").createServer;
23
23
* @param {string } browserType
24
24
* @returns {Promise<[string, Results]> }
25
25
*/
26
- async function run ( browserType ) {
26
+ async function runBrowser ( browserType , waitFor , file ) {
27
27
console . log ( "Starting" , browserType ) ;
28
28
const browser = await playwright [ browserType ] . launch ( ) ;
29
29
const context = await browser . newContext ( ) ;
30
30
const page = await context . newPage ( ) ;
31
31
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 ) ;
40
34
41
35
console . log ( "Closing" , browserType ) ;
42
36
await browser . close ( ) ;
43
37
44
38
return [ browserType , result ] ;
45
39
}
46
40
47
- async function main ( ) {
41
+ async function runBrowsers ( waitFor , file ) {
48
42
const browsersTypes = [ "chromium" , "firefox" , "webkit" ] ;
49
43
50
44
const server = createServer ( { root : path . join ( __dirname , ".." ) } ) ;
51
45
await new Promise ( resolve => server . listen ( 8080 , "127.0.0.1" , resolve ) ) ;
52
46
console . log ( "Server started" ) ;
53
47
54
48
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
+ }
56
55
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
+ }
62
82
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 ) ;
68
103
}
69
- } finally {
70
- server . close ( ) ;
71
104
}
72
105
}
73
106
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