Run tests in real browsers with Karma

This commit is contained in:
Tim Schaub
2017-06-25 12:38:12 -06:00
parent 44558b7c89
commit 44a976eb60
7 changed files with 191 additions and 14 deletions

99
test/karma.config.js Normal file
View File

@@ -0,0 +1,99 @@
var pkg = require('../package.json');
var path = require('path');
/**
* The config below is not enough to run Karma. In addition, we need to add
* all library files in dependency order. This could be done with a plugin if
* Karma supported async plugins (there may other alternatives as well). But
* for now we start Karma with the `tasks/test-all.js` script. This script
* sorts dependencies and add files to the Karma config below.
*/
module.exports = function(karma) {
karma.set({
frameworks: ['mocha'],
files: [
{
pattern: path.resolve(__dirname, require.resolve('jquery/dist/jquery.js')),
watched: false
}, {
pattern: path.resolve(__dirname, require.resolve('expect.js/index.js')),
watched: false
}, {
pattern: path.resolve(__dirname, require.resolve('sinon/pkg/sinon.js')),
watched: false
}, {
pattern: path.resolve(__dirname, require.resolve('proj4/dist/proj4.js')),
watched: false
}, {
pattern: path.resolve(__dirname, './test-extensions.js')
}, {
pattern: '**/*.test.js'
}, {
pattern: '**/*',
included: false,
watched: false
}
],
proxies: {
'/spec/': '/base/spec/'
}
});
if (process.env.TRAVIS) {
if (!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY) {
process.stderr.write('SAUCE_USERNAME or SAUCE_ACCESS_KEY not set\n');
process.exit(1);
}
// see https://wiki.saucelabs.com/display/DOCS/Platform+Configurator
// for platform and browserName options (Selenium API, node.js code)
var customLaunchers = {
SL_Chrome: {
base: 'SauceLabs',
browserName: 'chrome'
},
SL_Firefox: {
base: 'SauceLabs',
browserName: 'firefox'
},
SL_IE: {
base: 'SauceLabs',
platform: 'Windows 10',
browserName: 'internet explorer'
},
SL_Edge: {
base: 'SauceLabs',
platform: 'Windows 10',
browserName: 'MicrosoftEdge'
},
SL_Safari: {
base: 'SauceLabs',
platform: 'macos 10.12',
browserName: 'safari'
}
};
karma.set({
sauceLabs: {
testName: pkg.name + ' ' + pkg.version,
recordScreenshots: false,
connectOptions: {
port: 5757
},
startConnect: false,
tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER,
username: process.env.SAUCE_USERNAME,
accessKey: process.env.SAUCE_ACCESS_KEY
},
reporters: ['dots', 'saucelabs'],
captureTimeout: 240000,
browserNoActivityTimeout: 240000,
customLaunchers: customLaunchers,
browsers: Object.keys(customLaunchers)
});
} else {
karma.set({
browsers: ['Chrome']
});
}
};

2
test/no-deps.js Normal file
View File

@@ -0,0 +1,2 @@
// TODO: get rid of this when we get rid of goog base.js
var CLOSURE_NO_DEPS = true; // eslint-disable-line

View File

@@ -3334,7 +3334,7 @@ describe('ol.format.KML', function() {
var nl = format.readNetworkLinks(text);
expect(nl).to.have.length(2);
expect(nl[0].name).to.be('bar');
expect(nl[0].href.replace(window.location.href, '')).to.be('bar/bar.kml');
expect(nl[0].href.replace(window.location.origin, '')).to.be('/bar/bar.kml');
expect(nl[1].href).to.be('http://foo.com/foo.kml');
});

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -11,7 +11,7 @@ describe('ol.source.Zoomify', function() {
var w = 1024;
var h = 512;
var size = [w, h];
var url = 'zoomify-url/{TileGroup}/{z}-{x}-{y}.jpg';
var url = 'spec/ol/source/images/zoomify/{TileGroup}/{z}-{x}-{y}.jpg';
var proj = new ol.proj.Projection({
code: 'ZOOMIFY',
units: 'pixels',
@@ -171,27 +171,27 @@ describe('ol.source.Zoomify', function() {
var source = getZoomifySource();
var tileUrlFunction = source.getTileUrlFunction();
// zoomlevel 0
expect(tileUrlFunction([0, 0, -1])).to.eql('zoomify-url/TileGroup0/0-0-0.jpg');
expect(tileUrlFunction([0, 0, -1])).to.eql('spec/ol/source/images/zoomify/TileGroup0/0-0-0.jpg');
// zoomlevel 1
expect(tileUrlFunction([1, 0, -1])).to.eql('zoomify-url/TileGroup0/1-0-0.jpg');
expect(tileUrlFunction([1, 1, -1])).to.eql('zoomify-url/TileGroup0/1-1-0.jpg');
expect(tileUrlFunction([1, 0, -2])).to.eql('zoomify-url/TileGroup0/1-0-1.jpg');
expect(tileUrlFunction([1, 1, -2])).to.eql('zoomify-url/TileGroup0/1-1-1.jpg');
expect(tileUrlFunction([1, 0, -1])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-0-0.jpg');
expect(tileUrlFunction([1, 1, -1])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-1-0.jpg');
expect(tileUrlFunction([1, 0, -2])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-0-1.jpg');
expect(tileUrlFunction([1, 1, -2])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-1-1.jpg');
});
it('creates an expected tileUrlFunction without template', function() {
var source = new ol.source.Zoomify({
url: 'zoomify-url/',
url: 'spec/ol/source/images/zoomify/',
size: size
});
var tileUrlFunction = source.getTileUrlFunction();
// zoomlevel 0
expect(tileUrlFunction([0, 0, -1])).to.eql('zoomify-url/TileGroup0/0-0-0.jpg');
expect(tileUrlFunction([0, 0, -1])).to.eql('spec/ol/source/images/zoomify/TileGroup0/0-0-0.jpg');
// zoomlevel 1
expect(tileUrlFunction([1, 0, -1])).to.eql('zoomify-url/TileGroup0/1-0-0.jpg');
expect(tileUrlFunction([1, 1, -1])).to.eql('zoomify-url/TileGroup0/1-1-0.jpg');
expect(tileUrlFunction([1, 0, -2])).to.eql('zoomify-url/TileGroup0/1-0-1.jpg');
expect(tileUrlFunction([1, 1, -2])).to.eql('zoomify-url/TileGroup0/1-1-1.jpg');
expect(tileUrlFunction([1, 0, -1])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-0-0.jpg');
expect(tileUrlFunction([1, 1, -1])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-1-0.jpg');
expect(tileUrlFunction([1, 0, -2])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-0-1.jpg');
expect(tileUrlFunction([1, 1, -2])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-1-1.jpg');
});
it('returns undefined if no tileCoord passed', function() {
var source = getZoomifySource();