Skip to content
This repository was archived by the owner on Jan 30, 2025. It is now read-only.

Commit c1f3485

Browse files
committed
Fix k6Throw calls in BrowserContext
1 parent 18eb9e4 commit c1f3485

File tree

1 file changed

+23
-38
lines changed

1 file changed

+23
-38
lines changed

common/browser_context.go

Lines changed: 23 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ package common
2222

2323
import (
2424
"context"
25-
"errors"
2625
"fmt"
2726
"reflect"
2827
"time"
@@ -73,8 +72,7 @@ func NewBrowserContext(ctx context.Context, conn *Connection, browser *Browser,
7372
}
7473

7574
func (b *BrowserContext) AddCookies(cookies goja.Value) {
76-
rt := k6common.GetRuntime(b.ctx)
77-
k6common.Throw(rt, errors.New("BrowserContext.addCookies(cookies) has not been implemented yet"))
75+
k6Throw(b.ctx, "BrowserContext.addCookies(cookies) has not been implemented yet")
7876
}
7977

8078
// AddInitScript adds a script that will be initialized on all new pages.
@@ -120,53 +118,46 @@ func (b *BrowserContext) Browser() api.Browser {
120118

121119
// ClearCookies clears cookies.
122120
func (b *BrowserContext) ClearCookies() {
123-
rt := k6common.GetRuntime(b.ctx)
124121
action := storage.ClearCookies().WithBrowserContextID(b.id)
125122
if err := action.Do(b.ctx); err != nil {
126-
k6common.Throw(rt, fmt.Errorf("unable to clear cookies permissions: %w", err))
123+
k6Throw(b.ctx, "unable to clear cookies permissions: %w", err)
127124
}
128125
}
129126

130127
// ClearPermissions clears any permission overrides.
131128
func (b *BrowserContext) ClearPermissions() {
132-
rt := k6common.GetRuntime(b.ctx)
133129
action := cdpbrowser.ResetPermissions().WithBrowserContextID(b.id)
134130
if err := action.Do(b.ctx); err != nil {
135-
k6common.Throw(rt, fmt.Errorf("unable to clear override permissions: %w", err))
131+
k6Throw(b.ctx, "unable to clear override permissions: %w", err)
136132
}
137133
}
138134

139135
// Close shuts down the browser context.
140136
func (b *BrowserContext) Close() {
141-
rt := k6common.GetRuntime(b.ctx)
142137
if b.id == "" {
143-
k6common.Throw(rt, errors.New("default browser context can't be closed"))
138+
k6Throw(b.ctx, "default browser context can't be closed")
144139
}
145140
if err := b.browser.disposeContext(b.id); err != nil {
146-
k6common.Throw(rt, err)
141+
k6Throw(b.ctx, "cannot dispose browser context: %w", err)
147142
}
148143
}
149144

150145
func (b *BrowserContext) Cookies() []goja.Object {
151-
rt := k6common.GetRuntime(b.ctx)
152-
k6common.Throw(rt, errors.New("BrowserContext.cookies() has not been implemented yet"))
146+
k6Throw(b.ctx, "BrowserContext.cookies() has not been implemented yet")
153147
return nil
154148
}
155149

156150
func (b *BrowserContext) ExposeBinding(name string, callback goja.Callable, opts goja.Value) {
157-
rt := k6common.GetRuntime(b.ctx)
158-
k6common.Throw(rt, errors.New("BrowserContext.exposeBinding(name, callback, opts) has not been implemented yet"))
151+
k6Throw(b.ctx, "BrowserContext.exposeBinding(name, callback, opts) has not been implemented yet")
159152
}
160153

161154
func (b *BrowserContext) ExposeFunction(name string, callback goja.Callable) {
162-
rt := k6common.GetRuntime(b.ctx)
163-
k6common.Throw(rt, errors.New("BrowserContext.newCDPSession(name, callback) has not been implemented yet"))
155+
k6Throw(b.ctx, "BrowserContext.newCDPSession(name, callback) has not been implemented yet")
164156
}
165157

166158
// GrantPermissions enables the specified permissions, all others will be disabled.
167159
func (b *BrowserContext) GrantPermissions(permissions []string, opts goja.Value) {
168160
b.logger.Debugf("BrowserContext:GrantPermissions", "")
169-
rt := k6common.GetRuntime(b.ctx)
170161
permsToProtocol := map[string]cdpbrowser.PermissionType{
171162
"geolocation": cdpbrowser.PermissionTypeGeolocation,
172163
"midi": cdpbrowser.PermissionTypeMidi,
@@ -186,6 +177,7 @@ func (b *BrowserContext) GrantPermissions(permissions []string, opts goja.Value)
186177
}
187178
origin := ""
188179

180+
rt := k6common.GetRuntime(b.ctx)
189181
if opts != nil && !goja.IsUndefined(opts) && !goja.IsNull(opts) {
190182
opts := opts.ToObject(rt)
191183
for _, k := range opts.Keys() {
@@ -203,25 +195,24 @@ func (b *BrowserContext) GrantPermissions(permissions []string, opts goja.Value)
203195

204196
action := cdpbrowser.GrantPermissions(perms).WithOrigin(origin).WithBrowserContextID(b.id)
205197
if err := action.Do(b.ctx); err != nil {
206-
k6common.Throw(rt, fmt.Errorf("unable to override permissions: %w", err))
198+
k6Throw(b.ctx, "unable to override permissions: %w", err)
207199
}
208200
}
209201

210202
// NewCDPSession returns a new CDP session attached to this target
211203
func (b *BrowserContext) NewCDPSession() api.CDPSession {
212-
rt := k6common.GetRuntime(b.ctx)
213-
k6common.Throw(rt, errors.New("BrowserContext.newCDPSession() has not been implemented yet"))
204+
k6Throw(b.ctx, "BrowserContext.newCDPSession() has not been implemented yet")
214205
return nil
215206
}
216207

217208
// NewPage creates a new page inside this browser context.
218209
func (b *BrowserContext) NewPage() api.Page {
219-
b.logger.Debugf("BrowserContext:NewPage", "b.id:%v", b.id)
210+
b.logger.Debugf("BrowserContext:NewPage", "bid:%v", b.id)
220211
p, err := b.browser.newPageInContext(b.id)
221212
if err != nil {
222-
rt := k6common.GetRuntime(b.ctx)
223-
k6common.Throw(rt, err)
213+
k6Throw(b.ctx, "cannot create a new page: %w", err)
224214
}
215+
b.logger.Debugf("BrowserContext:NewPage:returns", "bid:%v ptid:%s", b.id, p.targetID)
225216
return p
226217
}
227218

@@ -235,8 +226,7 @@ func (b *BrowserContext) Pages() []api.Page {
235226
}
236227

237228
func (b *BrowserContext) Route(url goja.Value, handler goja.Callable) {
238-
rt := k6common.GetRuntime(b.ctx)
239-
k6common.Throw(rt, errors.New("BrowserContext.setHTTPCredentials(httpCredentials) has not been implemented yet"))
229+
k6Throw(b.ctx, "BrowserContext.setHTTPCredentials(httpCredentials) has not been implemented yet")
240230
}
241231

242232
// SetDefaultNavigationTimeout sets the default navigation timeout in milliseconds.
@@ -250,32 +240,29 @@ func (b *BrowserContext) SetDefaultTimeout(timeout int64) {
250240
}
251241

252242
func (b *BrowserContext) SetExtraHTTPHeaders(headers map[string]string) {
253-
rt := k6common.GetRuntime(b.ctx)
254-
k6common.Throw(rt, errors.New("BrowserContext.setHTTPCredentials(httpCredentials) has not been implemented yet"))
243+
k6Throw(b.ctx, "BrowserContext.setHTTPCredentials(httpCredentials) has not been implemented yet")
255244
}
256245

257246
// SetGeolocation overrides the geo location of the user.
258247
func (b *BrowserContext) SetGeolocation(geolocation goja.Value) {
259-
rt := k6common.GetRuntime(b.ctx)
260248
g := NewGeolocation()
261249
if err := g.Parse(b.ctx, geolocation); err != nil {
262-
k6common.Throw(rt, err)
250+
k6Throw(b.ctx, "cannot set geo location: %w", err)
263251
}
264252

265253
b.opts.Geolocation = g
266254
for _, p := range b.browser.getPages() {
267255
if err := p.updateGeolocation(); err != nil {
268-
k6common.Throw(rt, err)
256+
k6Throw(b.ctx, "cannot update geo location in target (%s): %w", p.targetID, err)
269257
}
270258
}
271259
}
272260

273261
// SetHTTPCredentials sets username/password credentials to use for HTTP authentication.
274262
func (b *BrowserContext) SetHTTPCredentials(httpCredentials goja.Value) {
275-
rt := k6common.GetRuntime(b.ctx)
276263
c := NewCredentials()
277264
if err := c.Parse(b.ctx, httpCredentials); err != nil {
278-
k6common.Throw(rt, err)
265+
k6Throw(b.ctx, "cannot set http credentials: %w", err)
279266
}
280267

281268
b.opts.HttpCredentials = c
@@ -293,13 +280,11 @@ func (b *BrowserContext) SetOffline(offline bool) {
293280
}
294281

295282
func (b *BrowserContext) StorageState(opts goja.Value) {
296-
rt := k6common.GetRuntime(b.ctx)
297-
k6common.Throw(rt, errors.New("BrowserContext.storageState(opts) has not been implemented yet"))
283+
k6Throw(b.ctx, "BrowserContext.storageState(opts) has not been implemented yet")
298284
}
299285

300286
func (b *BrowserContext) Unroute(url goja.Value, handler goja.Callable) {
301-
rt := k6common.GetRuntime(b.ctx)
302-
k6common.Throw(rt, errors.New("BrowserContext.unroute(url, handler) has not been implemented yet"))
287+
k6Throw(b.ctx, "BrowserContext.unroute(url, handler) has not been implemented yet")
303288
}
304289

305290
func (b *BrowserContext) WaitForEvent(event string, optsOrPredicate goja.Value) interface{} {
@@ -321,7 +306,7 @@ func (b *BrowserContext) WaitForEvent(event string, optsOrPredicate goja.Value)
321306
case "predicate":
322307
predicateFn, isCallable = goja.AssertFunction(opts.Get(k))
323308
if !isCallable {
324-
k6common.Throw(rt, errors.New("expected callable predicate"))
309+
k6Throw(b.ctx, "expected callable predicate")
325310
}
326311
case "timeout":
327312
timeout = time.Duration(opts.Get(k).ToInteger()) * time.Millisecond
@@ -330,7 +315,7 @@ func (b *BrowserContext) WaitForEvent(event string, optsOrPredicate goja.Value)
330315
default:
331316
predicateFn, isCallable = goja.AssertFunction(optsOrPredicate)
332317
if !isCallable {
333-
k6common.Throw(rt, errors.New("expected callable predicate"))
318+
k6Throw(b.ctx, "expected callable predicate")
334319
}
335320
}
336321
}

0 commit comments

Comments
 (0)