The files
array determines which files are included in the browser and which files are watched and served by Karma.
basePath
#basePath
first.basePath
is a relative path, it gets resolved to the
directory where the configuration file is located.test/unit/**/*.spec.js
.Each pattern is either a simple string or an object with the following properties:
pattern
#type
#js
.css
html
js
dart
module
dom
css
and html
types
create link
elements; the js
, dart
, and module
elements create script
elements. The dom
type
includes the file content in the page, used, for example, to test components combinging HTML and JS.watched
#true
autoWatch
is true
all files that have set watched
to true will be watched for changes.included
#Type. Boolean
Default. true
Description. Should the files be included in the browser using
<script>
tag? Use false
if you want to load them manually, eg.
using Require.js.
If a file is covered by multiple patterns with different include
properties, the most specific pattern takes
precedence over the other.
The specificity of the pattern is defined as a six-tuple, where larger tuple implies lesser specificity: (nglob parts, nglob star, nstar, next glob, nrange, noptional). Tuples are compared lexicographically.
The nglob parts is the number of patterns after the bracket sections are expanded. E.g. the the pattern {0...9} will yield nglob parts=10. The rest of the tuple is decided as the least specific of each expanded pattern.
served
#true
nocache
#false
Depending on preprocessor configuration, be aware that files loaded may be transformed and no longer available in
their native format. For instance, if html2js preprocessor is enabled, the actual .html files are no longer
served - but rather available as window.__html__['my.html']
. Read more about preprocessors.
Here is a complete example showing the different options possible:
files: [
// Detailed pattern to include a file. Similarly other options can be used
{ pattern: 'lib/angular.js', watched: false },
// Prefer to have watched false for library files. No need to watch them for changes
// simple pattern to load the needed testfiles
// equal to {pattern: 'test/unit/*.spec.js', watched: true, served: true, included: true}
'test/unit/*.spec.js',
// this file gets served but will be ignored by the watcher
// note if html2js preprocessor is active, reference as `window.__html__['compiled/index.html']`
{pattern: 'compiled/index.html', watched: false},
// this file only gets watched and is otherwise ignored
{pattern: 'app/index.html', included: false, served: false},
// this file will be served on demand from disk and will be ignored by the watcher
{pattern: 'compiled/app.js.map', included: false, served: true, watched: false, nocache: true}
],
By default all assets are served at http://localhost:[PORT]/base/
Example for loading images
files: [
{pattern: 'test/images/*.jpg', watched: false, included: false, served: true, nocache: false}
],
The pattern is a glob which matches the specified image assets. Watched and included are not necessary as images are not tests. However, they will need to be served to the browser.
In this case an image would be accessed at http://localhost:[PORT]/base/test/images/[MY IMAGE].jpg
Notice the base in the URL, it is a reference to your basePath. You do not need to replace or provide your own base.
In addition, you can use a proxy
proxies: {
"/img/": "http://localhost:8080/base/test/images/"
},
Now you can fetch images in test/images
at http://localhost:8080/img/[MY IMAGE].jpg
Change 8080 to the port you use
You can also use proxies without specifying the protocol, hostname, and port
proxies: {
"/img/": "/base/test/images/"
},
middleware
configuration option).