GithubHelp home page GithubHelp logo

maenu / grunt-template-jasmine-istanbul Goto Github PK

View Code? Open in Web Editor NEW
95.0 95.0 26.0 1012 KB

Code coverage template mix-in for grunt-contrib-jasmine, using istanbul

License: MIT License

JavaScript 100.00%

grunt-template-jasmine-istanbul's People

Contributors

benweatherman avatar davidlinse avatar gyandeeps avatar kayhadrin avatar kr3l avatar larsthorup avatar llacroix avatar maenu avatar mebusw avatar simpleigh avatar zubairov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

grunt-template-jasmine-istanbul's Issues

Intermittent missing coverage output

I am experiencing intermittent coverage output missing. I have debugged it down to the point where the reporter.js is being included in the _SpecRunner.html, but the code does not get executed.

The Jasmine reporter is consistent throughout the inconsistencies.

I am able to reproduce this inconsistency in CentOS but unable to reproduce this in OSX.

The libraries/binaries are the same version across both systems.

      connect: {
            options: {
                base: ['.'],
                debug: false
            },
            coverage: {
                options: {
                    protocol: 'http',
                    hostname: 'localhost',
                    port: 9002,
                    middleware: function(connect, options) {
                        var src = [];
                        grunt.file.expand(grunt.config.get('jasmine.coverage.src')).forEach(function(file) {
                            src.push('/' + file);
                        });
                        var staticFiles = connect.static(String(options.base));
                        return [
                            function(request) {
                                if (src.indexOf(request.url) > -1) {
                                    // redirect to instrumented source
                                    request.url = '/.grunt/grunt-contrib-jasmine' + request.url;
                                }
                                return staticFiles.apply(this, arguments);
                            }
                        ];
                    }
                }
            }
        },

        jasmine: {
            coverage: {
                src: ['src/**/*.js'],
                options: {
                    specs: 'test/jasmine/spec/**/*.js',
                    host: '<%= connect.coverage.options.protocol %>://<%= connect.coverage.options.hostname %>:<%= connect.coverage.options.port %>/',
                    junit: {
                        path: 'build/junit/'
                    },
                    keepRunner: false,
                    template: require('grunt-template-jasmine-istanbul'),
                    templateOptions: {
                        coverage: 'build/coverage/coverage.json',
                        report: [{
                            type: 'html',
                            options: {
                                dir: 'build/coverage/html'
                            }
                        }],
                        replace: false,
                        template: require('grunt-template-jasmine-requirejs'),
                        templateOptions: {
                            version: 'src/lib/requirejs/require.js',
                            requireConfigFile: ['test/require.config.js'],
                            requireConfig: {
                                baseUrl: 'src/js'
                            }
                        }
                    }
                }
            }
        },

Local NPM module not found warning

I get the following warning after having installed this task and when running any grunt task:

>> Local Npm module "grunt-template-jasmine-istanbul" not found. Is it installed?
>> Local Npm module "grunt-template-jasmine-requirejs" not found. Is it installed?

The task then continues as normal e.g. even the jasmine task which references both of these seems to work.

    jasmine: {
        options: {
            specs: 'test/spec/**/*.js',
            //helpers : 'test/helpers/**/*.js',
            vendor : [],
            template: require('grunt-template-jasmine-requirejs')
        },
        app: {
            src: '<%= config.app %>/js/**/*.js'
        },
        coverage : {
            src: '<%= config.app %>/js/**/*.js',
            options : {
                template : require('grunt-template-jasmine-istanbul'),
                templateOptions: {
                    coverage: 'test/reports/coverage.json',
                    report: 'test/reports/coverage'
                }
            }
        }
    },

Any ideas what causes the initial warning?

Dependency version ranges are to lax

#36 has shown that the restrictions on dependency versions are too lax. As @larsthorup has pointed out >= is prone to breaking this package when a dependency introduces breaking changes. We need to use 1.2.x or ~1.2.3 or ^1.2.3.

