Index: trip-planner-front/node_modules/karma/lib/launchers/capture_timeout.js
===================================================================
--- trip-planner-front/node_modules/karma/lib/launchers/capture_timeout.js	(revision 6a3a178323fd905112b5392bd9d3cb83b66ef2d3)
+++ trip-planner-front/node_modules/karma/lib/launchers/capture_timeout.js	(revision 1ad8e64a349fcc7c996155279b16efc2cfe001dd)
@@ -18,5 +18,5 @@
       }
 
-      log.warn(`${this.name} have not captured in ${captureTimeout} ms, killing.`)
+      log.warn(`${this.name} has not captured in ${captureTimeout} ms, killing.`)
       this.error = 'timeout'
       this.kill()
Index: trip-planner-front/node_modules/karma/lib/middleware/karma.js
===================================================================
--- trip-planner-front/node_modules/karma/lib/middleware/karma.js	(revision 6a3a178323fd905112b5392bd9d3cb83b66ef2d3)
+++ trip-planner-front/node_modules/karma/lib/middleware/karma.js	(revision 1ad8e64a349fcc7c996155279b16efc2cfe001dd)
@@ -46,5 +46,5 @@
   const query = getQuery(url)
   if (query['x-ua-compatible']) {
-    return `\n<meta http-equiv="X-UA-Compatible" content="${query['x-ua-compatible']}"/>`
+    return `<meta http-equiv="X-UA-Compatible" content="${query['x-ua-compatible']}"/>`
   }
   return ''
@@ -108,5 +108,5 @@
         return serveStaticFile('/client.html', requestedRangeHeader, response, (data) =>
           data
-            .replace('\n%X_UA_COMPATIBLE%', getXUACompatibleMetaElement(request.url))
+            .replace('%X_UA_COMPATIBLE%', getXUACompatibleMetaElement(request.url))
             .replace('%X_UA_COMPATIBLE_URL%', getXUACompatibleUrl(request.url)))
       }
@@ -227,5 +227,5 @@
             .replace('%SCRIPT_URL_ARRAY%', () => 'window.__karma__.scriptUrls = ' + JSON.stringify(scriptUrls) + ';\n')
             .replace('%MAPPINGS%', () => 'window.__karma__.files = {\n' + mappings.join(',\n') + '\n};\n')
-            .replace('\n%X_UA_COMPATIBLE%', getXUACompatibleMetaElement(request.url))
+            .replace('%X_UA_COMPATIBLE%', getXUACompatibleMetaElement(request.url))
         })
       })
Index: trip-planner-front/node_modules/karma/lib/reporter.js
===================================================================
--- trip-planner-front/node_modules/karma/lib/reporter.js	(revision 6a3a178323fd905112b5392bd9d3cb83b66ef2d3)
+++ trip-planner-front/node_modules/karma/lib/reporter.js	(revision 1ad8e64a349fcc7c996155279b16efc2cfe001dd)
@@ -49,5 +49,5 @@
     }
 
-    let msg = input.replace(URL_REGEXP, function (_, prefix, path, __, ___, line, ____, column) {
+    let msg = input.replace(URL_REGEXP, function (stackTracePath, prefix, path, __, ___, line, ____, column) {
       const normalizedPath = prefix === 'base/' ? `${basePath}/${path}` : path
       const file = lastServedFiles.find((file) => file.path === normalizedPath)
@@ -65,4 +65,12 @@
           const original = getSourceMapConsumer(file.sourceMap).originalPositionFor({ line, column: zeroBasedColumn, bias })
 
+          // If there is no original position/source for the current stack trace path, then
+          // we return early with the formatted generated position. This handles the case of
+          // generated code which does not map to anything, see Case 1 of the source-map spec.
+          // https://sourcemaps.info/spec.html.
+          if (original.source === null) {
+            return PathUtils.formatPathMapping(path, line, column)
+          }
+
           // Source maps often only have a local file name, resolve to turn into a full path if
           // the path is not absolute yet.
@@ -70,5 +78,6 @@
           return `${PathUtils.formatPathMapping(resolve(path, original.source), original.line, oneBasedOriginalColumn)} <- ${PathUtils.formatPathMapping(path, line, column)}`
         } catch (e) {
-          log.warn(`SourceMap position not found for trace: ${input}`)
+          log.warn(`An unexpected error occurred while resolving the original position for: ${stackTracePath}`)
+          log.warn(e)
         }
       }
