diff --git a/package.json b/package.json index 22dba5da755..4e052409331 100644 --- a/package.json +++ b/package.json @@ -33,16 +33,16 @@ "docker": "node tasks/docker.js", "pretest": "node tasks/pretest.js", "test-jasmine": "karma start test/jasmine/karma.conf.js", - "test-image": "node tasks/test_image.js", - "test-image-gl2d": "node tasks/test_image.js gl2d_* --queue", - "test-export": "node tasks/test_export.js", + "test-image": "electron test/image/compare_pixels_test.js", + "test-image-gl2d": "electron test/image/compare_pixels_test.js gl2d_* --queue", + "test-export": "electron test/image/export_test.js", "test-syntax": "node tasks/test_syntax.js", "test-bundle": "node tasks/test_bundle.js", "test": "npm run test-jasmine && npm run test-bundle && npm run test-image && npm run test-image-gl2d && npm run test-syntax && npm run lint", "start-test_dashboard": "node devtools/test_dashboard/server.js", "start-image_viewer": "node devtools/image_viewer/server.js", "start": "npm run start-test_dashboard", - "baseline": "node tasks/baseline.js", + "baseline": "electron test/image/make_baseline.js", "preversion": "npm-link-check && npm dedupe && npm ls", "version": "npm run build && git add -A dist src build", "postversion": "node -e \"console.log('Version bumped and committed. If ok, run: git push && git push --tags')\"" @@ -110,6 +110,7 @@ "browserify-transform-tools": "^1.7.0", "deep-equal": "^1.0.1", "ecstatic": "^2.1.0", + "electron": "^1.7.5", "eslint": "^3.17.1", "falafel": "^2.0.0", "fs-extra": "^2.0.0", @@ -117,6 +118,7 @@ "glob": "^7.0.0", "glslify": "^4.0.0", "gzip-size": "^3.0.0", + "image-exporter": "file:../image-exporter", "image-size": "^0.5.1", "jasmine-core": "^2.4.1", "jsdom": "^11.2.0", @@ -134,10 +136,13 @@ "node-sass": "^4.5.0", "npm-link-check": "^1.2.0", "open": "0.0.5", + "pixelmatch": "^4.0.2", + "pngjs": "^3.3.0", "prepend-file": "^1.3.1", "prettysize": "0.0.3", "read-last-lines": "^1.1.0", "requirejs": "^2.3.1", + "run-parallel": "^1.1.6", "through2": "^2.0.3", "uglify-js": "^2.8.12", "watchify": "^3.9.0", diff --git a/test/image/assets/get_image_paths.js b/test/image/assets/get_image_paths.js index 915bce2c2c0..0b5d0513a04 100644 --- a/test/image/assets/get_image_paths.js +++ b/test/image/assets/get_image_paths.js @@ -1,23 +1,23 @@ var path = require('path'); var constants = require('../../../tasks/util/constants'); - var DEFAULT_FORMAT = 'png'; - /** * Return paths to baseline, test-image and diff images for a given mock name. * * @param {string} mockName * @param {string} format * @return {object} - * baseline - * test - * diff + * mock + * baseline + * test + * diff */ module.exports = function getImagePaths(mockName, format) { format = format || DEFAULT_FORMAT; return { + mock: join(constants.pathToTestImageMocks, mockName, 'json'), baseline: join(constants.pathToTestImageBaselines, mockName, format), test: join(constants.pathToTestImages, mockName, format), diff: join(constants.pathToTestImagesDiff, 'diff-' + mockName, format) diff --git a/test/image/assets/get_mock_list.js b/test/image/assets/get_mock_list.js index e0f4b39a147..71bb3420d5a 100644 --- a/test/image/assets/get_mock_list.js +++ b/test/image/assets/get_mock_list.js @@ -3,21 +3,28 @@ var glob = require('glob'); var constants = require('../../../tasks/util/constants'); - /** * Return array of mock name corresponding to input glob pattern * - * @param {string} pattern + * @param {array} _ : argv._ from minimist * @return {array} */ -module.exports = function getMocks(pattern) { - // defaults to 'all' - pattern = pattern || '*'; +module.exports = function getMockList(_) { + if(_.length === 0) { + return fromPattern('*'); + } else { + return _ + .map(String) + .map(fromPattern) + .reduce(function(a, b) { return a.concat(b); }); + } +}; +function fromPattern(pattern) { // defaults to '.json' ext is none is provided if(path.extname(pattern) === '') pattern += '.json'; - var patternFull = constants.pathToTestImageMocks + '/' + pattern; + var patternFull = path.join(constants.pathToTestImageMocks, pattern); var matches = glob.sync(patternFull); // return only the mock name (not a full path, no ext) @@ -26,4 +33,4 @@ module.exports = function getMocks(pattern) { }); return mockNames; -}; +} diff --git a/test/image/assets/run.js b/test/image/assets/run.js new file mode 100644 index 00000000000..036cfdca484 --- /dev/null +++ b/test/image/assets/run.js @@ -0,0 +1,66 @@ +var imageExporter = require('image-exporter'); +var path = require('path'); +var constants = require('../../../tasks/util/constants'); + +function run(mockList, input, argv, write) { + argv = argv || {}; + + if(!Array.isArray(mockList) || mockList.length === 0) { + throw new Error('Empty mockList list'); + } + if(!Array.isArray(input) || input.length === 0) { + throw new Error('Empty input list'); + } + if(mockList.length !== input.length) { + throw new Error('mockList and input must have same length'); + } + + var app = imageExporter.run({ + input: input, + write: function(info, _, done) { write(info, done); }, + parallelLimit: argv.queue ? 1 : argv['parallel-limit'], + debug: argv.debug, + component: { + name: 'plotly-graph', + options: { + plotlyJS: constants.pathToPlotlyBuild, + mapboxAccessToken: constants.mapboxAccessToken, + mathjax: '', + topojson: constants.pathToPlotlyGeoAssetsDist + } + } + }); + + var failed = []; + + app.on('after-export', function(info) { + var mockName = mockList[info.itemIndex]; + console.log('ok ' + mockName); + }); + + app.on('export-error', function(info) { + var mockName = mockList[info.itemIndex]; + + var msg = 'not ok (' + info.code + '): ' + mockName + ' - ' + info.msg; + if(info.error) msg += ' ' + info.error; + + console.warn(msg); + failed.push(msg); + }); + + app.on('renderer-error', function(info) { + console.warn('renderer error: ' + info.msg); + console.warn(info.error); + }); + + app.on('after-export-all', function(info) { + if(info.code === 1) { + console.log('\nFailed test(s):'); + console.log(failed.join('\n')); + } + }); + + return app; +} + +module.exports = run; diff --git a/test/image/baselines/0.png b/test/image/baselines/0.png index 9d6c91ac31a..8048ee4aaab 100644 Binary files a/test/image/baselines/0.png and b/test/image/baselines/0.png differ diff --git a/test/image/baselines/1.png b/test/image/baselines/1.png index eb01e3dfafc..2dbe63dc48c 100644 Binary files a/test/image/baselines/1.png and b/test/image/baselines/1.png differ diff --git a/test/image/baselines/10.png b/test/image/baselines/10.png index 475b193bcb5..91ad5322317 100644 Binary files a/test/image/baselines/10.png and b/test/image/baselines/10.png differ diff --git a/test/image/baselines/11.png b/test/image/baselines/11.png index 0b5e7486d53..b97776551ad 100644 Binary files a/test/image/baselines/11.png and b/test/image/baselines/11.png differ diff --git a/test/image/baselines/12.png b/test/image/baselines/12.png index 4b81dee9a6c..b6054247d38 100644 Binary files a/test/image/baselines/12.png and b/test/image/baselines/12.png differ diff --git a/test/image/baselines/13.png b/test/image/baselines/13.png index 2d1b1652ef5..51dbdcab532 100644 Binary files a/test/image/baselines/13.png and b/test/image/baselines/13.png differ diff --git a/test/image/baselines/14.png b/test/image/baselines/14.png index bcea17520b0..b05ccc63857 100644 Binary files a/test/image/baselines/14.png and b/test/image/baselines/14.png differ diff --git a/test/image/baselines/15.png b/test/image/baselines/15.png index cb368944185..44b62f08f2b 100644 Binary files a/test/image/baselines/15.png and b/test/image/baselines/15.png differ diff --git a/test/image/baselines/16.png b/test/image/baselines/16.png index cfa602db6b7..3f34edab717 100644 Binary files a/test/image/baselines/16.png and b/test/image/baselines/16.png differ diff --git a/test/image/baselines/17.png b/test/image/baselines/17.png index e9292065669..08e4fd368d1 100644 Binary files a/test/image/baselines/17.png and b/test/image/baselines/17.png differ diff --git a/test/image/baselines/18.png b/test/image/baselines/18.png index 478c7f21823..f1bb44c76da 100644 Binary files a/test/image/baselines/18.png and b/test/image/baselines/18.png differ diff --git a/test/image/baselines/19.png b/test/image/baselines/19.png index 83bb484d031..516624e7ba8 100644 Binary files a/test/image/baselines/19.png and b/test/image/baselines/19.png differ diff --git a/test/image/baselines/20.png b/test/image/baselines/20.png index abfccd22f1b..8413d2ea849 100644 Binary files a/test/image/baselines/20.png and b/test/image/baselines/20.png differ diff --git a/test/image/baselines/21.png b/test/image/baselines/21.png index e17d6d60c2c..796229db03c 100644 Binary files a/test/image/baselines/21.png and b/test/image/baselines/21.png differ diff --git a/test/image/baselines/22.png b/test/image/baselines/22.png index fa84aea1e82..0c8bba67f55 100644 Binary files a/test/image/baselines/22.png and b/test/image/baselines/22.png differ diff --git a/test/image/baselines/23.png b/test/image/baselines/23.png index 6a4223e6b18..86f4023aa25 100644 Binary files a/test/image/baselines/23.png and b/test/image/baselines/23.png differ diff --git a/test/image/baselines/24.png b/test/image/baselines/24.png index 9412925e6e9..b7ff423d38c 100644 Binary files a/test/image/baselines/24.png and b/test/image/baselines/24.png differ diff --git a/test/image/baselines/25.png b/test/image/baselines/25.png index 5008e9ea872..cc8e1c4ecc5 100644 Binary files a/test/image/baselines/25.png and b/test/image/baselines/25.png differ diff --git a/test/image/baselines/26.png b/test/image/baselines/26.png index 77374918c3f..28857de3f59 100644 Binary files a/test/image/baselines/26.png and b/test/image/baselines/26.png differ diff --git a/test/image/baselines/27.png b/test/image/baselines/27.png index 5ae3813e461..c73710ac0fe 100644 Binary files a/test/image/baselines/27.png and b/test/image/baselines/27.png differ diff --git a/test/image/baselines/28.png b/test/image/baselines/28.png index 5c6e382b07e..38c7bc9d096 100644 Binary files a/test/image/baselines/28.png and b/test/image/baselines/28.png differ diff --git a/test/image/baselines/29.png b/test/image/baselines/29.png index a05d30b307f..1847b1cdb67 100644 Binary files a/test/image/baselines/29.png and b/test/image/baselines/29.png differ diff --git a/test/image/baselines/2dhistogram_contour_subplots.png b/test/image/baselines/2dhistogram_contour_subplots.png index 61dbea133e2..4569c95d64e 100644 Binary files a/test/image/baselines/2dhistogram_contour_subplots.png and b/test/image/baselines/2dhistogram_contour_subplots.png differ diff --git a/test/image/baselines/30.png b/test/image/baselines/30.png index 94dda21ced6..5d94c95ab00 100644 Binary files a/test/image/baselines/30.png and b/test/image/baselines/30.png differ diff --git a/test/image/baselines/31.png b/test/image/baselines/31.png index 1b4de09c01c..152d48e3d0b 100644 Binary files a/test/image/baselines/31.png and b/test/image/baselines/31.png differ diff --git a/test/image/baselines/32.png b/test/image/baselines/32.png index 4602377412d..da2c7e9663f 100644 Binary files a/test/image/baselines/32.png and b/test/image/baselines/32.png differ diff --git a/test/image/baselines/4.png b/test/image/baselines/4.png index d98ff4cd002..1a07b59a589 100644 Binary files a/test/image/baselines/4.png and b/test/image/baselines/4.png differ diff --git a/test/image/baselines/5.png b/test/image/baselines/5.png index 6d0396fb097..c342ffa1cea 100644 Binary files a/test/image/baselines/5.png and b/test/image/baselines/5.png differ diff --git a/test/image/baselines/6.png b/test/image/baselines/6.png index e05e5738fa5..6be8161f429 100644 Binary files a/test/image/baselines/6.png and b/test/image/baselines/6.png differ diff --git a/test/image/baselines/7.png b/test/image/baselines/7.png index f223320669d..904d38a89b7 100644 Binary files a/test/image/baselines/7.png and b/test/image/baselines/7.png differ diff --git a/test/image/baselines/8.png b/test/image/baselines/8.png index 42556fb16e4..0f4a01f5684 100644 Binary files a/test/image/baselines/8.png and b/test/image/baselines/8.png differ diff --git a/test/image/baselines/airfoil.png b/test/image/baselines/airfoil.png index 81c0340bdec..42afe60ee7a 100644 Binary files a/test/image/baselines/airfoil.png and b/test/image/baselines/airfoil.png differ diff --git a/test/image/baselines/animation.png b/test/image/baselines/animation.png index 91bda9d9621..9fc3501d02b 100644 Binary files a/test/image/baselines/animation.png and b/test/image/baselines/animation.png differ diff --git a/test/image/baselines/annotations-autorange.png b/test/image/baselines/annotations-autorange.png index 4ae3404b064..96ef1876982 100644 Binary files a/test/image/baselines/annotations-autorange.png and b/test/image/baselines/annotations-autorange.png differ diff --git a/test/image/baselines/annotations.png b/test/image/baselines/annotations.png index f4e3dad3d4e..76c92b47f3f 100644 Binary files a/test/image/baselines/annotations.png and b/test/image/baselines/annotations.png differ diff --git a/test/image/baselines/autorange-tozero-rangemode.png b/test/image/baselines/autorange-tozero-rangemode.png index 152e96cbff2..8ed1cd6bb8e 100644 Binary files a/test/image/baselines/autorange-tozero-rangemode.png and b/test/image/baselines/autorange-tozero-rangemode.png differ diff --git a/test/image/baselines/axes-autotype-empty.png b/test/image/baselines/axes-autotype-empty.png index 3ab891cb10a..b751b998c3f 100644 Binary files a/test/image/baselines/axes-autotype-empty.png and b/test/image/baselines/axes-autotype-empty.png differ diff --git a/test/image/baselines/axes-ticks.png b/test/image/baselines/axes-ticks.png index d4867a0ffc8..5add4c6b85f 100644 Binary files a/test/image/baselines/axes-ticks.png and b/test/image/baselines/axes-ticks.png differ diff --git a/test/image/baselines/axes_booleans.png b/test/image/baselines/axes_booleans.png index 01cfaaa0db7..5741c304a68 100644 Binary files a/test/image/baselines/axes_booleans.png and b/test/image/baselines/axes_booleans.png differ diff --git a/test/image/baselines/axes_category_ascending.png b/test/image/baselines/axes_category_ascending.png index f65f8ef73d4..6be1c4b9bfb 100644 Binary files a/test/image/baselines/axes_category_ascending.png and b/test/image/baselines/axes_category_ascending.png differ diff --git a/test/image/baselines/axes_category_categoryarray.png b/test/image/baselines/axes_category_categoryarray.png index 105b0baa2a2..d537b294c85 100644 Binary files a/test/image/baselines/axes_category_categoryarray.png and b/test/image/baselines/axes_category_categoryarray.png differ diff --git a/test/image/baselines/axes_category_categoryarray_truncated_tails.png b/test/image/baselines/axes_category_categoryarray_truncated_tails.png index ef9c917505c..fc0151ac378 100644 Binary files a/test/image/baselines/axes_category_categoryarray_truncated_tails.png and b/test/image/baselines/axes_category_categoryarray_truncated_tails.png differ diff --git a/test/image/baselines/axes_category_descending.png b/test/image/baselines/axes_category_descending.png index 9aaa43edaaa..29dd8f85c05 100644 Binary files a/test/image/baselines/axes_category_descending.png and b/test/image/baselines/axes_category_descending.png differ diff --git a/test/image/baselines/axes_category_descending_with_gaps.png b/test/image/baselines/axes_category_descending_with_gaps.png index 191b91b7995..f4fb8fe6453 100644 Binary files a/test/image/baselines/axes_category_descending_with_gaps.png and b/test/image/baselines/axes_category_descending_with_gaps.png differ diff --git a/test/image/baselines/axes_category_null.png b/test/image/baselines/axes_category_null.png index fccc962bf5c..f9eb64b3199 100644 Binary files a/test/image/baselines/axes_category_null.png and b/test/image/baselines/axes_category_null.png differ diff --git a/test/image/baselines/axes_enumerated_ticks.png b/test/image/baselines/axes_enumerated_ticks.png index 5e2dad1405e..9c50a4e1859 100644 Binary files a/test/image/baselines/axes_enumerated_ticks.png and b/test/image/baselines/axes_enumerated_ticks.png differ diff --git a/test/image/baselines/axes_free_default.png b/test/image/baselines/axes_free_default.png index 7b6c66e521b..3f43983ca93 100644 Binary files a/test/image/baselines/axes_free_default.png and b/test/image/baselines/axes_free_default.png differ diff --git a/test/image/baselines/axes_labels.png b/test/image/baselines/axes_labels.png index 9bb71bed75c..41aebe04442 100644 Binary files a/test/image/baselines/axes_labels.png and b/test/image/baselines/axes_labels.png differ diff --git a/test/image/baselines/axes_line_noticklabels.png b/test/image/baselines/axes_line_noticklabels.png index 20ca059a88c..3888658dc29 100644 Binary files a/test/image/baselines/axes_line_noticklabels.png and b/test/image/baselines/axes_line_noticklabels.png differ diff --git a/test/image/baselines/axes_lines.png b/test/image/baselines/axes_lines.png index 290d6b57754..adf36d50c6d 100644 Binary files a/test/image/baselines/axes_lines.png and b/test/image/baselines/axes_lines.png differ diff --git a/test/image/baselines/axes_range_mode.png b/test/image/baselines/axes_range_mode.png index 927bd5e1a57..4b53d3e6a82 100644 Binary files a/test/image/baselines/axes_range_mode.png and b/test/image/baselines/axes_range_mode.png differ diff --git a/test/image/baselines/axes_range_type.png b/test/image/baselines/axes_range_type.png index 2abd177735a..330aabb9072 100644 Binary files a/test/image/baselines/axes_range_type.png and b/test/image/baselines/axes_range_type.png differ diff --git a/test/image/baselines/axes_reversed.png b/test/image/baselines/axes_reversed.png index 6c777c6ad60..120b7e7dfd7 100644 Binary files a/test/image/baselines/axes_reversed.png and b/test/image/baselines/axes_reversed.png differ diff --git a/test/image/baselines/axes_scaleanchor.png b/test/image/baselines/axes_scaleanchor.png index 48c55dba35f..8f175840c98 100644 Binary files a/test/image/baselines/axes_scaleanchor.png and b/test/image/baselines/axes_scaleanchor.png differ diff --git a/test/image/baselines/axes_visible-false.png b/test/image/baselines/axes_visible-false.png index 3f12542a06e..03c54b0c82f 100644 Binary files a/test/image/baselines/axes_visible-false.png and b/test/image/baselines/axes_visible-false.png differ diff --git a/test/image/baselines/axislabel_separatethousands.png b/test/image/baselines/axislabel_separatethousands.png index 64e60032333..1e808432745 100644 Binary files a/test/image/baselines/axislabel_separatethousands.png and b/test/image/baselines/axislabel_separatethousands.png differ diff --git a/test/image/baselines/bar-colorscale-colorbar.png b/test/image/baselines/bar-colorscale-colorbar.png index 371fcece1a2..4d5b094b0c3 100644 Binary files a/test/image/baselines/bar-colorscale-colorbar.png and b/test/image/baselines/bar-colorscale-colorbar.png differ diff --git a/test/image/baselines/bar-marker-line-colorscales.png b/test/image/baselines/bar-marker-line-colorscales.png index 50b1bc8520f..61d7a218541 100644 Binary files a/test/image/baselines/bar-marker-line-colorscales.png and b/test/image/baselines/bar-marker-line-colorscales.png differ diff --git a/test/image/baselines/bar_and_histogram.png b/test/image/baselines/bar_and_histogram.png index 99bd2626b13..204b69f293e 100644 Binary files a/test/image/baselines/bar_and_histogram.png and b/test/image/baselines/bar_and_histogram.png differ diff --git a/test/image/baselines/bar_attrs_group.png b/test/image/baselines/bar_attrs_group.png index 70303cdec40..181d52d22aa 100644 Binary files a/test/image/baselines/bar_attrs_group.png and b/test/image/baselines/bar_attrs_group.png differ diff --git a/test/image/baselines/bar_attrs_group_norm.png b/test/image/baselines/bar_attrs_group_norm.png index ceb86e17b82..fec456de97b 100644 Binary files a/test/image/baselines/bar_attrs_group_norm.png and b/test/image/baselines/bar_attrs_group_norm.png differ diff --git a/test/image/baselines/bar_attrs_overlay.png b/test/image/baselines/bar_attrs_overlay.png index 63e845af88a..c6db178a68b 100644 Binary files a/test/image/baselines/bar_attrs_overlay.png and b/test/image/baselines/bar_attrs_overlay.png differ diff --git a/test/image/baselines/bar_attrs_relative.png b/test/image/baselines/bar_attrs_relative.png index a190cfc7e23..b75646b8ee4 100644 Binary files a/test/image/baselines/bar_attrs_relative.png and b/test/image/baselines/bar_attrs_relative.png differ diff --git a/test/image/baselines/bar_bargap0.png b/test/image/baselines/bar_bargap0.png index cb28738e50c..aa2d039b1ea 100644 Binary files a/test/image/baselines/bar_bargap0.png and b/test/image/baselines/bar_bargap0.png differ diff --git a/test/image/baselines/bar_group_percent.png b/test/image/baselines/bar_group_percent.png index add38a4d52d..42bb1257cc2 100644 Binary files a/test/image/baselines/bar_group_percent.png and b/test/image/baselines/bar_group_percent.png differ diff --git a/test/image/baselines/bar_line.png b/test/image/baselines/bar_line.png index 8d37e62a736..8ee775a089f 100644 Binary files a/test/image/baselines/bar_line.png and b/test/image/baselines/bar_line.png differ diff --git a/test/image/baselines/bar_marker_array.png b/test/image/baselines/bar_marker_array.png index 747544a2d48..6a01bc5dd2a 100644 Binary files a/test/image/baselines/bar_marker_array.png and b/test/image/baselines/bar_marker_array.png differ diff --git a/test/image/baselines/bar_nonnumeric_sizes.png b/test/image/baselines/bar_nonnumeric_sizes.png index 6f05e329e1e..c614a14eb14 100644 Binary files a/test/image/baselines/bar_nonnumeric_sizes.png and b/test/image/baselines/bar_nonnumeric_sizes.png differ diff --git a/test/image/baselines/bar_stack-with-gaps.png b/test/image/baselines/bar_stack-with-gaps.png index 61540bddb7e..074f3c3090d 100644 Binary files a/test/image/baselines/bar_stack-with-gaps.png and b/test/image/baselines/bar_stack-with-gaps.png differ diff --git a/test/image/baselines/bar_stackrelative_negative.png b/test/image/baselines/bar_stackrelative_negative.png index add20b5908e..d8533f98b5c 100644 Binary files a/test/image/baselines/bar_stackrelative_negative.png and b/test/image/baselines/bar_stackrelative_negative.png differ diff --git a/test/image/baselines/bar_stackrelativeto100_negative.png b/test/image/baselines/bar_stackrelativeto100_negative.png index 34f97dd0325..19e87abe182 100644 Binary files a/test/image/baselines/bar_stackrelativeto100_negative.png and b/test/image/baselines/bar_stackrelativeto100_negative.png differ diff --git a/test/image/baselines/bar_stackto1.png b/test/image/baselines/bar_stackto1.png index 530075b3c60..2d0b95f8008 100644 Binary files a/test/image/baselines/bar_stackto1.png and b/test/image/baselines/bar_stackto1.png differ diff --git a/test/image/baselines/bar_stackto100_negative.png b/test/image/baselines/bar_stackto100_negative.png index a249725ac64..466e66b5207 100644 Binary files a/test/image/baselines/bar_stackto100_negative.png and b/test/image/baselines/bar_stackto100_negative.png differ diff --git a/test/image/baselines/basic_area.png b/test/image/baselines/basic_area.png index f1f3a909e47..0a7de52b4c8 100644 Binary files a/test/image/baselines/basic_area.png and b/test/image/baselines/basic_area.png differ diff --git a/test/image/baselines/basic_bar.png b/test/image/baselines/basic_bar.png index f73d9bd7a35..cb1c0be7430 100644 Binary files a/test/image/baselines/basic_bar.png and b/test/image/baselines/basic_bar.png differ diff --git a/test/image/baselines/basic_error_bar.png b/test/image/baselines/basic_error_bar.png index 9fdd47203ed..b672e0ad579 100644 Binary files a/test/image/baselines/basic_error_bar.png and b/test/image/baselines/basic_error_bar.png differ diff --git a/test/image/baselines/basic_heatmap.png b/test/image/baselines/basic_heatmap.png index 6715d951437..93cb02d89d9 100644 Binary files a/test/image/baselines/basic_heatmap.png and b/test/image/baselines/basic_heatmap.png differ diff --git a/test/image/baselines/basic_line.png b/test/image/baselines/basic_line.png index fa4ffb0f9bb..56c901c8937 100644 Binary files a/test/image/baselines/basic_line.png and b/test/image/baselines/basic_line.png differ diff --git a/test/image/baselines/benchmarks.png b/test/image/baselines/benchmarks.png index c04e854f6f0..3f9a31316ef 100644 Binary files a/test/image/baselines/benchmarks.png and b/test/image/baselines/benchmarks.png differ diff --git a/test/image/baselines/binding.png b/test/image/baselines/binding.png index e527da8f9d6..fd8a7a23b5b 100644 Binary files a/test/image/baselines/binding.png and b/test/image/baselines/binding.png differ diff --git a/test/image/baselines/blackbody_heatmap.png b/test/image/baselines/blackbody_heatmap.png index 956f431f8a0..965d33b3179 100644 Binary files a/test/image/baselines/blackbody_heatmap.png and b/test/image/baselines/blackbody_heatmap.png differ diff --git a/test/image/baselines/bluered_heatmap.png b/test/image/baselines/bluered_heatmap.png index 3b3eb50ec02..f2755e8a95c 100644 Binary files a/test/image/baselines/bluered_heatmap.png and b/test/image/baselines/bluered_heatmap.png differ diff --git a/test/image/baselines/box_grouped.png b/test/image/baselines/box_grouped.png index fc7cf632651..a1e4b70a724 100644 Binary files a/test/image/baselines/box_grouped.png and b/test/image/baselines/box_grouped.png differ diff --git a/test/image/baselines/box_grouped_horz.png b/test/image/baselines/box_grouped_horz.png index cac2a0b8934..ca531b7cfb0 100644 Binary files a/test/image/baselines/box_grouped_horz.png and b/test/image/baselines/box_grouped_horz.png differ diff --git a/test/image/baselines/box_plot_jitter.png b/test/image/baselines/box_plot_jitter.png index e292fc302f6..c586522474f 100644 Binary files a/test/image/baselines/box_plot_jitter.png and b/test/image/baselines/box_plot_jitter.png differ diff --git a/test/image/baselines/box_plot_jitter_edge_cases.png b/test/image/baselines/box_plot_jitter_edge_cases.png index b1fd5f70202..e0c374af631 100644 Binary files a/test/image/baselines/box_plot_jitter_edge_cases.png and b/test/image/baselines/box_plot_jitter_edge_cases.png differ diff --git a/test/image/baselines/box_with-empty-1st-trace.png b/test/image/baselines/box_with-empty-1st-trace.png index aaee8d92a53..ba8739601bb 100644 Binary files a/test/image/baselines/box_with-empty-1st-trace.png and b/test/image/baselines/box_with-empty-1st-trace.png differ diff --git a/test/image/baselines/boxplots_outliercolordflt.png b/test/image/baselines/boxplots_outliercolordflt.png index d1955a92101..03f41015491 100644 Binary files a/test/image/baselines/boxplots_outliercolordflt.png and b/test/image/baselines/boxplots_outliercolordflt.png differ diff --git a/test/image/baselines/boxplots_undefined_vals.png b/test/image/baselines/boxplots_undefined_vals.png index b08fe661243..8e576c2b26b 100644 Binary files a/test/image/baselines/boxplots_undefined_vals.png and b/test/image/baselines/boxplots_undefined_vals.png differ diff --git a/test/image/baselines/bubble_markersize0.png b/test/image/baselines/bubble_markersize0.png index 86f376da04c..0a93ecfb57a 100644 Binary files a/test/image/baselines/bubble_markersize0.png and b/test/image/baselines/bubble_markersize0.png differ diff --git a/test/image/baselines/bubble_nonnumeric-sizes.png b/test/image/baselines/bubble_nonnumeric-sizes.png index 2b9918aa5a3..c305488af93 100644 Binary files a/test/image/baselines/bubble_nonnumeric-sizes.png and b/test/image/baselines/bubble_nonnumeric-sizes.png differ diff --git a/test/image/baselines/bubblechart.png b/test/image/baselines/bubblechart.png index e32d0764bf6..61dc617a0d7 100644 Binary files a/test/image/baselines/bubblechart.png and b/test/image/baselines/bubblechart.png differ diff --git a/test/image/baselines/candlestick_double-y-axis.png b/test/image/baselines/candlestick_double-y-axis.png index f423ad6fd0f..639158872b2 100644 Binary files a/test/image/baselines/candlestick_double-y-axis.png and b/test/image/baselines/candlestick_double-y-axis.png differ diff --git a/test/image/baselines/candlestick_rangeslider_thai.png b/test/image/baselines/candlestick_rangeslider_thai.png index 9e79776b5bf..c3c16fb7b66 100644 Binary files a/test/image/baselines/candlestick_rangeslider_thai.png and b/test/image/baselines/candlestick_rangeslider_thai.png differ diff --git a/test/image/baselines/carpet_axis.png b/test/image/baselines/carpet_axis.png index 33d691330b9..b861cd7ecef 100644 Binary files a/test/image/baselines/carpet_axis.png and b/test/image/baselines/carpet_axis.png differ diff --git a/test/image/baselines/category-autorange.png b/test/image/baselines/category-autorange.png index 078844e735e..b1d35495e23 100644 Binary files a/test/image/baselines/category-autorange.png and b/test/image/baselines/category-autorange.png differ diff --git a/test/image/baselines/category_dtick_3.png b/test/image/baselines/category_dtick_3.png index 7581a6c2dc6..48d66f497ae 100644 Binary files a/test/image/baselines/category_dtick_3.png and b/test/image/baselines/category_dtick_3.png differ diff --git a/test/image/baselines/cheater.png b/test/image/baselines/cheater.png index de015df4b0d..9a04de830db 100644 Binary files a/test/image/baselines/cheater.png and b/test/image/baselines/cheater.png differ diff --git a/test/image/baselines/cheater_constraint_greater_than.png b/test/image/baselines/cheater_constraint_greater_than.png index c35f2d3af9f..434b86f7b6f 100644 Binary files a/test/image/baselines/cheater_constraint_greater_than.png and b/test/image/baselines/cheater_constraint_greater_than.png differ diff --git a/test/image/baselines/cheater_constraint_greater_than_with_hill.png b/test/image/baselines/cheater_constraint_greater_than_with_hill.png index 426283f854b..b01ec17ceb3 100644 Binary files a/test/image/baselines/cheater_constraint_greater_than_with_hill.png and b/test/image/baselines/cheater_constraint_greater_than_with_hill.png differ diff --git a/test/image/baselines/cheater_constraint_greater_than_with_valley.png b/test/image/baselines/cheater_constraint_greater_than_with_valley.png index 7197ebbf6d7..a418c25049e 100644 Binary files a/test/image/baselines/cheater_constraint_greater_than_with_valley.png and b/test/image/baselines/cheater_constraint_greater_than_with_valley.png differ diff --git a/test/image/baselines/cheater_constraint_inner_range.png b/test/image/baselines/cheater_constraint_inner_range.png index 573373e14f2..0bde49fbeaa 100644 Binary files a/test/image/baselines/cheater_constraint_inner_range.png and b/test/image/baselines/cheater_constraint_inner_range.png differ diff --git a/test/image/baselines/cheater_constraint_inner_range_hi_top.png b/test/image/baselines/cheater_constraint_inner_range_hi_top.png index a1f0585bf51..cc77c0f7eab 100644 Binary files a/test/image/baselines/cheater_constraint_inner_range_hi_top.png and b/test/image/baselines/cheater_constraint_inner_range_hi_top.png differ diff --git a/test/image/baselines/cheater_constraint_inner_range_hi_top_with_hill.png b/test/image/baselines/cheater_constraint_inner_range_hi_top_with_hill.png index 96da7d662ad..812152ffeb3 100644 Binary files a/test/image/baselines/cheater_constraint_inner_range_hi_top_with_hill.png and b/test/image/baselines/cheater_constraint_inner_range_hi_top_with_hill.png differ diff --git a/test/image/baselines/cheater_constraint_inner_range_hi_top_with_valley.png b/test/image/baselines/cheater_constraint_inner_range_hi_top_with_valley.png index 7fae0f999e9..e8a9673c1d9 100644 Binary files a/test/image/baselines/cheater_constraint_inner_range_hi_top_with_valley.png and b/test/image/baselines/cheater_constraint_inner_range_hi_top_with_valley.png differ diff --git a/test/image/baselines/cheater_constraint_inner_range_lo_top.png b/test/image/baselines/cheater_constraint_inner_range_lo_top.png index abca06004c2..4236bd2490f 100644 Binary files a/test/image/baselines/cheater_constraint_inner_range_lo_top.png and b/test/image/baselines/cheater_constraint_inner_range_lo_top.png differ diff --git a/test/image/baselines/cheater_constraint_inner_range_lo_top_with_hill.png b/test/image/baselines/cheater_constraint_inner_range_lo_top_with_hill.png index b6d665a2958..07d948cee6d 100644 Binary files a/test/image/baselines/cheater_constraint_inner_range_lo_top_with_hill.png and b/test/image/baselines/cheater_constraint_inner_range_lo_top_with_hill.png differ diff --git a/test/image/baselines/cheater_constraint_inner_range_lo_top_with_valley.png b/test/image/baselines/cheater_constraint_inner_range_lo_top_with_valley.png index c80f57624bf..d9e8da6107c 100644 Binary files a/test/image/baselines/cheater_constraint_inner_range_lo_top_with_valley.png and b/test/image/baselines/cheater_constraint_inner_range_lo_top_with_valley.png differ diff --git a/test/image/baselines/cheater_constraint_inner_range_with_hill.png b/test/image/baselines/cheater_constraint_inner_range_with_hill.png index 1926275efdb..e816a1c51f9 100644 Binary files a/test/image/baselines/cheater_constraint_inner_range_with_hill.png and b/test/image/baselines/cheater_constraint_inner_range_with_hill.png differ diff --git a/test/image/baselines/cheater_constraint_inner_range_with_valley.png b/test/image/baselines/cheater_constraint_inner_range_with_valley.png index e624bd7d7e2..f9a3845f64c 100644 Binary files a/test/image/baselines/cheater_constraint_inner_range_with_valley.png and b/test/image/baselines/cheater_constraint_inner_range_with_valley.png differ diff --git a/test/image/baselines/cheater_constraint_less_than.png b/test/image/baselines/cheater_constraint_less_than.png index 9b31ca23f71..3847b0a14b3 100644 Binary files a/test/image/baselines/cheater_constraint_less_than.png and b/test/image/baselines/cheater_constraint_less_than.png differ diff --git a/test/image/baselines/cheater_constraint_less_than_with_hill.png b/test/image/baselines/cheater_constraint_less_than_with_hill.png index d132642f1be..04db26ccc89 100644 Binary files a/test/image/baselines/cheater_constraint_less_than_with_hill.png and b/test/image/baselines/cheater_constraint_less_than_with_hill.png differ diff --git a/test/image/baselines/cheater_constraint_less_than_with_valley.png b/test/image/baselines/cheater_constraint_less_than_with_valley.png index 40cf9f3d0d3..a70b7784163 100644 Binary files a/test/image/baselines/cheater_constraint_less_than_with_valley.png and b/test/image/baselines/cheater_constraint_less_than_with_valley.png differ diff --git a/test/image/baselines/cheater_constraint_outer_range.png b/test/image/baselines/cheater_constraint_outer_range.png index 8228721ad09..caa254fd9fe 100644 Binary files a/test/image/baselines/cheater_constraint_outer_range.png and b/test/image/baselines/cheater_constraint_outer_range.png differ diff --git a/test/image/baselines/cheater_constraint_outer_range_hi_top.png b/test/image/baselines/cheater_constraint_outer_range_hi_top.png index f6128c23f82..86c06f4295a 100644 Binary files a/test/image/baselines/cheater_constraint_outer_range_hi_top.png and b/test/image/baselines/cheater_constraint_outer_range_hi_top.png differ diff --git a/test/image/baselines/cheater_constraint_outer_range_hi_top_with_hill.png b/test/image/baselines/cheater_constraint_outer_range_hi_top_with_hill.png index 3724a980642..1041233a04b 100644 Binary files a/test/image/baselines/cheater_constraint_outer_range_hi_top_with_hill.png and b/test/image/baselines/cheater_constraint_outer_range_hi_top_with_hill.png differ diff --git a/test/image/baselines/cheater_constraint_outer_range_hi_top_with_valley.png b/test/image/baselines/cheater_constraint_outer_range_hi_top_with_valley.png index 7bf09f33105..ede4f622cc4 100644 Binary files a/test/image/baselines/cheater_constraint_outer_range_hi_top_with_valley.png and b/test/image/baselines/cheater_constraint_outer_range_hi_top_with_valley.png differ diff --git a/test/image/baselines/cheater_constraint_outer_range_lo_top.png b/test/image/baselines/cheater_constraint_outer_range_lo_top.png index bf4c3606f71..d311bdf58c2 100644 Binary files a/test/image/baselines/cheater_constraint_outer_range_lo_top.png and b/test/image/baselines/cheater_constraint_outer_range_lo_top.png differ diff --git a/test/image/baselines/cheater_constraint_outer_range_lo_top_with_hill.png b/test/image/baselines/cheater_constraint_outer_range_lo_top_with_hill.png index abb7b06a329..8dd942463ea 100644 Binary files a/test/image/baselines/cheater_constraint_outer_range_lo_top_with_hill.png and b/test/image/baselines/cheater_constraint_outer_range_lo_top_with_hill.png differ diff --git a/test/image/baselines/cheater_constraint_outer_range_lo_top_with_valley.png b/test/image/baselines/cheater_constraint_outer_range_lo_top_with_valley.png index 82d6acc63da..5f310b731a5 100644 Binary files a/test/image/baselines/cheater_constraint_outer_range_lo_top_with_valley.png and b/test/image/baselines/cheater_constraint_outer_range_lo_top_with_valley.png differ diff --git a/test/image/baselines/cheater_constraint_outer_range_with_hill.png b/test/image/baselines/cheater_constraint_outer_range_with_hill.png index 0d7d02f440b..94ad9af4c9d 100644 Binary files a/test/image/baselines/cheater_constraint_outer_range_with_hill.png and b/test/image/baselines/cheater_constraint_outer_range_with_hill.png differ diff --git a/test/image/baselines/cheater_constraint_outer_range_with_valley.png b/test/image/baselines/cheater_constraint_outer_range_with_valley.png index 25c5cce2b94..cf6af10c62b 100644 Binary files a/test/image/baselines/cheater_constraint_outer_range_with_valley.png and b/test/image/baselines/cheater_constraint_outer_range_with_valley.png differ diff --git a/test/image/baselines/cheater_constraints.png b/test/image/baselines/cheater_constraints.png index 25da809facf..e83bd2d5aaa 100644 Binary files a/test/image/baselines/cheater_constraints.png and b/test/image/baselines/cheater_constraints.png differ diff --git a/test/image/baselines/cheater_contour.png b/test/image/baselines/cheater_contour.png index 2c3645d5778..5b1c62b67e8 100644 Binary files a/test/image/baselines/cheater_contour.png and b/test/image/baselines/cheater_contour.png differ diff --git a/test/image/baselines/cheater_fully_filled.png b/test/image/baselines/cheater_fully_filled.png index feef44b389c..ac6627a12bf 100644 Binary files a/test/image/baselines/cheater_fully_filled.png and b/test/image/baselines/cheater_fully_filled.png differ diff --git a/test/image/baselines/cheater_smooth.png b/test/image/baselines/cheater_smooth.png index 1edb6600a13..a94c00b95f0 100644 Binary files a/test/image/baselines/cheater_smooth.png and b/test/image/baselines/cheater_smooth.png differ diff --git a/test/image/baselines/cliponaxis_false.png b/test/image/baselines/cliponaxis_false.png index 59d72538191..4ce69da94b9 100644 Binary files a/test/image/baselines/cliponaxis_false.png and b/test/image/baselines/cliponaxis_false.png differ diff --git a/test/image/baselines/colorbar_enumerated_ticks.png b/test/image/baselines/colorbar_enumerated_ticks.png index 5e9b2dcc789..7646ebe9585 100644 Binary files a/test/image/baselines/colorbar_enumerated_ticks.png and b/test/image/baselines/colorbar_enumerated_ticks.png differ diff --git a/test/image/baselines/colorbar_tick_prefix_suffix.png b/test/image/baselines/colorbar_tick_prefix_suffix.png index 3730b31eb65..f0ed9347a06 100644 Binary files a/test/image/baselines/colorbar_tick_prefix_suffix.png and b/test/image/baselines/colorbar_tick_prefix_suffix.png differ diff --git a/test/image/baselines/colorbar_tickformat.png b/test/image/baselines/colorbar_tickformat.png index 483e107bb52..bc1df7ed05c 100644 Binary files a/test/image/baselines/colorbar_tickformat.png and b/test/image/baselines/colorbar_tickformat.png differ diff --git a/test/image/baselines/colorscale_constraint.png b/test/image/baselines/colorscale_constraint.png index d755bcdfbae..52ceceec261 100644 Binary files a/test/image/baselines/colorscale_constraint.png and b/test/image/baselines/colorscale_constraint.png differ diff --git a/test/image/baselines/colorscale_opacity.png b/test/image/baselines/colorscale_opacity.png index 55a0c07f3cd..d2749210b73 100644 Binary files a/test/image/baselines/colorscale_opacity.png and b/test/image/baselines/colorscale_opacity.png differ diff --git a/test/image/baselines/connectgaps_2d.png b/test/image/baselines/connectgaps_2d.png index 80bdf117b11..66db40dae7c 100644 Binary files a/test/image/baselines/connectgaps_2d.png and b/test/image/baselines/connectgaps_2d.png differ diff --git a/test/image/baselines/contour_edge_cases.png b/test/image/baselines/contour_edge_cases.png index 81d1e4be56b..ed0b3053574 100644 Binary files a/test/image/baselines/contour_edge_cases.png and b/test/image/baselines/contour_edge_cases.png differ diff --git a/test/image/baselines/contour_heatmap_coloring.png b/test/image/baselines/contour_heatmap_coloring.png index dd408d1120a..138df747ced 100644 Binary files a/test/image/baselines/contour_heatmap_coloring.png and b/test/image/baselines/contour_heatmap_coloring.png differ diff --git a/test/image/baselines/contour_lines_coloring.png b/test/image/baselines/contour_lines_coloring.png index 9b2fc5ca51f..40b0e47cceb 100644 Binary files a/test/image/baselines/contour_lines_coloring.png and b/test/image/baselines/contour_lines_coloring.png differ diff --git a/test/image/baselines/contour_log.png b/test/image/baselines/contour_log.png index e5cbbae7e17..05b7e9f4af1 100644 Binary files a/test/image/baselines/contour_log.png and b/test/image/baselines/contour_log.png differ diff --git a/test/image/baselines/contour_match_edges.png b/test/image/baselines/contour_match_edges.png index 3f965e83545..2f00fa4a7bf 100644 Binary files a/test/image/baselines/contour_match_edges.png and b/test/image/baselines/contour_match_edges.png differ diff --git a/test/image/baselines/contour_nolines.png b/test/image/baselines/contour_nolines.png index 63b6b77f733..448b4a61042 100644 Binary files a/test/image/baselines/contour_nolines.png and b/test/image/baselines/contour_nolines.png differ diff --git a/test/image/baselines/contour_scatter.png b/test/image/baselines/contour_scatter.png index aba6976d3d8..9c7bdd13412 100644 Binary files a/test/image/baselines/contour_scatter.png and b/test/image/baselines/contour_scatter.png differ diff --git a/test/image/baselines/contour_transposed-irregular.png b/test/image/baselines/contour_transposed-irregular.png index 71a8a98538c..c2d332d4a12 100644 Binary files a/test/image/baselines/contour_transposed-irregular.png and b/test/image/baselines/contour_transposed-irregular.png differ diff --git a/test/image/baselines/contour_transposed.png b/test/image/baselines/contour_transposed.png index 7c661234040..282b975a10d 100644 Binary files a/test/image/baselines/contour_transposed.png and b/test/image/baselines/contour_transposed.png differ diff --git a/test/image/baselines/contour_valid_ses.png b/test/image/baselines/contour_valid_ses.png index 8705296ab22..967618fbb07 100644 Binary files a/test/image/baselines/contour_valid_ses.png and b/test/image/baselines/contour_valid_ses.png differ diff --git a/test/image/baselines/contour_xyz-gaps-on-sides.png b/test/image/baselines/contour_xyz-gaps-on-sides.png index 9b1404bfa1d..b9836fb1431 100644 Binary files a/test/image/baselines/contour_xyz-gaps-on-sides.png and b/test/image/baselines/contour_xyz-gaps-on-sides.png differ diff --git a/test/image/baselines/custom_colorscale.png b/test/image/baselines/custom_colorscale.png index dd011ec425a..10ee8c7a737 100644 Binary files a/test/image/baselines/custom_colorscale.png and b/test/image/baselines/custom_colorscale.png differ diff --git a/test/image/baselines/custom_size_subplot.png b/test/image/baselines/custom_size_subplot.png index afdd56ddd41..e562e518d77 100644 Binary files a/test/image/baselines/custom_size_subplot.png and b/test/image/baselines/custom_size_subplot.png differ diff --git a/test/image/baselines/date_axes.png b/test/image/baselines/date_axes.png index d7914ff7f58..6924e371665 100644 Binary files a/test/image/baselines/date_axes.png and b/test/image/baselines/date_axes.png differ diff --git a/test/image/baselines/date_histogram.png b/test/image/baselines/date_histogram.png index ece7dafef78..1970a8caa42 100644 Binary files a/test/image/baselines/date_histogram.png and b/test/image/baselines/date_histogram.png differ diff --git a/test/image/baselines/dendrogram.png b/test/image/baselines/dendrogram.png index e94e7bf572d..5219140aa80 100644 Binary files a/test/image/baselines/dendrogram.png and b/test/image/baselines/dendrogram.png differ diff --git a/test/image/baselines/earth_heatmap.png b/test/image/baselines/earth_heatmap.png index 49c0e725aea..a1e56f05ee3 100644 Binary files a/test/image/baselines/earth_heatmap.png and b/test/image/baselines/earth_heatmap.png differ diff --git a/test/image/baselines/electric_heatmap.png b/test/image/baselines/electric_heatmap.png index f3fb2c3a8a2..e7ae42da804 100644 Binary files a/test/image/baselines/electric_heatmap.png and b/test/image/baselines/electric_heatmap.png differ diff --git a/test/image/baselines/error_bar_asymmetric_array.png b/test/image/baselines/error_bar_asymmetric_array.png index 4360c77477e..c9f65e66411 100644 Binary files a/test/image/baselines/error_bar_asymmetric_array.png and b/test/image/baselines/error_bar_asymmetric_array.png differ diff --git a/test/image/baselines/error_bar_asymmetric_constant.png b/test/image/baselines/error_bar_asymmetric_constant.png index fbb154d68c3..cccd92a591d 100644 Binary files a/test/image/baselines/error_bar_asymmetric_constant.png and b/test/image/baselines/error_bar_asymmetric_constant.png differ diff --git a/test/image/baselines/error_bar_bar.png b/test/image/baselines/error_bar_bar.png index 7655d5087a4..f62c25acc52 100644 Binary files a/test/image/baselines/error_bar_bar.png and b/test/image/baselines/error_bar_bar.png differ diff --git a/test/image/baselines/error_bar_horizontal.png b/test/image/baselines/error_bar_horizontal.png index 5511468b400..0f830af0e0e 100644 Binary files a/test/image/baselines/error_bar_horizontal.png and b/test/image/baselines/error_bar_horizontal.png differ diff --git a/test/image/baselines/error_bar_layers.png b/test/image/baselines/error_bar_layers.png index 63ad61d3ee8..e902824ef93 100644 Binary files a/test/image/baselines/error_bar_layers.png and b/test/image/baselines/error_bar_layers.png differ diff --git a/test/image/baselines/error_bar_sqrt.png b/test/image/baselines/error_bar_sqrt.png index 81914bca512..c71dc0598bf 100644 Binary files a/test/image/baselines/error_bar_sqrt.png and b/test/image/baselines/error_bar_sqrt.png differ diff --git a/test/image/baselines/error_bar_style.png b/test/image/baselines/error_bar_style.png index 103ca2d053f..672bf89ae10 100644 Binary files a/test/image/baselines/error_bar_style.png and b/test/image/baselines/error_bar_style.png differ diff --git a/test/image/baselines/finance_style.png b/test/image/baselines/finance_style.png index ac72e76f013..87bf43e2e6f 100644 Binary files a/test/image/baselines/finance_style.png and b/test/image/baselines/finance_style.png differ diff --git a/test/image/baselines/font-wishlist.png b/test/image/baselines/font-wishlist.png index f1cb471a1d3..c8822c8371b 100644 Binary files a/test/image/baselines/font-wishlist.png and b/test/image/baselines/font-wishlist.png differ diff --git a/test/image/baselines/fonts.png b/test/image/baselines/fonts.png index 8e802dd4ea9..e1f39004528 100644 Binary files a/test/image/baselines/fonts.png and b/test/image/baselines/fonts.png differ diff --git a/test/image/baselines/gl2d_10.png b/test/image/baselines/gl2d_10.png index 36932d9a204..e894e63e52d 100644 Binary files a/test/image/baselines/gl2d_10.png and b/test/image/baselines/gl2d_10.png differ diff --git a/test/image/baselines/gl2d_12.png b/test/image/baselines/gl2d_12.png index dbda9d4c0bb..5bc00b4658f 100644 Binary files a/test/image/baselines/gl2d_12.png and b/test/image/baselines/gl2d_12.png differ diff --git a/test/image/baselines/gl2d_14.png b/test/image/baselines/gl2d_14.png index a8ede620d7d..8a0e6bf3ee9 100644 Binary files a/test/image/baselines/gl2d_14.png and b/test/image/baselines/gl2d_14.png differ diff --git a/test/image/baselines/gl2d_17.png b/test/image/baselines/gl2d_17.png index 5797e3ce4a3..20a823376b4 100644 Binary files a/test/image/baselines/gl2d_17.png and b/test/image/baselines/gl2d_17.png differ diff --git a/test/image/baselines/gl2d_annotations.png b/test/image/baselines/gl2d_annotations.png index ab0306aa89d..aa6df438a23 100644 Binary files a/test/image/baselines/gl2d_annotations.png and b/test/image/baselines/gl2d_annotations.png differ diff --git a/test/image/baselines/gl2d_axes_booleans.png b/test/image/baselines/gl2d_axes_booleans.png index 378d57d0226..cecae367002 100644 Binary files a/test/image/baselines/gl2d_axes_booleans.png and b/test/image/baselines/gl2d_axes_booleans.png differ diff --git a/test/image/baselines/gl2d_axes_labels.png b/test/image/baselines/gl2d_axes_labels.png index 79126e72024..2cd81e3a3f5 100644 Binary files a/test/image/baselines/gl2d_axes_labels.png and b/test/image/baselines/gl2d_axes_labels.png differ diff --git a/test/image/baselines/gl2d_axes_lines.png b/test/image/baselines/gl2d_axes_lines.png index d6c1f079692..5a81475ca4c 100644 Binary files a/test/image/baselines/gl2d_axes_lines.png and b/test/image/baselines/gl2d_axes_lines.png differ diff --git a/test/image/baselines/gl2d_axes_range_manual.png b/test/image/baselines/gl2d_axes_range_manual.png index d11f89af02d..0e39d030eb4 100644 Binary files a/test/image/baselines/gl2d_axes_range_manual.png and b/test/image/baselines/gl2d_axes_range_manual.png differ diff --git a/test/image/baselines/gl2d_axes_range_mode.png b/test/image/baselines/gl2d_axes_range_mode.png index 18692d3c313..9882d564ce6 100644 Binary files a/test/image/baselines/gl2d_axes_range_mode.png and b/test/image/baselines/gl2d_axes_range_mode.png differ diff --git a/test/image/baselines/gl2d_axes_range_type.png b/test/image/baselines/gl2d_axes_range_type.png index a038b80cdda..3fd10f0cbd8 100644 Binary files a/test/image/baselines/gl2d_axes_range_type.png and b/test/image/baselines/gl2d_axes_range_type.png differ diff --git a/test/image/baselines/gl2d_connect_gaps.png b/test/image/baselines/gl2d_connect_gaps.png index 1ca8bb38f1f..c7911be5000 100644 Binary files a/test/image/baselines/gl2d_connect_gaps.png and b/test/image/baselines/gl2d_connect_gaps.png differ diff --git a/test/image/baselines/gl2d_date_axes.png b/test/image/baselines/gl2d_date_axes.png index a40439641a0..5818e6a8483 100644 Binary files a/test/image/baselines/gl2d_date_axes.png and b/test/image/baselines/gl2d_date_axes.png differ diff --git a/test/image/baselines/gl2d_error_bars.png b/test/image/baselines/gl2d_error_bars.png index 2ea2a53889c..f4540fbb016 100644 Binary files a/test/image/baselines/gl2d_error_bars.png and b/test/image/baselines/gl2d_error_bars.png differ diff --git a/test/image/baselines/gl2d_fonts.png b/test/image/baselines/gl2d_fonts.png index 2171e6a505e..f4555ca6667 100644 Binary files a/test/image/baselines/gl2d_fonts.png and b/test/image/baselines/gl2d_fonts.png differ diff --git a/test/image/baselines/gl2d_heatmapgl.png b/test/image/baselines/gl2d_heatmapgl.png index df8694bf2fd..57ada473d1e 100644 Binary files a/test/image/baselines/gl2d_heatmapgl.png and b/test/image/baselines/gl2d_heatmapgl.png differ diff --git a/test/image/baselines/gl2d_marker_line_width.png b/test/image/baselines/gl2d_marker_line_width.png index 86431cb8663..b1d2567bd6b 100644 Binary files a/test/image/baselines/gl2d_marker_line_width.png and b/test/image/baselines/gl2d_marker_line_width.png differ diff --git a/test/image/baselines/gl2d_marker_symbols.png b/test/image/baselines/gl2d_marker_symbols.png index ab5da027992..50fa2fcdf94 100644 Binary files a/test/image/baselines/gl2d_marker_symbols.png and b/test/image/baselines/gl2d_marker_symbols.png differ diff --git a/test/image/baselines/gl2d_multiple_subplots.png b/test/image/baselines/gl2d_multiple_subplots.png index 058ce315bbb..f1bf4710331 100644 Binary files a/test/image/baselines/gl2d_multiple_subplots.png and b/test/image/baselines/gl2d_multiple_subplots.png differ diff --git a/test/image/baselines/gl2d_parcoords.png b/test/image/baselines/gl2d_parcoords.png index 40e39551503..91aa28719ac 100644 Binary files a/test/image/baselines/gl2d_parcoords.png and b/test/image/baselines/gl2d_parcoords.png differ diff --git a/test/image/baselines/gl2d_parcoords_1.png b/test/image/baselines/gl2d_parcoords_1.png index 449da98f0ed..df206186ca6 100644 Binary files a/test/image/baselines/gl2d_parcoords_1.png and b/test/image/baselines/gl2d_parcoords_1.png differ diff --git a/test/image/baselines/gl2d_parcoords_2.png b/test/image/baselines/gl2d_parcoords_2.png index 4eebd736916..d425f44ca49 100644 Binary files a/test/image/baselines/gl2d_parcoords_2.png and b/test/image/baselines/gl2d_parcoords_2.png differ diff --git a/test/image/baselines/gl2d_parcoords_blocks.png b/test/image/baselines/gl2d_parcoords_blocks.png index eb3d695b3d5..a088d3e696c 100644 Binary files a/test/image/baselines/gl2d_parcoords_blocks.png and b/test/image/baselines/gl2d_parcoords_blocks.png differ diff --git a/test/image/baselines/gl2d_parcoords_large.png b/test/image/baselines/gl2d_parcoords_large.png index 856ca94ec4d..f3d3060be14 100644 Binary files a/test/image/baselines/gl2d_parcoords_large.png and b/test/image/baselines/gl2d_parcoords_large.png differ diff --git a/test/image/baselines/gl2d_pointcloud-basic.png b/test/image/baselines/gl2d_pointcloud-basic.png index 13e73650e51..29819c8c1ef 100644 Binary files a/test/image/baselines/gl2d_pointcloud-basic.png and b/test/image/baselines/gl2d_pointcloud-basic.png differ diff --git a/test/image/baselines/gl2d_scatter-colorscale-colorbar.png b/test/image/baselines/gl2d_scatter-colorscale-colorbar.png index 73b9ae98016..1ec9e0a7ef4 100644 Binary files a/test/image/baselines/gl2d_scatter-colorscale-colorbar.png and b/test/image/baselines/gl2d_scatter-colorscale-colorbar.png differ diff --git a/test/image/baselines/gl2d_scatter-marker-line-colorscales.png b/test/image/baselines/gl2d_scatter-marker-line-colorscales.png index ead2030832c..7e80402bfbb 100644 Binary files a/test/image/baselines/gl2d_scatter-marker-line-colorscales.png and b/test/image/baselines/gl2d_scatter-marker-line-colorscales.png differ diff --git a/test/image/baselines/gl2d_simple_inset.png b/test/image/baselines/gl2d_simple_inset.png index b7d0f20651f..79e007a01fd 100644 Binary files a/test/image/baselines/gl2d_simple_inset.png and b/test/image/baselines/gl2d_simple_inset.png differ diff --git a/test/image/baselines/gl2d_size_margins.png b/test/image/baselines/gl2d_size_margins.png index 700af178465..0cab6c04586 100644 Binary files a/test/image/baselines/gl2d_size_margins.png and b/test/image/baselines/gl2d_size_margins.png differ diff --git a/test/image/baselines/gl2d_stacked_coupled_subplots.png b/test/image/baselines/gl2d_stacked_coupled_subplots.png index bda5a6a2f36..05c4e11f02d 100644 Binary files a/test/image/baselines/gl2d_stacked_coupled_subplots.png and b/test/image/baselines/gl2d_stacked_coupled_subplots.png differ diff --git a/test/image/baselines/gl2d_stacked_subplots.png b/test/image/baselines/gl2d_stacked_subplots.png index 7734163777c..f3a97ee9e16 100644 Binary files a/test/image/baselines/gl2d_stacked_subplots.png and b/test/image/baselines/gl2d_stacked_subplots.png differ diff --git a/test/image/baselines/gl3d_annotations.png b/test/image/baselines/gl3d_annotations.png index d59ee820da2..870e9ad4a5b 100644 Binary files a/test/image/baselines/gl3d_annotations.png and b/test/image/baselines/gl3d_annotations.png differ diff --git a/test/image/baselines/gl3d_autocolorscale.png b/test/image/baselines/gl3d_autocolorscale.png index 22601bd3c50..9ffc5904bf2 100644 Binary files a/test/image/baselines/gl3d_autocolorscale.png and b/test/image/baselines/gl3d_autocolorscale.png differ diff --git a/test/image/baselines/gl3d_autorange-zero.png b/test/image/baselines/gl3d_autorange-zero.png index 47340e055a3..98510d91b0e 100644 Binary files a/test/image/baselines/gl3d_autorange-zero.png and b/test/image/baselines/gl3d_autorange-zero.png differ diff --git a/test/image/baselines/gl3d_axes-visible-false.png b/test/image/baselines/gl3d_axes-visible-false.png index dab999eeddb..3cf6d1f0871 100644 Binary files a/test/image/baselines/gl3d_axes-visible-false.png and b/test/image/baselines/gl3d_axes-visible-false.png differ diff --git a/test/image/baselines/gl3d_bunny-hull.png b/test/image/baselines/gl3d_bunny-hull.png index 56ac4f9bd60..6e406fbccf9 100644 Binary files a/test/image/baselines/gl3d_bunny-hull.png and b/test/image/baselines/gl3d_bunny-hull.png differ diff --git a/test/image/baselines/gl3d_bunny.png b/test/image/baselines/gl3d_bunny.png index f9d7d612ed5..3166f3fff3b 100644 Binary files a/test/image/baselines/gl3d_bunny.png and b/test/image/baselines/gl3d_bunny.png differ diff --git a/test/image/baselines/gl3d_chrisp-nan-1.png b/test/image/baselines/gl3d_chrisp-nan-1.png index 5f4606ca222..776fbccf8d9 100644 Binary files a/test/image/baselines/gl3d_chrisp-nan-1.png and b/test/image/baselines/gl3d_chrisp-nan-1.png differ diff --git a/test/image/baselines/gl3d_contour-lines.png b/test/image/baselines/gl3d_contour-lines.png index d9019b311e3..91fd7cb3f53 100644 Binary files a/test/image/baselines/gl3d_contour-lines.png and b/test/image/baselines/gl3d_contour-lines.png differ diff --git a/test/image/baselines/gl3d_convex-hull.png b/test/image/baselines/gl3d_convex-hull.png index f9d7d612ed5..3166f3fff3b 100644 Binary files a/test/image/baselines/gl3d_convex-hull.png and b/test/image/baselines/gl3d_convex-hull.png differ diff --git a/test/image/baselines/gl3d_cube.png b/test/image/baselines/gl3d_cube.png index 7dcd976113a..fb023ab9207 100644 Binary files a/test/image/baselines/gl3d_cube.png and b/test/image/baselines/gl3d_cube.png differ diff --git a/test/image/baselines/gl3d_cufflinks.png b/test/image/baselines/gl3d_cufflinks.png index 3a07c08f040..347e0fbdc43 100644 Binary files a/test/image/baselines/gl3d_cufflinks.png and b/test/image/baselines/gl3d_cufflinks.png differ diff --git a/test/image/baselines/gl3d_delaunay.png b/test/image/baselines/gl3d_delaunay.png index 4fbd349c230..86052919ad5 100644 Binary files a/test/image/baselines/gl3d_delaunay.png and b/test/image/baselines/gl3d_delaunay.png differ diff --git a/test/image/baselines/gl3d_errorbars_sqrt.png b/test/image/baselines/gl3d_errorbars_sqrt.png index 7bc5cbd90e3..67f1d6aec61 100644 Binary files a/test/image/baselines/gl3d_errorbars_sqrt.png and b/test/image/baselines/gl3d_errorbars_sqrt.png differ diff --git a/test/image/baselines/gl3d_errorbars_zx.png b/test/image/baselines/gl3d_errorbars_zx.png index a2dfeb22621..ec3d0a059db 100644 Binary files a/test/image/baselines/gl3d_errorbars_zx.png and b/test/image/baselines/gl3d_errorbars_zx.png differ diff --git a/test/image/baselines/gl3d_errorbars_zy.png b/test/image/baselines/gl3d_errorbars_zy.png index dbd1a347c7c..4eebb25d9e7 100644 Binary files a/test/image/baselines/gl3d_errorbars_zy.png and b/test/image/baselines/gl3d_errorbars_zy.png differ diff --git a/test/image/baselines/gl3d_ibm-plot.png b/test/image/baselines/gl3d_ibm-plot.png index 946b58ea7d1..28e456803d6 100644 Binary files a/test/image/baselines/gl3d_ibm-plot.png and b/test/image/baselines/gl3d_ibm-plot.png differ diff --git a/test/image/baselines/gl3d_log-axis-big.png b/test/image/baselines/gl3d_log-axis-big.png index 7ebf8f9bac6..70d71ce6b3b 100644 Binary files a/test/image/baselines/gl3d_log-axis-big.png and b/test/image/baselines/gl3d_log-axis-big.png differ diff --git a/test/image/baselines/gl3d_log-axis.png b/test/image/baselines/gl3d_log-axis.png index 320c3ef1234..d393bc5564b 100644 Binary files a/test/image/baselines/gl3d_log-axis.png and b/test/image/baselines/gl3d_log-axis.png differ diff --git a/test/image/baselines/gl3d_marker-arrays.png b/test/image/baselines/gl3d_marker-arrays.png index 4c9f244e107..6321a382a2b 100644 Binary files a/test/image/baselines/gl3d_marker-arrays.png and b/test/image/baselines/gl3d_marker-arrays.png differ diff --git a/test/image/baselines/gl3d_marker-color.png b/test/image/baselines/gl3d_marker-color.png index a3e754340aa..d0304957855 100644 Binary files a/test/image/baselines/gl3d_marker-color.png and b/test/image/baselines/gl3d_marker-color.png differ diff --git a/test/image/baselines/gl3d_marker_symbols.png b/test/image/baselines/gl3d_marker_symbols.png index e80deb94182..19f0c54a77b 100644 Binary files a/test/image/baselines/gl3d_marker_symbols.png and b/test/image/baselines/gl3d_marker_symbols.png differ diff --git a/test/image/baselines/gl3d_mirror-ticks.png b/test/image/baselines/gl3d_mirror-ticks.png index 8ad8963efab..4434be241fb 100644 Binary files a/test/image/baselines/gl3d_mirror-ticks.png and b/test/image/baselines/gl3d_mirror-ticks.png differ diff --git a/test/image/baselines/gl3d_multi-scene.png b/test/image/baselines/gl3d_multi-scene.png index 60c16a28cfb..b48876adbd6 100644 Binary files a/test/image/baselines/gl3d_multi-scene.png and b/test/image/baselines/gl3d_multi-scene.png differ diff --git a/test/image/baselines/gl3d_nan-holes.png b/test/image/baselines/gl3d_nan-holes.png index 16a9193fa5f..3c7a91b8c66 100644 Binary files a/test/image/baselines/gl3d_nan-holes.png and b/test/image/baselines/gl3d_nan-holes.png differ diff --git a/test/image/baselines/gl3d_opacity-scaling-spikes.png b/test/image/baselines/gl3d_opacity-scaling-spikes.png index 433d49e74e1..ff9f02b9957 100644 Binary files a/test/image/baselines/gl3d_opacity-scaling-spikes.png and b/test/image/baselines/gl3d_opacity-scaling-spikes.png differ diff --git a/test/image/baselines/gl3d_opacity-surface.png b/test/image/baselines/gl3d_opacity-surface.png index ac6e2fd016c..67717a697d2 100644 Binary files a/test/image/baselines/gl3d_opacity-surface.png and b/test/image/baselines/gl3d_opacity-surface.png differ diff --git a/test/image/baselines/gl3d_projection-traces.png b/test/image/baselines/gl3d_projection-traces.png index 1de40e957a8..509eb64fe28 100644 Binary files a/test/image/baselines/gl3d_projection-traces.png and b/test/image/baselines/gl3d_projection-traces.png differ diff --git a/test/image/baselines/gl3d_ribbons.png b/test/image/baselines/gl3d_ribbons.png index 7af7e756adb..4fd632bd271 100644 Binary files a/test/image/baselines/gl3d_ribbons.png and b/test/image/baselines/gl3d_ribbons.png differ diff --git a/test/image/baselines/gl3d_scatter-color-array.png b/test/image/baselines/gl3d_scatter-color-array.png index b0c2847bda7..1daf4157a81 100644 Binary files a/test/image/baselines/gl3d_scatter-color-array.png and b/test/image/baselines/gl3d_scatter-color-array.png differ diff --git a/test/image/baselines/gl3d_scatter-color-line-gradient.png b/test/image/baselines/gl3d_scatter-color-line-gradient.png index d09a868ea5c..b05e255a79d 100644 Binary files a/test/image/baselines/gl3d_scatter-color-line-gradient.png and b/test/image/baselines/gl3d_scatter-color-line-gradient.png differ diff --git a/test/image/baselines/gl3d_scatter-color-mono-and-palette.png b/test/image/baselines/gl3d_scatter-color-mono-and-palette.png index b0c269c9ca0..55b55416366 100644 Binary files a/test/image/baselines/gl3d_scatter-color-mono-and-palette.png and b/test/image/baselines/gl3d_scatter-color-mono-and-palette.png differ diff --git a/test/image/baselines/gl3d_scatter-colorscale-marker.png b/test/image/baselines/gl3d_scatter-colorscale-marker.png index f3b29555313..6f8c38c7431 100644 Binary files a/test/image/baselines/gl3d_scatter-colorscale-marker.png and b/test/image/baselines/gl3d_scatter-colorscale-marker.png differ diff --git a/test/image/baselines/gl3d_scatter3d-colorscale.png b/test/image/baselines/gl3d_scatter3d-colorscale.png index 7fccb43ac81..d524978a43b 100644 Binary files a/test/image/baselines/gl3d_scatter3d-colorscale.png and b/test/image/baselines/gl3d_scatter3d-colorscale.png differ diff --git a/test/image/baselines/gl3d_scatter3d-connectgaps.png b/test/image/baselines/gl3d_scatter3d-connectgaps.png index a8c61187f56..d8b177a7c2f 100644 Binary files a/test/image/baselines/gl3d_scatter3d-connectgaps.png and b/test/image/baselines/gl3d_scatter3d-connectgaps.png differ diff --git a/test/image/baselines/gl3d_set-ranges.png b/test/image/baselines/gl3d_set-ranges.png index 0a90ad42129..9f82cf495d3 100644 Binary files a/test/image/baselines/gl3d_set-ranges.png and b/test/image/baselines/gl3d_set-ranges.png differ diff --git a/test/image/baselines/gl3d_snowden.png b/test/image/baselines/gl3d_snowden.png index 45e998bc33e..2ad6b0b5eba 100644 Binary files a/test/image/baselines/gl3d_snowden.png and b/test/image/baselines/gl3d_snowden.png differ diff --git a/test/image/baselines/gl3d_snowden_altered.png b/test/image/baselines/gl3d_snowden_altered.png index d0b3c8cff66..08363211ff3 100644 Binary files a/test/image/baselines/gl3d_snowden_altered.png and b/test/image/baselines/gl3d_snowden_altered.png differ diff --git a/test/image/baselines/gl3d_surface-circular-colorscale.png b/test/image/baselines/gl3d_surface-circular-colorscale.png index 192c0c52db6..80033790f61 100644 Binary files a/test/image/baselines/gl3d_surface-circular-colorscale.png and b/test/image/baselines/gl3d_surface-circular-colorscale.png differ diff --git a/test/image/baselines/gl3d_surface-lighting.png b/test/image/baselines/gl3d_surface-lighting.png index f7274fad5b8..e9955fe235d 100644 Binary files a/test/image/baselines/gl3d_surface-lighting.png and b/test/image/baselines/gl3d_surface-lighting.png differ diff --git a/test/image/baselines/gl3d_surface_intensity.png b/test/image/baselines/gl3d_surface_intensity.png index 3f7641c9211..ed7f5b40388 100644 Binary files a/test/image/baselines/gl3d_surface_intensity.png and b/test/image/baselines/gl3d_surface_intensity.png differ diff --git a/test/image/baselines/gl3d_tetrahedra.png b/test/image/baselines/gl3d_tetrahedra.png index b148964e1dd..54cfe5bb25a 100644 Binary files a/test/image/baselines/gl3d_tetrahedra.png and b/test/image/baselines/gl3d_tetrahedra.png differ diff --git a/test/image/baselines/gl3d_text-weirdness.png b/test/image/baselines/gl3d_text-weirdness.png index aa5ff8cb4aa..4bd15b73b9b 100644 Binary files a/test/image/baselines/gl3d_text-weirdness.png and b/test/image/baselines/gl3d_text-weirdness.png differ diff --git a/test/image/baselines/gl3d_triangle.png b/test/image/baselines/gl3d_triangle.png index c6411b2704d..2c46296056a 100644 Binary files a/test/image/baselines/gl3d_triangle.png and b/test/image/baselines/gl3d_triangle.png differ diff --git a/test/image/baselines/gl3d_wire-surface.png b/test/image/baselines/gl3d_wire-surface.png index 4666ab34c74..14a9f16eedd 100644 Binary files a/test/image/baselines/gl3d_wire-surface.png and b/test/image/baselines/gl3d_wire-surface.png differ diff --git a/test/image/baselines/gl3d_world-cals.png b/test/image/baselines/gl3d_world-cals.png index 2c192891d1d..ab0244b8495 100644 Binary files a/test/image/baselines/gl3d_world-cals.png and b/test/image/baselines/gl3d_world-cals.png differ diff --git a/test/image/baselines/gl3d_xy-defined-ticks.png b/test/image/baselines/gl3d_xy-defined-ticks.png index c8dca015801..f0cc8767acd 100644 Binary files a/test/image/baselines/gl3d_xy-defined-ticks.png and b/test/image/baselines/gl3d_xy-defined-ticks.png differ diff --git a/test/image/baselines/gl3d_z-range.png b/test/image/baselines/gl3d_z-range.png index 1fd1d5ecbbd..3e5d5578188 100644 Binary files a/test/image/baselines/gl3d_z-range.png and b/test/image/baselines/gl3d_z-range.png differ diff --git a/test/image/baselines/global_font.png b/test/image/baselines/global_font.png index 67e89da9600..3b62fc9e888 100644 Binary files a/test/image/baselines/global_font.png and b/test/image/baselines/global_font.png differ diff --git a/test/image/baselines/greens_heatmap.png b/test/image/baselines/greens_heatmap.png index bad2f220379..97b2d83e8fa 100644 Binary files a/test/image/baselines/greens_heatmap.png and b/test/image/baselines/greens_heatmap.png differ diff --git a/test/image/baselines/greys_heatmap.png b/test/image/baselines/greys_heatmap.png index 9bf513496ff..a0e6378ea4f 100644 Binary files a/test/image/baselines/greys_heatmap.png and b/test/image/baselines/greys_heatmap.png differ diff --git a/test/image/baselines/grouped_bar.png b/test/image/baselines/grouped_bar.png index e9140ee454d..31c60573e87 100644 Binary files a/test/image/baselines/grouped_bar.png and b/test/image/baselines/grouped_bar.png differ diff --git a/test/image/baselines/heatmap-reverse-autocolorscale.png b/test/image/baselines/heatmap-reverse-autocolorscale.png index c7dee07c4ac..0a5e06752da 100644 Binary files a/test/image/baselines/heatmap-reverse-autocolorscale.png and b/test/image/baselines/heatmap-reverse-autocolorscale.png differ diff --git a/test/image/baselines/heatmap_autocolor_negative.png b/test/image/baselines/heatmap_autocolor_negative.png index fab5d5bc8fa..eab95cdbc61 100644 Binary files a/test/image/baselines/heatmap_autocolor_negative.png and b/test/image/baselines/heatmap_autocolor_negative.png differ diff --git a/test/image/baselines/heatmap_autocolor_positive.png b/test/image/baselines/heatmap_autocolor_positive.png index edac6745845..37a7220aac2 100644 Binary files a/test/image/baselines/heatmap_autocolor_positive.png and b/test/image/baselines/heatmap_autocolor_positive.png differ diff --git a/test/image/baselines/heatmap_brick_padding.png b/test/image/baselines/heatmap_brick_padding.png index 150525879a0..dafbfb3e361 100644 Binary files a/test/image/baselines/heatmap_brick_padding.png and b/test/image/baselines/heatmap_brick_padding.png differ diff --git a/test/image/baselines/heatmap_multi-trace.png b/test/image/baselines/heatmap_multi-trace.png index 11693e76b76..457418cb1c0 100644 Binary files a/test/image/baselines/heatmap_multi-trace.png and b/test/image/baselines/heatmap_multi-trace.png differ diff --git a/test/image/baselines/heatmap_xyz-dates-and-categories.png b/test/image/baselines/heatmap_xyz-dates-and-categories.png index aaf59fd6ff6..c8c87a287e7 100644 Binary files a/test/image/baselines/heatmap_xyz-dates-and-categories.png and b/test/image/baselines/heatmap_xyz-dates-and-categories.png differ diff --git a/test/image/baselines/heatmap_xyz-gaps-on-sides.png b/test/image/baselines/heatmap_xyz-gaps-on-sides.png index c75a17cb44f..a7381473541 100644 Binary files a/test/image/baselines/heatmap_xyz-gaps-on-sides.png and b/test/image/baselines/heatmap_xyz-gaps-on-sides.png differ diff --git a/test/image/baselines/hist2d_summed.png b/test/image/baselines/hist2d_summed.png index c8a24409300..896f64ba867 100644 Binary files a/test/image/baselines/hist2d_summed.png and b/test/image/baselines/hist2d_summed.png differ diff --git a/test/image/baselines/hist_003_to_093.png b/test/image/baselines/hist_003_to_093.png index 462f1cc64e3..60b3094ec4b 100644 Binary files a/test/image/baselines/hist_003_to_093.png and b/test/image/baselines/hist_003_to_093.png differ diff --git a/test/image/baselines/hist_003_to_1.png b/test/image/baselines/hist_003_to_1.png index 5e5b094a2dd..b83cb168893 100644 Binary files a/test/image/baselines/hist_003_to_1.png and b/test/image/baselines/hist_003_to_1.png differ diff --git a/test/image/baselines/hist_0_to_093.png b/test/image/baselines/hist_0_to_093.png index 4715469f776..7372ce8ad78 100644 Binary files a/test/image/baselines/hist_0_to_093.png and b/test/image/baselines/hist_0_to_093.png differ diff --git a/test/image/baselines/hist_0_to_1_midpoints.png b/test/image/baselines/hist_0_to_1_midpoints.png index 5ce60859f17..e42c249782a 100644 Binary files a/test/image/baselines/hist_0_to_1_midpoints.png and b/test/image/baselines/hist_0_to_1_midpoints.png differ diff --git a/test/image/baselines/hist_all_integer.png b/test/image/baselines/hist_all_integer.png index 6a995b6b7fc..2e803b54a13 100644 Binary files a/test/image/baselines/hist_all_integer.png and b/test/image/baselines/hist_all_integer.png differ diff --git a/test/image/baselines/hist_all_integer_n50.png b/test/image/baselines/hist_all_integer_n50.png index 50c27c9349f..da2149037ab 100644 Binary files a/test/image/baselines/hist_all_integer_n50.png and b/test/image/baselines/hist_all_integer_n50.png differ diff --git a/test/image/baselines/hist_almost_integer.png b/test/image/baselines/hist_almost_integer.png index 0d360d10788..5923251dc1d 100644 Binary files a/test/image/baselines/hist_almost_integer.png and b/test/image/baselines/hist_almost_integer.png differ diff --git a/test/image/baselines/hist_category.png b/test/image/baselines/hist_category.png index 7c6a03da963..25c42749293 100644 Binary files a/test/image/baselines/hist_category.png and b/test/image/baselines/hist_category.png differ diff --git a/test/image/baselines/hist_cum_stacked.png b/test/image/baselines/hist_cum_stacked.png index 29702797e23..d85b4bf55c1 100644 Binary files a/test/image/baselines/hist_cum_stacked.png and b/test/image/baselines/hist_cum_stacked.png differ diff --git a/test/image/baselines/hist_grouped.png b/test/image/baselines/hist_grouped.png index a5d9e71a794..b63b73ed1f2 100644 Binary files a/test/image/baselines/hist_grouped.png and b/test/image/baselines/hist_grouped.png differ diff --git a/test/image/baselines/hist_stacked.png b/test/image/baselines/hist_stacked.png index 72cb9a5ec04..19d6c430e92 100644 Binary files a/test/image/baselines/hist_stacked.png and b/test/image/baselines/hist_stacked.png differ diff --git a/test/image/baselines/hist_summed.png b/test/image/baselines/hist_summed.png index 9f7a7cb5d15..272d241d23c 100644 Binary files a/test/image/baselines/hist_summed.png and b/test/image/baselines/hist_summed.png differ diff --git a/test/image/baselines/hist_valid_ses.png b/test/image/baselines/hist_valid_ses.png index 8e71146a3fd..a11a333ead7 100644 Binary files a/test/image/baselines/hist_valid_ses.png and b/test/image/baselines/hist_valid_ses.png differ diff --git a/test/image/baselines/hist_valid_ses_y.png b/test/image/baselines/hist_valid_ses_y.png index 717588940d9..824b3a662e6 100644 Binary files a/test/image/baselines/hist_valid_ses_y.png and b/test/image/baselines/hist_valid_ses_y.png differ diff --git a/test/image/baselines/histogram_colorscale.png b/test/image/baselines/histogram_colorscale.png index 7dda32cbf18..d53948c6a76 100644 Binary files a/test/image/baselines/histogram_colorscale.png and b/test/image/baselines/histogram_colorscale.png differ diff --git a/test/image/baselines/hot_heatmap.png b/test/image/baselines/hot_heatmap.png index 584435ca57e..d384f283ab5 100644 Binary files a/test/image/baselines/hot_heatmap.png and b/test/image/baselines/hot_heatmap.png differ diff --git a/test/image/baselines/japanese.png b/test/image/baselines/japanese.png index 3594fa47be8..6d220ea2481 100644 Binary files a/test/image/baselines/japanese.png and b/test/image/baselines/japanese.png differ diff --git a/test/image/baselines/jet_heatmap.png b/test/image/baselines/jet_heatmap.png index 885b29c8eaa..0d3ce5b521d 100644 Binary files a/test/image/baselines/jet_heatmap.png and b/test/image/baselines/jet_heatmap.png differ diff --git a/test/image/baselines/labelled_heatmap.png b/test/image/baselines/labelled_heatmap.png index f39c6852bcb..7828e20c1e6 100644 Binary files a/test/image/baselines/labelled_heatmap.png and b/test/image/baselines/labelled_heatmap.png differ diff --git a/test/image/baselines/layout_image.png b/test/image/baselines/layout_image.png index afbe9ad177c..efaeab4bd6e 100644 Binary files a/test/image/baselines/layout_image.png and b/test/image/baselines/layout_image.png differ diff --git a/test/image/baselines/legend_horizontal.png b/test/image/baselines/legend_horizontal.png index 403ff3053fa..1ce9a703935 100644 Binary files a/test/image/baselines/legend_horizontal.png and b/test/image/baselines/legend_horizontal.png differ diff --git a/test/image/baselines/legend_horizontal_autowrap.png b/test/image/baselines/legend_horizontal_autowrap.png index d3d284bf01a..2457caab4ca 100644 Binary files a/test/image/baselines/legend_horizontal_autowrap.png and b/test/image/baselines/legend_horizontal_autowrap.png differ diff --git a/test/image/baselines/legend_horizontal_groups.png b/test/image/baselines/legend_horizontal_groups.png index 4651f8e5e03..18e1e15e43b 100644 Binary files a/test/image/baselines/legend_horizontal_groups.png and b/test/image/baselines/legend_horizontal_groups.png differ diff --git a/test/image/baselines/legend_inside.png b/test/image/baselines/legend_inside.png index 7484b34e1be..78f6e5d559c 100644 Binary files a/test/image/baselines/legend_inside.png and b/test/image/baselines/legend_inside.png differ diff --git a/test/image/baselines/legend_labels.png b/test/image/baselines/legend_labels.png index dcb3857a802..c7592acc600 100644 Binary files a/test/image/baselines/legend_labels.png and b/test/image/baselines/legend_labels.png differ diff --git a/test/image/baselines/legend_negative_y.png b/test/image/baselines/legend_negative_y.png index 5b32d355a00..d525c6d0d15 100644 Binary files a/test/image/baselines/legend_negative_y.png and b/test/image/baselines/legend_negative_y.png differ diff --git a/test/image/baselines/legend_outside.png b/test/image/baselines/legend_outside.png index d71185dd549..d0c0339ab90 100644 Binary files a/test/image/baselines/legend_outside.png and b/test/image/baselines/legend_outside.png differ diff --git a/test/image/baselines/legend_scroll.png b/test/image/baselines/legend_scroll.png index f072e5b5de5..734115a2f20 100644 Binary files a/test/image/baselines/legend_scroll.png and b/test/image/baselines/legend_scroll.png differ diff --git a/test/image/baselines/legend_style.png b/test/image/baselines/legend_style.png index c3a4dbf6c8e..4a0d394e828 100644 Binary files a/test/image/baselines/legend_style.png and b/test/image/baselines/legend_style.png differ diff --git a/test/image/baselines/legend_visibility.png b/test/image/baselines/legend_visibility.png index 5f1e636add9..5e7d88f9d63 100644 Binary files a/test/image/baselines/legend_visibility.png and b/test/image/baselines/legend_visibility.png differ diff --git a/test/image/baselines/legendgroup.png b/test/image/baselines/legendgroup.png index ff8c3062c59..7fbd36872db 100644 Binary files a/test/image/baselines/legendgroup.png and b/test/image/baselines/legendgroup.png differ diff --git a/test/image/baselines/legendgroup_bar-stack.png b/test/image/baselines/legendgroup_bar-stack.png index 450334f264e..23eedfce42d 100644 Binary files a/test/image/baselines/legendgroup_bar-stack.png and b/test/image/baselines/legendgroup_bar-stack.png differ diff --git a/test/image/baselines/line_grid_color.png b/test/image/baselines/line_grid_color.png index d38e8b39c78..97f6b5acc15 100644 Binary files a/test/image/baselines/line_grid_color.png and b/test/image/baselines/line_grid_color.png differ diff --git a/test/image/baselines/line_grid_width.png b/test/image/baselines/line_grid_width.png index da67496c1a9..ab297e14590 100644 Binary files a/test/image/baselines/line_grid_width.png and b/test/image/baselines/line_grid_width.png differ diff --git a/test/image/baselines/line_scatter.png b/test/image/baselines/line_scatter.png index 016c887521f..798cfb74272 100644 Binary files a/test/image/baselines/line_scatter.png and b/test/image/baselines/line_scatter.png differ diff --git a/test/image/baselines/line_style.png b/test/image/baselines/line_style.png index 9c4e5a3adca..64764c3d248 100644 Binary files a/test/image/baselines/line_style.png and b/test/image/baselines/line_style.png differ diff --git a/test/image/baselines/mapbox_0.png b/test/image/baselines/mapbox_0.png index c5378b6cf85..f89c70e2af1 100644 Binary files a/test/image/baselines/mapbox_0.png and b/test/image/baselines/mapbox_0.png differ diff --git a/test/image/baselines/mapbox_angles.png b/test/image/baselines/mapbox_angles.png index 54eae19c19f..b28b8381f75 100644 Binary files a/test/image/baselines/mapbox_angles.png and b/test/image/baselines/mapbox_angles.png differ diff --git a/test/image/baselines/mapbox_bubbles-text.png b/test/image/baselines/mapbox_bubbles-text.png index 01a663867f0..87ef22f0495 100644 Binary files a/test/image/baselines/mapbox_bubbles-text.png and b/test/image/baselines/mapbox_bubbles-text.png differ diff --git a/test/image/baselines/mapbox_bubbles.png b/test/image/baselines/mapbox_bubbles.png index e0544baa69a..7b4c4b44f19 100644 Binary files a/test/image/baselines/mapbox_bubbles.png and b/test/image/baselines/mapbox_bubbles.png differ diff --git a/test/image/baselines/mapbox_connectgaps.png b/test/image/baselines/mapbox_connectgaps.png index af554d97a38..8ffad38037f 100644 Binary files a/test/image/baselines/mapbox_connectgaps.png and b/test/image/baselines/mapbox_connectgaps.png differ diff --git a/test/image/baselines/mapbox_custom-style.png b/test/image/baselines/mapbox_custom-style.png index 23d2ed05b92..c68516bc5e2 100644 Binary files a/test/image/baselines/mapbox_custom-style.png and b/test/image/baselines/mapbox_custom-style.png differ diff --git a/test/image/baselines/mapbox_fill.png b/test/image/baselines/mapbox_fill.png index 98fc78f86bd..8a7f3a8d694 100644 Binary files a/test/image/baselines/mapbox_fill.png and b/test/image/baselines/mapbox_fill.png differ diff --git a/test/image/baselines/mapbox_layers.png b/test/image/baselines/mapbox_layers.png index 95da9fd0db4..63ab1b06c09 100644 Binary files a/test/image/baselines/mapbox_layers.png and b/test/image/baselines/mapbox_layers.png differ diff --git a/test/image/baselines/mapbox_symbol-text.png b/test/image/baselines/mapbox_symbol-text.png index 1ec7cd40459..83c35adecc4 100644 Binary files a/test/image/baselines/mapbox_symbol-text.png and b/test/image/baselines/mapbox_symbol-text.png differ diff --git a/test/image/baselines/marker_line_width.png b/test/image/baselines/marker_line_width.png index 77f6bb59ee0..ac0871fcb28 100644 Binary files a/test/image/baselines/marker_line_width.png and b/test/image/baselines/marker_line_width.png differ diff --git a/test/image/baselines/marker_symbols.png b/test/image/baselines/marker_symbols.png index 527a3fa66df..6409c3f9b8d 100644 Binary files a/test/image/baselines/marker_symbols.png and b/test/image/baselines/marker_symbols.png differ diff --git a/test/image/baselines/multiple_axes_double.png b/test/image/baselines/multiple_axes_double.png index e053363b4a8..d000b44112e 100644 Binary files a/test/image/baselines/multiple_axes_double.png and b/test/image/baselines/multiple_axes_double.png differ diff --git a/test/image/baselines/multiple_axes_multiple.png b/test/image/baselines/multiple_axes_multiple.png index 7cf933fe0e7..ce37475d619 100644 Binary files a/test/image/baselines/multiple_axes_multiple.png and b/test/image/baselines/multiple_axes_multiple.png differ diff --git a/test/image/baselines/multiple_subplots.png b/test/image/baselines/multiple_subplots.png index 53f92b568d9..9fad128fbfd 100644 Binary files a/test/image/baselines/multiple_subplots.png and b/test/image/baselines/multiple_subplots.png differ diff --git a/test/image/baselines/ohlc_first.png b/test/image/baselines/ohlc_first.png index ddac6bf2b50..0a0bb596644 100644 Binary files a/test/image/baselines/ohlc_first.png and b/test/image/baselines/ohlc_first.png differ diff --git a/test/image/baselines/overlaying-axis-lines.png b/test/image/baselines/overlaying-axis-lines.png index 7df0a3d4360..cab44d95130 100644 Binary files a/test/image/baselines/overlaying-axis-lines.png and b/test/image/baselines/overlaying-axis-lines.png differ diff --git a/test/image/baselines/percent_error_bar.png b/test/image/baselines/percent_error_bar.png index 93c9fb3760c..232d4315b80 100644 Binary files a/test/image/baselines/percent_error_bar.png and b/test/image/baselines/percent_error_bar.png differ diff --git a/test/image/baselines/picnic_heatmap.png b/test/image/baselines/picnic_heatmap.png index 7f954f5cfb9..10a569d0270 100644 Binary files a/test/image/baselines/picnic_heatmap.png and b/test/image/baselines/picnic_heatmap.png differ diff --git a/test/image/baselines/pie_fonts.png b/test/image/baselines/pie_fonts.png index 604622b3ad0..0078470b70b 100644 Binary files a/test/image/baselines/pie_fonts.png and b/test/image/baselines/pie_fonts.png differ diff --git a/test/image/baselines/pie_label0_dlabel.png b/test/image/baselines/pie_label0_dlabel.png index c894b985d75..1990ecb2127 100644 Binary files a/test/image/baselines/pie_label0_dlabel.png and b/test/image/baselines/pie_label0_dlabel.png differ diff --git a/test/image/baselines/pie_labels_colors_text.png b/test/image/baselines/pie_labels_colors_text.png index 15862a61eb9..b453fffdaf9 100644 Binary files a/test/image/baselines/pie_labels_colors_text.png and b/test/image/baselines/pie_labels_colors_text.png differ diff --git a/test/image/baselines/pie_scale_textpos_hideslices.png b/test/image/baselines/pie_scale_textpos_hideslices.png index 72e8241f847..1552d88961d 100644 Binary files a/test/image/baselines/pie_scale_textpos_hideslices.png and b/test/image/baselines/pie_scale_textpos_hideslices.png differ diff --git a/test/image/baselines/pie_simple.png b/test/image/baselines/pie_simple.png index 516515244a7..dfaaaed9154 100644 Binary files a/test/image/baselines/pie_simple.png and b/test/image/baselines/pie_simple.png differ diff --git a/test/image/baselines/pie_sort_direction.png b/test/image/baselines/pie_sort_direction.png index 49b6212bc9f..6854609292e 100644 Binary files a/test/image/baselines/pie_sort_direction.png and b/test/image/baselines/pie_sort_direction.png differ diff --git a/test/image/baselines/pie_style.png b/test/image/baselines/pie_style.png index a0ff83a138a..f0f22ba951a 100644 Binary files a/test/image/baselines/pie_style.png and b/test/image/baselines/pie_style.png differ diff --git a/test/image/baselines/pie_style_arrays.png b/test/image/baselines/pie_style_arrays.png index 17f06ef2218..31ecc6c50aa 100644 Binary files a/test/image/baselines/pie_style_arrays.png and b/test/image/baselines/pie_style_arrays.png differ diff --git a/test/image/baselines/polar_area_chart.png b/test/image/baselines/polar_area_chart.png index 948febef78e..aea41d5070f 100644 Binary files a/test/image/baselines/polar_area_chart.png and b/test/image/baselines/polar_area_chart.png differ diff --git a/test/image/baselines/polar_line.png b/test/image/baselines/polar_line.png index a55331f8e68..2e54225902d 100644 Binary files a/test/image/baselines/polar_line.png and b/test/image/baselines/polar_line.png differ diff --git a/test/image/baselines/polar_scatter.png b/test/image/baselines/polar_scatter.png index ceb3a086fe2..f8824cd8810 100644 Binary files a/test/image/baselines/polar_scatter.png and b/test/image/baselines/polar_scatter.png differ diff --git a/test/image/baselines/portland_heatmap.png b/test/image/baselines/portland_heatmap.png index 62f9fec2572..f837d469073 100644 Binary files a/test/image/baselines/portland_heatmap.png and b/test/image/baselines/portland_heatmap.png differ diff --git a/test/image/baselines/pseudo_html.png b/test/image/baselines/pseudo_html.png index 2701f536651..d308a6045a9 100644 Binary files a/test/image/baselines/pseudo_html.png and b/test/image/baselines/pseudo_html.png differ diff --git a/test/image/baselines/range_selector.png b/test/image/baselines/range_selector.png index 523dc5d3ffe..e1ae70bc75a 100644 Binary files a/test/image/baselines/range_selector.png and b/test/image/baselines/range_selector.png differ diff --git a/test/image/baselines/range_slider.png b/test/image/baselines/range_slider.png index 17fe0ca48cd..97ffa37f775 100644 Binary files a/test/image/baselines/range_slider.png and b/test/image/baselines/range_slider.png differ diff --git a/test/image/baselines/range_slider_axes_double.png b/test/image/baselines/range_slider_axes_double.png index 719c6573668..4081acafc51 100644 Binary files a/test/image/baselines/range_slider_axes_double.png and b/test/image/baselines/range_slider_axes_double.png differ diff --git a/test/image/baselines/range_slider_box.png b/test/image/baselines/range_slider_box.png index e1024d7357a..12b776d9dee 100644 Binary files a/test/image/baselines/range_slider_box.png and b/test/image/baselines/range_slider_box.png differ diff --git a/test/image/baselines/range_slider_initial_expanded.png b/test/image/baselines/range_slider_initial_expanded.png index b2e6ad5d813..e44bf558cc8 100644 Binary files a/test/image/baselines/range_slider_initial_expanded.png and b/test/image/baselines/range_slider_initial_expanded.png differ diff --git a/test/image/baselines/range_slider_initial_valid.png b/test/image/baselines/range_slider_initial_valid.png index 28f419638cf..9398e64bc00 100644 Binary files a/test/image/baselines/range_slider_initial_valid.png and b/test/image/baselines/range_slider_initial_valid.png differ diff --git a/test/image/baselines/range_slider_multiple.png b/test/image/baselines/range_slider_multiple.png index 14740cbb86c..aad6dbfdce5 100644 Binary files a/test/image/baselines/range_slider_multiple.png and b/test/image/baselines/range_slider_multiple.png differ diff --git a/test/image/baselines/rdbu_heatmap.png b/test/image/baselines/rdbu_heatmap.png index 41c11ed27cf..15eb38f333c 100644 Binary files a/test/image/baselines/rdbu_heatmap.png and b/test/image/baselines/rdbu_heatmap.png differ diff --git a/test/image/baselines/scatter-colorscale-colorbar.png b/test/image/baselines/scatter-colorscale-colorbar.png index 2e0543171c3..98336796f67 100644 Binary files a/test/image/baselines/scatter-colorscale-colorbar.png and b/test/image/baselines/scatter-colorscale-colorbar.png differ diff --git a/test/image/baselines/scatter-marker-line-colorscales.png b/test/image/baselines/scatter-marker-line-colorscales.png index 21fd18d8fe5..949a8edb0a5 100644 Binary files a/test/image/baselines/scatter-marker-line-colorscales.png and b/test/image/baselines/scatter-marker-line-colorscales.png differ diff --git a/test/image/baselines/scatter_fill_corner_cases.png b/test/image/baselines/scatter_fill_corner_cases.png index c4c59769692..da7e70e8c0f 100644 Binary files a/test/image/baselines/scatter_fill_corner_cases.png and b/test/image/baselines/scatter_fill_corner_cases.png differ diff --git a/test/image/baselines/scatter_fill_no_opacity.png b/test/image/baselines/scatter_fill_no_opacity.png index 74e47098f1a..77e21aed84c 100644 Binary files a/test/image/baselines/scatter_fill_no_opacity.png and b/test/image/baselines/scatter_fill_no_opacity.png differ diff --git a/test/image/baselines/scatter_fill_self_next.png b/test/image/baselines/scatter_fill_self_next.png index d7234007675..c90c08cf85b 100644 Binary files a/test/image/baselines/scatter_fill_self_next.png and b/test/image/baselines/scatter_fill_self_next.png differ diff --git a/test/image/baselines/scatter_fill_self_opacity.png b/test/image/baselines/scatter_fill_self_opacity.png index 98909f7d68d..62a78648b4d 100644 Binary files a/test/image/baselines/scatter_fill_self_opacity.png and b/test/image/baselines/scatter_fill_self_opacity.png differ diff --git a/test/image/baselines/scattercarpet.png b/test/image/baselines/scattercarpet.png index 441327dca9a..7d27646e9fc 100644 Binary files a/test/image/baselines/scattercarpet.png and b/test/image/baselines/scattercarpet.png differ diff --git a/test/image/baselines/shapes.png b/test/image/baselines/shapes.png index 0e15050b950..83526e3baca 100644 Binary files a/test/image/baselines/shapes.png and b/test/image/baselines/shapes.png differ diff --git a/test/image/baselines/shapes_below_traces.png b/test/image/baselines/shapes_below_traces.png index 73d260a5075..135ece5816d 100644 Binary files a/test/image/baselines/shapes_below_traces.png and b/test/image/baselines/shapes_below_traces.png differ diff --git a/test/image/baselines/shared_axes_subplots.png b/test/image/baselines/shared_axes_subplots.png index ae8d7ecc758..cbf5f87152d 100644 Binary files a/test/image/baselines/shared_axes_subplots.png and b/test/image/baselines/shared_axes_subplots.png differ diff --git a/test/image/baselines/show_legend.png b/test/image/baselines/show_legend.png index 9f4091a2d91..21520c2a9f0 100644 Binary files a/test/image/baselines/show_legend.png and b/test/image/baselines/show_legend.png differ diff --git a/test/image/baselines/simple_annotation.png b/test/image/baselines/simple_annotation.png index 4b53beff143..76dd0450b2e 100644 Binary files a/test/image/baselines/simple_annotation.png and b/test/image/baselines/simple_annotation.png differ diff --git a/test/image/baselines/simple_contour.png b/test/image/baselines/simple_contour.png index cb82364e1ff..e2442e47828 100644 Binary files a/test/image/baselines/simple_contour.png and b/test/image/baselines/simple_contour.png differ diff --git a/test/image/baselines/simple_inset.png b/test/image/baselines/simple_inset.png index 83bb484d031..6a8a20c8547 100644 Binary files a/test/image/baselines/simple_inset.png and b/test/image/baselines/simple_inset.png differ diff --git a/test/image/baselines/simple_subplot.png b/test/image/baselines/simple_subplot.png index 35bf6bc71c8..39f9bc7df51 100644 Binary files a/test/image/baselines/simple_subplot.png and b/test/image/baselines/simple_subplot.png differ diff --git a/test/image/baselines/size_margins.png b/test/image/baselines/size_margins.png index 4f5561a79ee..42007b3357b 100644 Binary files a/test/image/baselines/size_margins.png and b/test/image/baselines/size_margins.png differ diff --git a/test/image/baselines/sliders.png b/test/image/baselines/sliders.png index 2271954c2cf..5cd36d09cf5 100644 Binary files a/test/image/baselines/sliders.png and b/test/image/baselines/sliders.png differ diff --git a/test/image/baselines/stacked_bar.png b/test/image/baselines/stacked_bar.png index bfc13442208..44c4f95203a 100644 Binary files a/test/image/baselines/stacked_bar.png and b/test/image/baselines/stacked_bar.png differ diff --git a/test/image/baselines/stacked_coupled_subplots.png b/test/image/baselines/stacked_coupled_subplots.png index a44b8df9206..b9e3e514214 100644 Binary files a/test/image/baselines/stacked_coupled_subplots.png and b/test/image/baselines/stacked_coupled_subplots.png differ diff --git a/test/image/baselines/stacked_subplots.png b/test/image/baselines/stacked_subplots.png index 9c813ebc557..f3fa6d87249 100644 Binary files a/test/image/baselines/stacked_subplots.png and b/test/image/baselines/stacked_subplots.png differ diff --git a/test/image/baselines/stacked_subplots_shared_yaxis.png b/test/image/baselines/stacked_subplots_shared_yaxis.png index 8783f79fbd0..ae84e0018ec 100644 Binary files a/test/image/baselines/stacked_subplots_shared_yaxis.png and b/test/image/baselines/stacked_subplots_shared_yaxis.png differ diff --git a/test/image/baselines/style_bar.png b/test/image/baselines/style_bar.png index 20a8623d492..b91b6e626f2 100644 Binary files a/test/image/baselines/style_bar.png and b/test/image/baselines/style_bar.png differ diff --git a/test/image/baselines/styling_names.png b/test/image/baselines/styling_names.png index bd5545994b9..8c1779f7bc4 100644 Binary files a/test/image/baselines/styling_names.png and b/test/image/baselines/styling_names.png differ diff --git a/test/image/baselines/ternary_array_styles.png b/test/image/baselines/ternary_array_styles.png index ab11c0f648d..859683827ea 100644 Binary files a/test/image/baselines/ternary_array_styles.png and b/test/image/baselines/ternary_array_styles.png differ diff --git a/test/image/baselines/ternary_axis_layers.png b/test/image/baselines/ternary_axis_layers.png index e2e02dbf1b1..69b89e6ed64 100644 Binary files a/test/image/baselines/ternary_axis_layers.png and b/test/image/baselines/ternary_axis_layers.png differ diff --git a/test/image/baselines/ternary_fill.png b/test/image/baselines/ternary_fill.png index b7e6f58998d..2a8170f6c5d 100644 Binary files a/test/image/baselines/ternary_fill.png and b/test/image/baselines/ternary_fill.png differ diff --git a/test/image/baselines/ternary_lines.png b/test/image/baselines/ternary_lines.png index 7299fedff74..d6d0051ee73 100644 Binary files a/test/image/baselines/ternary_lines.png and b/test/image/baselines/ternary_lines.png differ diff --git a/test/image/baselines/ternary_markers.png b/test/image/baselines/ternary_markers.png index 84ce180097b..65da29e989f 100644 Binary files a/test/image/baselines/ternary_markers.png and b/test/image/baselines/ternary_markers.png differ diff --git a/test/image/baselines/ternary_multiple.png b/test/image/baselines/ternary_multiple.png index 68045c78cd7..e454428deb2 100644 Binary files a/test/image/baselines/ternary_multiple.png and b/test/image/baselines/ternary_multiple.png differ diff --git a/test/image/baselines/ternary_simple.png b/test/image/baselines/ternary_simple.png index 29486ca35bb..7ea3a33c73f 100644 Binary files a/test/image/baselines/ternary_simple.png and b/test/image/baselines/ternary_simple.png differ diff --git a/test/image/baselines/text_chart_arrays.png b/test/image/baselines/text_chart_arrays.png index d34b06de5b7..883f88ac6a0 100644 Binary files a/test/image/baselines/text_chart_arrays.png and b/test/image/baselines/text_chart_arrays.png differ diff --git a/test/image/baselines/text_chart_basic.png b/test/image/baselines/text_chart_basic.png index 0e542d274a7..0895bceb840 100644 Binary files a/test/image/baselines/text_chart_basic.png and b/test/image/baselines/text_chart_basic.png differ diff --git a/test/image/baselines/text_chart_invalid-arrays.png b/test/image/baselines/text_chart_invalid-arrays.png index bfea64ed5ed..507efde81a8 100644 Binary files a/test/image/baselines/text_chart_invalid-arrays.png and b/test/image/baselines/text_chart_invalid-arrays.png differ diff --git a/test/image/baselines/text_chart_single-string.png b/test/image/baselines/text_chart_single-string.png index 809ed3df2e9..d7b724ae215 100644 Binary files a/test/image/baselines/text_chart_single-string.png and b/test/image/baselines/text_chart_single-string.png differ diff --git a/test/image/baselines/text_chart_styling.png b/test/image/baselines/text_chart_styling.png index fcfcd89fe4a..e1235fd8841 100644 Binary files a/test/image/baselines/text_chart_styling.png and b/test/image/baselines/text_chart_styling.png differ diff --git a/test/image/baselines/text_export.png b/test/image/baselines/text_export.png index 199caa079a7..7b042bba421 100644 Binary files a/test/image/baselines/text_export.png and b/test/image/baselines/text_export.png differ diff --git a/test/image/baselines/tick-datafn.png b/test/image/baselines/tick-datafn.png index 581cceee7d8..57637a15a93 100644 Binary files a/test/image/baselines/tick-datafn.png and b/test/image/baselines/tick-datafn.png differ diff --git a/test/image/baselines/tick_attributes.png b/test/image/baselines/tick_attributes.png index b61495409d9..48f5819b42b 100644 Binary files a/test/image/baselines/tick_attributes.png and b/test/image/baselines/tick_attributes.png differ diff --git a/test/image/baselines/tick_prefix_suffix.png b/test/image/baselines/tick_prefix_suffix.png index 16678317b9a..77053646c97 100644 Binary files a/test/image/baselines/tick_prefix_suffix.png and b/test/image/baselines/tick_prefix_suffix.png differ diff --git a/test/image/baselines/tick_prefix_suffix_exponent.png b/test/image/baselines/tick_prefix_suffix_exponent.png index 63ad56e0800..9e1dcb478e2 100644 Binary files a/test/image/baselines/tick_prefix_suffix_exponent.png and b/test/image/baselines/tick_prefix_suffix_exponent.png differ diff --git a/test/image/baselines/tickformat.png b/test/image/baselines/tickformat.png index 971418b83a5..aeec1c9fe6c 100644 Binary files a/test/image/baselines/tickformat.png and b/test/image/baselines/tickformat.png differ diff --git a/test/image/baselines/titles-avoid-labels.png b/test/image/baselines/titles-avoid-labels.png index 58dbb96cef3..d1c19775c4f 100644 Binary files a/test/image/baselines/titles-avoid-labels.png and b/test/image/baselines/titles-avoid-labels.png differ diff --git a/test/image/baselines/updatemenus.png b/test/image/baselines/updatemenus.png index 616f19ebe79..02a798d2481 100644 Binary files a/test/image/baselines/updatemenus.png and b/test/image/baselines/updatemenus.png differ diff --git a/test/image/baselines/updatemenus_positioning.png b/test/image/baselines/updatemenus_positioning.png index a93e32a1a61..279716f393a 100644 Binary files a/test/image/baselines/updatemenus_positioning.png and b/test/image/baselines/updatemenus_positioning.png differ diff --git a/test/image/baselines/violins.png b/test/image/baselines/violins.png index acd2d779889..eb353a38bf5 100644 Binary files a/test/image/baselines/violins.png and b/test/image/baselines/violins.png differ diff --git a/test/image/baselines/viridis_heatmap.png b/test/image/baselines/viridis_heatmap.png index 3524a0bccc2..03ddb89815b 100644 Binary files a/test/image/baselines/viridis_heatmap.png and b/test/image/baselines/viridis_heatmap.png differ diff --git a/test/image/baselines/world-cals.png b/test/image/baselines/world-cals.png index 7bf5e99b49d..7e2e201f7e7 100644 Binary files a/test/image/baselines/world-cals.png and b/test/image/baselines/world-cals.png differ diff --git a/test/image/baselines/yignbu_heatmap.png b/test/image/baselines/yignbu_heatmap.png index 1f07b1fbcd7..4bbc03e2ccc 100644 Binary files a/test/image/baselines/yignbu_heatmap.png and b/test/image/baselines/yignbu_heatmap.png differ diff --git a/test/image/baselines/yiorrd_heatmap.png b/test/image/baselines/yiorrd_heatmap.png index 04e5c8a825b..c8800e26a2c 100644 Binary files a/test/image/baselines/yiorrd_heatmap.png and b/test/image/baselines/yiorrd_heatmap.png differ diff --git a/test/image/baselines/zsmooth_methods.png b/test/image/baselines/zsmooth_methods.png index baf8c7e3da8..b258125eb49 100644 Binary files a/test/image/baselines/zsmooth_methods.png and b/test/image/baselines/zsmooth_methods.png differ diff --git a/test/image/compare_pixels_test.js b/test/image/compare_pixels_test.js index 3a51c9182cd..d21d56fb70b 100644 --- a/test/image/compare_pixels_test.js +++ b/test/image/compare_pixels_test.js @@ -1,78 +1,73 @@ var fs = require('fs'); +var PNG = require('pngjs').PNG; +var pixelmatch = require('pixelmatch'); +var parallel = require('run-parallel'); -var common = require('../../tasks/util/common'); +var run = require('./assets/run'); var getMockList = require('./assets/get_mock_list'); -var getRequestOpts = require('./assets/get_image_request_options'); var getImagePaths = require('./assets/get_image_paths'); -// packages inside the image server docker -var test = require('tape'); -var request = require('request'); -var gm = require('gm'); - -// pixel comparison tolerance -var TOLERANCE = 1e-6; - -// wait time between each test batch -var BATCH_WAIT = 500; - -// number of tests in each test batch -var BATCH_SIZE = 5; - -// wait time between each test in test queue -var QUEUE_WAIT = 10; - -/** - * Image pixel comparison test script. - * - * Called by `tasks/test_image.sh in `npm run test-image`. - * - * CLI arguments: - * - * 1. 'pattern' : glob determining which mock(s) are to be tested - * 2. --queue : if sent, the image will be run in queue instead of in batch. - * Makes the test run significantly longer, but is recommended on weak hardware. - * - * Examples: - * - * Run all tests in batch: - * - * npm run test-image - * - * Run the 'contour_nolines' test: - * - * npm run test-image -- contour_nolines - * - * Run all gl3d image test in queue: - * - * npm run test-image -- gl3d_* --queue - */ - -var pattern = process.argv[2]; -var mockList = getMockList(pattern); -var isInQueue = (process.argv[3] === '--queue'); -var isCI = process.env.CIRCLECI; - - -if(mockList.length === 0) { - throw new Error('No mocks found with pattern ' + pattern); +var argv = require('minimist')(process.argv.slice(2), { + 'boolean': ['queue', 'help', 'debug'], + 'string': ['parallel-limit', 'threshold'], + 'alias': { + help: ['h', 'info'] + }, + 'default': { + queue: false, + help: false, + debug: false, + threshold: 1e-6, + 'parallel-limit': 4 + } +}); + +var IS_CI = process.env.CIRCLECI; + +if(argv.help) { + console.log([ + 'Image pixel comparison test script.', + '', + 'CLI arguments:', + '', + '1. \'pattern\' : glob determining which mock(s) are to be tested', + '2. --queue : if sent, the image will be run in queue instead of in batch.', + ' Makes the test run significantly longer, but is recommended on weak hardware.', + '', + 'Examples:', + '', + 'Run all tests in batch:', + '', + ' npm run test-image', + '', + 'Run the \'contour_nolines\' test:', + '', + ' npm run test-image -- contour_nolines', + '', + 'Run all gl3d image test in queue:', + '', + ' npm run test-image -- gl3d_* --queue', + '' + ].join('\n')); + process.exit(0); } -// filter out untestable mocks if no pattern is specified -if(!pattern) { +var mockList = getMockList(argv._); + +// filter out untestable mocks if no input is specified +if(argv._.length === 0) { console.log('Filtering out untestable mocks:'); mockList = mockList.filter(untestableFilter); console.log('\n'); } // gl2d have limited image-test support -if(pattern === 'gl2d_*') { - - if(!isInQueue) { +if(argv._.indexOf('gl2d_*') !== -1) { + if(!argv.queue) { console.log('WARN: Running gl2d image tests in batch may lead to unwanted results\n'); } - if(isCI) { + if(IS_CI) { console.log('Filtering out multiple-subplot gl2d mocks:'); mockList = mockList .filter(untestableGL2DonCIfilter) @@ -81,13 +76,50 @@ if(pattern === 'gl2d_*') { } } -// main -if(isInQueue) { - runInQueue(mockList); -} -else { - runInBatch(mockList); -} +var input = mockList.map(function(m) { return getImagePaths(m).mock; }); + +run(mockList, input, argv, function write(info, done) { + var mockName = mockList[info.itemIndex]; + var paths = getImagePaths(mockName); + var imgData = info.body; + + if(!fs.existsSync(paths.baseline)) { + return done('baseline image for ' + mockName + ' does not exist'); + } + + parallel([ + function(cb) { + var img = fs.createReadStream(paths.baseline).pipe(new PNG()); + img.on('parsed', function() { return cb(null, img); }); + img.on('error', function(err) { return cb(err); }); + }, + function(cb) { (new PNG()).parse(imgData, cb); }, + function(cb) { fs.writeFile(paths.test, imgData, cb); }, + ], function(err, results) { + if(err) done(err); + + var baseline = results[0]; + var width = baseline.width; + var height = baseline.height; + var test = results[1]; + var diff = new PNG({width: width, height: height}); + + var numDiffPixels = pixelmatch( + baseline.data, test.data, diff.data, + width, height, + {threshold: argv.threshold} + ); + + if(numDiffPixels) { + var diffStream = fs.createWriteStream(paths.diff).on('finish', function() { + done('(' + numDiffPixels + ' pixels differ with threshold ' + argv.threshold + ')'); + }); + diff.pack().pipe(diffStream); + } else { + done(); + } + }); +}); /* Test cases: * @@ -154,137 +186,3 @@ function sortForGL2DonCI(a, b) { return 0; } - -function runInBatch(mockList) { - var running = 0; - - test('testing mocks in batch', function(t) { - t.plan(mockList.length); - - for(var i = 0; i < mockList.length; i++) { - run(mockList[i], t); - } - }); - - function run(mockName, t) { - if(running >= BATCH_SIZE) { - setTimeout(function() { - run(mockName, t); - }, BATCH_WAIT); - return; - } - running++; - - // throttle the number of tests running concurrently - - comparePixels(mockName, function(isEqual, mockName) { - running--; - t.ok(isEqual, mockName + ' should be pixel perfect'); - }); - } -} - -function runInQueue(mockList) { - var index = 0; - - test('testing mocks in queue', function(t) { - t.plan(mockList.length); - - run(mockList[index], t); - }); - - function run(mockName, t) { - comparePixels(mockName, function(isEqual, mockName) { - t.ok(isEqual, mockName + ' should be pixel perfect'); - - index++; - if(index < mockList.length) { - setTimeout(function() { - run(mockList[index], t); - }, QUEUE_WAIT); - } - }); - } -} - -function comparePixels(mockName, cb) { - var requestOpts = getRequestOpts({ mockName: mockName }), - imagePaths = getImagePaths(mockName), - saveImageStream = fs.createWriteStream(imagePaths.test); - - function log(msg) { - process.stdout.write('Error for', mockName + ':', msg); - } - - function checkImage() { - - // baseline image must be generated first - if(!common.doesFileExist(imagePaths.baseline)) { - var err = new Error('baseline image not found'); - return onEqualityCheck(err, false); - } - - /* - * N.B. The non-zero tolerance was added in - * https://github.com/plotly/plotly.js/pull/243 - * where some legend mocks started generating different png outputs - * on `npm run test-image` and `npm run test-image -- mock.json`. - * - * Note that the svg outputs for the problematic mocks were the same - * and playing around with the batch size and timeout durations - * did not seem to affect the results. - * - * With the above tolerance individual `npm run test-image` and - * `npm run test-image -- mock.json` give the same result. - * - * Further investigation is needed. - */ - - var gmOpts = { - file: imagePaths.diff, - highlightColor: 'purple', - tolerance: TOLERANCE - }; - - gm.compare( - imagePaths.test, - imagePaths.baseline, - gmOpts, - onEqualityCheck - ); - } - - function onEqualityCheck(err, isEqual) { - if(err) { - common.touch(imagePaths.diff); - log(err); - return cb(false, mockName); - } - if(isEqual) { - fs.unlinkSync(imagePaths.diff); - } - - cb(isEqual, mockName); - } - - // 525 means a plotly.js error - function onResponse(response) { - if(+response.statusCode === 525) { - log('plotly.js error'); - return cb(false, mockName); - } - } - - // this catches connection errors - // e.g. when the image server blows up - function onError(err) { - log(err); - return cb(false, mockName); - } - - request(requestOpts) - .on('error', onError) - .on('response', onResponse) - .pipe(saveImageStream) - .on('close', checkImage); -} diff --git a/test/image/export_test.js b/test/image/export_test.js index 69ac40d3a01..c84981014e9 100644 --- a/test/image/export_test.js +++ b/test/image/export_test.js @@ -1,21 +1,23 @@ var fs = require('fs'); var sizeOf = require('image-size'); +var run = require('./assets/run'); var getMockList = require('./assets/get_mock_list'); -var getRequestOpts = require('./assets/get_image_request_options'); var getImagePaths = require('./assets/get_image_paths'); -// packages inside the image server docker -var request = require('request'); -var test = require('tape'); +var argv = require('minimist')(process.argv.slice(2), { + 'boolean': ['help', 'debug'], + 'alias': { + help: ['h', 'info'] + }, + 'default': { + help: false, + debug: false + } +}); -// image formats to test -// -// N.B. 'png' is tested in `npm run test-image, no need to duplicate here -// -// N.B. 'jpeg' and 'webp' lead to errors because of the image server code -// is looking for Plotly.Color which isn't exposed anymore -var FORMATS = ['svg', 'pdf', 'eps']; +// no 'png' as it is tested in `compare_pixels_test.js` +var FORMATS = ['jpeg', 'webp', 'svg', 'pdf', 'eps']; // non-exhaustive list of mocks to test var DEFAULT_LIST = [ @@ -30,109 +32,70 @@ var HEIGHT = 500; // minimum satisfactory file size [in bytes] var MIN_SIZE = 100; -// wait time between each test batch -var BATCH_WAIT = 500; - -// number of tests in each test batch -var BATCH_SIZE = 5; - -/** - * Image export test script. - * - * Called by `tasks/test_export.sh in `npm run test-export`. - * - * CLI arguments: - * - * 1. 'pattern' : glob determining which mock(s) are to be tested - * - * Examples: - * - * Run the export test on the default mock list (in batch): - * - * npm run test-image - * - * Run the export on the 'contour_nolines' mock: - * - * npm run test-image -- contour_nolines - * - * Run the export test on all gl3d mocks (in batch): - * - * npm run test-image -- gl3d_* - */ - -var pattern = process.argv[2]; -var mockList = pattern ? getMockList(pattern) : DEFAULT_LIST; - -if(mockList.length === 0) { - throw new Error('No mocks found with pattern ' + pattern); +if(argv.help) { + console.log([ + 'Image export test script.', + '', + 'The tests below determine whether the images are properly', + 'exported by (only) checking the file size of the generated images.', + '', + 'Called by `tasks/test_export.sh in `npm run test-export`.', + '', + 'CLI arguments:', + '', + '1. \'pattern\' : glob determining which mock(s) are to be tested', + '', + 'Examples:', + '', + 'Run the export test on the default mock list (in batch):', + '', + ' npm run test-image', + '', + 'Run the export on the \'contour_nolines\' mock:', + '', + ' npm run test-image -- contour_nolines', + '', + 'Run the export test on all gl3d mocks (in batch):', + '', + ' npm run test-image -- gl3d_*', + ].join('\n')); + process.exit(0); } -// main -runInBatch(mockList); - -function runInBatch(mockList) { - var running = 0; - - test('testing image export formats', function(t) { - t.plan(mockList.length * FORMATS.length); - - for(var i = 0; i < mockList.length; i++) { - for(var j = 0; j < FORMATS.length; j++) { - run(mockList[i], FORMATS[j], t); - } - } - }); - - function run(mockName, format, t) { - if(running >= BATCH_SIZE) { - setTimeout(function() { - run(mockName, format, t); - }, BATCH_WAIT); - return; - } - running++; - - // throttle the number of tests running concurrently - - testExport(mockName, format, function(didExport, mockName, format) { - running--; - t.ok(didExport, mockName + ' should be properly exported as a ' + format); +var _mockList = argv._.length > 0 ? getMockList(argv._) : DEFAULT_LIST; +var mockList = []; +var input = []; + +_mockList.forEach(function(mockName) { + FORMATS.forEach(function(format) { + mockList.push(mockName + '.' + format) + input.push({ + figure: getImagePaths(mockName).mock, + format: format, + width: WIDTH, + height: HEIGHT }); - } -} - -// The tests below determine whether the images are properly -// exported by (only) checking the file size of the generated images. -function testExport(mockName, format, cb) { - var specs = { - mockName: mockName, - format: format, - width: WIDTH, - height: HEIGHT - }; + }); +}); - var requestOpts = getRequestOpts(specs), - imagePaths = getImagePaths(mockName, format), - saveImageStream = fs.createWriteStream(imagePaths.test); +run(mockList, input, argv, function write(info, done) { + var mockName = mockList[info.itemIndex]; + var format = info.format; + var paths = getImagePaths(mockName, format); - function checkExport(err) { - if(err) throw err; + fs.writeFile(paths.test, info.body, function(err) { + if(err) return done(err); var didExport; - if(format === 'svg') { - var dims = sizeOf(imagePaths.test); - didExport = (dims.width === WIDTH) && (dims.height === HEIGHT); - } - else { - var stats = fs.statSync(imagePaths.test); + if(format === 'pdf' || format === 'eps') { + var stats = fs.statSync(paths.test); didExport = stats.size > MIN_SIZE; + } else { + var dims = sizeOf(paths.test); + didExport = (dims.width === WIDTH) && (dims.height === HEIGHT); } - cb(didExport, mockName, format); - } - - request(requestOpts) - .pipe(saveImageStream) - .on('close', checkExport); -} + done(didExport ? '' : format); + }); +}); diff --git a/test/image/make_baseline.js b/test/image/make_baseline.js index fea40dfc082..2149e52473d 100644 --- a/test/image/make_baseline.js +++ b/test/image/make_baseline.js @@ -1,81 +1,64 @@ var fs = require('fs'); +var run = require('./assets/run'); var getMockList = require('./assets/get_mock_list'); -var getRequestOpts = require('./assets/get_image_request_options'); var getImagePaths = require('./assets/get_image_paths'); -// packages inside the image server docker -var request = require('request'); - -// wait time between each baseline generation -var QUEUE_WAIT = 10; - -/** - * Baseline image generation script. - * - * Called by `tasks/baseline.sh in `npm run baseline`. - * - * CLI arguments: - * - * 1. 'pattern' : glob determining the baseline(s) to be generated - * - * Examples: - * - * Generate or (re-generate) all baselines (in queue): - * - * npm run baseline - * - * Generate or (re-generate) the 'contour_nolines' baseline: - * - * npm run baseline -- contour_nolines - * - * Generate or (re-generate) all gl3d baseline (in queue): - * - * npm run baseline -- gl3d_* - * - */ -var pattern = process.argv[2]; -var mockList = getMockList(pattern); +var argv = require('minimist')(process.argv.slice(2), { + 'boolean': ['queue', 'help', 'debug'], + 'string': ['parallel-limit'], + 'alias': { + help: ['h', 'info'] + }, + 'default': { + queue: false, + help: false, + debug: false, + 'parallel-limit': 4 + } +}); -if(mockList.length === 0) { - throw new Error('No mocks found with pattern ' + pattern); +if(argv.help) { + console.log([ + 'Baseline image generation script.', + '', + ' Called by `tasks/baseline.sh in `npm run baseline`', + '', + ' CLI arguments:', + '', + ' 1. \'pattern\' : glob determining the baseline(s) to be generated', + '', + ' Examples:', + '', + ' Generate or (re-generate) all baselines (in queue):', + '', + ' npm run baseline', + '', + ' Generate or (re-generate) the \'contour_nolines\' baseline:', + '', + ' npm run baseline -- contour_nolines', + '', + ' Generate or (re-generate) all gl3d baseline (in queue):', + '', + ' npm run baseline -- gl3d_*', + '' + ].join('\n')); + process.exit(0); } -// main -runInQueue(mockList); - -function runInQueue(mockList) { - var index = 0; - - run(mockList[index]); - - function run(mockName) { - makeBaseline(mockName, function() { - console.log('generated ' + mockName + ' successfully'); +var mockList = getMockList(argv._); +var input = mockList.map(function(m) { return getImagePaths(m).mock; }); - index++; - if(index < mockList.length) { - setTimeout(function() { - run(mockList[index]); - }, QUEUE_WAIT); - } - }); - } -} - -function makeBaseline(mockName, cb) { - var requestOpts = getRequestOpts({ mockName: mockName }), - imagePaths = getImagePaths(mockName), - saveImageStream = fs.createWriteStream(imagePaths.baseline); +run(mockList, input, argv, function write(info, done) { + var mockName = mockList[info.itemIndex]; + var imgData = info.body; + var paths = getImagePaths(mockName); - function checkFormat(err, res) { - if(err) throw err; - if(res.headers['content-type'] !== 'image/png') { - throw new Error('Generated image is not a valid png'); + fs.writeFile(paths.baseline, imgData, function(err) { + if(err) { + done('error while saving ' + mockName + ' test image'); + } else { + done(); } - } - - request(requestOpts, checkFormat) - .pipe(saveImageStream) - .on('close', cb); -} + }); +});