The problems of paths

I just noticed that @kr3l in his/her fork and @cloudchen in his/her fork did exactly the same thing: adjust the absolute path of the added reporter.

I made it an absolute path because it was the easiest thing to do and it never caused me any problems. So I guess there is a real issue with this for you. Could one of you tell me what the benefits of using a relative path over an absolute path is in this case?

exports.process function works incorrectly if instrumentedSource contains "parent directory" pattern

Hi,
We are using grunt-template-jasmine-istanbul in dash.js project and we recently faced the following issue:
In scr/main/js/template.js there is exports.process function. It has a check at line #193:

    if (!grunt.file.isMatch(files, instrumentedSource)) {
        return;
    }

Where var files = context.options.files || '**/*';
 
If files = '**/*' and instrumentedSource contains a "parent directory" pattern, e.g. '../someFile.js' the result of the grunt.file.isMatch function is always false. Thus, the function always returns right after the check and never goes farther.
 
We were able to fix it locally this way:
• Replace the pattern with '*.*'
• Add {matchBase: true} option as a first parameter of isMatch function

We found out that the issue was introduced by this commit:
d2212fb

Multiple coverage reports output for multitask

I am taking advantage of the multitask functionality of grunt that grunt-contrib-jasmine supports to separate each spec file into its own task so that each set of vendor dependencies is isolated.

This template treats each task as a separate coverage report, which is a reasonable default behavior, but it would be useful to me to be able to defer the report until after all the tasks have finished and allow the report to accrue into a more traditional coverage report.

It would be nice to have a config option like multitaskReport.

Can't find variable: require

I probably missed something, thx for your help...

I am trying to test and cover a simple js file (a future node module) and following the simple example, I get this error :

$ grunt test
>> Local Npm module "grunt-template-jasmine-istanbul" not found. Is it installed?

Running "jasmine:coverage" (jasmine) task
Testing jasmine specs via PhantomJS

>> ReferenceError: Can't find variable: require at
>> xxxxxxxxxxxxxxxxxxx\.grunt\grunt-contrib-jasmine\xxxxxxxx.js:9
>> ReferenceError: Can't find variable: require at
>> xxxxxxxxxxxxxxxxxxx\spec\xxxxxxxx.spec.js:3
Warning: No specs executed, is there a configuration error? Use --force to continue.

Aborted due to warnings.

First of all, I do not understand why it tells me : Local Npm module "grunt-template-jasmine-istanbul" not found, because this module is properly installed locally :

$ npm list --depth=0                                                                       
[email protected]       
├── [email protected]                                                                            
├── [email protected]                                                            
├── [email protected]                                                            
├── [email protected]                                                              
├── [email protected]                                                                      
├── [email protected]                                                  
├── [email protected]                                                                   
├── [email protected]                                                                 
├── [email protected]                                                                           
├── [email protected]                                                                            
└── [email protected]                

$ npm list -g --depth=0
xxxxxxxxxxxxxxxxxxx\npm
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]                                                       

And I do not understand why I get the ReferenceError about the require method neither. require is supposed to be a native node method, no ?

What did I do wrong ?

problems loading the reporter

f01289d introduces a new way of loading the reporter. The commit message says '__dirname gives problems'

Unfortunately the new way of loading with a static path to node_modules also has its own problems because in my case, grunt-template-jasmine-istanbul is loaded indirectly. It's in the node_modules folder of another module. So ./node_modules here actually points to the wrong path in my project, whereas __dirname works correctly.

I can't upgrade past 2.0.0 because if this issue.

There is a question about Istanbul, hope to get help

the tool is very nice! but coverage inaccuracy.
Anonymous function and closure not covered like this :

 (function() {  ....[ can‘t coverage code ] ... })();
or
define(function() { 
   ....[ can‘t coverage code ] ... 
})();

image

Source Maps

I am doing a lot of debugging in the HTML runner that jasmine generates, and am slowed down by the instrumentation injected into the source files.

