GithubHelp home page GithubHelp logo

parallelrunner's People

Contributors

anton-siardziuk avatar ciarand avatar clementgautier avatar m0ppers avatar marekkalnik avatar neochief avatar zeyus 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

parallelrunner's Issues

PHP Version question

Our production, test, and dev environments are all running Centos 6.6, which by default has PHP 5.3.3. Is there anything specific about PHP 5.3.6 that this package requires? If not, would you consider lowering the minimum to 5.3.3?

Thanks in advance either way.

bash-4.1# composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1
- Installation request for shvetsgroup/parallelrunner dev-master -> satisfiable by shvetsgroup/parallelrunner[dev-master].
- shvetsgroup/parallelrunner dev-master requires php >=5.3.6 -> your PHP version (5.3.3) or "config.platform.php" value does not satisfy that requirement.

How to output the test results

Hi there,

Thanks for your work! I've set up Behat test in parallel successfully.
One question is, there are no test results output either on command window or result files. On command window, no details of feature files and test steps output.

Do you have such issues?

Thanks,
Jeffrey

Call to undefined method Behat\Behat\Tester\FeatureTester::setDryRun()

Git error when trying to run parallel tests:

  [Exception]                                                                                                                                                                                                                                
  Fatal error (workerID=0): Call to undefined method Behat\Behat\Tester\FeatureTester::setDryRun() in /<project dir>/tests/vendor/shvetsgroup/parallelrunner/src/shvetsgroup/ParallelRunner/Console/Command/ParallelRunnerCommand.php on line 205

my composer.json

{
    "repositories": [
/* skipped */
        {
            "packagist": false
        },
        {
            "type": "vcs",
            "url": "https://github.com/shvetsgroup/ParallelRunner"
        },
        {
            "type": "vcs",
            "url": "https://github.com/shvetsgroup/Behat"
        }
    ],
    "require": {
/* skipped */
        "behat/behat": "dev-propertynaming as 2.4.x-dev",
        "shvetsgroup/parallelrunner": "dev-master",
    },
    "autoload": {
/* skipped */
    },
    "minimum-stability": "stable",
    "config": {
        "bin-dir": "bin/"
    }
}

locks:

{
/* skipped */
        {
            "name": "behat/behat",
            "version": "dev-propertynaming",
            "source": {
                "type": "git",
                "url": "https://github.com/shvetsgroup/Behat.git",
                "reference": "ebfa0e355e6d8bf5285302e54f5bde97c84717f2"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/shvetsgroup/Behat/zipball/ebfa0e355e6d8bf5285302e54f5bde97c84717f2",
                "reference": "ebfa0e355e6d8bf5285302e54f5bde97c84717f2",
                "shasum": ""
            },
            "require": {
                "behat/gherkin": "~2.2.9",
                "php": ">=5.3.1",
                "symfony/config": "~2.0",
                "symfony/console": "~2.0",
                "symfony/dependency-injection": "~2.0",
                "symfony/event-dispatcher": "~2.0",
                "symfony/finder": "~2.0",
                "symfony/translation": "~2.0",
                "symfony/yaml": "~2.0"
            },
            "require-dev": {
                "phpunit/phpunit": "~3.7.19"
            },
            "suggest": {
                "behat/mink-extension": "for integration with Mink testing framework",
                "behat/symfony2-extension": "for integration with Symfony2 web framework",
                "behat/yii-extension": "for integration with Yii web framework"
            },
            "bin": [
                "bin/behat"
            ],
            "type": "library",
            "extra": {
                "branch-alias": {
                    "dev-develop": "2.4-dev"
                }
            },
            "autoload": {
                "psr-0": {
                    "Behat\\Behat": "src/"
                }
            },
            "license": [
                "MIT"
            ],
            "authors": [
                {
                    "name": "Konstantin Kudryashov",
                    "email": "[email protected]",
                    "homepage": "http://everzet.com"
                }
            ],
            "description": "Scenario-oriented BDD framework for PHP 5.3",
            "homepage": "http://behat.org/",
            "keywords": [
                "BDD",
                "Behat",
                "Symfony2"
            ],
            "support": {
                "source": "https://github.com/shvetsgroup/Behat/tree/propertynaming"
            },
            "time": "2013-06-13 16:51:33"
        },
        {
            "name": "shvetsgroup/parallelrunner",
            "version": "dev-master",
            "source": {
                "type": "git",
                "url": "https://github.com/shvetsgroup/ParallelRunner.git",
                "reference": "5767ec104e2a79eecd1bb248c3802bb0a02c0f49"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/shvetsgroup/ParallelRunner/zipball/5767ec104e2a79eecd1bb248c3802bb0a02c0f49",
                "reference": "5767ec104e2a79eecd1bb248c3802bb0a02c0f49",
                "shasum": ""
            },
            "require": {
                "behat/behat": ">=2.4.0,<2.5.0",
                "php": ">=5.3.6",
                "symfony/process": "2.2.*",
                "symfony/serializer": "2.2.*"
            },
            "type": "library",
            "autoload": {
                "psr-0": {
                    "shvetsgroup\\ParallelRunner": "src/"
                }
            },
            "license": [
                "MIT"
            ],
            "authors": [
                {
                    "name": "Alexander Shvets",
                    "email": "[email protected]",
                    "role": "developer"
                }
            ],
            "description": "Prallel runner extension for Behat",
            "homepage": "http://github.com/shvetsgroup/",
            "keywords": [
                "bdd",
                "behat",
                "parallel",
                "runner"
            ],
            "support": {
                "source": "https://github.com/shvetsgroup/ParallelRunner/tree/master",
                "issues": "https://github.com/shvetsgroup/ParallelRunner/issues"
            },
            "time": "2013-06-14 14:44:17"
        }
}

