{"id":9243831,"url":"https://github.com/purescript-spec/purescript-spec","last_synced_at":"2026-02-25T16:01:08.820Z","repository":{"id":30506706,"uuid":"34061107","full_name":"purescript-spec/purescript-spec","owner":"purescript-spec","description":"Testing framework for Purescript","archived":false,"fork":false,"pushed_at":"2024-11-11T21:40:59.000Z","size":1931,"stargazers_count":138,"open_issues_count":13,"forks_count":45,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-01-14T16:55:50.783Z","etag":null,"topics":["functional-programming","purescript","test-driven-development","testing","type-safety"],"latest_commit_sha":null,"homepage":"https://purescript-spec.github.io/purescript-spec/","language":"PureScript","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/purescript-spec.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-04-16T14:37:04.000Z","updated_at":"2025-12-06T10:54:03.000Z","dependencies_parsed_at":"2024-02-12T22:39:27.041Z","dependency_job_id":"1135a158-503a-4572-a371-63e9892456ca","html_url":"https://github.com/purescript-spec/purescript-spec","commit_stats":{"total_commits":421,"total_committers":41,"mean_commits":"10.268292682926829","dds":0.7220902612826603,"last_synced_commit":"112f22cfcdcf2417cb36abf257175296e1eadcec"},"previous_names":["owickstrom/purescript-spec"],"tags_count":59,"template":false,"template_full_name":null,"purl":"pkg:github/purescript-spec/purescript-spec","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-spec%2Fpurescript-spec","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-spec%2Fpurescript-spec/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-spec%2Fpurescript-spec/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-spec%2Fpurescript-spec/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/purescript-spec","download_url":"https://codeload.github.com/purescript-spec/purescript-spec/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-spec%2Fpurescript-spec/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29829408,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T15:41:19.027Z","status":"ssl_error","status_checked_at":"2026-02-25T15:40:47.150Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["functional-programming","purescript","test-driven-development","testing","type-safety"],"created_at":"2024-05-08T00:11:30.765Z","updated_at":"2026-02-25T16:01:08.786Z","avatar_url":"https://github.com/purescript-spec.png","language":"PureScript","readme":"# PureScript Spec\n\n[![Build Status](https://github.com/purescript-spec/purescript-spec/workflows/CI/badge.svg?branch=master)](https://github.com/purescript-spec/purescript-spec/actions?query=workflow%3ACI+branch%3Amaster)\n\nPureScript Spec is a testing framework for Purescript, inspired by\n[hspec](http://hspec.github.io/).\n\n\u003cimg src=\"https://raw.githubusercontent.com/purescript-spec/purescript-spec/master/example.png\" width=\"400\" /\u003e\n\n## Documentation\n\n* [PureScript Spec - The Guide](https://purescript-spec.github.io/purescript-spec/) explains\nin detail how to use purescript-spec. **You should probably start here.**\n* [purescript-spec on Pursuit](https://pursuit.purescript.org/packages/purescript-spec)\n  features version information and API documentation.\n\n## Changelog\n\n* **8.0.0**\n  * `runSpec` renamed to `runSpecPure`.\n  * `runSpecT` renamed to `evalSpecT`.\n  * Old versions of `runSpec` and `runSpecT` are left in, but deprecated, with\n    the warning pointing to `runSpecAndExitProcess` from `spec-node`.\n  * Added `spec-node` docs.\n\n* **7.6.1**\n  * Upgraded to Spago Next\n  * Dropped support for Pulp and Bower\n\n* **7.5.1**\n  * Support for filtering the test tree [#139](https://github.com/purescript-spec/purescript-spec/pull/139)\n    * **Breaking**: the `Tree` type got a new type parameter, representing node\n      annotations. Previously nodes were always annotated with `String` (meaning\n      test/group name), now it's a parameter.\n  * Integration tests [#138](https://github.com/purescript-spec/purescript-spec/pull/138)\n  * Better, more honest support for `failFast` [#140](https://github.com/purescript-spec/purescript-spec/pull/140)\n\n* **7.4.1**\n  * Diff support for TeamCity reporter by @Neppord [#136](https://github.com/purescript-spec/purescript-spec/pull/136)\n  * `failFast` config option to stop on first failure by @fsoikin [#137](https://github.com/purescript-spec/purescript-spec/pull/137)\n\n* **7.3.0**\n  * TeamCity reporter now supports parallel execution. [#132 by @Neppord](https://github.com/purescript-spec/purescript-spec/pull/132)\n\n* **7.2.0**\n  * Added a reporter for [TeamCity](https://www.jetbrains.com/teamcity/) by @Neppord\n  * Use `unsafeRegex` instead of methods from `purescript-partial` to create a regex by @toastal\n\n* **7.1.0**\n  * Added the `AnyShow` newtype wrapper for asserting on values that don't have a Show instance.\n    By @sigma-andex and @i-am-the-slime in [#125](https://github.com/purescript-spec/purescript-spec/pull/125)\n\n* **4.0.0**\n  * Rename `run` and `run'` to `runSpec` and `runSpecM`.\n  * Run tests in `Aff` instead of `Effect`.\n  * New assertions:\n    - Aff: `expectError`, `shouldReturn`, `shouldNotReturn`\n    - String: `shouldContain`, `shouldNotContain`, `shouldStartWith`,\n      `shouldEndWith`\n  * Parallel test execution / `parallel` and `sequential` combinators\n  * Hooks: `aroundWith`, `around`, `around_`, `before`, `before_`, `beforeWith`,\n    `beforeAll`, `beforeAll_`, `after`, `after_`, `afterAll`, `afterAll_`\n  * Upgrade to PureScript 0.13.x.\n* **3.1.0**\n  * Add `shouldSatisfy` assertion and complement, add exit flag to runner config\n* **3.0.0**\n  * Upgrade to PureScript 0.12.x, which is non-backwards compatible to 0.11.x.\n* **2.0.0**\n  * Update to purescript-aff 4\n* **1.0.0**\n  * _No additions from 0.14.0._\n* **0.14.0**\n  * Remove unused \"slow\" from Dot reporter config\n* **0.13.0**\n  * Upgrade to PureScript 0.11.x, which is non-backwards compatible to 0.10.x.\n* **0.12.4**\n  * Upgrade to purescript-pipes 2.1.0\n* **0.12.3**\n  * Export and document `run'` function (for configuration), fixes #38\n* **0.12.2**\n  * Reexport common reporters in `Test.Spec.Reporter` module, fixes #37\n* **0.12.1**\n  * Move array of results to runner event, fixes #36\n* **0.12.0**\n  * Again support multiple reporters, fixes #33\n* **0.11.0**\n  * Publish *The Guide* on GitHub pages\n  * Collapse result entries in Maps to deduplicate describes, fixes #9\n  * Reimplement Node reporters and runner using purescript-pipes. An upgrade\n    might require a change in your `main` type signature. The type\n    `Test.Spec.Runner.RunnerEffects` makes it more convenient to specify all\n    effect rows:\n    * When using regular specs, use `main :: Effect Unit`\n    * When using purescript-spec-discovery, use `main :: Effect Unit`\n* **0.10.0**\n  * Defer test execution with Aff to have greater control. Test runners can\n    either collect and run all tests, and then report their results, using\n    the provided `run` and `Reporter` interface, or they can implement the\n    test run in another way by `collect`ing a `Spec` and running the `Aff`s in\n    some special way.\n* **0.9.0**\n  * Upgrade dependencies to 2.x\n  * Require PureScript 0.10.x\n* **0.8.0**\n  * Compatibility with PureScript 0.9.1\n* **0.7.5**\n  * Bump dependency versions.\n* **0.7.4**\n  * Use `purescript-node-process` instead of custom PROCESS effect.\n* **0.7.2**\n  * Update purescript-strings for PS 0.7.4 compatibility.\n  * Make all dependencies flexible.\n  * Fix case statements to remove warnings.\n* **0.7.1**\n  * Workaround for escape sequence bug in `psc-bundle`, see:\n    * https://github.com/purescript-spec/purescript-spec/issues/12\n    * https://github.com/purescript/purescript/issues/1265\n* **0.7.0**\n  * Rename `runNode` to `run` and place it in `Test.Spec.Runner`.\n  * Support browser testing.\n* **0.6.2**\n  * Add more assertions.\n* **0.6.1**\n  * Fix bug in `shouldContain` assertion for strings.\n* **0.6.0**\n  * Adapt for PureScript 0.7 compatibility.\n* **0.5.0**\n  * Make reporters pluggable.\n* **0.4.0**\n  * Add async support in `it` using `Aff`.\n\n## Contribute\n\nIf you have any issues or possible improvements please file them as\n[GitHub Issues](https://github.com/purescript-spec/purescript-spec/issues). Pull\nrequests are encouraged.\n\n## License\n\n[MIT License](LICENSE.md).\n\n## Status\n\n[![](https://codescene.io/projects/124/status.svg) Get more details at **codescene.io**.](https://codescene.io/projects/124/jobs/latest-successful/results)\n","funding_links":[],"categories":["Testing"],"sub_categories":["Deku"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurescript-spec%2Fpurescript-spec","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpurescript-spec%2Fpurescript-spec","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurescript-spec%2Fpurescript-spec/lists"}