@@ -100,88 +100,91 @@ func NewBrowserContextOptions() *BrowserContextOptions {
100
100
}
101
101
}
102
102
103
- func (b * BrowserContextOptions ) Parse (ctx context.Context , opts sobek.Value ) error {
103
+ // Parse parses the browser context options.
104
+ func (b * BrowserContextOptions ) Parse (ctx context.Context , opts sobek.Value ) error { //nolint:cyclop,funlen,gocognit
104
105
rt := k6ext .Runtime (ctx )
105
- if opts != nil && ! sobek .IsUndefined (opts ) && ! sobek .IsNull (opts ) {
106
- opts := opts .ToObject (rt )
107
- for _ , k := range opts .Keys () {
108
- switch k {
109
- case "acceptDownloads" :
110
- b .AcceptDownloads = opts .Get (k ).ToBoolean ()
111
- case "bypassCSP" :
112
- b .BypassCSP = opts .Get (k ).ToBoolean ()
113
- case "colorScheme" :
114
- switch ColorScheme (opts .Get (k ).String ()) {
115
- case "light" :
116
- b .ColorScheme = ColorSchemeLight
117
- case "dark" :
118
- b .ColorScheme = ColorSchemeDark
119
- default :
120
- b .ColorScheme = ColorSchemeNoPreference
121
- }
122
- case "deviceScaleFactor" :
123
- b .DeviceScaleFactor = opts .Get (k ).ToFloat ()
124
- case "extraHTTPHeaders" :
125
- headers := opts .Get (k ).ToObject (rt )
126
- for _ , k := range headers .Keys () {
127
- b .ExtraHTTPHeaders [k ] = headers .Get (k ).String ()
128
- }
129
- case "geolocation" :
130
- geolocation := NewGeolocation ()
131
- if err := geolocation .Parse (ctx , opts .Get (k ).ToObject (rt )); err != nil {
132
- return err
133
- }
134
- b .Geolocation = geolocation
135
- case "hasTouch" :
136
- b .HasTouch = opts .Get (k ).ToBoolean ()
137
- case "httpCredentials" :
138
- credentials := NewCredentials ()
139
- if err := credentials .Parse (ctx , opts .Get (k ).ToObject (rt )); err != nil {
140
- return err
141
- }
142
- b .HttpCredentials = credentials
143
- case "ignoreHTTPSErrors" :
144
- b .IgnoreHTTPSErrors = opts .Get (k ).ToBoolean ()
145
- case "isMobile" :
146
- b .IsMobile = opts .Get (k ).ToBoolean ()
147
- case "javaScriptEnabled" :
148
- b .JavaScriptEnabled = opts .Get (k ).ToBoolean ()
149
- case "locale" :
150
- b .Locale = opts .Get (k ).String ()
151
- case "offline" :
152
- b .Offline = opts .Get (k ).ToBoolean ()
153
- case "permissions" :
154
- if ps , ok := opts .Get (k ).Export ().([]any ); ok {
155
- for _ , p := range ps {
156
- b .Permissions = append (b .Permissions , fmt .Sprintf ("%v" , p ))
157
- }
158
- }
159
- case "reducedMotion" :
160
- switch ReducedMotion (opts .Get (k ).String ()) {
161
- case "reduce" :
162
- b .ReducedMotion = ReducedMotionReduce
163
- default :
164
- b .ReducedMotion = ReducedMotionNoPreference
165
- }
166
- case "screen" :
167
- screen := & Screen {}
168
- if err := screen .Parse (ctx , opts .Get (k ).ToObject (rt )); err != nil {
169
- return err
170
- }
171
- b .Screen = screen
172
- case "timezoneID" :
173
- b .TimezoneID = opts .Get (k ).String ()
174
- case "userAgent" :
175
- b .UserAgent = opts .Get (k ).String ()
176
- case "viewport" :
177
- viewport := & Viewport {}
178
- if err := viewport .Parse (ctx , opts .Get (k ).ToObject (rt )); err != nil {
179
- return err
106
+ if ! sobekValueExists (opts ) {
107
+ return nil
108
+ }
109
+ o := opts .ToObject (rt )
110
+ for _ , k := range o .Keys () {
111
+ switch k {
112
+ case "acceptDownloads" :
113
+ b .AcceptDownloads = o .Get (k ).ToBoolean ()
114
+ case "bypassCSP" :
115
+ b .BypassCSP = o .Get (k ).ToBoolean ()
116
+ case "colorScheme" :
117
+ switch ColorScheme (o .Get (k ).String ()) { //nolint:exhaustive
118
+ case "light" :
119
+ b .ColorScheme = ColorSchemeLight
120
+ case "dark" :
121
+ b .ColorScheme = ColorSchemeDark
122
+ default :
123
+ b .ColorScheme = ColorSchemeNoPreference
124
+ }
125
+ case "deviceScaleFactor" :
126
+ b .DeviceScaleFactor = o .Get (k ).ToFloat ()
127
+ case "extraHTTPHeaders" :
128
+ headers := o .Get (k ).ToObject (rt )
129
+ for _ , k := range headers .Keys () {
130
+ b .ExtraHTTPHeaders [k ] = headers .Get (k ).String ()
131
+ }
132
+ case "geolocation" :
133
+ geolocation := NewGeolocation ()
134
+ if err := geolocation .Parse (ctx , o .Get (k ).ToObject (rt )); err != nil {
135
+ return err
136
+ }
137
+ b .Geolocation = geolocation
138
+ case "hasTouch" :
139
+ b .HasTouch = o .Get (k ).ToBoolean ()
140
+ case "httpCredentials" :
141
+ credentials := NewCredentials ()
142
+ if err := credentials .Parse (ctx , o .Get (k ).ToObject (rt )); err != nil {
143
+ return err
144
+ }
145
+ b .HttpCredentials = credentials
146
+ case "ignoreHTTPSErrors" :
147
+ b .IgnoreHTTPSErrors = o .Get (k ).ToBoolean ()
148
+ case "isMobile" :
149
+ b .IsMobile = o .Get (k ).ToBoolean ()
150
+ case "javaScriptEnabled" :
151
+ b .JavaScriptEnabled = o .Get (k ).ToBoolean ()
152
+ case "locale" :
153
+ b .Locale = o .Get (k ).String ()
154
+ case "offline" :
155
+ b .Offline = o .Get (k ).ToBoolean ()
156
+ case "permissions" :
157
+ if ps , ok := o .Get (k ).Export ().([]any ); ok {
158
+ for _ , p := range ps {
159
+ b .Permissions = append (b .Permissions , fmt .Sprintf ("%v" , p ))
180
160
}
181
- b .Viewport = viewport
182
161
}
162
+ case "reducedMotion" :
163
+ switch ReducedMotion (o .Get (k ).String ()) { //nolint:exhaustive
164
+ case "reduce" :
165
+ b .ReducedMotion = ReducedMotionReduce
166
+ default :
167
+ b .ReducedMotion = ReducedMotionNoPreference
168
+ }
169
+ case "screen" :
170
+ screen := & Screen {}
171
+ if err := screen .Parse (ctx , o .Get (k ).ToObject (rt )); err != nil {
172
+ return err
173
+ }
174
+ b .Screen = screen
175
+ case "timezoneID" :
176
+ b .TimezoneID = o .Get (k ).String ()
177
+ case "userAgent" :
178
+ b .UserAgent = o .Get (k ).String ()
179
+ case "viewport" :
180
+ viewport := & Viewport {}
181
+ if err := viewport .Parse (ctx , o .Get (k ).ToObject (rt )); err != nil {
182
+ return err
183
+ }
184
+ b .Viewport = viewport
183
185
}
184
186
}
187
+
185
188
return nil
186
189
}
187
190
0 commit comments