The original implementation tries to intercept events from the chart internal iframe, which ones failing on Chrome 60. Checking internals doesn't seem the best approach, instead we could consider that a chart has been resized after the resize method has been called and processed. So let's hook `Chart.resize` and callback once it's done.
dist: trusty
addons:
+ chrome: stable
firefox: latest
- apt:
- sources:
- - google-chrome
- packages:
- - google-chrome-stable
-
# IMPORTANT: scripts require GITHUB_AUTH_TOKEN and GITHUB_AUTH_EMAIL environment variables
# IMPORTANT: scripts has to be set executables in the Git repository (error 127)
acquireChart: true
Chart: true
moment: true
+ waitForResize: true
# http://eslint.org/docs/rules/
rules:
window.acquireChart = acquireChart;
window.releaseChart = releaseChart;
+ window.waitForResize = utils.waitForResize;
window.createMockContext = createMockContext;
// some style initialization to limit differences between browsers across different plateforms.
};
}
+function waitForResize(chart, callback) {
+ var override = chart.resize;
+ chart.resize = function() {
+ chart.resize = override;
+ override.apply(this, arguments);
+ callback();
+ };
+}
+
module.exports = {
injectCSS: injectCSS,
createCanvas: createCanvas,
acquireChart: acquireChart,
releaseChart: releaseChart,
- specsFromFixtures: specsFromFixtures
+ specsFromFixtures: specsFromFixtures,
+ waitForResize: waitForResize
};
describe('Chart', function() {
- function waitForResize(chart, callback) {
- var resizer = chart.canvas.parentNode._chartjs.resizer;
- var content = resizer.contentWindow || resizer;
- var state = content.document.readyState || 'complete';
- var handler = function() {
- Chart.helpers.removeEvent(content, 'load', handler);
- Chart.helpers.removeEvent(content, 'resize', handler);
- setTimeout(callback, 50);
- };
-
- Chart.helpers.addEvent(content, state !== 'complete' ? 'load' : 'resize', handler);
- }
-
// https://github.com/chartjs/Chart.js/issues/2481
// See global.deprecations.tests.js for backward compatibility
it('should be defined and prototype of chart instances', function() {
describe('Platform.dom', function() {
- function waitForResize(chart, callback) {
- var resizer = chart.canvas.parentNode._chartjs.resizer;
- var content = resizer.contentWindow || resizer;
- var state = content.document.readyState || 'complete';
- var handler = function() {
- Chart.helpers.removeEvent(content, 'load', handler);
- Chart.helpers.removeEvent(content, 'resize', handler);
- setTimeout(callback, 50);
- };
-
- Chart.helpers.addEvent(content, state !== 'complete' ? 'load' : 'resize', handler);
- }
-
describe('context acquisition', function() {
var canvasId = 'chartjs-canvas';