I am planning to see if I can get a source mapped instrumenter working with this library.

The alternative is running the tests a second time with the coverage template turned off so that jasmine generates a runner with the original source files. That is not desirable, but maybe there is a simpler solution I am not thinking of.

Web Worker coverage isn't showing in the coverage report

Firstly, this tool has been really helpful for integrating Istanbul into my project. Thanks for taking the time to maintain it.

I've been using this for a few months with grunt-contrib-jasmine and recently tried using it to get coverage reports on a web worker.

Given the following scenario Istanbul is showing no coverage for worker.js, however the worker is being called and the test is passing.

worker.js:

self.addEventListener('message', function(e) {

      self.postMessage(e.data + " world"); 

}, false);

testSpec.js:

describe('worker test', function() {

    it('should pass', function(done) {

        var worker = new Worker('worker.js');

        worker.addEventListener('message', function (e) {
                expect(e.data).toEqual('hello world');
                done();
        });

        worker.postMessage('hello');

    });

});

GruntFile.js:

module.exports = function(grunt) {

        grunt.initConfig({
            jasmine: {
                coverage: {
                    src: ['worker.js'],
                    options: {
                        specs: 'testSpec.js',
                        template: require('grunt-template-jasmine-istanbul'),
                        templateOptions: {
                            coverage: 'bin/coverage.json',
                            report: [
                                {
                                    type: 'html',
                                    options: {
                                        dir: 'bin/html'
                                    }
                                },
                                {
                                    type: 'cobertura',
                                    options: {
                                        dir: 'bin/cobertura'
                                    }
                                },
                                {
                                    type: 'text-summary'
                                }
                            ]
                        }
                    }
                }
            }
        });

        grunt.loadNpmTasks('grunt-contrib-jasmine');

        grunt.registerTask('default', ['jasmine'])

};

This results in the following:

screen shot 2016-02-23 at 11 13 21

screen shot 2016-02-23 at 11 11 47

Is this expected? And if so, is there any way of capturing the coverage of a Web Worker using grunt-template-jasmine-istanbul?

If spec file have syntax errors it's skipped

I've just notice that when file have errors running jasmine:coverage will silently ignore the file with no error indication (I've lost 30 minutes to figure out why my spec is not included). I think that it would be better if there is error of some sort that indicate wrong syntax in a file.

any way to make this faster?

I have a project that is growing. We want all our JS in one project so that we can run sonar against it and get metrics for code duplication. Doing this on one project is easier than across multiple projects.

Right now we have about 40 specs and 200 tests and growing. It takes just over a minute to run the tests with coverage. Without coverage it takes about 30 seconds.

Is there any way to run the coverage so that it forks for each spec? Or would this be a jasmine thing?

Errors building Gruntfile.js

Hi I seem to be having a problem running the gruntfile.js

This is what I get

root@dev-NW504:/var/www# grunt --config Gruntfile.js --force
Running "jshint:all" (jshint) task

0 files linted. Please check your ignored files.

Running "connect:default_options" (connect) task
Started connect web server on http://0.0.0.0:8000

Running "jasmine:tests" (jasmine) task
Testing jasmine specs via phantom

ReferenceError: Can't find variable: coverage at
http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/grunt-template-jasmine-istanbul/reporter.js:17
http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/jasmine.js:1788
http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/jasmine.js:2160
http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/jasmine.js:2144
http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/jasmine.js:2106
http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/jasmine.js:2049
http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/jasmine.js:2145
http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/jasmine.js:802
http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/jasmine-helper.js:23

Warning: PhantomJS timed out, possibly due to an unfinished async spec. Used --force, continuing.

I'm pretty new to all this and its the first time I actually use grunt so I will need you to please explain the problem in layman terms.

Changing location of SpecRunner breaks code coverage

If I change the outfile to something like this:

outfile: 'target/_SpecRunner.html'

Then the code coverage starts looking for all my javascript one directory above where it is actually located. The resulting error messages look like this:

