Giter VIP home page Giter VIP logo

publishhtmlreport's Introduction

Azure Devops Extension- PublishHTMLReports

This extension can be used in Azure devops to publish Jmeter HTML reports as a seperate tab(Parallel to Summary tab) in Build Pipelines(Please note Release Pipelines is not supported). Right now full support of Jmeter report and any generic html report has been developed, however this extension can also be extended to publish other complex HTML reports as well.

This extension has been tested with the following Jmeter versions:

  • 4.0
  • 5.0
  • 5.3

The file structure of Jmeter reports in version 4 and 5 hasn't changed, so it is expected that this extension will work for all 4.* and 5.* versions of jmeter.

Usage:

1. Install the below extension in your azure devops org:

https://marketplace.visualstudio.com/items?itemName=LakshayKaushik.PublishHTMLReports&targetId=c2bac9a7-71cb-49a9-84a5-acfb8db48105&utm_source=vstsproduct&utm_medium=ExtHubManageList

2. Run command line Jmeter with -o arg in your azure pipeline.

For e.g. jmeter -n -t TestAPI.jmx -l LoadReports/results.jtl -e -o LoadReports This produces result files and folders having detailed jmeter report of the run.

3. Now, use the extension in your azure devops pipeline to publish this report on Azdo.

- task: publishhtmlreport@1
  inputs:
    htmlType: 'Jmeter'
    JmeterReportsPath: '$(Build.SourcesDirectory)/LoadReports'

3.1 Comma separated paths for multiple Jmeter files

- task: publishhtmlreport@1
  inputs:
    htmlType: 'Jmeter'
    JmeterReportsPath: '$(Build.SourcesDirectory)/File1/LoadReports,$(Build.SourcesDirectory)/File2/LoadReports'

This will make the Jmeter report compatible to be viewed and analysed within azure devops.

If you want to publish a simple HTML document to AZDO in a seperate tab then do the following:

- task: publishhtmlreport@1
  inputs:
    htmlType: 'genericHTML'
    htmlPath: '$(Build.SourcesDirectory)/Sample.html'

This is how Jmeter reports look within azdo after using this extension:

Alt text

Customizing the extension

As the extension currently supports Jmeter report and generic HTML reports (single page), it makes sense to customize the extension to support multiple other type of HTML reports like Locust, Robot etc. This type of customization can be done by making a contribution to the extension.

Anatomy of the extension

This extension contains 2 major components:

1. Azure devops task(publishhtmlreport)

This is used to publish files to be consumed by the extension. This task does a console.log('##vso[task.addattachment type=type;name=name;]') of the files to be sent to the extension. More about how this works is here: https://docs.microsoft.com/en-us/azure/devops/pipelines/scripts/logging-commands?view=azure-devops&tabs=bash.

2.Frontend code for rendering report content

When js files are sent to the extension, it reads the content of the js files and does an inline append of the js files in the index.html page(main page of the extension). After all js scripts are appended in the html page, index.html containing the jmeter load test report is rendered to the user when they click on the 'Published HTML' tab parallel to the Summary tab. This code is generic enough to accept any type of content(js, html, css etc) and append that inline in index.html.

There are 3 important files which will need customization if you want to include any other report type:

1. publishhtmlreport/index.ts

This is a typescript while which contains the logic of rendering js files and content based on 'htmlType' arguement provided to publishhtmlreport@1 task. While customizing the extension, we can add one more accepted value of htmlType, for e.g. locust and render the required files using consol.log as done for jmeter reports in the present code base.

2. tab.ts

This is a typescript file which contains the code for fetching the published files from the azure devops task and inserting the fetched content into index.html (which is the root html which gets loaded when the tab for the extension is clicked).

3. index.html

This is the root html of the extension, when a user clicks on 'Published HTML' within azure devops, this html will get loaded. So anything which needs to be rendered to the user should be part of this html. There are several ways to achieve this, replacing div ids, appending to div ids, class ids etc. I have used appendChild() in most situations, but during customization anything which works and appends the into the index.html during run time can be used.

