{"id":29955016,"url":"https://github.com/foca/storyteller","last_synced_at":"2025-08-03T17:09:20.993Z","repository":{"id":66265689,"uuid":"98313","full_name":"foca/storyteller","owner":"foca","description":"Minimalist user stories for test/unit","archived":false,"fork":false,"pushed_at":"2008-12-30T11:26:25.000Z","size":84,"stargazers_count":22,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-04-10T10:20:06.405Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/foca.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2008-12-30T08:19:37.000Z","updated_at":"2019-08-13T13:50:36.000Z","dependencies_parsed_at":"2023-02-20T01:05:14.016Z","dependency_job_id":null,"html_url":"https://github.com/foca/storyteller","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/foca/storyteller","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foca%2Fstoryteller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foca%2Fstoryteller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foca%2Fstoryteller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foca%2Fstoryteller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/foca","download_url":"https://codeload.github.com/foca/storyteller/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foca%2Fstoryteller/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268578914,"owners_count":24273089,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-03T02:00:12.545Z","response_time":2577,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-03T17:09:11.526Z","updated_at":"2025-08-03T17:09:20.983Z","avatar_url":"https://github.com/foca.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"Storyteller\n===========\n\nMinimalist user stories for test/unit\n\nExamples\n--------\n\n    require \"test/unit\"\n    require \"rubygems\"\n    require \"context\"\n    require \"storyteller\"\n    \n    class MyAcceptanceTest \u003c Test::Unit::TestCase\n      include Test::Storyteller\n      \n      story \u003c\u003c-EOS\n        As a developer\n        I want to have user stories on test/unit that look pretty\n        So that I can have nice acceptance tests\n      EOS\n      \n      scenario \"So simple it's awesome\" do\n        # ...\n      end\n      \n      scenario \"OMG I'm so ruling the world with this\" do\n        # ...\n      end\n    end\n\nAnd when run that produces:\n\n    $ ruby my_acceptance_test.rb\n    Loaded suite my_acceptance_test\n    Started\n\n    As a developer\n    I want to have user stories on test/unit that look pretty\n    So that I can have nice acceptance tests\n    ..\n    \n    Finished in 0.000178 seconds.\n\n    2 tests, 0 assertions, 0 failures, 0 errors\n\nIf you have multiple classes that include Test::Storyteller (or that inherit\nfrom a common base class that includes it), then each story will get printed\nin turn, with the scenarios run below it.\n\nAnd best of all: **in full beautiful color** (cause what's the point if it\nain't pretty?)\n\nInstalling\n==========\n\n    sudo gem sources add http://gems.github.com\n    sudo gem install foca-storyteller\n\nOMG why not use Cucumber?\n=========================\n\nI like Cucumber and use it, but it's just a whole new layer of complexity when\nyou don't have business people checking and reviewing your user stories. Simple\nrequirements need simple solutions.\n\nLicense\n=======\n\n(The MIT License)\n \nCopyright (c) 2009 Nicolás Sanguinetti \u003ccontacto@nicolassanguinetti.info\u003e\n \nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n \nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n \nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoca%2Fstoryteller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffoca%2Fstoryteller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoca%2Fstoryteller/lists"}