{"action":"created","comment":{"url":"https://api.github.com/repos/Codeception/Codeception/pulls/comments/51324936","id":51324936,"diff_hunk":"@@ -452,115 +462,79 @@ public function printScenarioTrace(ScenarioDriven $failedTest)\n         $this->output->writeln(\"\");\n     }\n \n-    /**\n-     * @param SuiteEvent $e\n-     */\n-    protected function buildResultsTable(SuiteEvent $e)\n+    protected function detectWidth()\n     {\n-        $this->columns = [40, 5];\n-        foreach ($e->getSuite()->tests() as $test) {\n-            if ($test instanceof TestInterface) {\n-                $this->columns[0] = max(\n-                    $this->columns[0],\n-                    20 + strlen($test->getFeature()) + strlen($test->getFileName())\n-                );\n-                continue;\n-            }\n-            if ($test instanceof \\PHPUnit_Framework_TestSuite_DataProvider) {\n-                $test = $test->testAt(0);\n-                $output_length = $test instanceof TestInterface\n-                    ? strlen($test->getFeature()) + strlen($test->getFileName())\n-                    : strlen($test->toString());\n-\n-                $this->columns[0] = max(\n-                    $this->columns[0],\n-                    15 + $output_length\n-                );\n-                continue;\n-            }\n-            $this->columns[0] = max($this->columns[0], 10 + strlen($test->toString()));\n-        }\n-        $cols = $this->columns[0];\n-        if ((strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')\n+        if (!$this->isWin()\n             && (php_sapi_name() == \"cli\")\n             && (getenv('TERM'))\n             && (getenv('TERM') != 'unknown')\n         ) {\n-            $cols = intval(`command -v tput >> /dev/null 2>&1 && tput cols`);\n-        }\n-        if ($cols < $this->columns[0]) {\n-            $this->columns[0] = $cols-$this->columns[1];\n+            $this->width = (int)(`command -v tput >> /dev/null 2>&1 && tput cols`)-2;\n+            return;\n         }\n+        return $this->width = 40;\n+    }\n+\n+    private function isWin()\n+    {\n+        return strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';\n     }\n \n     /**\n-     * @param \\PHPUnit_Framework_TestCase $test\n+     * @param \\PHPUnit_Framework_SelfDescribing $test\n      * @param bool $inProgress\n-     * @return Message\n      */\n-    protected function getTestMessage(\\PHPUnit_Framework_SelfDescribing $test, $inProgress = false)\n+    protected function writeCurrentTest(\\PHPUnit_Framework_SelfDescribing $test, $inProgress = true)\n     {\n-        if (!$test instanceof TestInterface and $test instanceof \\PHPUnit_Framework_TestCase) {\n-            $this->message = $this\n-                ->message('%s:%s')\n-                ->with($this->cutNamespace(get_class($test)), $test->getName(true))\n-                ->apply(function ($str) { return str_replace('with data set', \"|\", $str); } )\n-                ->cut($inProgress ? $this->columns[0] + $this->columns[1] - 16 : $this->columns[0] - 2)\n-                ->style('focus')\n-                ->prepend($inProgress ? 'Running ' : '');\n-            return $this->message;\n-        }\n-\n-        $filename = $this->cutNamespace($test->getSignature());\n-        $feature = $test->getFeature();\n+        $prefix = ($this->output->isInteractive() and !$this->isDetailed($test) and $inProgress) ? '- ' : '';\n+        $atMessage = $this->message(' ');\n \n-        if ($feature) {\n-            $this->message = $this\n-                ->message($inProgress ? $feature : ucfirst($feature))\n-                ->apply(function ($str) { return str_replace('with data set', \"|\", $str); } )\n-                ->cut($inProgress ? $this->columns[0] + $this->columns[1] - 18 - strlen($filename) : $this->columns[0] - 5 - strlen($filename))\n-                ->style('focus')\n-                ->prepend($inProgress ? 'Trying to ' : '')\n-                ->append(\" ($filename)\");\n-            return $this->message;\n+        $filename = basename(Descriptor::getTestFileName($test));\n+        if ($filename) {\n+            $atMessage = $atMessage\n+                ->append($this->options['colors'] ? '' : 'at ')\n+                ->append($filename);\n         }\n-        \n-        $this->message = $this\n-            ->message(\"<focus>%s</focus> \")\n-            ->prepend($inProgress ? 'Running ' : '')\n-            ->with($filename);\n-        return $this->message;\n-    }\n \n-    private function cutNamespace($className)\n-    {\n-        if (!$this->namespace) {\n-            return $className;\n-        }\n-        if (strpos($className, $this->namespace) === 0) {\n-            return substr($className, strlen($this->namespace)+1);\n-        }\n-        return $className;\n-    }\n+        $stripDataSet = function ($str) { return str_replace('with data set', \"|\", $str); };","path":"src/Codeception/Subscriber/Console.php","position":411,"original_position":411,"commit_id":"741343e3f3d29345e537ec9ecf44b2dfb3a802f9","original_commit_id":"741343e3f3d29345e537ec9ecf44b2dfb3a802f9","user":{"login":"Nitpick-CI","id":12626182,"avatar_url":"https://avatars.githubusercontent.com/u/12626182?v=3","gravatar_id":"","url":"https://api.github.com/users/Nitpick-CI","html_url":"https://github.com/Nitpick-CI","followers_url":"https://api.github.com/users/Nitpick-CI/followers","following_url":"https://api.github.com/users/Nitpick-CI/following{/other_user}","gists_url":"https://api.github.com/users/Nitpick-CI/gists{/gist_id}","starred_url":"https://api.github.com/users/Nitpick-CI/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Nitpick-CI/subscriptions","organizations_url":"https://api.github.com/users/Nitpick-CI/orgs","repos_url":"https://api.github.com/users/Nitpick-CI/repos","events_url":"https://api.github.com/users/Nitpick-CI/events{/privacy}","received_events_url":"https://api.github.com/users/Nitpick-CI/received_events","type":"User","site_admin":false},"body":"- Opening brace must be the last content on the line\n- Closing brace must be on a line by itself\n- Each PHP statement must be on a line by itself\n","created_at":"2016-01-29T22:26:57Z","updated_at":"2016-01-29T22:26:57Z","html_url":"https://github.com/Codeception/Codeception/pull/2750#discussion_r51324936","pull_request_url":"https://api.github.com/repos/Codeception/Codeception/pulls/2750","_links":{"self":{"href":"https://api.github.com/repos/Codeception/Codeception/pulls/comments/51324936"},"html":{"href":"https://github.com/Codeception/Codeception/pull/2750#discussion_r51324936"},"pull_request":{"href":"https://api.github.com/repos/Codeception/Codeception/pulls/2750"}}},"pull_request":{"url":"https://api.github.com/repos/Codeception/Codeception/pulls/2750","id":57711710,"html_url":"https://github.com/Codeception/Codeception/pull/2750","diff_url":"https://github.com/Codeception/Codeception/pull/2750.diff","patch_url":"https://github.com/Codeception/Codeception/pull/2750.patch","issue_url":"https://api.github.com/repos/Codeception/Codeception/issues/2750","number":2750,"state":"open","locked":false,"title":"Gherkin Format Support","user":{"login":"DavertMik","id":220264,"avatar_url":"https://avatars.githubusercontent.com/u/220264?v=3","gravatar_id":"","url":"https://api.github.com/users/DavertMik","html_url":"https://github.com/DavertMik","followers_url":"https://api.github.com/users/DavertMik/followers","following_url":"https://api.github.com/users/DavertMik/following{/other_user}","gists_url":"https://api.github.com/users/DavertMik/gists{/gist_id}","starred_url":"https://api.github.com/users/DavertMik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DavertMik/subscriptions","organizations_url":"https://api.github.com/users/DavertMik/orgs","repos_url":"https://api.github.com/users/DavertMik/repos","events_url":"https://api.github.com/users/DavertMik/events{/privacy}","received_events_url":"https://api.github.com/users/DavertMik/received_events","type":"User","site_admin":false},"body":"For someone this is long awaited feature, for others an unexpected one. \r\nWe bring Gherkin support to Codeception 2.2. This means that you can run your BDD-scenarios as tests.\r\n\r\nIn Codeception we were targeted developers audience so instead of Gherkin syntax we had PHP DSL. However, it is good to describe tests, and not for actual features. But what if we can mix flexibility and simplicity of PHP DSL for describing tests and Gherkin for features narrative. \r\n\r\nSo if you expect that bringing Gherkin format to Codeception is just about writing tests in this kind of way:\r\n\r\n```gherkin\r\nGiven I am on page \"/\"\r\nWhen I click \"Login\"\r\nAnd I fill field \"Username\" with \"davert\"\r\nAnd I fill field \"Password\" with \"123456\"\r\nAnd I click \"Login\"\r\nThen I should see \"Welcome, Davert\"\r\n```\r\n\r\nWell, nope, this won't work in Codeception. At least by default. We expect that BDD will be used in its [right way](https://cucumber.io/blog/2015/03/24/single-source-of-truth) for describing a business rules, and not on testing UI.\r\n\r\nSo here goes the idea: you describe business specification in Gherkin format, then you implement steps using Codeception's `$I` (actor) object. So the example above should be reworked to something like that:\r\n\r\nInside a feature file:\r\n\r\n```gherkin\r\nGiven I have account for \"davert\"\r\nWhen I log in\r\nThen I should see \"Welcome, Davert\" notification\r\n```\r\n\r\nInside an actor file (AcceptanceTester) or a context file (see below):\r\n\r\n```php\r\n<?php\r\nclass AcceptanceTester extends \\Codeception\\Actor \r\n{\r\n  use _generated\\AcceptanceTesterActions;\r\n\r\n  protected $userName;\r\n  protected $password = '123456';\r\n  /**\r\n   * @Given I have account for :name\r\n   */\r\n  public function prepareUser($name)\r\n  {\r\n      $this->userName = $name;\r\n      // let's assume user is already in database ;)\r\n  }  \r\n\r\n  /**\r\n   * @When I log in\r\n   */\r\n  public function logIn() \r\n  {\r\n    $I = $this;\r\n    $I->amOnPage('/');\r\n    $I->fillField('Username', $this->userName);\r\n    $I->fillField('Password', $this->password); // standard password\r\n    $I->click('Login', '#login-form'); // let's use UI-specific locators\r\n  }\r\n\r\n  /**\r\n   * @Then I should see :text notification\r\n   */\r\n  public function seeOnPage($text)\r\n  {\r\n    // we just wrap standard action into a feature step\r\n    $this->see($text, 'notification');\r\n  }\r\n}\r\n?>\r\n```\r\n\r\nWith `@Given`, `@When` or `@Then` annotation any method of actor object can become a feature step. \r\nYou can use either string with placeholders or regex for a step definition.\r\n\r\nHere is another example. We can use tables to define multiline data. Supported in Codeception.\r\n\r\n```gherkin\r\nFeature: ToDo items\r\n  In order to get my tasks done\r\n  As a motivated person\r\n  I need to be able to organize my todo list\r\n\r\n  Scenario: show current todos\r\n    Given there are todo items:\r\n      | Task             | State   |\r\n      | make Gherkin PR  | opened  |\r\n      | update docs      | opened  |\r\n      | create examples  | closed  |\r\n    When I open my todos\r\n    Then I should see 2 todo items\r\n```\r\n\r\n### Features\r\n\r\n* [x] executing tests from *.features file \r\n* [x] defining feature steps in actor file\r\n* [x] regex step definitions\r\n* [x] placeholder step definitions\r\n* [x] tables\r\n* [x] gherkin tags => Codeception groups\r\n* [x] multiple contexts\r\n* [x] select context for a tag or role\r\n* [x] list step definitions in console\r\n* [x] generate snippets for undefined steps\r\n* [] describe features in other languages\r\n* [] gherkin examples\r\n* [] ???\r\n\r\n### Implementation Details\r\n\r\n(for core team)\r\n\r\nThis PR includes lots of non-obvious changes. The overall Gherkin implementation requires \"behat/gherkin\" library and 2 files: `Codeception\\Test\\Gherkin` and its loader `Codeception\\Test\\Loader\\Gherkin`. \r\n\r\nHowever, lot of work was done to improve console output so all test formats would look nicely. \r\nAlso all improvements to output was also added to this branch (and not to 2.1 or master) for not to get into merge conflicts. \r\n\r\nStep, and MetaStep classes were changed to handle feature steps of Gherkin.\r\n\r\n### Roadmap\r\n\r\nThis feature is about to land into 2.2. A new guide on Behavior-Driven Development with Codeception is coming by that time.\r\n\r\nP.S. Appveyor tests may fail due to their technical issues","created_at":"2016-01-29T22:26:47Z","updated_at":"2016-01-29T22:26:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"49bd0b9006b15192e807affa65a40e739d887296","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/Codeception/Codeception/pulls/2750/commits","review_comments_url":"https://api.github.com/repos/Codeception/Codeception/pulls/2750/comments","review_comment_url":"https://api.github.com/repos/Codeception/Codeception/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Codeception/Codeception/issues/2750/comments","statuses_url":"https://api.github.com/repos/Codeception/Codeception/statuses/741343e3f3d29345e537ec9ecf44b2dfb3a802f9","head":{"label":"Codeception:gherkin","ref":"gherkin","sha":"741343e3f3d29345e537ec9ecf44b2dfb3a802f9","user":{"login":"Codeception","id":1288753,"avatar_url":"https://avatars.githubusercontent.com/u/1288753?v=3","gravatar_id":"","url":"https://api.github.com/users/Codeception","html_url":"https://github.com/Codeception","followers_url":"https://api.github.com/users/Codeception/followers","following_url":"https://api.github.com/users/Codeception/following{/other_user}","gists_url":"https://api.github.com/users/Codeception/gists{/gist_id}","starred_url":"https://api.github.com/users/Codeception/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Codeception/subscriptions","organizations_url":"https://api.github.com/users/Codeception/orgs","repos_url":"https://api.github.com/users/Codeception/repos","events_url":"https://api.github.com/users/Codeception/events{/privacy}","received_events_url":"https://api.github.com/users/Codeception/received_events","type":"Organization","site_admin":false},"repo":{"id":2880469,"name":"Codeception","full_name":"Codeception/Codeception","owner":{"login":"Codeception","id":1288753,"avatar_url":"https://avatars.githubusercontent.com/u/1288753?v=3","gravatar_id":"","url":"https://api.github.com/users/Codeception","html_url":"https://github.com/Codeception","followers_url":"https://api.github.com/users/Codeception/followers","following_url":"https://api.github.com/users/Codeception/following{/other_user}","gists_url":"https://api.github.com/users/Codeception/gists{/gist_id}","starred_url":"https://api.github.com/users/Codeception/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Codeception/subscriptions","organizations_url":"https://api.github.com/users/Codeception/orgs","repos_url":"https://api.github.com/users/Codeception/repos","events_url":"https://api.github.com/users/Codeception/events{/privacy}","received_events_url":"https://api.github.com/users/Codeception/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Codeception/Codeception","description":"Full-stack testing PHP framework","fork":false,"url":"https://api.github.com/repos/Codeception/Codeception","forks_url":"https://api.github.com/repos/Codeception/Codeception/forks","keys_url":"https://api.github.com/repos/Codeception/Codeception/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Codeception/Codeception/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Codeception/Codeception/teams","hooks_url":"https://api.github.com/repos/Codeception/Codeception/hooks","issue_events_url":"https://api.github.com/repos/Codeception/Codeception/issues/events{/number}","events_url":"https://api.github.com/repos/Codeception/Codeception/events","assignees_url":"https://api.github.com/repos/Codeception/Codeception/assignees{/user}","branches_url":"https://api.github.com/repos/Codeception/Codeception/branches{/branch}","tags_url":"https://api.github.com/repos/Codeception/Codeception/tags","blobs_url":"https://api.github.com/repos/Codeception/Codeception/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Codeception/Codeception/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Codeception/Codeception/git/refs{/sha}","trees_url":"https://api.github.com/repos/Codeception/Codeception/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Codeception/Codeception/statuses/{sha}","languages_url":"https://api.github.com/repos/Codeception/Codeception/languages","stargazers_url":"https://api.github.com/repos/Codeception/Codeception/stargazers","contributors_url":"https://api.github.com/repos/Codeception/Codeception/contributors","subscribers_url":"https://api.github.com/repos/Codeception/Codeception/subscribers","subscription_url":"https://api.github.com/repos/Codeception/Codeception/subscription","commits_url":"https://api.github.com/repos/Codeception/Codeception/commits{/sha}","git_commits_url":"https://api.github.com/repos/Codeception/Codeception/git/commits{/sha}","comments_url":"https://api.github.com/repos/Codeception/Codeception/comments{/number}","issue_comment_url":"https://api.github.com/repos/Codeception/Codeception/issues/comments{/number}","contents_url":"https://api.github.com/repos/Codeception/Codeception/contents/{+path}","compare_url":"https://api.github.com/repos/Codeception/Codeception/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Codeception/Codeception/merges","archive_url":"https://api.github.com/repos/Codeception/Codeception/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Codeception/Codeception/downloads","issues_url":"https://api.github.com/repos/Codeception/Codeception/issues{/number}","pulls_url":"https://api.github.com/repos/Codeception/Codeception/pulls{/number}","milestones_url":"https://api.github.com/repos/Codeception/Codeception/milestones{/number}","notifications_url":"https://api.github.com/repos/Codeception/Codeception/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Codeception/Codeception/labels{/name}","releases_url":"https://api.github.com/repos/Codeception/Codeception/releases{/id}","deployments_url":"https://api.github.com/repos/Codeception/Codeception/deployments","created_at":"2011-11-30T04:06:44Z","updated_at":"2016-01-29T13:04:44Z","pushed_at":"2016-01-29T22:26:48Z","git_url":"git://github.com/Codeception/Codeception.git","ssh_url":"git@github.com:Codeception/Codeception.git","clone_url":"https://github.com/Codeception/Codeception.git","svn_url":"https://github.com/Codeception/Codeception","homepage":"http://codeception.com","size":57271,"stargazers_count":1958,"watchers_count":1958,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":741,"mirror_url":null,"open_issues_count":250,"forks":741,"open_issues":250,"watchers":1958,"default_branch":"2.1"}},"base":{"label":"Codeception:master","ref":"master","sha":"8ab258d7538ac428a4f6e21be47dd63bff3b5d13","user":{"login":"Codeception","id":1288753,"avatar_url":"https://avatars.githubusercontent.com/u/1288753?v=3","gravatar_id":"","url":"https://api.github.com/users/Codeception","html_url":"https://github.com/Codeception","followers_url":"https://api.github.com/users/Codeception/followers","following_url":"https://api.github.com/users/Codeception/following{/other_user}","gists_url":"https://api.github.com/users/Codeception/gists{/gist_id}","starred_url":"https://api.github.com/users/Codeception/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Codeception/subscriptions","organizations_url":"https://api.github.com/users/Codeception/orgs","repos_url":"https://api.github.com/users/Codeception/repos","events_url":"https://api.github.com/users/Codeception/events{/privacy}","received_events_url":"https://api.github.com/users/Codeception/received_events","type":"Organization","site_admin":false},"repo":{"id":2880469,"name":"Codeception","full_name":"Codeception/Codeception","owner":{"login":"Codeception","id":1288753,"avatar_url":"https://avatars.githubusercontent.com/u/1288753?v=3","gravatar_id":"","url":"https://api.github.com/users/Codeception","html_url":"https://github.com/Codeception","followers_url":"https://api.github.com/users/Codeception/followers","following_url":"https://api.github.com/users/Codeception/following{/other_user}","gists_url":"https://api.github.com/users/Codeception/gists{/gist_id}","starred_url":"https://api.github.com/users/Codeception/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Codeception/subscriptions","organizations_url":"https://api.github.com/users/Codeception/orgs","repos_url":"https://api.github.com/users/Codeception/repos","events_url":"https://api.github.com/users/Codeception/events{/privacy}","received_events_url":"https://api.github.com/users/Codeception/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Codeception/Codeception","description":"Full-stack testing PHP framework","fork":false,"url":"https://api.github.com/repos/Codeception/Codeception","forks_url":"https://api.github.com/repos/Codeception/Codeception/forks","keys_url":"https://api.github.com/repos/Codeception/Codeception/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Codeception/Codeception/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Codeception/Codeception/teams","hooks_url":"https://api.github.com/repos/Codeception/Codeception/hooks","issue_events_url":"https://api.github.com/repos/Codeception/Codeception/issues/events{/number}","events_url":"https://api.github.com/repos/Codeception/Codeception/events","assignees_url":"https://api.github.com/repos/Codeception/Codeception/assignees{/user}","branches_url":"https://api.github.com/repos/Codeception/Codeception/branches{/branch}","tags_url":"https://api.github.com/repos/Codeception/Codeception/tags","blobs_url":"https://api.github.com/repos/Codeception/Codeception/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Codeception/Codeception/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Codeception/Codeception/git/refs{/sha}","trees_url":"https://api.github.com/repos/Codeception/Codeception/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Codeception/Codeception/statuses/{sha}","languages_url":"https://api.github.com/repos/Codeception/Codeception/languages","stargazers_url":"https://api.github.com/repos/Codeception/Codeception/stargazers","contributors_url":"https://api.github.com/repos/Codeception/Codeception/contributors","subscribers_url":"https://api.github.com/repos/Codeception/Codeception/subscribers","subscription_url":"https://api.github.com/repos/Codeception/Codeception/subscription","commits_url":"https://api.github.com/repos/Codeception/Codeception/commits{/sha}","git_commits_url":"https://api.github.com/repos/Codeception/Codeception/git/commits{/sha}","comments_url":"https://api.github.com/repos/Codeception/Codeception/comments{/number}","issue_comment_url":"https://api.github.com/repos/Codeception/Codeception/issues/comments{/number}","contents_url":"https://api.github.com/repos/Codeception/Codeception/contents/{+path}","compare_url":"https://api.github.com/repos/Codeception/Codeception/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Codeception/Codeception/merges","archive_url":"https://api.github.com/repos/Codeception/Codeception/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Codeception/Codeception/downloads","issues_url":"https://api.github.com/repos/Codeception/Codeception/issues{/number}","pulls_url":"https://api.github.com/repos/Codeception/Codeception/pulls{/number}","milestones_url":"https://api.github.com/repos/Codeception/Codeception/milestones{/number}","notifications_url":"https://api.github.com/repos/Codeception/Codeception/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Codeception/Codeception/labels{/name}","releases_url":"https://api.github.com/repos/Codeception/Codeception/releases{/id}","deployments_url":"https://api.github.com/repos/Codeception/Codeception/deployments","created_at":"2011-11-30T04:06:44Z","updated_at":"2016-01-29T13:04:44Z","pushed_at":"2016-01-29T22:26:48Z","git_url":"git://github.com/Codeception/Codeception.git","ssh_url":"git@github.com:Codeception/Codeception.git","clone_url":"https://github.com/Codeception/Codeception.git","svn_url":"https://github.com/Codeception/Codeception","homepage":"http://codeception.com","size":57271,"stargazers_count":1958,"watchers_count":1958,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":741,"mirror_url":null,"open_issues_count":250,"forks":741,"open_issues":250,"watchers":1958,"default_branch":"2.1"}},"_links":{"self":{"href":"https://api.github.com/repos/Codeception/Codeception/pulls/2750"},"html":{"href":"https://github.com/Codeception/Codeception/pull/2750"},"issue":{"href":"https://api.github.com/repos/Codeception/Codeception/issues/2750"},"comments":{"href":"https://api.github.com/repos/Codeception/Codeception/issues/2750/comments"},"review_comments":{"href":"https://api.github.com/repos/Codeception/Codeception/pulls/2750/comments"},"review_comment":{"href":"https://api.github.com/repos/Codeception/Codeception/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Codeception/Codeception/pulls/2750/commits"},"statuses":{"href":"https://api.github.com/repos/Codeception/Codeception/statuses/741343e3f3d29345e537ec9ecf44b2dfb3a802f9"}}}}