Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
generate plotly.js images with the karma runner
node_modules

Karma plotly.js

Generate plotly.js images with the karma runner.

How to run this thing?

1. Setup
  • Clone this gist
  • cd into it
  • Run npm i
2. Generate a graph
npm start

and 🍻.

'use strict';
var Plotly = require('plotly.js');
function main(karma, window) {
karma.info({total: 1});
var data = [{
x: [1,2,3],
y: [2,1,2]
}];
Plotly.plot(createGraphDiv(), data).then(function(gd) {
var svg = Plotly.Snapshot.toSVG(gd);
karma.result({
success: true,
img: svg
});
karma.complete({});
});
}
function createGraphDiv() {
var graphDiv = document.createElement('div');
graphDiv.id = 'graph';
document.body.appendChild(graphDiv);
return graphDiv;
}
// karma-custom framework
window.karmaCustomEnv = {};
window.karmaCustomEnv.execute = main;
function func(config) {
config.set(func.defaultConfig);
}
func.defaultConfig = {
// use chrome launcher
browsers: ['Chrome'],
basePath: '.',
files: ['./index.js'],
frameworks: ['browserify', 'custom'],
reporters: ['custom'],
// browserify the index
preprocessors: { './index.js': ['browserify'] },
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: true
};
module.exports = func;
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
{
"name": "karma-plotly.js",
"version": "1.0.0",
"description": "generate plotly.js images with the karma runner",
"main": "index.js",
"scripts": {
"postinstall": "node postinstall.js",
"start": "karma start karma.conf.js"
},
"author": "Étienne Tétreault-Pinard",
"license": "MIT",
"dependencies": {
"browserify": "^13.0.0",
"fs-extra": "^0.26.5",
"karma": "^0.13.21",
"karma-browserify": "^5.0.1",
"karma-chrome-launcher": "^0.2.2",
"karma-custom": "^1.1.9",
"plotly.js": "^1.5.2"
}
}
var path = require('path');
var fs = require('fs-extra');
var fakeModule = 'karma-custom-reporter';
var pathToFakeModule = path.join(__dirname, 'node_modules', fakeModule);
var target = path.join(__dirname, 'report.js');
var link = path.join(pathToFakeModule, 'index.js');
fs.mkdirs(pathToFakeModule, function(err) {
if(err) throw err;
fs.symlinkSync(target, link);
});
var fs = require('fs');
var path = require('path');
var reporter = function(baseReporterDecorator, config) {
baseReporterDecorator(this);
var outPath = path.join(__dirname, 'out.svg');
this.specSuccess = function(browser, result) {
var img = result.img;
fs.writeFile(outPath, img, function(err) {
if(err) throw err;
})
};
this.onRunComplete = function(browser, info) {
this.write('\n > written in ' + outPath + '\n');
};
};
reporter.$inject = ['baseReporterDecorator', 'config'];
module.exports = {
'reporter:custom': ['type', reporter]
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.