@@ -33,6 +33,45 @@ import os from "os";
3333
3434import { logInfo , logError , printHelp , runTest } from "./helper.mjs" ;
3535
36+ const TESTS = [
37+ {
38+ name : "Run Single Suite" ,
39+ tags : [ "all" , "main" ] ,
40+ run ( ) {
41+ return runEnd2EndTest ( "Run Single Suite" , { test : "proxy-mobx" } ) ;
42+ }
43+ } ,
44+ {
45+ name : "Run Multiple Suites" ,
46+ tags : [ "all" , "main" ] ,
47+ run ( ) {
48+ return runEnd2EndTest ( "Run Multiple Suites" , { test : "prismjs-startup-es6,postcss-wtb" } ) ;
49+ }
50+ } ,
51+ {
52+ name : "Run Tag No Prefetch" ,
53+ tags : [ "all" , "main" ] ,
54+ run ( ) {
55+ return runEnd2EndTest ( "Run Tag No Prefetch" , { tag : "proxy" , prefetchResources : "false" } ) ;
56+ }
57+ } ,
58+ {
59+ name : "Run Disabled Suite" ,
60+ tags : [ "all" , "disabled" ] ,
61+ run ( ) {
62+ return runEnd2EndTest ( "Run Disabled Suite" , { tag : "disabled" } ) ;
63+ }
64+ } ,
65+ {
66+ name : "Run Default Suite" ,
67+ tags : [ "all" , "default" ] ,
68+ run ( ) {
69+ return runEnd2EndTest ( "Run Default Suite" ) ;
70+ }
71+ }
72+ ] ;
73+
74+ const VALID_TAGS = Array . from ( new Set ( TESTS . map ( ( each ) => each . tags ) . flat ( ) ) ) ;
3675
3776function sleep ( ms ) {
3877 return new Promise ( resolve => setTimeout ( resolve , ms ) ) ;
@@ -42,12 +81,16 @@ const optionDefinitions = [
4281 { name : "browser" , type : String , description : "Set the browser to test, choices are [safari, firefox, chrome, edge]. By default the $BROWSER env variable is used." } ,
4382 { name : "port" , type : Number , defaultValue : 8010 , description : "Set the test-server port, The default value is 8010." } ,
4483 { name : "help" , alias : "h" , description : "Print this help text." } ,
84+ { name : "suite" , type : String , defaultOption : true , typeLabel : `{underline choices}: ${ VALID_TAGS . join ( ", " ) } ` , description : "Run a specific suite by name." }
4585] ;
4686
4787const options = commandLineArgs ( optionDefinitions ) ;
4888
4989if ( "help" in options )
50- printHelp ( optionDefinitions ) ;
90+ printHelp ( "" . optionDefinitions ) ;
91+
92+ if ( options . suite && ! VALID_TAGS . includes ( options . suite ) )
93+ printHelp ( `Invalid suite: ${ options . suite } . Choices are: ${ VALID_TAGS . join ( ", " ) } ` ) ;
5194
5295const BROWSER = options ?. browser ;
5396if ( ! BROWSER )
@@ -73,7 +116,7 @@ switch (BROWSER) {
73116 break ;
74117 }
75118 default : {
76- printHelp ( `Invalid browser "${ BROWSER } ", choices are: "safari", "firefox", "chrome", "edge"` ) ;
119+ printHelp ( `Invalid browser "${ BROWSER } ", choices are: "safari", "firefox", "chrome", "edge"` , optionDefinitions ) ;
77120 }
78121}
79122
@@ -91,12 +134,19 @@ const server = await serve(PORT);
91134
92135async function runTests ( ) {
93136 let success = true ;
137+ const suiteFilter = options . suite || "all" ;
138+
139+ const testsToRun = TESTS . filter ( test => test . tags . includes ( suiteFilter ) ) ;
140+
141+ if ( testsToRun . length === 0 ) {
142+ console . error ( `No suite found for filter: ${ suiteFilter } ` ) ;
143+ process . exit ( 1 ) ;
144+ }
145+
94146 try {
95- success &&= await runEnd2EndTest ( "Run Single Suite" , { test : "proxy-mobx" } ) ;
96- success &&= await runEnd2EndTest ( "Run Multiple Suites" , { test : "prismjs-startup-es6,postcss-wtb" } ) ;
97- success &&= await runEnd2EndTest ( "Run Tag No Prefetch" , { tag : "proxy" , prefetchResources : "false" } ) ;
98- success &&= await runEnd2EndTest ( "Run Disabled Suite" , { tag : "disabled" } ) ;
99- success &&= await runEnd2EndTest ( "Run Default Suite" ) ;
147+ for ( const test of testsToRun ) {
148+ success &&= await test . run ( ) ;
149+ }
100150 } finally {
101151 server . close ( ) ;
102152 }
0 commit comments