@@ -20,19 +20,7 @@ func TestRunOptionsRedirectStderr(t *testing.T) {
2020 r , w := io .Pipe ()
2121 var output string
2222 wg := & sync.WaitGroup {}
23- wg .Add (1 )
24- go func () {
25- defer wg .Done ()
26- buf := bufio .NewReader (r )
27- for {
28- line , _ , err := buf .ReadLine ()
29- if err == io .EOF {
30- break
31- }
32- output += string (line )
33- }
34- _ = r .Close ()
35- }()
23+ readIOAsyncTilEOF (t , r , wg , & output )
3624
3725 driverPath := t .TempDir ()
3826 options := & RunOptions {
@@ -59,6 +47,40 @@ func TestRunOptionsRedirectStderr(t *testing.T) {
5947 require .Contains (t , output , fmt .Sprintf ("path=%s" , driverPath ))
6048}
6149
50+ func TestRunOptions_OnlyInstallShell (t * testing.T ) {
51+ if getBrowserName () != "chromium" {
52+ t .Skip ("chromium only" )
53+ return
54+ }
55+
56+ r , w := io .Pipe ()
57+ var output string
58+ wg := & sync.WaitGroup {}
59+ readIOAsyncTilEOF (t , r , wg , & output )
60+
61+ driverPath := t .TempDir ()
62+ driver , err := NewDriver (& RunOptions {
63+ Stdout : w ,
64+ DriverDirectory : driverPath ,
65+ Browsers : []string {getBrowserName ()},
66+ Verbose : true ,
67+ OnlyInstallShell : true ,
68+ DryRun : true ,
69+ })
70+ require .NoError (t , err )
71+ browserPath := t .TempDir ()
72+
73+ t .Setenv ("PLAYWRIGHT_BROWSERS_PATH" , browserPath )
74+
75+ err = driver .Install ()
76+ require .NoError (t , err )
77+ require .NoError (t , w .Close ())
78+ wg .Wait ()
79+
80+ assert .Contains (t , output , "browser: chromium-headless-shell version" )
81+ assert .NotContains (t , output , "browser: chromium version" )
82+ }
83+
6284func TestDriverInstall (t * testing.T ) {
6385 driverPath := t .TempDir ()
6486 driver , err := NewDriver (& RunOptions {
@@ -187,3 +209,20 @@ func getBrowserName() string {
187209 }
188210 return "chromium"
189211}
212+
213+ func readIOAsyncTilEOF (t * testing.T , r * io.PipeReader , wg * sync.WaitGroup , output * string ) {
214+ t .Helper ()
215+ wg .Add (1 )
216+ go func () {
217+ defer wg .Done ()
218+ buf := bufio .NewReader (r )
219+ for {
220+ line , _ , err := buf .ReadLine ()
221+ if err == io .EOF {
222+ break
223+ }
224+ * output += string (line )
225+ }
226+ _ = r .Close ()
227+ }()
228+ }
0 commit comments