github.com/grafana/synthetic-monitoring-agent@v0.64.2/internal/k6runner/error_test.go (about) 1 package k6runner 2 3 import ( 4 "errors" 5 "testing" 6 ) 7 8 func TestErrorFromLogs(t *testing.T) { 9 t.Parallel() 10 11 for _, tc := range []struct { 12 name string 13 logLines string 14 expect error 15 }{ 16 { 17 name: "console.error", 18 logLines: `time="2024-04-18T19:39:22+02:00" level=error msg="console error" source=console`, 19 expect: nil, 20 }, 21 { 22 name: "stack trace", 23 logLines: ` 24 time="2024-04-18T19:39:22+02:00" level=error msg="console error" source=console 25 level=error msg=foobar source=stacktrace 26 `, 27 expect: ErrStacktrace, 28 }, 29 { 30 name: "unsupported browser", 31 logLines: ` 32 time="2024-07-12T16:47:13+02:00" level=error msg="Uncaught (in promise) GoError: browser not found in registry. make sure to set browser type option in scenario definition in order to use the browser module\n\tat github.com/grafana/xk6-browser/browser.syncMapBrowser.func7 (native)\n\tat file:///tmp/roobre/browser.js:20:15(4)\n" executor=shared-iterations scenario=default 33 `, 34 expect: ErrThrown, 35 }, 36 { 37 name: "throw new Error()", 38 logLines: ` 39 time="2024-07-12T16:48:01+02:00" level=error msg="Uncaught (in promise) Error: foobar\n\tat file:///tmp/roobre/browser.js:22:8(8)\n" executor=shared-iterations scenario=ui 40 `, 41 expect: ErrThrown, 42 }, 43 { 44 name: "required filds in different lines", 45 logLines: ` 46 lever=error msg=something 47 source=stacktrace msg=something 48 `, 49 expect: nil, 50 }, 51 { 52 name: "badly formatted lines and stactrace", 53 //nolint:dupword // Duped 54 logLines: ` 55 something something 56 lever=error something something 57 source=stacktrace something something 58 level=error msg="missing a quote 59 level=error msg=foobar source=stacktrace 60 `, 61 expect: nil, // FIXME: Probably the parser should tolerate malformed lines. 62 }, 63 } { 64 t.Run(tc.name, func(t *testing.T) { 65 t.Parallel() 66 67 err := errorFromLogs([]byte(tc.logLines)) 68 if !errors.Is(err, tc.expect) { 69 t.Fatalf("Unexpected error: %v", err) 70 } 71 }) 72 } 73 }