{"id":20355954,"url":"https://github.com/enspirit/webspicy","last_synced_at":"2025-04-04T21:07:37.745Z","repository":{"id":37561800,"uuid":"97702318","full_name":"enspirit/webspicy","owner":"enspirit","description":"A technology agnostic specification and test framework that yields better coverage for less testing effort.","archived":false,"fork":false,"pushed_at":"2025-03-28T19:52:51.000Z","size":530,"stargazers_count":47,"open_issues_count":6,"forks_count":2,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-28T20:07:10.542Z","etag":null,"topics":["software-engineering","software-testing","specification","test-framework"],"latest_commit_sha":null,"homepage":"https://yourbackendisbroken.dev","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/enspirit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-19T10:08:19.000Z","updated_at":"2025-03-28T19:52:55.000Z","dependencies_parsed_at":"2024-04-18T12:45:06.683Z","dependency_job_id":"1e72a6a1-f994-4ec4-a27d-5f3d8c073be5","html_url":"https://github.com/enspirit/webspicy","commit_stats":{"total_commits":395,"total_committers":9,"mean_commits":"43.888888888888886","dds":"0.15696202531645564","last_synced_commit":"86474ca5f3ee67253ce792e94f514f70babb6d79"},"previous_names":[],"tags_count":102,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enspirit%2Fwebspicy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enspirit%2Fwebspicy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enspirit%2Fwebspicy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enspirit%2Fwebspicy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enspirit","download_url":"https://codeload.github.com/enspirit/webspicy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247249524,"owners_count":20908212,"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","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":["software-engineering","software-testing","specification","test-framework"],"created_at":"2024-11-14T23:14:35.148Z","updated_at":"2025-04-04T21:07:37.719Z","avatar_url":"https://github.com/enspirit.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Test](https://github.com/enspirit/webspicy/actions/workflows/integration.yml/badge.svg)](https://github.com/enspirit/webspicy/actions/workflows/integration.yml/badge.svg)\n# Webspicy\n\nA specification and test framework for web services seen as black-box software\noperations. Webspicy yields a better test coverage for a smaller testing effort.\n\nSee webspicy in action and make the tutorial on https://yourbackendisbroken.dev\n\nHave a look at `doc/*.md` for vocabulary and vision as well as `ROADMAP.md`.\n\n## Features\n\n* Declarative specification of HTTP web services + their tests\n\n* Framework/language agnostic: `webspicy` is written in Ruby, but can be used\n  to test web services for backends written in any language / framework.\n\n* Black box testing: `webspicy` focuses on web services seen as blackboxes. It\n  has no knowledge of the implementation, and focuses on HTTP and input/output\n  data instead. Investing in such testing makes those tests more stable and\n  your API design better.\n\n* Formal and human-friendly data schema with strong data matching semantics,\n  thanks to [http://finitio.io](http://finitio.io)\n\n* Test instrumentation and generation, based on PRE \u0026 POST contracts.\n\n* Extra goodness for Rubyists: being written in ruby, `webspicy` also supports\n  testing Rack applications directly (through rack/test), which boosts the\n  test suite.\n\n* Extra goodies: when a specification is written, it can also be used for\n  mocking the API, generating an openapi file, etc.\n\n## Is this used on real-world cases?\n\nYes, `webspicy` is currently used on a dozen production components. Our biggest specification has 324 specification files for thousands of tests, 35% of them being generated.\n\n## Getting started with the commandline\n\nTo install webspicy on your developer computer, install ruby then:\n\n```\ngem install webspicy\n```\n\nThen execute webspicy help to see the options.\n\n```\nwebspicy --help\n```\n\n## Using the docker image(s)\n\nIf you just want to play with the commandline tool without having to\ninstall ruby \u0026 webspicy, you can use the docker image we provide for\nthe commandline:\n\n```\ndocker run enspirit/webspicy --help\n```\n\nIf you have a specification \u0026 test suite somewhere, an easy way to run the\nwhole suite (or integrate it in your continuous integration pipeline) is\nto use our `:tester` docker image. Just mount your test suite as a volume\nin `/home/app` and you are good to go:\n\n```\ndocker run -v path/to/tests:/formalspec enspirit/webspicy:tester\n```\n\nIf your plan is to test a backend that runs on your own machine (vs.\npublicly on the Internet or inside the default docker network),\nyou will need to add some networking option, as shown below. Please\nrefer to Docker documentation.\n\n```\ndocker run -v path/to/tests:/formalspec --network=host enspirit/webspicy:tester\n```\n\n## Contributing\n\nPlease use github issues for questions and bugs, and pull requests for\nsubmitting improvement proposals and new features.\n\n## Contributors\n\n* Bernard Lambeau (blambeau)\n* Louis Lambeau (llambeau)\n* Yoann Guyot (ygu)\n* Felix Holmgren (@felixyz)\n\nEnspirit (https://enspirit.be) and Klaro App (https://klaro.cards) are\nboth actively using, contributing and funding work on this library.\nPlease contact Bernard Lambeau for any question.\n\n## Licence\n\nWebspicy is distributed under a MIT Licence, by Enspirit SRL.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenspirit%2Fwebspicy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenspirit%2Fwebspicy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenspirit%2Fwebspicy/lists"}