{"action":"created","comment":{"url":"https://api.github.com/repos/Polymer/docs/pulls/comments/48184728","id":48184728,"diff_hunk":"@@ -0,0 +1,367 @@\n+---\n+layout: default\n+type: guide\n+shortname: Docs\n+title: Unit tests\n+subtitle: Developer guide\n+---\n+\n+<link rel=\"import\" href=\"../../../0.5/components/google-youtube/google-youtube.html\">\n+\n+{% include toc.html %}\n+\n+Use Web Component Tester (`wct`) to unit test your Polymer elements. \n+\n+`wct` is an end-to-end testing environment built by the Polymer core team. It\n+enables you to test your elements locally, against all of your installed\n+browsers, or remotely, via Sauce Labs. `wct` is composed of the following\n+tools:\n+\n+*   [Mocha](https://mochajs.org/) for test framework, complete with support \n+    for BDD and TDD.\n+*   [Chai](http://chaijs.com/) for assertions. \n+*   [Sinon](http://sinonjs.org/) for spies, stubs, and mocks.\n+*   [Selenium](http://www.seleniumhq.org/) for running tests against \n+    multiple browsers. \n+\n+## Quick start\n+\n+Watch the Polycast below to learn how to set up `wct` and create and run\n+some simple unit tests.\n+\n+<div class=\"yt-embed\">\n+  <google-youtube\n+    videoid=\"YBNBr9ECXLo\"\n+    autoplay=\"0\"\n+    rel=\"0\"\n+    fluid>\n+  </google-youtube>\n+</div>\n+\n+If you prefer step-by-step instructions, the instructions below \n+teach you how to set up `wct`, create a unit test for\n+[`<seed-element>`](https://github.com/PolymerElements/seed-element), and then\n+run the test. Note that `<seed-element>` is already set up to support `wct`,\n+this is just an example of how to set up your own elements to support `wct`.\n+\n+1.  Install Web Component Tester globally so that you can run it from \n+    the command line.\n+\n+        npm -g install web-component-tester\n+\n+    On Mac OS X you need to [manually install][selenium] the latest Safari \n+    extension for Selenium. See the \n+    [Web Component Tester Polycast][workaround-example] for \n+    a demonstration.\n+\n+1.  `cd` to the base directory of the element.\n+\n+1.  (Optional) Install and save `wct` locally as a bower component so that your \n+    tests can always import the `wct` runtime.\n+\n+        bower install --save Polymer/web-component-tester\n+\n+    The global `wct` that you installed earlier actually serves its own \n+    copy of the `wct` runtime (`browser.js`) whenever it encounters any URL\n+    that ends with `web-component-tester/browser.js`. Installing it locally\n+    is just a precaution. \n+\n+1.  Create a directory for the tests. \n+\n+        mkdir test\n+\n+    When you run `wct` with no arguments, it automatically searches for\n+    a directory named `test` and runs any tests it finds in there. You\n+    can use another name for your directory, but you'll need to specify\n+    the path to the directory when you run `wct` (`wct path/to/tests`).\n+\n+1.  Create a test.\n+\n+        <!doctype html>\n+        <html>\n+          <head>\n+            <meta charset=\"utf-8\">\n+            <script src=\"../bower_components/webcomponentsjs/webcomponents-lite.js\"></script>\n+            <script src=\"../bower_components//web-component-tester/browser.js\"></script>\n+            <!-- import the element to test -->\n+            <link rel=\"import\" href=\"../seed-element.html\">\n+          </head>\n+          <body>\n+            <!-- use the document as a place to set up your fixtures -->\n+            <test-fixture id=\"seed-element-fixture\">\n+              <template>\n+                <seed-element>\n+                  <h2>seed-element</h2>\n+                </seed-element>\n+              </template>\n+            </test-fixture>\n+            <script>\n+              suite('<seed-element>', function() {\n+                var myEl;\n+                setup(function() {\n+                  myEl = fixture('seed-element-fixture');\n+                });\n+                test('defines the \"author\" property', function() {\n+                  assert.equal(myEl.author.name, 'Dimitri Glazkov');\n+                });\n+              });\n+            </script>\n+          </body>\n+        </html>\n+\n+1.  Go to the base directory of your element and run your tests.\n+\n+        wct\n+\n+    ![output from successful wct unit test run](/1.0/images/wct-output.png)\n+\n+    `wct` automatically finds all of the browsers on your system and runs\n+    your tests against each one.\n+\n+## Create stub methods\n+\n+Stubs enable you to replace default implementations with custom methods. This\n+is useful for catching side effects. \n+\n+    setup(function() {\n+      stub('paper-button', {\n+        click: function() {\n+          console.log('paper-button.click called');\n+        }\n+      });\n+    });\n+\n+You don't have to use stubs directly on individual elements. You can override\n+the implementation for all elements of a given type. \n+\n+## Create stub elements\n+\n+Use `replace()` to create stub elements. \n+\n+    setup(function() {\n+      replace('paper-button').with('fake-paper-button');\n+    });\n+\n+For example, using the sample `replace()` above and the element below:\n+\n+    <dom-module id='x-el'>\n+      <template>\n+        <paper-button id=\"pb\">button</paper-button>\n+      </template>\n+    </dom-module>\n+\n+At test runtime, the content template would be stamped out as:\n+\n+    <dom-module id='x-el'>\n+      <template>\n+        <fake-paper-button id=\"pb\">button</fake-paper-button>\n+      </template>\n+    </dom-module>\n+\n+The attributes and content of the element are preserved, but the tag\n+is replaced with the specified stub tag.\n+\n+Because the method is called within `setup()`, all of the changes are \n+reverted at the end of each test.\n+\n+## AJAX\n+\n+<div class=\"yt-embed\">\n+  <google-youtube\n+    videoid=\"_9qARcdCAn4\"\n+    autoplay=\"0\"\n+    rel=\"0\"\n+    fluid>\n+  </google-youtube>\n+</div>\n+\n+`wct` includes [Sinon](http://sinonjs.org/), which enables you to mock XHR\n+requests and create fake servers. \n+\n+Below is an example of a simple XHR unit test suite for \n+[`<iron-ajax>`](https://elements.polymer-project.org/elements/iron-ajax).\n+Check out Sinon's documentation for more in-depth examples. \n+\n+{% highlight html %}\n+<!doctype html>\n+<html>\n+<head>\n+  <meta charset=\"utf-8\">\n+  <meta name=\"viewport\" \n+        content=\"width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes\">\n+  <script src=\"../../webcomponentsjs/webcomponents-lite.js\"></script>\n+  <script src=\"../../web-component-tester/browser.js\"></script>\n+  <!-- import the element -->\n+  <link rel=\"import\" href=\"../bower_components/iron-ajax/iron-ajax.html\">\n+</head>\n+<body>\n+  <!-- create test fixture template -->\n+  <test-fixture id=\"simple-get\">\n+    <template>\n+      <iron-ajax url=\"/responds_to_get_with_json\"></iron-ajax>\n+    </template>\n+  </test-fixture>\n+  <script>\n+    suite('<iron-ajax>', function() {\n+      var ajax;\n+      var request;\n+      var server;\n+      var responseHeaders = {\n+        json: { 'Content-Type': 'application/json' }\n+      };\n+      setup(function() {\n+        server = sinon.fakeServer.create();\n+        server.respondWith(\n+          'GET',\n+          /\\/responds_to_get_with_json.*/, [\n+            200,\n+            responseHeaders.json,\n+            '{\"success\":true}'\n+          ]\n+        );\n+      });\n+      teardown(function() {\n+        server.restore();\n+      });\n+      suite('when making simple GET requests for JSON', function() {\n+        setup(function() {\n+          // get fresh instance of iron-ajax before every test\n+          ajax = fixture('simple-get');\n+        });\n+        test('has sane defaults that love you', function() {\n+          request = ajax.generateRequest();\n+          server.respond();\n+          expect(request.response).to.be.ok;\n+          expect(request.response).to.be.an('object');\n+          expect(request.response.success).to.be.equal(true);\n+        });\n+        test('has the correct xhr method', function() {\n+          request = ajax.generateRequest();\n+          expect(request.xhr.method).to.be.equal('GET');\n+        });\n+      });\n+    });\n+  </script>\n+</body>\n+</html>\n+{% endhighlight %}\n+\n+## Control which tests are run\n+\n+Use a test index to run a subset of suites.\n+\n+{% highlight html %}\n+<!doctype html>\n+<html>\n+  <head>\n+    <meta charset=\"utf-8\">\n+    <script src=”../bower_components/webcomponentsjs/web-components-lite.js”></script>\n+    <script src=”../bower_components/web-component-tester/browser.js”></script>\n+  </head>\n+  <body>\n+    <script>\n+      WCT.loadSuites([\n+        'basic.html',\n+        'async.html'\n+      ]);\n+    </script>\n+  </body>\n+</html>\n+{% endhighlight %}\n+\n+You can also use test indexes to configure your tests via query strings\n+when `wct` loads them. See [Test Shadow DOM](#shadow-dom) for an example.\n+\n+## Prevent shared state with test fixtures {#test-fixtures}\n+\n+Test fixtures enable you to define a template of content and copy a clean,\n+new instance of that content into each test suite. Use test fixtures to\n+minimize the amount of shared state between test suites. \n+\n+To use a test fixture:\n+\n+*   Define the test fixture template and give it an ID.\n+*   Define a variable in your test script to reference the template.\n+*   Instantiate a new instance of the fixture in your `setup()` method.\n+\n+{% highlight html %}\n+<test-fixture id=\"seed-element-fixture\">\n+  <template>\n+    <seed-element>\n+      <h2>seed-element</h2>\n+    </seed-element>\n+  </template>\n+</test-fixture>\n+\n+<script>\n+  suite('<seed-element>', function() {\n+    var myEl;\n+    setup(function() {\n+      myEl = fixture('seed-element-fixture');\n+    });\n+    test('defines the \"author\" property', function() {\n+      assert.equal(myEl.author.name, 'Dimitri Glazkov');\n+    });\n+  });\n+</script>\n+{% endhighlight %}\n+\n+## Make tests asynchronous\n+\n+To create an asynchronous test, pass `done` as an argument to the test function\n+and then call `done()` when the test is complete. The `done` argument is a\n+signal to Mocha that the test is asynchronous. When Mocha runs the tests it \n+waits until it encounters the `done()` call, and eventually times out if it \n+does not encounter it. \n+\n+    test('defines the \"author\" property', function(done) {\n+      setTimeout(function() {\n+        assert.equal(myEl.author.name, 'Dimitri Glazkov');\n+        done();\n+      }, 1000);\n+    });\n+\n+## Test Shadow DOM {#shadow-dom}\n+\n+To test out how a test suite behaves when the browser runs native\n+Shadow DOM, create a [test index](#test-indexes) and pass `dom=shadow` as \n+a query string when `wct` loads your test suites.\n+\n+{% highlight javascript %}\n+WCT.loadSuites([\n+  'basic-test.html',\n+  'basic-test.html?dom=shadow'\n+]);\n+{% endhighlight %}\n+\n+Within your tests, you can access Shadow DOM elements using Polymer's DOM \n+API.\n+\n+    test('click sets isWaiting to true', function() {\n+      Polymer.dom(myEl.root).querySelector('button').click();","path":"1.0/docs/devguide/tests.md","position":341,"original_position":341,"commit_id":"eed16330c568770e169430184ac6b01d672a7410","original_commit_id":"eed16330c568770e169430184ac6b01d672a7410","user":{"login":"robdodson","id":1066253,"avatar_url":"https://avatars.githubusercontent.com/u/1066253?v=3","gravatar_id":"","url":"https://api.github.com/users/robdodson","html_url":"https://github.com/robdodson","followers_url":"https://api.github.com/users/robdodson/followers","following_url":"https://api.github.com/users/robdodson/following{/other_user}","gists_url":"https://api.github.com/users/robdodson/gists{/gist_id}","starred_url":"https://api.github.com/users/robdodson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robdodson/subscriptions","organizations_url":"https://api.github.com/users/robdodson/orgs","repos_url":"https://api.github.com/users/robdodson/repos","events_url":"https://api.github.com/users/robdodson/events{/privacy}","received_events_url":"https://api.github.com/users/robdodson/received_events","type":"User","site_admin":false},"body":"Alternatively, it looks like you can also do this:\r\n\r\n`myEl.$$('button')` which is much easier. Wish I'd know that when I did the video :P\r\nhttps://www.polymer-project.org/1.0/docs/devguide/utility-functions.html","created_at":"2015-12-21T20:01:57Z","updated_at":"2015-12-21T20:01:57Z","html_url":"https://github.com/Polymer/docs/pull/1474#discussion_r48184728","pull_request_url":"https://api.github.com/repos/Polymer/docs/pulls/1474","_links":{"self":{"href":"https://api.github.com/repos/Polymer/docs/pulls/comments/48184728"},"html":{"href":"https://github.com/Polymer/docs/pull/1474#discussion_r48184728"},"pull_request":{"href":"https://api.github.com/repos/Polymer/docs/pulls/1474"}}},"pull_request":{"url":"https://api.github.com/repos/Polymer/docs/pulls/1474","id":54166728,"html_url":"https://github.com/Polymer/docs/pull/1474","diff_url":"https://github.com/Polymer/docs/pull/1474.diff","patch_url":"https://github.com/Polymer/docs/pull/1474.patch","issue_url":"https://api.github.com/repos/Polymer/docs/issues/1474","number":1474,"state":"open","locked":false,"title":"add unit test guide","user":{"login":"kaycebasques","id":4713486,"avatar_url":"https://avatars.githubusercontent.com/u/4713486?v=3","gravatar_id":"","url":"https://api.github.com/users/kaycebasques","html_url":"https://github.com/kaycebasques","followers_url":"https://api.github.com/users/kaycebasques/followers","following_url":"https://api.github.com/users/kaycebasques/following{/other_user}","gists_url":"https://api.github.com/users/kaycebasques/gists{/gist_id}","starred_url":"https://api.github.com/users/kaycebasques/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kaycebasques/subscriptions","organizations_url":"https://api.github.com/users/kaycebasques/orgs","repos_url":"https://api.github.com/users/kaycebasques/repos","events_url":"https://api.github.com/users/kaycebasques/events{/privacy}","received_events_url":"https://api.github.com/users/kaycebasques/received_events","type":"User","site_admin":false},"body":"@robdodson please do a technical review\r\n\r\n@arthurevans can do a writer's review afterwards","created_at":"2015-12-19T01:09:35Z","updated_at":"2015-12-21T20:01:57Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0f60815f080113d292b029660e7dfc5c4c481ab3","assignee":{"login":"robdodson","id":1066253,"avatar_url":"https://avatars.githubusercontent.com/u/1066253?v=3","gravatar_id":"","url":"https://api.github.com/users/robdodson","html_url":"https://github.com/robdodson","followers_url":"https://api.github.com/users/robdodson/followers","following_url":"https://api.github.com/users/robdodson/following{/other_user}","gists_url":"https://api.github.com/users/robdodson/gists{/gist_id}","starred_url":"https://api.github.com/users/robdodson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robdodson/subscriptions","organizations_url":"https://api.github.com/users/robdodson/orgs","repos_url":"https://api.github.com/users/robdodson/repos","events_url":"https://api.github.com/users/robdodson/events{/privacy}","received_events_url":"https://api.github.com/users/robdodson/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/Polymer/docs/pulls/1474/commits","review_comments_url":"https://api.github.com/repos/Polymer/docs/pulls/1474/comments","review_comment_url":"https://api.github.com/repos/Polymer/docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Polymer/docs/issues/1474/comments","statuses_url":"https://api.github.com/repos/Polymer/docs/statuses/eed16330c568770e169430184ac6b01d672a7410","head":{"label":"kaycebasques:unit-test-guide","ref":"unit-test-guide","sha":"eed16330c568770e169430184ac6b01d672a7410","user":{"login":"kaycebasques","id":4713486,"avatar_url":"https://avatars.githubusercontent.com/u/4713486?v=3","gravatar_id":"","url":"https://api.github.com/users/kaycebasques","html_url":"https://github.com/kaycebasques","followers_url":"https://api.github.com/users/kaycebasques/followers","following_url":"https://api.github.com/users/kaycebasques/following{/other_user}","gists_url":"https://api.github.com/users/kaycebasques/gists{/gist_id}","starred_url":"https://api.github.com/users/kaycebasques/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kaycebasques/subscriptions","organizations_url":"https://api.github.com/users/kaycebasques/orgs","repos_url":"https://api.github.com/users/kaycebasques/repos","events_url":"https://api.github.com/users/kaycebasques/events{/privacy}","received_events_url":"https://api.github.com/users/kaycebasques/received_events","type":"User","site_admin":false},"repo":{"id":39586979,"name":"docs","full_name":"kaycebasques/docs","owner":{"login":"kaycebasques","id":4713486,"avatar_url":"https://avatars.githubusercontent.com/u/4713486?v=3","gravatar_id":"","url":"https://api.github.com/users/kaycebasques","html_url":"https://github.com/kaycebasques","followers_url":"https://api.github.com/users/kaycebasques/followers","following_url":"https://api.github.com/users/kaycebasques/following{/other_user}","gists_url":"https://api.github.com/users/kaycebasques/gists{/gist_id}","starred_url":"https://api.github.com/users/kaycebasques/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kaycebasques/subscriptions","organizations_url":"https://api.github.com/users/kaycebasques/orgs","repos_url":"https://api.github.com/users/kaycebasques/repos","events_url":"https://api.github.com/users/kaycebasques/events{/privacy}","received_events_url":"https://api.github.com/users/kaycebasques/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kaycebasques/docs","description":"Documentation for Polymer","fork":true,"url":"https://api.github.com/repos/kaycebasques/docs","forks_url":"https://api.github.com/repos/kaycebasques/docs/forks","keys_url":"https://api.github.com/repos/kaycebasques/docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kaycebasques/docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kaycebasques/docs/teams","hooks_url":"https://api.github.com/repos/kaycebasques/docs/hooks","issue_events_url":"https://api.github.com/repos/kaycebasques/docs/issues/events{/number}","events_url":"https://api.github.com/repos/kaycebasques/docs/events","assignees_url":"https://api.github.com/repos/kaycebasques/docs/assignees{/user}","branches_url":"https://api.github.com/repos/kaycebasques/docs/branches{/branch}","tags_url":"https://api.github.com/repos/kaycebasques/docs/tags","blobs_url":"https://api.github.com/repos/kaycebasques/docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kaycebasques/docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kaycebasques/docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/kaycebasques/docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kaycebasques/docs/statuses/{sha}","languages_url":"https://api.github.com/repos/kaycebasques/docs/languages","stargazers_url":"https://api.github.com/repos/kaycebasques/docs/stargazers","contributors_url":"https://api.github.com/repos/kaycebasques/docs/contributors","subscribers_url":"https://api.github.com/repos/kaycebasques/docs/subscribers","subscription_url":"https://api.github.com/repos/kaycebasques/docs/subscription","commits_url":"https://api.github.com/repos/kaycebasques/docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/kaycebasques/docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/kaycebasques/docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/kaycebasques/docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/kaycebasques/docs/contents/{+path}","compare_url":"https://api.github.com/repos/kaycebasques/docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kaycebasques/docs/merges","archive_url":"https://api.github.com/repos/kaycebasques/docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kaycebasques/docs/downloads","issues_url":"https://api.github.com/repos/kaycebasques/docs/issues{/number}","pulls_url":"https://api.github.com/repos/kaycebasques/docs/pulls{/number}","milestones_url":"https://api.github.com/repos/kaycebasques/docs/milestones{/number}","notifications_url":"https://api.github.com/repos/kaycebasques/docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kaycebasques/docs/labels{/name}","releases_url":"https://api.github.com/repos/kaycebasques/docs/releases{/id}","created_at":"2015-07-23T19:14:22Z","updated_at":"2015-07-23T19:14:23Z","pushed_at":"2015-12-19T01:03:15Z","git_url":"git://github.com/kaycebasques/docs.git","ssh_url":"git@github.com:kaycebasques/docs.git","clone_url":"https://github.com/kaycebasques/docs.git","svn_url":"https://github.com/kaycebasques/docs","homepage":"https://www.polymer-project.org","size":81684,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Polymer:master","ref":"master","sha":"6342f4589fc5596bd1a9de32fff0a379eed2d1ea","user":{"login":"Polymer","id":2159051,"avatar_url":"https://avatars.githubusercontent.com/u/2159051?v=3","gravatar_id":"","url":"https://api.github.com/users/Polymer","html_url":"https://github.com/Polymer","followers_url":"https://api.github.com/users/Polymer/followers","following_url":"https://api.github.com/users/Polymer/following{/other_user}","gists_url":"https://api.github.com/users/Polymer/gists{/gist_id}","starred_url":"https://api.github.com/users/Polymer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Polymer/subscriptions","organizations_url":"https://api.github.com/users/Polymer/orgs","repos_url":"https://api.github.com/users/Polymer/repos","events_url":"https://api.github.com/users/Polymer/events{/privacy}","received_events_url":"https://api.github.com/users/Polymer/received_events","type":"Organization","site_admin":false},"repo":{"id":7804910,"name":"docs","full_name":"Polymer/docs","owner":{"login":"Polymer","id":2159051,"avatar_url":"https://avatars.githubusercontent.com/u/2159051?v=3","gravatar_id":"","url":"https://api.github.com/users/Polymer","html_url":"https://github.com/Polymer","followers_url":"https://api.github.com/users/Polymer/followers","following_url":"https://api.github.com/users/Polymer/following{/other_user}","gists_url":"https://api.github.com/users/Polymer/gists{/gist_id}","starred_url":"https://api.github.com/users/Polymer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Polymer/subscriptions","organizations_url":"https://api.github.com/users/Polymer/orgs","repos_url":"https://api.github.com/users/Polymer/repos","events_url":"https://api.github.com/users/Polymer/events{/privacy}","received_events_url":"https://api.github.com/users/Polymer/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Polymer/docs","description":"Documentation for Polymer","fork":false,"url":"https://api.github.com/repos/Polymer/docs","forks_url":"https://api.github.com/repos/Polymer/docs/forks","keys_url":"https://api.github.com/repos/Polymer/docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Polymer/docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Polymer/docs/teams","hooks_url":"https://api.github.com/repos/Polymer/docs/hooks","issue_events_url":"https://api.github.com/repos/Polymer/docs/issues/events{/number}","events_url":"https://api.github.com/repos/Polymer/docs/events","assignees_url":"https://api.github.com/repos/Polymer/docs/assignees{/user}","branches_url":"https://api.github.com/repos/Polymer/docs/branches{/branch}","tags_url":"https://api.github.com/repos/Polymer/docs/tags","blobs_url":"https://api.github.com/repos/Polymer/docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Polymer/docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Polymer/docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/Polymer/docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Polymer/docs/statuses/{sha}","languages_url":"https://api.github.com/repos/Polymer/docs/languages","stargazers_url":"https://api.github.com/repos/Polymer/docs/stargazers","contributors_url":"https://api.github.com/repos/Polymer/docs/contributors","subscribers_url":"https://api.github.com/repos/Polymer/docs/subscribers","subscription_url":"https://api.github.com/repos/Polymer/docs/subscription","commits_url":"https://api.github.com/repos/Polymer/docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/Polymer/docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/Polymer/docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/Polymer/docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/Polymer/docs/contents/{+path}","compare_url":"https://api.github.com/repos/Polymer/docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Polymer/docs/merges","archive_url":"https://api.github.com/repos/Polymer/docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Polymer/docs/downloads","issues_url":"https://api.github.com/repos/Polymer/docs/issues{/number}","pulls_url":"https://api.github.com/repos/Polymer/docs/pulls{/number}","milestones_url":"https://api.github.com/repos/Polymer/docs/milestones{/number}","notifications_url":"https://api.github.com/repos/Polymer/docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Polymer/docs/labels{/name}","releases_url":"https://api.github.com/repos/Polymer/docs/releases{/id}","created_at":"2013-01-24T19:11:00Z","updated_at":"2015-12-18T22:17:06Z","pushed_at":"2015-12-21T02:04:35Z","git_url":"git://github.com/Polymer/docs.git","ssh_url":"git@github.com:Polymer/docs.git","clone_url":"https://github.com/Polymer/docs.git","svn_url":"https://github.com/Polymer/docs","homepage":"https://www.polymer-project.org","size":85539,"stargazers_count":888,"watchers_count":888,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2406,"mirror_url":null,"open_issues_count":141,"forks":2406,"open_issues":141,"watchers":888,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Polymer/docs/pulls/1474"},"html":{"href":"https://github.com/Polymer/docs/pull/1474"},"issue":{"href":"https://api.github.com/repos/Polymer/docs/issues/1474"},"comments":{"href":"https://api.github.com/repos/Polymer/docs/issues/1474/comments"},"review_comments":{"href":"https://api.github.com/repos/Polymer/docs/pulls/1474/comments"},"review_comment":{"href":"https://api.github.com/repos/Polymer/docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Polymer/docs/pulls/1474/commits"},"statuses":{"href":"https://api.github.com/repos/Polymer/docs/statuses/eed16330c568770e169430184ac6b01d672a7410"}}}}