@@ -20,19 +20,7 @@ func TestRunOptionsRedirectStderr(t *testing.T) {
20
20
r , w := io .Pipe ()
21
21
var output string
22
22
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 )
36
24
37
25
driverPath := t .TempDir ()
38
26
options := & RunOptions {
@@ -59,6 +47,40 @@ func TestRunOptionsRedirectStderr(t *testing.T) {
59
47
require .Contains (t , output , fmt .Sprintf ("path=%s" , driverPath ))
60
48
}
61
49
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
+
62
84
func TestDriverInstall (t * testing.T ) {
63
85
driverPath := t .TempDir ()
64
86
driver , err := NewDriver (& RunOptions {
@@ -187,3 +209,20 @@ func getBrowserName() string {
187
209
}
188
210
return "chromium"
189
211
}
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