And when the above 3 files are changed, custom implementation type can be mentioned in the 'htmlType' arguement and the extension will render whatever was appended in the root html page. For e.g. :

- task: publishhtmlreport@1
  inputs:
    htmlType: 'OtherComplexReport'
    JmeterReportsPath: '$(Build.SourcesDirectory)/Folder_Containing_Relevant_Files'

Relevant files can be html, css or js files which can be appended in the html page using appendChild() or similar implementation.

Build Process of the extension.

Before building the extension, you need to have docker engine installed on your local machine or if you are doing a build in a CI pipeline, docker engine needs to be installed on the pipeline agent too.

Steps to build:

1. Take a git clone of this repo:

git clone https://github.com/lakshaykaushik/PublishHTMLReport.git

2. Specify version of Jmeter in bootstrap.sh, run.sh and Dockerfile. Then run bootstrap.sh

Running this script will bootstrap your local repo and include essential files needed to build the extension.

3. Now increment the build version in task.json and vss-extension.json.

"manifestVersion": 1,
    "id": "PublishHTMLReports",
    "version": "1.1.33",
    "name": "PublishHTMLReports",
    "description": "An extension which lets you publish and visualize HTML reports in Azure Devops as a seperate tab",
    "publisher": "LakshayKaushik",
 "name": "publishhtmlreport",
    "friendlyName": "publishhtmlreport",
    "description": "This task can be used to publish html reports to azdo. Currently Jmeter HTML reports are being transformed to be consumed into Azdo directly",
    "helpMarkDown": "",
    "category": "Utility",
    "author": "LakshayKaushik",
    "version": {
        "Major": 1,
        "Minor": 1,
        "Patch": 25

4. Generate vsix file.

Run publishhtmlreport/tsc and npm run build, this will generate vsix file which can be uploaded to the marketplace.

Note:

Alternatively, follow the AutoPackageAndPublish.md that would automatically bump the version, package the extenstion then publish it.

This project welcomes contributions and suggestions, see more information on contributing in CONTRIBUTING.md

publishhtmlreport's People

Contributors

daxsorbito avatar lakshaykaushik avatar marriagatr 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

publishhtmlreport's Issues

Opening Robot Framework log failed

Hello Team

I have a file generated by the robot framework and wanted to publish this file by using the PublishHTMLReport task in our ADO pipeline. However, it is giving an error "Opening Robot Framework log failed".

  • Verify that you have JavaScript enabled in your browser.
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 8 or newer is required.
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.

The Javascript has already been enabled in my browser. Can we use this task to publish this type of HTML files?

image

Network trace:

image

Regarding HTML report extension TAB name

Hi Laxman,

Thanks for creating very useful extension for pipeline to show the report.

I want to provide custom name for the TAB, right now it shows 'Published HTML'. Can we add variable for tab name and while configuring task, we can give the customize name that will show on tab.

Please help me on this to achieve this feature in your extension.

image

GenericHTML broken

With the latest update, on 5/17/2021, the genericHTML feature was broken.

image

Does this task work with yml pipelines?

Hello Sir, thanks much for your wonderful extension and a much needed one. Just curious, when i try to add this using classic view, I am unable to add it to my pipelines. And looking at your usage documentation your example is for yaml . So does this extension work only for yaml and not classic? Thx much for your time.

Broken for jMeter 5.4.2 at least

Seems to be a little broken for jMeter at the moment,

image

Although the files seem to be there, and a partial publication happens, just without images/js etc

image

The files are on disk by the looks, and they get packaged into zip just fine and are usable downloading / viewing.

Ability to specify name on the report [multiple html reports]

Hi, it would be really useful to add a parameter to this extension in order to be able to name the report tab rather than the hardcoded Published HTML which would allow multiple uses of this task in the same pipeline.
Many pipelines have multiple html reports to publish, and they way it is done right now overrides the previous ones always

 i.e.
1.  Html unit test report
2. Html ktlint report
3. Html lint report

Thanks.

Can't visualize robot framework HTML report

I'm using the "publishhtmlreport" extension to publish the html report of robot framework tests but I got the following error: "Opening Robot Framework report failed" and also when inspecting browser i have an error 404 not found for this css file:

https://lakshaykaushik.gallerycdn.vsassets.io/extensions/lakshaykaushik/publishhtmlreports/1.2.1/1621315859624/sbadmin2-1.0.7/bower_components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0

Capture

Can you help me to solve or work around this problem please ?

side bar doesn't render html

When I click Dashboard, the html never renders. It renders fine when clicking Publish HTML Report (which auto selects Dashboard). The other options don't render either.

Not able to view JMeter report

I am just trying to publish JMeter HTML report that I generate using pipeline.
JMeter command is:
call jmeter -J csvfile="$(System.DefaultWorkingDirectory)/_CCM.API.Test.Files/Test_Data_SQL_Queries/$(Feature).csv" -J users=$(Users) -J lifeT=$(LifeSpan) -n -t
call jmeter -g "%rp%\results.csv" -o "%rp%\REPORT"

Report generates okay, I didn't see any errors while using extension either in logs but no report is seen anywhere. Where am I supposed to see this?

Unable to visualize html report in Azdo

Hi,
I am running jMeter test in my release pipeline using PowerShell script. Its generating jMeter reports scuccessfully.

image

Then I run publishhtmlreport task to publish reports to azdo.

The task completed successfully ..
image

But I dont see any reports -

image

Could you please let me know how can I visualize the report in azdo

Here is the yaml for my task

steps:

  • task: LakshayKaushik.PublishHTMLReports.publishhtmlreport.publishhtmlreport@1
    displayName: publishhtmlreport
    inputs:
    htmlType: Jmeter
    JmeterReportsPath: '$(System.DefaultWorkingDirectory)/_InteropService-dev-CD/jMeter/Output/reports'

TestNG Extent Report HTML is not rendering properly

Hi Kaushik,

We have TestNG test reports generated by Extent Reports. We tried to publish the report using your extension. Unfortunately its not rendering properly. PFB images
Actual Report
image

Published report using extension
image

Any suggestion to fix this issue would help us.

Thanks

Publish genericHTML folder

I am trying to display the Istanbul code coverage for a JS project in your extension. The code coverage creates a folder with src files including css and js, and an index.html.

When adding the folder as the htmlPath to the extension I get this error:

##[error]Unable to process command '##vso[task.addattachment type=replacedhtml;name=content;]D:\a\1\s\TestProject\coverage' successfully. Please reference documentation (http://go.microsoft.com/fwlink/?LinkId=817296)
##[error]Value cannot be null. (Parameter 'Cannot upload task attachment file, attachment file location is not specified or attachment file not exist on disk')
Finishing: Publish Code Coverage

Here is the task:

- task: publishhtmlreport@1
  displayName: Publish Code Coverage
  inputs:
    htmlType: 'genericHTML'
    htmlPath: '$(Agent.BuildDirectory)\s\$(applicationRepository)\coverage'

Will it be possible to upload all files in that directory and then assume an index.html file as any server would?

Images do not display in Published HTML tab when running a build in pipeline

It shows the error as "ResourceNotFoundThe specified resource does not exist. RequestId:a7b25a8c-a01e-000f-2a96-e429b3000000 Time:2022-10-20T15:11:40.1797274Z" when trying to view the image.

Could you us guide on why its showing this error or let us know if this is a known issue when running a build in pipeline? Thank you!

image

Not sure to understand how it displays the report for genericHTML report type

I'm running the publishhtmlreport@1 task in a pipeline to display the result of the database comparison. I'm passing genericHTML to htmlType parameter. This task always runs successfully in the pipeline but it doesn't open the report in a new tab or doesn't provide a URL where the report is published. It is not clear how to use this extension for generic HTML type.

Robotframework log.html results

Hi, In Azure DevOps I have set up a pipeline (CI) with robot tests that are started with a powershell script.

Now I want to integrate these test results (log.html) into a dashboard (passed / failed / history / duration testing).

Is the extension PublishHTMLReports good enough for using of robot html results in the form of a dashboard?

And is there documentation on how to set up this specifically for robot testing in the pipeline?

Please hear it and thank you for the responses!

Mochawesome HTML file doesn't load. Blank page is displayed

Hi,

I'm new to azure and trying to upload the mochawesome.html file in the azure pipeline.

As described here, https://github.com/lakshaykaushik/PublishHTMLReport, I have the set the below config with htmltype: genericHTML

steps:
- task: LakshayKaushik.PublishHTMLReports.publishhtmlreport.publishhtmlreport@1
  displayName: 'Publish HTML'
  inputs:
    htmlPath: '$(Build.Repository.LocalPath)/mochawesome-report/mochawesome.html'
  continueOnError: true

Image
HtmlLoadingIssue

Your help would be highly appreciated.

Thanks,
Zaid

plugin not visible in Azure DevOps Server 2019

Hi,

I installed the plugin in Azure DevOps Server 2019 (standalone installation) but I cannot see any task or extra tab related with the plugin in builds.

Is there anything I have to do after installing the extension?

Can this be used with classic (not yaml) builds?

Thank you,
Ioan

Report not visible in Release Pipeline (ADO Server 2019)

I have a JMeter stage in a release pipeline, where the SystemDefaultWorkingDirectory has the report files. It appears that no matter what options I input, or alternative syntax I use, the task always "appears" as it was successful in the pipeline, but there is no report to be found anywhere in my ADO. Pease assist. Thanks!

Publish HTML Report in Release Pipeline?

Hi,

does your plugin also work in Release Pipelines or only in Build Pipelines? When i try to use the task to publish a generic HTML file within a release pipeline, the task itself runs successfully, but the pipeline doesn't show any tab related to HTML Reports.

Am I doing something wrong or is this just not supported?

Thanks

can't publish more than one html

publishing more than one html file only displays the first one, the second one is just a copy of the first. The html files were published individually.

image

Unit test cases for the extension

Currently there are no unit test cases for the extension. Aim is to:

  1. Select a unit test framework.
  2. Develop unit test cases.
  3. Integrate unit test cases as part of CI pipeline

Errors when running publishhtmlreport task

My JMeter CLI command:
jmeter -n -t mytests.jmx -l LoadReports/results.jtl -e -o LoadReports

When I view the results UI locally, everything works fine.

However, when I run publishhtmlreport on a pipeline, I get some errors regarding files that are missing. (See errors.txt attachment).

I defined the task as follows:
- task: publishhtmlreport@1
inputs:
htmlType: 'Jmeter'
JmeterReportsPath: '$(Build.SourcesDirectory)/LoadReports'

errors.txt

Publishing multiple reports

Does this extension have the capability of publishing multiple generic reports at the same time?

Use case: There are multiple jobs running the integration tests in an azure pipeline. I want to publish the generated HTML test report in the same pipeline.

Do we have the support for this?

Need help on Azure DevOps HTML Report in Pipeline

Hi @lakshaykaushik
Expected_report
Pipeline_publish_html_report
,

I'm trying to publish the Jest HTML test reports in Azure Devops pipeline code. I tried a couple of plugins to publish html reports but nothing is working.

I'm a big fan of your PublishHTMLReports plugins - the JMeter reports works like a charm, but for some reason the same plugin does not work well with generic HTML reports. I've attached the screenshot for your reference. It would be really appreciated if you could help me to fix this issue. In our organization we recommended your plugin for the JMeter reports and the same we are expecting for other test HTML reports. So that we no need to shop around multiple plugins for each test report in our pipeline.

It would be really helpful if you can help us to publish the Jest report as part of the Azure Devops pipeline.

Please find the Jest reports and azure pipeline yml code below:
https://github.com/mikemarsh27/jest-poc

I Appreciate your help in advance!

Jmeter html report doesn’t contains some .js files

Hi guys,

When i try to publish jmeter html report in azdo i've got error because content/js/jquery-ui.min.js and content/js/customGraph.js is missing and that's true, jmeter does not generate that js files.

This is the error from azdo:

Starting: publishhtmlreport
==============================================================================
Task         : publishhtmlreport
Description  : This task can be used to publish html reports to azdo. Currently Jmeter HTML reports are being transformed to be consumed into Azdo directly
Version      : 1.1.52
Author       : LakshayKaushik
Help         : 
==============================================================================
##[error]Unable to process command '##vso[task.addattachment type=tenthscriptname;name=content;]/opt/vsts_agent/_work/1/TestResults/report/content/js/jquery-ui.min.js' successfully. Please reference documentation (http://go.microsoft.com/fwlink/?LinkId=817296)
##[error]Value cannot be null. (Parameter 'Cannot upload task attachment file, attachment file location is not specified or attachment file not exist on disk')
##[error]Unable to process command '##vso[task.addattachment type=twefthscriptname;name=content;]/opt/vsts_agent/_work/1/TestResults/report/content/js/customGraph.js' successfully. Please reference documentation (http://go.microsoft.com/fwlink/?LinkId=817296)
##[error]Value cannot be null. (Parameter 'Cannot upload task attachment file, attachment file location is not specified or attachment file not exist on disk')
Finishing: publishhtmlreport

This is what i have in content/js folder:

[xxx@xxx Report]$ ll report/content/js/
total 2692
-rw-r-----. 1 xxx xxx   16821 Apr  2 14:33 curvedLines.js
-rw-r-----. 1 xxx xxx    5074 Apr  2 14:33 dashboard-commons.js
-rw-r-----. 1 xxx xxx  139143 Apr  2 14:33 dashboard.js
-rw-r-----. 1 xxx xxx 2027045 Apr  2 14:33 graph.js
-rw-r-----. 1 xxx xxx   14107 Apr  2 14:33 hashtable.js
-rw-r-----. 1 xxx xxx  487212 Apr  2 14:33 jquery-ui.js
-rw-r-----. 1 xxx xxx    3238 Apr  2 14:33 jquery.cookie.js
-rw-r-----. 1 xxx xxx    3141 Apr  2 14:33 jquery.flot.stack.js
-rw-r-----. 1 xxx xxx    4675 Apr  2 14:33 jquery.numberformatter-1.2.3.min.js
-rw-r-----. 1 xxx xxx   37977 Apr  2 14:33 jquery.tablesorter.min.js

JMeter version: Version 4.0 r1823414
I generate html report with this command:
/app/apache-jmeter-4.0/bin/jmeter -g /app/jmeter2/test_results/report-*.csv -o /app/jmeter2/test_results/Report

Task from pipeline:

- task: publishhtmlreport@1
   inputs:
     htmlType: 'Jmeter'
     JmeterReportsPath: '$(folderName)'

Do you have any idea why JMeter doesn’t generate that js files?

Page tab name - genericHTML

Maybe I just can't find it, but when setting a genericHTML page to be displayed, can I set the name of the tab instead of Published HTML?

Not able to produce Jmeter HTML Report in Release Pipeline with this extension & failed with error

I am using Jmeter for performance load testing in Azure Release pipelines, I am using this task (PublishHTMLReport) but somehow it always get failed at this task with below error:

2021-03-26T01:26:37.5513930Z ##[error]Unable to process command '##vso[task.addattachment type=firstscriptname;name=content;]$(Build.ArtifactStagingDirectory)/HTMLReports/content/js/dashboard-commons.js' successfully. Please reference documentation (http://go.microsoft.com/fwlink/?LinkId=817296)
2021-03-26T01:26:37.5526204Z ##[error]Value cannot be null. (Parameter 'Cannot upload task attachment file, attachment file location is not specified or attachment file not exist on disk'.

I did echo on this directory $(Build.ArtifactStagingDirectory) and $(system.DefaultWorkignDirectory) Directory of D:\a\r1\a\HTMLReports

. .. content 9,670 index.html sbadmin2-1.0.7 2,998 statistics.json 2 File(s) 12,668 bytes 4 Dir(s) 14,701,731,840 bytes free.

Index.html is getting generated under the directory but somehow this HTML report extension does not work at all. I have tried few different path values in input section such as:

htmlType: 'Jmeter'
JmeterReportsPath: '$(Build.SourcesDirectory)/LoadReports'

nothing is working.
Somebody know any alternate method of producing Jmeter HTML report as tab within Azure DevOps.
Many Thanks

Jmeter mode failed

Hi,

I have the following message when I try to publish a Jmeter report :

##[error]Unable to process command '##vso[task.addattachment type=tenthscriptname;name=content;]F:\VSTS_work\r22\a_Alphadas\Output\Report/content/js/jquery-ui.min.js' successfully. Please reference documentation (http://go.microsoft.com/fwlink/?LinkId=817296)
##[error]Value cannot be null. (Parameter 'Cannot upload task attachment file, attachment file location is not specified or attachment file not exist on disk')
##[error]Unable to process command '##vso[task.addattachment type=twefthscriptname;name=content;]F:\VSTS_work\r22\a_Alphadas\Output\Report/content/js/customGraph.js' successfully. Please reference documentation (http://go.microsoft.com/fwlink/?LinkId=817296)
##[error]Value cannot be null. (Parameter 'Cannot upload task attachment file, attachment file location is not specified or attachment file not exist on disk')

image

That's my setup :

image

The strange thing is that I can see the report :
image

What's wrong? Am I missed something?

The genericHTML is not working

The Generic HTML is not working.
The task executed fine but i couldn't see the html page.
The strange thing happened, the jmeter report appear for some seconds and disappear.

- job: PublishHtmlReportTest
  pool:
    vmImage: ubuntu-latest
  steps:
    - task: publishhtmlreport@1
      inputs:
        htmlType: 'genericHTML'
        htmlPath: '$(Build.SourcesDirectory)/dashboard/charts.html'

genericHTML scripts do not run

It seems that because the Generic HTML page is loaded as the body of the JMeter template rather than being displayed as its own page, scripts are not running.
Rather than adding the GenericHTML as the body to the JMeter page, can you just display the HTML without the JMeter page as its parent?

report tab never renders report

I am publishing a genericHTML. The build task completes successfully. On viewing the report tab of the build it never renders the data, instead it just says "PublishHTMLReports is taking longer than expected to load." I have had the task upload different html files all with the same result. Thus I don't think its file content related.

I am using Azure DevOps 2019 system.

I notice in chrome dev tools network activity when going to the report tab that it makes a request to show the index.html page via an IP address that is not our TFS server!

http://10.163.220.3:8086/tfs/_apis/public/gallery/publisher/LakshayKaushik/extension/PublishHTMLReports/1.1.52/assetbyname/index.html

If i replace the bogus IP with the 'real' servername and visit that in a browser then i see a page rendered for Apache JMETER dashboard.

Custom Graphs over time throws exception

When I expand "Custom Graphs" and select the item in there, I get this:
{"$id":"1","innerException":null,"message":"The extension 'LakshayKaushik.PublishHTMLReports' doesn't contain the requested asset type 'CustomsGraphs.html' in version '1.1.43'.","typeName":"Microsoft.VisualStudio.Services.Gallery.WebApi.ExtensionAssetNotFoundException, Microsoft.VisualStudio.Services.Gallery.WebApi","typeKey":"ExtensionAssetNotFoundException","errorCode":0,"eventId":3000}

I'm on ADO server 2019, and currently using Edge

Add support for all referenced files (png, jpeg, json etc)

Could you make sure that I can use not only html files in the report but also all other files within the report directory?

For example, my report has image tags which refers to the PNG and JPEG or JSON files within the same folder. But, if I click on the image links from HTML report within azure, it throws error "doesn't contain the requested asset type 'dist/Screenshots/Calculator.netHome.png' in version" "typeName":"Microsoft.VisualStudio.Services.Gallery.WebApi.ExtensionAssetNotFoundException, Microsoft.VisualStudio.Services.Gallery.WebApi"

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.