Different process use the same database

Is it possible to change database for the different process (maybe hacking the profiles)? Because right now, with no further config, they all touch the same database and therefore, for example, same user is being inserted in the database, or the data is removed from one scenario and it is needed for an other one that is runned in other process?

Thanks a lot for your help!

Not detecting all my features

Hi,

I'm trying to use this parallel runner for one of my Sf2 bundles. I have 9 Behat features (some of them being very complex and needing lots of fixtures) so running Behat on the standard mode with Symfony2 Extension takes more than an hour (XDebug is on). So, I tried to configure this parallel runner by doing :

default:
  extensions:
    shvetsgroup\ParallelRunner\Extension:
      process_count: 2
      profiles:
        - stats

stats:
  filters:
    tags: "@stats"
  extensions:
    Behat\Symfony2Extension\Extension:
      kernel:
        env: test_stats
        debug: false
        path: Tests/Fixtures/Project/app/AppKernel.php
        bootstrap: Tests/Fixtures/Project/app/bootstrap.php

This way I'm trying to isolate the most greedy Behat feature (some complex stats computing) and let my 8 other features be ran by the default profile. Of course, having a Doctrine database, I had to set a specific Symfony environment.

Anyway ; Behat launches, but it doesn't want to run all my features. Sometimes 6 of them are ran, sometimes 3 of them... I didn't manage to determine a pattern or a reason of that :(

Would you have an idea ?

Missing Symfony dependency in composer.json

Hi,
Nice idea!

I'm trying this with an existing repository (that already had Symfony 2.1 vendored).

However, it seems that just having symfony/process 2.2 is not enough in order to satisfy the dependency.

Here is the issue I get:

PHP Fatal error:
Call to undefined method Symfony\Component\Config\Definition\Builder\NodeBuilder::integerNode()
in /path/to/my_project/vendor/shvetsgroup/parallelrunner/src/shvetsgroup/ParallelRunner/Extension.php on line 58

If you compare NodeBuilder between version 2.1, 2.2 and 2.3 you can see that this method was added in 2.2:

https://github.com/symfony/symfony/blob/2.1/src/Symfony/Component/Config/Definition/Builder/NodeBuilder.php
https://github.com/symfony/symfony/blob/2.2/src/Symfony/Component/Config/Definition/Builder/NodeBuilder.php
https://github.com/symfony/symfony/blob/2.3/src/Symfony/Component/Config/Definition/Builder/NodeBuilder.php

I'm not sure what the "best" solution to this is. Maybe adding symfony/config v2.2 as a dependency in this projects composer.json?

"symfony/config": "2.2.*"

Profiles config error

Hello,

when i add this config:

default:
    extensions:
        shvetsgroup\ParallelRunner\Extension:
            profiles:
                - p1
                - p2

i got the error message:

[Symfony\Component\Config\Definition\Exception\InvalidTypeException]
Invalid type for path "testwork.ParallelRunner.profiles". Expected scalar, but got array.

What i am doing wrong? I use Behat 3.4.3.

cannot load ParallelRunner extension outside of default Behat profile

ParallelRunner appears to not load when instantiated in a Behat profile besides default. In a Behat configuration profile such as the one below, ParallelRunner does not operate and Behat executes tests normally in one process.

default:
profile_a:
    extensions:
        Behat\MinkExtension\Extension:
            base_url: URL_A
            browser_name: 'firefox'
        shvetsgroup\ParallelRunner\Extension:
            process_count: 4

composer unable to install/update

As mentioned in the read-me, I added "shvetsgroup/parallelrunner": "*" to composer.json, but composer is complaining: "Your requirements could not be resolved to an installable set of packages.""

Problem 1
- The requested package shvetsgroup/parallelrunner could not be found in any version, there may be a typo in the package name.

Any clues?

Cannot install with behat version 3

I got error like bellow:

Problem 1
    - Conclusion: don't install shvetsgroup/parallelrunner dev-master
    - Conclusion: remove behat/behat v3.3.0
    - Conclusion: don't install behat/behat v3.3.0
    - Installation request for shvetsgroup/parallelrunner dev-master -> satisfiable by shvetsgroup/parallelrunner[dev-master].
    - Conclusion: don't install behat/behat v3.3.0
    - shvetsgroup/parallelrunner dev-master requires behat/behat >=2.4.6,<3.0 -> satisfiable by behat/behat[v2.4.6, v2.5.0, v2.5.1, v2.5.2, v2.5.3, v2.5.4, v2.5.5].
    - Can only install one of: behat/behat[v2.4.6, v3.3.0].
    - Can only install one of: behat/behat[v2.5.0, v3.3.0].
    - Can only install one of: behat/behat[v2.5.1, v3.3.0].
    - Can only install one of: behat/behat[v2.5.2, v3.3.0].
    - Can only install one of: behat/behat[v2.5.3, v3.3.0].
    - Can only install one of: behat/behat[v2.5.4, v3.3.0].
    - Can only install one of: behat/behat[v2.5.5, v3.3.0].
    - Can only install one of: behat/behat[v2.4.6, v3.3.0].
    - Can only install one of: behat/behat[v2.5.0, v3.3.0].
    - Can only install one of: behat/behat[v2.5.1, v3.3.0].
    - Can only install one of: behat/behat[v2.5.2, v3.3.0].
    - Can only install one of: behat/behat[v2.5.3, v3.3.0].
    - Can only install one of: behat/behat[v2.5.4, v3.3.0].
    - Can only install one of: behat/behat[v2.5.5, v3.3.0].
    - Installation request for behat/behat (locked at v3.3.0) -> satisfiable by behat/behat[v3.3.0].

composer update shvetsgroup/parallelrunner  16.00s user 4.34s system 11% cpu 2:55.18 total

We cannot install ParallelRunner in Windows ?

Hi
I am trying to install ParallelRunner in Windows it is throwing below error
""
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for shvetsgroup/parallelrunner dev-master -> satisfia
ble by shvetsgroup/parallelrunner[dev-master].
- shvetsgroup/parallelrunner dev-master requires ext-pcntl * -> the requeste
d PHP extension pcntl is missing from your system.

To enable extensions, verify that they are enabled in those .ini files:
- C:\xampp\php\php.ini
You can also run php --ini inside terminal to see which files are used by PH
P in CLI mode.

""

I am tried to enable to pcntl extension in Windows, Unfortunately in that extension says that we cannot install this in Windows
http://php.net/manual/en/intro.pcntl.php

Is there anyway I could install this in Windows and run tests parallely??

Thanks in advance.

Mahesh

Seems like parallelrunner misses features

$ bin/behat --tags="~@wip&&@parallel" --parallel=3 features/
# skipped strict warnings #
2 scenarios (2 passed)
41 steps (41 passed)
1m27.179s

$ bin/behat --tags="~@wip&&@parallel" --parallel=1 features/
...................................................................... 70
..................

3 scenarios (3 passed)
88 steps (88 passed)
1m46.536s

ParallelRunner not loading due to autoloader/Extension error??

composer.json

{
    "require": {
        "behat/behat": ">=2.4.6,<3.0",
        "behat/mink": "1.4.*@stable",
        "behat/mink-goutte-driver": "*",
        "behat/mink-extension": "*",
        "behat/mink-selenium2-driver": "*",
        "shvetsgroup/parallelrunner": "dev-master"
    }
}

behat.yml

default:
  paths:
    features: features
    bootstrap: %behat.paths.features%/boostrap
  extensions:
    shvetsgroup\ParallelRunner\Extension:
      process_count: 2
    Behat\MinkExtension\Extension:
      goutte: ~
      selenium2:
        wd_host: http://127.0.0.1:4444/wd/hub
        browser: 'firefox'
        capabilities:
          version: '' # required
quick:
  filters:
    tags: '@testA,@testB'

What I expect/hope to happen is two browsers will launch with one running tests in @testa another running tests in @TestB

behat --profile quick

However, the above doesn't work, with error

PHP Warning:  require(shvetsgroup\ParallelRunner\Extension): failed to open stream: No such file or directory in /home/User/vendor/behat/behat/src/Behat/Behat/Extension/ExtensionManager.php on line 112
PHP Fatal error:  require(): Failed opening required 'shvetsgroup\ParallelRunner\Extension' (include_path='.:/home/User/sourcesvn/common:/usr/share/php:/home/User/minkSelenium/vendor/behat/shvetsgroup/parallelrunner/src') in /home/User/vendor/behat/behat/src/Behat/Behat/Extension/ExtensionManager.php on line 112

My directory structure looks like

/home/User/minkSelenium/
/home/User/minkSelenium/vendor/behat
/home/User/minkSelenium/vendor/behat/behat
/home/User/minkSelenium/vendor/behat/mink-extension
/home/User/minkSelenium/vendor/behat/mink-selenium2-driver
/home/User/minkSelenium/vendor/behat/shvetsgroup
...

Any help is much appreciated!

Running two different tests in two browser windows

What example below does is, it opens two browser windows but they both run same tests! How can I overcome this issue and run one test in one browser window and another test in another browser window at same time?

_behat.yml_

default:
    context:
        class: Site\CommonBundle\Features\Context\FeatureContext
        parameters:
            output_path: %behat.paths.base%/build/behat/output/
            screen_shot_path: %behat.paths.base%/build/behat/screenshot/
    extensions:
        Behat\Symfony2Extension\Extension:
            mink_driver: true
            kernel:
                env: test
                debug: true
        Behat\MinkExtension\Extension:
            base_url: 'http://symfony.local/app_test.php/'
            files_path: %behat.paths.base%/build/dummy/
            javascript_session: selenium2
            browser_name: firefox
            goutte: ~
            selenium2: ~
        shvetsgroup\ParallelRunner\Extension:
            process_count:  2
    paths:
        features: %behat.paths.base%/src
        bootstrap: %behat.paths.features%/Context

F1:
    filters:
        tags: "@backend"
F2:
    filters:
        tags: "@frontend"

_BEHAT TESTS:_

This should run in one window:

@frontend
Feature: User Login

  @javascript
  Scenario: I can login to the system
    Given I am on "/login"
    And I login as "user"

This should run in another window:

@backend
Feature: Admin Login

  @javascript
  Scenario: I can login to the system
    Given I am on "/login"
    And I login as "admin"

Installation problem

Hi,

First of all neither I'm in a position to change my composer packages nor versions. As defined in the documenttation, installation of this package requires Behat 2.4+. I have 2.5.3 which satisfies the requirement however I'm getting an error when trying to install the package. Offered solutions in error list are not feasible by me because it will potentially mess things up since there are many developers work on the same project.

Is there a solution to it?

Regards

_Error_

mbp:symfony $ php composer.phar require shvetsgroup/parallelrunner:dev-master
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: remove symfony/symfony v2.5.4
    - don't install symfony/finder v2.5.5|don't install symfony/symfony v2.5.4
    - don't install symfony/symfony v2.5.4|remove symfony/finder v2.5.5
    - Installation request for symfony/symfony 2.5.4 -> satisfiable by symfony/symfony[v2.5.4].
    - Installation request for symfony/finder == 2.5.5.0 -> satisfiable by symfony/finder[v2.5.5].

Installation failed, reverting ./composer.json to its original content.
mbp:symfony $

_My cusrrent composer.json_

"require": {
    "php": ">=5.3.3",
    "symfony/symfony": "2.5.4",
    "doctrine/orm": "~2.2,>=2.2.3",
    "doctrine/doctrine-bundle": "~1.2",
    "twig/extensions": "~1.0",
    "symfony/assetic-bundle": "~2.3",
    "symfony/swiftmailer-bundle": "~2.3",
    "symfony/monolog-bundle": "~2.4",
    "sensio/distribution-bundle": "~3.0",
    "sensio/framework-extra-bundle": "~3.0",
    "incenteev/composer-parameter-handler": "~2.0",
    "doctrine/doctrine-fixtures-bundle": "2.2.0",
    "friendsofsymfony/user-bundle": "~2.0@dev",
    "shvetsgroup/parallelrunner": "dev-master"
},
"require-dev": {
    "sensio/generator-bundle": "~2.3",
    "squizlabs/php_codesniffer": "1.5.1",
    "pdepend/pdepend": "2.0.2",
    "phpmd/phpmd" : "2.0.0",
    "phploc/phploc": "2.0.6",
    "sebastian/phpcpd": "2.0.1",
    "sebastian/finder-facade": "~1.1",
    "phpdocumentor/phpdocumentor": "~2.2",
    "behat/behat": "2.5.3",
    "behat/behat-bundle": "1.0.0",
    "behat/symfony2-extension": "1.1.2",
    "behat/mink": "1.5.0",
    "behat/mink-extension": "~1.3",
    "behat/mink-selenium2-driver": "1.1.1",
    "behat/mink-goutte-driver": "1.0.9",
    "phing/phing": "2.8.2"
},
"minimum-stability": "dev",
"prefer-stable" : true,

Strict standards: Only variables should be passed by reference in /<project dir>/tests/vendor/shvetsgroup/parallelrunner/src/shvetsgroup/ParallelRunner/Normalizer/EventNormalizer.php on line 94

Strict standards: Only variables should be passed by reference in /<project dir>/tests/vendor/shvetsgroup/parallelrunner/src/shvetsgroup/ParallelRunner/Normalizer/EventNormalizer.php on line 94

Call Stack:
    0.0002     637256   1. {main}() /<project dir>/tests/vendor/behat/behat/bin/behat:0
    0.0211    3018464   2. Symfony\Component\Console\Application->run() /<project dir>/tests/vendor/behat/behat/bin/behat:32
    0.0295    3645768   3. Behat\Behat\Console\BehatApplication->doRun() /<project dir>/tests/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:106
    0.6662   16180568   4. Symfony\Component\Console\Application->doRun() /<project dir>/tests/vendor/behat/behat/src/Behat/Behat/Console/BehatApplication.php:68
    0.6669   16180704   5. Symfony\Component\Console\Command\Command->run() /<project dir>/tests/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:193
    1.8966   32546688   6. shvetsgroup\ParallelRunner\Console\Command\ParallelRunnerCommand->execute() /<project dir>/tests/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:242
    1.8966   32546688   7. shvetsgroup\ParallelRunner\Console\Command\ParallelRunnerCommand->runParallel() /<project dir>/tests/vendor/shvetsgroup/parallelrunner/src/shvetsgroup/ParallelRunner/Console/Command/ParallelRunnerCommand.php:59
    2.2674   33990936   8. shvetsgroup\ParallelRunner\Console\Command\ParallelRunnerCommand->processTestResults() /<project dir>/tests/vendor/shvetsgroup/parallelrunner/src/shvetsgroup/ParallelRunner/Console/Command/ParallelRunnerCommand.php:78
   63.2284   37382152   9. shvetsgroup\ParallelRunner\Service\EventService->replay() /<project dir>/tests/vendor/shvetsgroup/parallelrunner/src/shvetsgroup/ParallelRunner/Console/Command/ParallelRunnerCommand.php:169
   83.4677   39592672  10. Symfony\Component\Serializer\Serializer->deserialize() /<project dir>/tests/vendor/shvetsgroup/parallelrunner/src/shvetsgroup/ParallelRunner/Service/EventService.php:101
   83.4678   39600584  11. Symfony\Component\Serializer\Serializer->denormalize() /<project dir>/tests/vendor/symfony/symfony/src/Symfony/Component/Serializer/Serializer.php:99
   83.4678   39600584  12. Symfony\Component\Serializer\Serializer->denormalizeObject() /<project dir>/tests/vendor/symfony/symfony/src/Symfony/Component/Serializer/Serializer.php:139
   83.4679   39600584  13. shvetsgroup\ParallelRunner\Normalizer\EventNormalizer->denormalize() /<project dir>/tests/vendor/symfony/symfony/src/Symfony/Component/Serializer/Serializer.php:269
   83.4679   39600584  14. shvetsgroup\ParallelRunner\Normalizer\EventNormalizer->denormalizeData() /<project dir>/tests/vendor/shvetsgroup/parallelrunner/src/shvetsgroup/ParallelRunner/Normalizer/EventNormalizer.php:35

base_url in different Behat profiles not respected

With a behat.yml configuration file such as the one below, when running profile_a the base_url is not used -- the tests run on URL_A.

default:
    extensions:
        page_object_extension.phar: ~
        Behat\MinkExtension\Extension:
            goutte: ~
            selenium2: ~
            base_url: URL_A
            default_session: selenium2
            browser_name: 'firefox'
        shvetsgroup\ParallelRunner\Extension: ~
profile_a:
    extensions:
        Behat\MinkExtension\Extension:
            base_url: URL_B
            browser_name: 'firefox'
        shvetsgroup\ParallelRunner\Extension:
            process_count: 4

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.