Warning: Unable to read "../javascript/services/englishStrings.js" file (Error code: ENOENT). Use --force to continue.

Anyone else getting this issue?
Thanks!
Rob

Option to exclude some files from instrumenting

I want to exclude some files from instrumenting. I can't use 'vendors' or 'helpers' because these files should be placed in particular position in code (in my case, after instrumented code)

RequireJS template - poor error reporting

It seems that if there is a problem instrumenting files, the only error message reported is:

Warning: PhantomJS timed out, possibly due to an unfinished async spec. Use --force to continue.

to make matters more difficult, the specrunner.html file that gets generated will not display any errors at all unless Raise Exceptions is set to true. And even then, all I get is:

TypeError: this.expectationResultFactory is not a function

Which doesn't help me at all.

Now, all of this is down to configuration problems. However, what was problematic for me is that my Gruntfile is quite large and so sometimes it's not always easy to spot the fact that I missed something. And as the error message that ultimately gets reported to me by Grunt either locally or by the CI server is that it's possibly due to an unfinished async spec, the first thing I (and I'm sure many others) did was to check all my tests. In a large project, this is time consuming.

Example failing project: https://github.com/alex-dow/istanbul-error-reporting-test

Is this project dead?

Is this project dead? No activity since Feb 2014.

I have been waiting some PR to get merged but I have not seen any activity.
Because of the above reason, I am thinking of creating my own fork and releasing it. And it would include all the PR code right now pending here.

Any objections or comments?

Trust me I really want this project to become alive again so I don't have to do the fork work.

UNMET PEER DEPENDENCY

Hallo,
I updated this module via npm and faced the following warning.

npm install -g grunt-template-jasmine-istanbul --production
C:\npm
+-- UNMET PEER DEPENDENCY grunt@^1.0.1
+-- UNMET PEER DEPENDENCY grunt-contrib-jasmine@^1.0.3
`-- [email protected]

npm WARN [email protected] requires a peer of grunt@^1.0.1 but none was installed.
npm WARN [email protected] requires a peer of grunt-contrib-jasmine@^1.0.3 but none was installed.

my insatlled grunt version is 1.0.1
my insatlled grunt-contrib-jasmine version is 1.1.0

npm version is 3.10.10
node version is 6.11.1

perhaps you could adjust your dependencies.

Regards
Michael

Jasmine waitsFor issue

With istanbul trying to use runs -> waitsFor -> runs, but it seems it's not waiting for condition in waitsFor and directly runs the last block. anyone seen similar issue or has any explanation? Whats the best way to use timeouts with istanbul then?

RequireJS issue

I had my Jasmine tests running fine with requireJS. I use connect to create the webserver and run the tests.

When I tried to add the istanbul i get that:

>> ReferenceError: Can't find variable: __coverage__ at
>> http:\127.0.0.1:7788\node_modules\grunt-template-jasmine-istanbul\src\main\js\reporter.js:4
>> http:\127.0.0.1:7788\.grunt\grunt-contrib-jasmine\jasmine.js:1788
>> http:\127.0.0.1:7788\.grunt\grunt-contrib-jasmine\jasmine.js:2160
>> http:\127.0.0.1:7788\.grunt\grunt-contrib-jasmine\jasmine.js:2144
>> http:\127.0.0.1:7788\.grunt\grunt-contrib-jasmine\jasmine.js:2106
>> http:\127.0.0.1:7788\.grunt\grunt-contrib-jasmine\jasmine.js:2092
>> http:\127.0.0.1:7788\.grunt\grunt-contrib-jasmine\jasmine.js:2478
>> http:\127.0.0.1:7788\.grunt\grunt-contrib-jasmine\jasmine.js:2522
>> http:\127.0.0.1:7788\.grunt\grunt-contrib-jasmine\jasmine.js:2106
>> http:\127.0.0.1:7788\.grunt\grunt-contrib-jasmine\jasmine.js:2092
>> http:\127.0.0.1:7788\.grunt\grunt-contrib-jasmine\jasmine.js:2350
>> http:\127.0.0.1:7788\.grunt\grunt-contrib-jasmine\jasmine.js:2377
>> http:\127.0.0.1:7788\.grunt\grunt-contrib-jasmine\jasmine.js:2106
>> http:\127.0.0.1:7788\.grunt\grunt-contrib-jasmine\jasmine.js:2086

how can i create single coverage for multiple jasmin test?

if i run coverage for single test then its working file.

Now if i need a single coverage for multiple jasmine test then how can i do that?

jasmine: {
        blocked: {
            src: source,
            options: {
                vendor: [
                    'http://code.jquery.com/jquery-1.11.0.js',
                    'tests/lib/jasmine-jquery.js',
                    'tests/plugins.js',
                    "thirdparty.js"
                ],
                specs: 'tests/spec/*Blocked.js',
                phantomScript:'phantomjs/script/blockgpt.js',
                template: require('grunt-template-jasmine-istanbul'),
                templateOptions: {
                    coverage: 'report/coverage/coverage.json',
                    report: 'report/coverage',
                }
            }
        },
        coverage:{
            src: source,
            options: {
                vendor: [
                    'http://code.jquery.com/jquery-1.11.0.js',
                    'tests/lib/jasmine-jquery.js',
                    'tests/plugins.js',
                    "thirdparty.js"
                ],
                specs: ['tests/spec/*Spec.js'],
                template: require('grunt-template-jasmine-istanbul'),
                templateOptions: {
                    coverage: 'report/coverage/coverage.json',
                    report: 'report/coverage',
                    thresholds: {
                        lines: 70,
                        statements: 70,
                        branches: 50,
                        functions: 50
                    }
                }
            }
        }
    },

please guide me if that is possible with this plug-ins.

regards
Mithun mandal

please make a release

Hi,
I would like a dependent project to be able to pick up a version of this library with puppeteer support. Hence, it would be very helpful for me if a release could be tagged. Can that be done?

How to use this template with requirejs?

As this template only works for normal js code rather than AMD module, is there any plan for support AMD module with requirejs or is it possible to work with another template which is grunt-template-jasmine-requirejs?

Invalid reporter.js location on Windows breaks Jasmine

When mixing 'grunt-template-jasmine-istanbul' with 'grunt-template-jasmine-requirejs' under Windows, then Jasmine execution breaks due to an invalid reporter.js URI.

The _SpecRunner.html points to a '.grunt\grunt-contrib-jasmine\grunt-template-jasmine-istanbul\reporter.js' (mind the backslashes!) that can't be resolved by RequireJS.

Workaround: Add a mapping to the RequireJS config like

template: require('grunt-template-jasmine-requirejs'),
templateOptions: {
    requireConfig: {
        ...
        map: {
          '*': {
            '.gruntgrunt-contrib-jasminegrunt-template-jasmine-istanbul\reporter.js':
                '.grunt/grunt-contrib-jasmine/grunt-template-jasmine-istanbul/reporter.js'
          }
        }
    }
}

Can not construct jasmine reporter?

I get this every time I run code coverage. It only started happening recently.

TypeError: 'undefined' is not a constructor (evaluating 'new jasmine.Reporter()') at
.grunt/grunt-contrib-jasmine/grunt-template-jasmine-istanbul/reporter.js:10
.grunt/grunt-contrib-jasmine/grunt-template-jasmine-istanbul/reporter.js:22

Issue with running RequireJS

Heya, thanks for the comments on gruntjs/grunt-contrib-jasmine#59 but that didn't work for me :-(

I get the error...

Running "jasmine:src" (jasmine) task
Testing jasmine specs via phantom
>> Error: Script error
>> http://requirejs.org/docs/errors.html#scripterror at
>> .grunt/grunt-contrib-jasmine/require.js:31 
>> .grunt/grunt-contrib-jasmine/require.js:14 z
>> .grunt/grunt-contrib-jasmine/require.js:31 

...the code I have...

template: require('grunt-template-jasmine-istanbul'),
templateOptions: {
    coverage: './reports/coverage.json',
    report: './reports/coverage',

    template: require('grunt-template-jasmine-requirejs'),
    templateOptions: {
        requireConfig: {
            baseUrl: './app/',
            mainConfigFile: './app/main.js'
        }
    }
}

Add collaborators?

@gyandeeps asked in #37 what I think about adding collaborators to this project. I thought about this earlier but there was no one else asking for it, so I didn't spend too much time on this thought. @gyandeeps and others' recent activity has shown that there are actually people relying on this project in productive environments which I think is cool, but brings a bit of responsibility.

I currently do not have the resources to do much more than fixing bugs (well, actually I am just merging your pull requests, so thanks for that ;)). Since I am currently also not actively developing with JavaScript, I am currently not using this project and therefore do not see how I would be able to provide more resources for it in the near future. So currently this project has a maintenance problem. I certainly don't want this project to die since it still feels like my baby and it makes me quite proud to have contributed something to the open source community that is actually used.

Since this is the first project of me that gathered this kind of attention, I do not know how to handle such a situation. A bunch of questions are going through my head to which if have no final answers:

How do I manage collaboration with people I do not know?
I want to know the collaborators to some extent. Who are they, where do they come from, what are they working on, what is their motivation? On which constraints do I select collaborators?

What happens when the collaborators and I do not agree on a specific issue?
I want to stay some kind of gate keeper, since I think this is the easiest way to keep quality in all aspects at a constant hight level. My fear is that collaborators might want to change too much which might lead to a second system effect. On the other hand, a gate-keeper is a bottle-neck and might not improve the situation in an effective way. I think we need to define a clear scope of what this project includes and what it does not. Additionally we need a guideline on how collaboration works, e.g. bugs are fixed by adding tests and making sure every other test still passes. I could imagine myself in a role where bugs are fixed and new patch versions released by collaborators autonomously, but I have a veto right for enhancements and new features.

Now I would like to hear from you what you think about adding collaborators. Am I just a dictator who is afraid of changing the status quo because he could lose his position? Is there no need for collaborators? Do you have any advice/links on how to manage collaboration in an open source project? What are possible collaboration models, what are their characteristics, trade-offs and experiences? And last but not least: Who would want to be a collaborator?

Support Headless Chrome / Puppeteer

grunt-contrib-jasmine moved to headless chrome in v2.0 but this template seems to assume phantomjs which breaks when compiling the spec runner.
Any way this could be updated to work on headless chrome? (and work with the new grunt-contrib-jasmine)

test:template failed on Windows because of path seperator

the path seperator is not OS-agnostic

Running "nodeunit:template" (nodeunit) task
Testing template.js....FF...
>> template - instrumentation - shouldIncludeReporter
>> Message: should be the coverage reporter
>> Error: 'C:\\work\\toys\\grunt-template-jasmine-istanbul\\src\\main\\js/report
er.js' == 'C:\\work\\toys\\grunt-template-jasmine-istanbul\\src\\main\\js\\repor
ter.js'
>> at Object.exports.template.instrumentation.shouldIncludeReporter (src\test\js
\template.js:123:9)
>> at Object.exports.template.instrumentation.setUp (src\test\js\template.js:114
:4)

>> template - instrumentation - shouldInstrumentSource
>> Message: should store instrumented in temp directory
>> Error: '.grunt\\temp\\src\\test\\js\\Generator.js' == '.grunt/temp/src/test/j
s/Generator.js'
>> at Object.exports.template.instrumentation.shouldInstrumentSource (src\test\j
s\template.js:130:9)
>> at Object.exports.template.instrumentation.setUp (src\test\js\template.js:114
:4)

Warning: 2/14 assertions failed (566ms) Use --force to continue.

Aborted due to warnings.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.