Giter VIP home page Giter VIP logo

testcafe-reporter-cucumber-json's Introduction

JSON TestCafé Reporter npm version

This is the JSON reporter plugin for TestCafé.

This TestCafé reporter generates JSON files that can be merged and converted to a nice and searchable html report by using multiple-cucumber-html-reporter.

JSON files generated by this reporter have the same schema than those generated by the Cucumber JSON reporter: this is why fixture is translated to Feature and test to Scenario in the final HTML report.

report-header report-overview

To install this TestCafé Reporter

  • run the command:

    npm install --save testcafe-reporter-cucumber-json

Usage

  • add to the TestCafé command-line the following options:

    testcafe chrome ./path-to-tests/*(.js|.testcafe|.ts) --reporter cucumber-json

JSON files will be automatically created in a folder named cucumber-json-reports at the root of your project.

If you need to change this folder, add this option on the TestCafé command-line:

--reporter-json-folder='my-custom-folder'

or add/edit the args section inside the testcafe-reporter-cucumber-json.json configuration file:

  "args": {
    "reportFolder": "my-custom-folder"
  }

or set the environment variable --reporter-json-folder (in this case this variable will take precedence over the command-line option and the configuration file):

process.env['--reporter-json-folder'] = 'my-custom-folder';

At each TestCafé run, this reporter will create a separate JSON file for each browser started by TestCafé.

Each JSON file will be named : [browser name][browser platform][date and time of execution].json.

Examples:

  cucumber-json-reports
  |- Chrome_83_0_4103_116_macOS_10_15_5-2020-07-04T19-44-58-493Z.json
  |- Firefox_78_0_macOS_10_15-2020-07-04T19-44-58-493Z.json
  |- Microsoft_Edge_83_0_478_58_macOS_10_15_5-2020-07-04T19-38-05-688Z.json
  |- Microsoft_Edge_83_0_478_58_macOS_10_15_5-2020-07-04T19-44-58-493Z.json
  |- Safari_13_1_1_macOS_10_15_5-2020-07-04T19-44-58-493Z.json
  |- ...

If you would like to show in the report the App name targeted by your tests, add this option on the TestCafé command-line:

--reporter-app-name='My App'

or add/edit the args section inside the testcafe-reporter-cucumber-json.json configuration file:

  "args": {
    "appName": "My App",
  }

or set the environment variable --reporter-app-name (in this case this variable will take precedence over the command-line option and the configuration file):

process.env['--reporter-app-name'] = 'My App';

And if you need to also show the App version, add this option on the TestCafé command-line:

--reporter-app-version='x.y.z'

or add/edit the args section inside the testcafe-reporter-cucumber-json.json configuration file:

  "args": {
    "appVersion": "x.y.z",
  }

or set the environment variable --reporter-app-version (in this case this variable will take precedence over the command-line option and the configuration file):

process.env['--reporter-app-version'] = 'x.y.z';

To generate the HTML report

The HTML report will merge all the JSON files inside folder cucumber-json-reports into a single HTML file.

  • install multiple-cucumber-html-reporter:

    npm install --save-dev multiple-cucumber-html-reporter (>= v1.18.0)

  • Create a report-generator.js file at the project root:

    const report = require('multiple-cucumber-html-reporter');
    const path = require('path');
    const projectName = path.basename(__dirname);
    const projectVersion = process.env.npm_package_version;
    const reportGenerationTime = new Date().toISOString();
    report.generate({
      reportName: 'TestCafé Report',
      jsonDir: 'cucumber-json-reports',
      reportPath: 'cucumber-json-reports/html',
      openReportInBrowser: true,
      disableLog: true,
      displayDuration: true,
      displayReportTime: true,
      durationInMS: true,
      customData: {
        title: 'Run info',
        data: [
          { label: 'Project', value: `${projectName}` },
          { label: 'Release', value: `${projectVersion}` },
          { label: 'Report Generation Time', value: `${reportGenerationTime}` },
        ],
      },
    });
  • insert the following script in the package.json file:

    "report": "node report-generator.js",
  • run the command npm run report

Tagging

  • Tags enables to filter the html report;
  • Tags are generated dynamically from the:
    • fixture description
    • test description
    • fixture file name (TBD)
    • fixture folder hierarchy (TBD)
    • new t.meta() syntax (TBD)

Tags managment

  • Tags can be managed through the configuration file testcafe-reporter-cucumber-json.json
    • this json file will be created on the first reporter run
  • To discard a tag, add this tag to the noisyTags section of the json configuration file.

Error rendering

  • this reporter will report multiple code frames, one for each file reported in the stacktrace
1) The specified selector does not match any element in the DOM tree.

   Browser: Firefox 59.0.0 / Mac OS X 10.12.0
   Screenshot: /Users/HDO/VSCodeProjects/testcafe-starter/screenshots/2018-05-07_10-39-08/test-2/Firefox_59.0.0_Mac_OS_X_10.12.0/errors/1.png

      13 |
      14 |  const value = inputData.name || "";
      15 |
      16 |  await t
      17 |    .setTestSpeed(config.testcafe.testSpeed)
   --------------------------------------------
    → 18 |    .hover(selector.userNameInputBox)
   --------------------------------------------
      19 |    .expect(selector.userNameInputBox.hasAttribute("disabled")).notOk()
      20 |    .typeText(selector.userNameInputBox, value, {replace: true})
      21 |    .pressKey("tab");
      22 |};
      23 |

      at Object.(anonymous) (/Users/HDO/VSCodeProjects/testcafe-starter/domains/testcafe-sample-page/steps/i-enter-my-name.ts:18:6)
      at (anonymous) (/Users/HDO/VSCodeProjects/testcafe-starter/domains/testcafe-sample-page/steps/i-enter-my-name.ts:7:71)
      at __awaiter (/Users/HDO/VSCodeProjects/testcafe-starter/domains/testcafe-sample-page/steps/i-enter-my-name.ts:3:12)
      at exports.default (/Users/HDO/VSCodeProjects/testcafe-starter/domains/testcafe-sample-page/steps/i-enter-my-name.ts:7:36)


       6 |  if (canExecute === false) {
       7 |    return;
       8 |  }
       9 |  const foundStep = stepMappings[stepName];
      10 |  if (typeof foundStep === "function" ) {
   --------------------------------------------
    → 11 |    await foundStep(stepName);
   --------------------------------------------
      12 |    return;
      13 |  }
      14 |  throw new Error(`Step "${stepName}" is not mapped to an executable code.`);
      15 |}
      16 |export async function given(stepName: GivenStep) {

      at (anonymous) (/Users/HDO/VSCodeProjects/testcafe-starter/step-runner.ts:11:11)
      at (anonymous) (/Users/HDO/VSCodeProjects/testcafe-starter/step-runner.ts:7:71)
      at __awaiter (/Users/HDO/VSCodeProjects/testcafe-starter/step-runner.ts:3:12)
      at executeStep (/Users/HDO/VSCodeProjects/testcafe-starter/step-runner.ts:14:12)
      at Object.(anonymous) (/Users/HDO/VSCodeProjects/testcafe-starter/step-runner.ts:20:9)
      at (anonymous) (/Users/HDO/VSCodeProjects/testcafe-starter/step-runner.ts:7:71)
      at __awaiter (/Users/HDO/VSCodeProjects/testcafe-starter/step-runner.ts:3:12)
      at Object.when (/Users/HDO/VSCodeProjects/testcafe-starter/step-runner.ts:34:12)


      19 |  await  then("no name should be populated");
      20 |  await   and("I cannot submit my feedback on testcafe");
      21 |});
      22 |
      23 |test("Scenario: can send feedback with my name only", async () =) {
   --------------------------------------------
    → 24 |  await  when("I enter my name");
   --------------------------------------------
      25 |  await  then("I can submit my feedback on testcafe");
      26 |});
      27 |
      28 |test("Scenario: send feedback", async () =) {
      29 |  await env.only( "devci");

      at Object.(anonymous) (/Users/HDO/VSCodeProjects/testcafe-starter/features/testcafe-sample-page.spec.ts:24:10)
      at (anonymous) (/Users/HDO/VSCodeProjects/testcafe-starter/features/testcafe-sample-page.spec.ts:7:71)
      at __awaiter (/Users/HDO/VSCodeProjects/testcafe-starter/features/testcafe-sample-page.spec.ts:3:12)
      at test (/Users/HDO/VSCodeProjects/testcafe-starter/features/testcafe-sample-page.spec.ts:23:66)

Screenshot rendering

  • this reporter embeds all screenshots as base 64 images, making the generated json file completely autonomous.

testcafe-reporter-cucumber-json's People

Contributors

dependabot[bot] avatar guiyomh avatar hatem-b avatar hdorgeval avatar natasha-audrey avatar tareqelmasri avatar tomardern avatar

Stargazers

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

Watchers

 avatar  avatar

testcafe-reporter-cucumber-json's Issues

Feature file steps not visible in html report

My steps are not visible in report. I just see my feature file name and scenario name.

Any one face same issue? I just se json don't have any information about the steps but have the scenarion information.

Help will be appriciated
image

Report is not getting the OS and Browser(name & version) information.

Hi there guys,

Thanks for this amazing library.

I am trying to use it in my project but I am getting issues getting the OS and Browser(name & version) information.

I followed all the steps but I am not sure if I should pass those params somewhere else.

Thanks a lot for your support.

Joan.

The provided "cucumber-JSON" reporter does not exist. Check that you have specified the report format correctly.

Hi @hdorgeval,

After installing your Cucumber JSON TestCafe Reporter (beta) npm package. I'm trying to get the HTML report using your given comment testcafe chrome ./path-to-tests/*(.js|.testcafe|.ts) --reporter cucumber-json:reports/report.json --reporter-app-name='My App' --reporter-app-version='x.y.z' but not able to get the report.
It says ERROR: The provided "cucumber-JSON" reporter does not exist. Check that you have specified the report format correctly.

Also, I'm new to tastcafe, So, could you pls help me out? which file need to execute /path-to-tests/*.js ?

Programmatically set reporter-json-folder etc as part of runner object

Via command line the json reporter folder is set by:
--reporter-json-folder='my-custom-folder'
We are trying to run the gherkin-testcafe programmatically and our setup looks like this:
const createTestCafe = require('gherkin-testcafe');
...

let failedCount;
try {
testcafe = await createTestCafe({ host, developerMode: true });
const { server1Info, server2Info } = testcafe.proxy;
logger.log('Ports used: ${server1Info.port}, ${server2Info.port}');
runner = await testcafe.createRunner({ src: './${brand}/' });
failedCount = await runner
.src(['tests/${brand}'])
.concurrency(1)
.browsers(getBrowser(platform, env))
.tags([tags])
.reporter('cucumber-json', join('reports', 'batch${jobnumber}', 'json', 'batch${jobnumber}.json'))
.screenshots({
path: './screenshots/${brand}',
takeOnFails: true,
})
.video('screenshots/video/${brand}', {
singleFile: true,
failedOnly: true,
pathPattern: '${jobnumber}_${brand}_${region}_${platform}.mp4'
})
.run(
{ debugMode, debugOnFail: debugMode }
);
} catch (error) {
logger.log('Test runner error', { error });
process.exit(1)
}
finally {
await testcafe.close();
logger.log('Test runner finished\');
if (failedCount > 0) {
process.exit(1)
}
process.exit(0)
}
jobnumber: is the # of the current run, may include mult versions of the next vars
brand: is one of our brands
region: our brands live in multiple countries
platform: mobile or pc
so we can have www.brand1.com or m.brand1.co.uk
depending on what we want to test.
We need to put the json in a custom folder, hence:
.reporter(cucumber-json, join('reports', batch${jobnumber}, 'json', batch${jobnumber}.json))
but the command line specifies a directory not a file. What we end up with because our
testcafe-reporter-cucumber-json.json has the arg:
"reportFolder": "reports"
Is all the json gets written to the reports directory and then when I have to generate a report, I delete the reports/batch1234/json/batch1234.json file, because its empty, copy all the latest jsons from the report root to the batch1234/json directory and then compile the report.
The bad thing happening is that we are only getting one "good" json on the report root, the batch1234.json is blank. So how do i correctly set the reporter-json-folder, the reporter-app-name, etc via runner.reporter?

JSON folder and file not created

I followed the documentation provided on this link. https://www.npmjs.com/package/testcafe-reporter-cucumber-json
I ran the below command, the folder "cucumber-json-reports" and JSON file not created.

npm run tc:chrome tests/sample-test.js --reporter cucumber-json

package.json information below
script{
"tc:chrome": "export NODE_ENV='development' && ./node_modules/.bin/testcafe chrome -e"
}
"dependencies": {
"@ffmpeg-installer/ffmpeg": "^1.0.20",
"dotenv": "^8.2.0",
"minimist": "^1.2.5",
"testcafe": "^1.9.3",
"testcafe-react-selectors": "^4.0.0",
"testcafe-reporter-cucumber-json": "^6.2.0",
"testcafe-reporter-slack-custom": "^1.3.0"
},
"devDependencies": {
"multiple-cucumber-html-reporter": "^1.18.0"
}

Error: Cannot find module 'node:path'

Error: Cannot find module 'node:path'
Require stack:

  • C:\Users\khale\TestCafe-Testing\node_modules\multiple-cucumber-html-reporter\lib\generate-report.js

  • C:\Users\khale\TestCafe-Testing\report-generator.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:885:15)
    at Function.Module._load (internal/modules/cjs/loader.js:730:27)
    at Module.require (internal/modules/cjs/loader.js:957:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object. (C:\Users\khale\TestCafe-Testing\node_modules\multiple-cucumber-html-reporter\lib\generate-report.js:7:14)
    at Module._compile (internal/modules/cjs/loader.js:1068:30)

    Facing above issue when trying to run the command: node report-generator.js
    Node: v14.17.0
    NPM: 6.14.13

Please suggest if I need to downgrade the node

Add LICENSE to repo

License is listed in package.json as MIT but no LICENSE is defined in repo

The provided "cucumber-JSON" reporter does not exist. Check that you have specified the report format correctly.

Hi @hdorgeval,

After installing your Cucumber JSON TestCafe Reporter (beta) npm package. I'm trying to get the HTML report using your given comment testcafe chrome ./path-to-tests/*(.js|.testcafe|.ts) --reporter cucumber-json:reports/report.json --reporter-app-name='My App' --reporter-app-version='x.y.z' but not able to get the report.
It says ERROR: The provided "cucumber-JSON" reporter does not exist. Check that you have specified the report format correctly.

Also, I'm new to tastcafe, So, could you pls help me out? which file need to execute /path-to-tests/*.js ?

Logger improvement possibility

Hi @hdorgeval
It is a pleasure to me to be here again!

I have an amazing idea(that may be impossible) but in case it is possible to implement, might be so good.

I have been trying this package https://www.npmjs.com/package/testcafe-reporter-html-logger-custom and it has a "log" function to get steps in JSON and then get them printed out in HTML.

Just wondering if something like that can be mixed with the logic u use with this package.

Appreciate you read this and hope you are fine.

can not get Platform name on macOS Ventura 13.1

testcafe-reporter-cucumber-json: cannot get the Platform name from input string 'Chrome 112.0.0.0 / Ventura 13'
Cannot match browser 'Chrome 112.0.0.0 / macOS 10.15.7' with 'Chrome 112.0.0.0 / Ventura 13'
Cannot match browser 'Chrome 112.0.0.0 / macOS 10.15.7' with 'Chrome 112.0.0.0 / Ventura 13'

here is my versions:

    "multiple-cucumber-html-reporter": "^3.3.0",
    "testcafe": "^2.5.0",
    "testcafe-reporter-cucumber-json": "^6.3.0"

Unable to generate report while running from Docker Container

I am not able to generate report using the testcafe-reporter-cucumber.json module from Docker container.
I need to do in Docker container since the Jenkins at my work uses older node version whereas my project uses node12.0.
I am able to run my tests but not able to generate the report.json inside the docker container file.

Steps

  1. Clone this repo
  2. Go to the project folder and run the docker commands.
  3. docker build . automated-tests
  4. docker run automated tests

Thanks in Advance.
Ash

After run the solution It says ERROR: The provided "cucumber-JSON" reporter does not exist. Check that you have specified the report format correctly. Why it happened ?

Hi @hdorgeval,

  • After installing your Cucumber JSON TestCafe Reporter (beta) npm package. I'm trying to get the HTML report using your given comment testcafe chrome ./path-to-tests/*(.js|.testcafe|.ts) --reporter cucumber-json:reports/report.json --reporter-app-name='My App' --reporter-app-version='x.y.z' but not able to get the report.

It says ERROR: The provided "cucumber-JSON" reporter does not exist. Check that you have specified the report format correctly.

Also, I'm new to tastcafe, So, could you pls help me out?

cannot get the Platform name

When I execute testcafe, I have this warning :

testcafe-reporter-cucumber-json: cannot get the Platform name from input string 'Chrome 80.0.3987.132 / macOS 10.15.3'

Support for embeddings in report

Thank you for great piece of software and hope this grows even more.

Is is possible to replace the image tags with embeddings tags in the JSON output?

"image": [
              "data:image/png;base64,iVBORw0KGgoAAAANS..."
            ],

To

"embeddings": [
              {
                "data": "iVBORw0KGgoAAAANSUhEUgAABAAAAAOPCAYAAA...",
                "mime_type": "image/png"
              }
            ],

All tests succeed but they actually fail

Issue: report states all tests were a success, but actually they fail.

This issue appeared starting v6.0.5 (6.0.3 & 6.0.4 fail, and cannot be verified), in combination with testcafe version 1.20.0 and later. Earlier testcafe versions or earlier cucumber reporter versions wil not have this problem.

issue-proof.zip

this sample project needs to run npm run prove. verify that the failing test (assert 1 equals 2) is marked as a success. when running with a different reporter 9spec used in thsi example), it works as expected.

Cucumber steps not in the report

Hello,

Not sure if this is as designed or a bug but I don't see steps from the feature file in the report and if I check reports/feature it is empty.

My project folder structures is e2e-automation/features/support/page_objects/.js
e2e-automation/features/step_definitions/
.js
e2e-automation/features/*. feature
e2e-automation/reports/

I've created the report-generator.js in the root of the project (e2e-automation) with configuration specified in the documentation (update to point correct reports folder)

When I run my tests using the following command:
node_modules/.bin/gherkin-testcafe chrome features/step_definitions/.js features/.feature --r
eporter cucumber-json:reports/report.json --reporter-app-name='My App' --reporter-app-version='x.y.z'

The json gets written to the reports folder, but nothing gets written under the features folder.

When I run node report-generator.js after the test run I get the following error:
TypeError: step.text.join is not a function
at eval (lodash.templateSources[8]:228:21)
at arrayEach (/Users/WhiteLabel/e2e-automation/node_modules/lodash/lodash.js:516:11)
at Function.forEach (/Users/WhiteLabel/e2e-automation/node_modules/lodash/lodash.js:9342:14)
at eval (lodash.templateSources[8]:78:4)
at arrayEach (/Users/WhiteLabel/e2e-automation/node_modules/lodash/lodash.js:516:11)
at Function.forEach (/Users/WhiteLabele2e-automation/node_modules/lodash/lodash.js:9342:14)
at eval (lodash.templateSources[8]:10:4)
at suite.features.forEach.feature (/Users/WhiteLabel/e2e-automation/node_modules/multiple-cucumber-html-reporter/lib/generate-report.js:519:73)
at Array.forEach ()
at _createFeatureIndexPages (/Users/WhiteLabel/e2e-automation/node_modules/multiple-cucumber-html-reporter/lib/generate-report.js:500:18)

If you could please provide details on how to resolve this issue that would be great

report.json doesn't show failed tests when running '.testcafe' test files, but looks good for '.js' test files

When running tests for .testcafe files, report.json file has elements only for passed tests (missing for failed tests). However runInfo shows testscount and passed with correct numbers. Also console log (spec output) has all running tests info (passed & failed).

Missing elements for failed tests are resulting in incorrect HTMl report (always 100% passed).

I didn't see this issue when running same tests through .js files (converted .testcafe files to .js using testcafe studio)

Versions

  • testcafe-reporter-cucumber-json: "^2.0.0"

  • testcafe: "^1.3.3"

  • multiple-cucumber-html-reporter: "^1.10.2"

  • Browser : Chrome , Chromium Headless

  • OS: Mac, Linux

** Testcafe configuration **
{ "browsers": "chrome", "reporter": [ "spec", { "name": "cucumber-json", "output": "reports/report.json" } ], "skipUncaughtErrors":true, "src": ["./tests/*.testcafe"] }

  • A generated testcafe-reporter-cucumber-json.json file (no changes in noisy tags)

Missing history test suite in the report

I have more than one file un my directory "Feature" and they are not displayed when i generated report...

I'll add some screenshot:
image

Here my reporter code:

const report = require('multiple-cucumber-html-reporter');
const path = require('path');
const projectName = path.basename(__dirname);
const projectVersion = process.env.npm_package_version;
const reportGenerationTime = new Date().toISOString();

report.generate({
    reportName: 'TestCafe Report',
    jsonDir: 'reports',
    reportPath: 'reports',
    openReportInBrowser: true,
    disableLog: true,
    displayDuration: true,
    durationInMS: true,
    customData: {
        title: 'Run info',
        data: [
            { label: 'Project', value: `${projectName}` },
            { label: 'Release', value: `${projectVersion}` },
            { label: 'Report Generation Time', value: `${reportGenerationTime}` },
        ],
    },
});

Finally my vew in the browser:
image

Or maybe I missing something...

Last clue: I execute my test one by one like npm run test1 than npm run test2 etc ... The reporter is call only at the end of these test

Issue with Scenario level tags

Hello, I have a use-case where I wanted to include Scenario tags in the report, so that I could import them to XRay (Jira cloud for test case management) after the automation tests run.
For instance, lets look at below. The report doesn't log the tag (@xraydemooneupdated) I had defined in the JSON file. I want to map each Scenario in the JSON report with its unique tags, which will be useful when I import the report into Jira/Xray system.
Please advise.

Feature: Sample Xray Feature

  @xraydemooneupdated
  Scenario: Xray Demo Scenario One Updated
    Given a test xray step

It should add the tags into the Scenario section of the report as shown below. The tags JSON object was empty, I manually updated with the unique scenario tag specified in the feature file.
```
"elements": [
{
"id": "ScenarioSample Xray Feature;Scenario: Xray Demo Scenario One Updated",
"keyword": "Scenario",
"line": 0,
"name": "Xray Demo Scenario One Updated",
"skipped": false,
"sourceLine": "undefined",
"status": "passed",
"steps": [
{
"hidden": false,
"keyword": ">",
"match": {
"location": "/Users/vsridhar/IdeaProjects/ptf-testcafe/tests/BillingSolution/bddTests/features/xray/XrayDemo.feature:1:0"
},
"name": "Scenario: Xray Demo Scenario One Updated",
"result": {
"duration": 257,
"status": "passed"
},
"tags": [],
"text": [
"<a href="#">Scenario: Xray Demo Scenario One Updated"
]
}
],
"tags": [{
"name": "@xraydemooneupdated"
}],

"type": "scenario",
"uri": ""
}

no difference between "chrome" and "chrome:emulation:device=iphone X"

Hello,

I launch testcafé with the following browsers "chrome:headless,chrome:headless:emulation:device=iphone X" I was expecting to see twice the features and scenarion in the report (mobile and desktop).

But I only do it once and there's no desktop/mobile distinction.

image

I used

  • "testcafe": "^1.8.3",
  • "testcafe-reporter-cucumber-json": "^5.0.0",

Unknown option '--reporter'

Hi
Thanks for the report. I can run the report separately but if i add the below along with the testcafe command line, i am getting error - Unknown option --reporter
node ./node_modules/.bin/cucumber-js --reporter cucumber-json:reports/report.json --reporter-app-name='MAI AI' --reporter-app-version='0.9.1'
However this works: node ./node_modules/.bin/cucumber-js
Any idea what am I missing?

Provider an API to pass parameters

Currently the only way to pass arguments such as reporter-json-folder is to use testcafe CLI,

Currently we use the testcafe API to run testcafe tests. Is there anyway that we can override the reporter-json-folder without passing it as a CLI arg?

vulnerability in dependancy

testcafe-reporter-cucumber-json is dependent on a vulnerable version of minimist. Can it be upgraded to 1.2.6 or higher?

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.