{"id":15130905,"url":"https://github.com/igmat/baset","last_synced_at":"2026-03-07T09:03:40.469Z","repository":{"id":27939494,"uuid":"115645061","full_name":"Igmat/baset","owner":"Igmat","description":"Testing tool for baseline strategy","archived":false,"fork":false,"pushed_at":"2026-01-25T01:49:39.000Z","size":2866,"stargazers_count":26,"open_issues_count":61,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-01-25T14:56:36.466Z","etag":null,"topics":["baseline","javascript","testing","testing-tools"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/Igmat.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","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}},"created_at":"2017-12-28T17:23:50.000Z","updated_at":"2020-05-27T20:20:35.000Z","dependencies_parsed_at":"2024-04-15T23:24:20.303Z","dependency_job_id":"ba0f702a-6994-4d27-9fcd-317039093961","html_url":"https://github.com/Igmat/baset","commit_stats":{"total_commits":330,"total_committers":6,"mean_commits":55.0,"dds":0.0636363636363636,"last_synced_commit":"a1ac7e9ca45a23846b01dd977f1951948f29d652"},"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/Igmat/baset","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Igmat%2Fbaset","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Igmat%2Fbaset/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Igmat%2Fbaset/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Igmat%2Fbaset/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Igmat","download_url":"https://codeload.github.com/Igmat/baset/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Igmat%2Fbaset/sbom","scorecard":{"id":65557,"data":{"date":"2025-08-11","repo":{"name":"github.com/Igmat/baset","commit":"a1ac7e9ca45a23846b01dd977f1951948f29d652"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 2/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"175 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-ff7x-qrg7-qggm","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-w457-6q6x-cgp9","Warn: Project is vulnerable to: GHSA-62gr-4qp9-h98f","Warn: Project is vulnerable to: GHSA-f52g-6jhx-586p","Warn: Project is vulnerable to: GHSA-2cf5-4w76-r9qv","Warn: Project is vulnerable to: GHSA-3cqr-58rm-57f8","Warn: Project is vulnerable to: GHSA-g9r4-xpmj-mj65","Warn: Project is vulnerable to: GHSA-q2c6-c6pm-g3gh","Warn: Project is vulnerable to: GHSA-765h-qjxv-5f44","Warn: Project is vulnerable to: GHSA-f2jv-r9rf-7988","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-rc47-6667-2j5j","Warn: Project is vulnerable to: GHSA-pc5p-h8pf-mvwp","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-2pr6-76vf-7546","Warn: Project is vulnerable to: GHSA-8j8c-7jfh-h6hx","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-6c8f-qphg-qjgp","Warn: Project is vulnerable to: GHSA-jf85-cpcp-j695","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-7wpw-2hjm-89gp","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-fhjf-83wg-r2j9","Warn: Project is vulnerable to: GHSA-w7rc-rwvf-8q5r","Warn: Project is vulnerable to: GHSA-r683-j2x4-v87g","Warn: Project is vulnerable to: GHSA-jmqm-f2gx-4fjv","Warn: Project is vulnerable to: GHSA-3j8f-xvm3-ffx4","Warn: Project is vulnerable to: GHSA-4p35-cfcx-8653","Warn: Project is vulnerable to: GHSA-7f3x-x4pr-wqhj","Warn: Project is vulnerable to: GHSA-jpp7-7chh-cf67","Warn: Project is vulnerable to: GHSA-q6wq-5p59-983w","Warn: Project is vulnerable to: GHSA-j9fq-vwqv-2fm2","Warn: Project is vulnerable to: GHSA-pqw5-jmp5-px4v","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-4g88-fppr-53pp","Warn: Project is vulnerable to: GHSA-4jqc-8m5r-9rpr","Warn: Project is vulnerable to: GHSA-4rq4-32rv-6wp6","Warn: Project is vulnerable to: GHSA-64g7-mvw6-v9qj","Warn: Project is vulnerable to: GHSA-vx3p-948g-6vhq","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-r628-mhmh-qjhw","Warn: Project is vulnerable to: GHSA-9r2w-394v-53qc","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-qq89-hq3f-393p","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-w5p7-h5w8-2hfq","Warn: Project is vulnerable to: GHSA-7p7h-4mm5-852v","Warn: Project is vulnerable to: GHSA-38fc-wpqx-33j7","Warn: Project is vulnerable to: GHSA-cf4h-3jhx-xvhq","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp","Warn: Project is vulnerable to: GHSA-h6ch-v84p-w6p9","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-wx77-rp39-c6vg","Warn: Project is vulnerable to: GHSA-6fx8-h7jm-663j","Warn: Project is vulnerable to: GHSA-cwfw-4gq5-mrqx","Warn: Project is vulnerable to: GHSA-g95f-p29q-9xw4","Warn: Project is vulnerable to: GHSA-c6rq-rjc2-86v2","Warn: Project is vulnerable to: GHSA-8r6j-v8pm-fqw3","Warn: Project is vulnerable to: MAL-2023-462","Warn: Project is vulnerable to: GHSA-j44m-qm6p-hp7m","Warn: Project is vulnerable to: GHSA-6chw-6frg-f759","Warn: Project is vulnerable to: GHSA-whgm-jr23-g3j9","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-x9w5-v3q2-3rhw","Warn: Project is vulnerable to: GHSA-257v-vj4p-3w2h","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-p28h-cc7q-c4fg","Warn: Project is vulnerable to: GHSA-3wcq-x3mq-6r9p","Warn: Project is vulnerable to: GHSA-vh7m-p724-62c2","Warn: Project is vulnerable to: GHSA-r9p9-mrjm-926w","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-6h5x-7c5m-7cr7","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-74fj-2j2h-c42q","Warn: Project is vulnerable to: GHSA-pw2r-vq6v-hr8c","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-q42p-pg8m-cqh6","Warn: Project is vulnerable to: GHSA-pfq8-rq6v-vf5m","Warn: Project is vulnerable to: GHSA-6x33-pw7p-hmpq","Warn: Project is vulnerable to: GHSA-c7qv-q95q-8v27","Warn: Project is vulnerable to: GHSA-7r28-3m3f-r2pr","Warn: Project is vulnerable to: GHSA-r8j5-h5cx-65gg","Warn: Project is vulnerable to: GHSA-76p3-8jx3-jpfq","Warn: Project is vulnerable to: GHSA-3rfm-jhwj-7488","Warn: Project is vulnerable to: GHSA-hhq3-ff78-jv3g","Warn: Project is vulnerable to: GHSA-4xc9-xhrj-v574","Warn: Project is vulnerable to: GHSA-x5rq-j2xg-h7qm","Warn: Project is vulnerable to: GHSA-4xcv-9jjx-gfj3","Warn: Project is vulnerable to: GHSA-f9cm-qmx5-m98h","Warn: Project is vulnerable to: GHSA-92xj-mqp7-vmcj","Warn: Project is vulnerable to: GHSA-wxgw-qj99-44c2","Warn: Project is vulnerable to: GHSA-5rrq-pxf6-6jx5","Warn: Project is vulnerable to: GHSA-8fr3-hfg3-gpgp","Warn: Project is vulnerable to: GHSA-gf8q-jrpm-jvxq","Warn: Project is vulnerable to: GHSA-2r2c-g63r-vccr","Warn: Project is vulnerable to: GHSA-cfm4-qjh2-4765","Warn: Project is vulnerable to: GHSA-x4jg-mjrx-434g","Warn: Project is vulnerable to: GHSA-5fw9-fq32-wv5p","Warn: Project is vulnerable to: GHSA-rp65-9cf3-cjxr","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-h7cp-r72f-jxh6","Warn: Project is vulnerable to: GHSA-v62p-rq8g-8h59","Warn: Project is vulnerable to: GHSA-566m-qj78-rww5","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-5q6m-3h65-w53x","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-h9rv-jmmf-4pgx","Warn: Project is vulnerable to: GHSA-hxcc-f52p-wc94","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-g4rg-993r-mgx7","Warn: Project is vulnerable to: GHSA-c9g6-9335-x697","Warn: Project is vulnerable to: GHSA-jgrx-mgxx-jf9v","Warn: Project is vulnerable to: GHSA-662x-fhqg-9p8v","Warn: Project is vulnerable to: GHSA-394c-5j6w-4xmx","Warn: Project is vulnerable to: GHSA-78cj-fxph-m83p","Warn: Project is vulnerable to: GHSA-fhg7-m89q-25r3","Warn: Project is vulnerable to: GHSA-3329-pjwv-fjpg","Warn: Project is vulnerable to: GHSA-p6j9-7xhc-rhwp","Warn: Project is vulnerable to: GHSA-89gv-h8wf-cg8r","Warn: Project is vulnerable to: GHSA-gcv8-gh4r-25x6","Warn: Project is vulnerable to: GHSA-gmv4-r438-p67f","Warn: Project is vulnerable to: GHSA-8h2f-7jc4-7m3m","Warn: Project is vulnerable to: GHSA-3vjf-82ff-p4r3","Warn: Project is vulnerable to: GHSA-g694-m8vq-gv9h","Warn: Project is vulnerable to: GHSA-46c4-8wrp-j99v","Warn: Project is vulnerable to: GHSA-9m6j-fcg5-2442","Warn: Project is vulnerable to: GHSA-hh27-ffr2-f2jc","Warn: Project is vulnerable to: GHSA-rqff-837h-mm52","Warn: Project is vulnerable to: GHSA-8v38-pw62-9cw2","Warn: Project is vulnerable to: GHSA-hgjh-723h-mx2j","Warn: Project is vulnerable to: GHSA-jf5r-8hm2-f872","Warn: Project is vulnerable to: GHSA-wr3j-pwj9-hqq6","Warn: Project is vulnerable to: GHSA-cf66-xwfp-gvc4","Warn: Project is vulnerable to: GHSA-4v9v-hfq4-rm2v","Warn: Project is vulnerable to: GHSA-9jgg-88mc-972h","Warn: Project is vulnerable to: GHSA-g78m-2chm-r7qv","Warn: Project is vulnerable to: GHSA-6fc8-4gx4-v693","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-15T02:31:00.069Z","repository_id":27939494,"created_at":"2025-08-15T02:31:00.070Z","updated_at":"2025-08-15T02:31:00.070Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30210376,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T09:02:10.694Z","status":"ssl_error","status_checked_at":"2026-03-07T09:02:08.429Z","response_time":53,"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":["baseline","javascript","testing","testing-tools"],"created_at":"2024-09-26T03:08:16.882Z","updated_at":"2026-03-07T09:03:40.386Z","avatar_url":"https://github.com/Igmat.png","language":"TypeScript","funding_links":["https://www.patreon.com/igmat"],"categories":[],"sub_categories":[],"readme":"[![Become a patron](./docs/images/become_a_patron_button.png)](https://www.patreon.com/igmat)\n\n![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)\n[![License](https://img.shields.io/badge/license-MIT%20License-brightgreen.svg)](https://opensource.org/licenses/MIT)\n\n[![BCH compliance](https://bettercodehub.com/edge/badge/Igmat/baset?branch=master)](https://bettercodehub.com/)\n[![CodeFactor](https://www.codefactor.io/repository/github/igmat/baset/badge)](https://www.codefactor.io/repository/github/igmat/baset)\n[![Known Vulnerabilities](https://snyk.io/test/npm/baset/badge.svg)](https://snyk.io/test/npm/baset)\n\n[![npm badge][npm-badge-png]][package-url]\n\n[npm-badge-png]: https://nodei.co/npm/baset.png?downloads=true\u0026downloadRank=true\u0026stars=true\n[package-url]: https://npmjs.com/package/baset\n\n# ![BaseT](/docs/images/logo.svg) \u003c!-- omit in toc --\u003e\n\u003e Tool for testing using baseline strategy.\n\n\u003e **WARNING:** it's early beta, so documentation may have mistakes, if you face any problems feel free to create [issues](https://github.com/Igmat/baset/issues).\n\n## Table of Contents \u003c!-- omit in toc --\u003e\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\n\n- [What is it?](#what-is-it)\n- [Motivation](#motivation)\n- [How it works?](#how-it-works)\n- [Why I have to use it?](#why-i-have-to-use-it)\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Plugins configuration](#plugins-configuration)\n    - [Using configuration file (same for `package.json`)](#using-configuration-file-same-for-packagejson)\n    - [Using CLI](#using-cli)\n- [Examples](#examples)\n- [Plugins](#plugins)\n- [Roadmap](#roadmap)\n- [Changelog](#changelog)\n- [How to Contribute](#how-to-contribute)\n- [How to Make Pull Request](#how-to-make-pull-request)\n- [License](#license)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## What is it?\nThis tool much like [Jest](https://facebook.github.io/jest/) or [Mocha](https://mochajs.org/) gives you an opportunity to test your application by creating unit-tests, it also supports end-to-end testing (**actually WILL support**).\n\nBut unlike other most known frameworks it uses another approach which could be named **Baseline Strategy**. Initially inspired by [TypeScript](https://github.com/Microsoft/TypeScript) tests (see them [here](https://github.com/Microsoft/TypeScript/tree/master/tests)) it looks like thing that's able to change way we're testing.\n\n## Motivation\nCurrent situation with **TDD** and tooling around it is complicated.\nThere are a lot of problems and corner cases. And while everybody agrees that unit-testing is generally correct approach, amount of efforts required by it frequently makes TDD unsuitable for particular project.\n\nWe are trying to change it.\n\nOur goal is moving TDD from processes (like agile, scrum, waterfall, etc.) to developer's tooling (like linters, compilers, etc.).\nIn order to achieve it we have to focus on real strengths of TDD and unit-testing:\n\n1. Preventing unintentional breaking changes, in other words freezing existing behavior as some sort of 'baseline';\n2. Using documentation samples as tests and using tests as documentation.\n\nTo understand core idea and approach better, you can read [**Is TDD wrong?**](./docs/Is_TDD_wrong.md) ([RU](./docs/Is_TDD_wrong.RU.md))\n\n## How it works?\nLet's assume you have module `yourModule.js` that exports one function.\nBaseline test (e.g. `yourModule.spec.js`) will look like this:\n```JavaScript\nconst yourModule = require('yourModule');\n\nconst oneUsage = yourModule('arguments', 'of', 'your', 'function');\nconst severalUsages = ['array', 'of', 'arguments'].map(yourModule);\nlet resultOfComplexUsageScenario;\n// some code/function/promise that fulfils\n// `resultOfComplexUsageScenario` with (a)sync value(s)\n\n// actually any code that uses `yourModule` could be here\n\nmodule.exports = {\n    oneUsage,\n    severalUsages,\n    resultOfComplexUsageScenario,\n    // any number of additional values\n}\n```\nRun:\n```\nbaset test\n```\nAnd this test will produce file `yourModule.spec.tmp.base`.\nIt's temporary unverified baseline and contains all exported values (e.g. `oneUsage`, `severalUsages`, etc.).\nJust take a look at them and if you think they are correct run:\n```\nbaset accept\n```\nAnd `yourModule.spec.base` will be generated.\nFrom this point you have **test** and **baseline** for `yourModule` that describe its behavior.\nAll further test runs will compare generated `yourModule.spec.tmp.base` with `yourModule.spec.base` and _fail_ if they are different, or _pass_ otherwise.\n\n## Why I have to use it?\nYou haven't, but if you:\n- love [TDD](https://en.wikipedia.org/wiki/Test-driven_development)\n- hate [TDD](https://en.wikipedia.org/wiki/Test-driven_development)\n- don't care about it, but want to cover your application with tests\n- want to test everything\n- want to test only improtant cases\n- tired from `describe`, `it`, `equalsTo` that blows your tests and forces you to write a lot of code to test `helloWorld.js`\n- heard that tests are nearly the best type of [documentation](https://en.wikipedia.org/wiki/Unit_testing#Documentation)\n- never heard previous statement\n- disagree with it, because specs are unreadable in majority of cases\n- want it to be true for your project\n- feel lack of real usage examples in your project even though it has 100% coverage\n- feel lack of automated testing even though your documentation is full of examples\n\nIt worth trying `baset`.\n\n## Installation\nFor global, just run:\n```\nnpm install -g baset\n```\nBut we're recomending:\n```\nnpm install --save-dev baset\n```\nand adding next lines to `scripts` section in your `package.json`:\n```JSON\n\"test\": \"baset\",\n\"accept\": \"baset accept\"\n```\n\n## Usage\nFrom command line:\n\n```\nbaset \u003ccommand\u003e [options]\n```\nCommands:\n\n|   Name   |                             Description                              | Aliases |\n| -------- | -------------------------------------------------------------------- | ------- |\n| test     | **Default.** Creating temp baseline and comparing it to existing one | t       |\n| accept   | Accepting new baseline                                               | a       |\n| scaffold | Scaffolding specs for existing code                                  | s       |\n\nOptions:\n\n|                Option                 |                                                                           Description                                                                            |                       Type                        |                   Default value                    |\n| ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | -------------------------------------------------- |\n| \u0026#8209;\u0026#8209;version                 | Show version number                                                                                                                                              | boolean                                           |                                                    |\n| \u0026#8209;\u0026#8209;specs,\u0026nbsp;\u0026#8209;s    | Glob pattern for spec files                                                                                                                                      | string                                            | `\"**/*.spec.js\"`                                   |\n| \u0026#8209;\u0026#8209;bases,\u0026nbsp;\u0026#8209;b    | Glob pattern for baseline files                                                                                                                                  | string                                            | `\"**/*.base\"`                                      |\n| \u0026#8209;\u0026#8209;help,\u0026nbsp;\u0026#8209;h     | Show help                                                                                                                                                        | boolean                                           |                                                    |\n| \u0026#8209;\u0026#8209;reporter,\u0026nbsp;\u0026#8209;r | [TAP](https://testanything.org/) reporter for test results. `false` to get plain TAP output                                                                      | string                                            | [`\"tap-diff\"`](https://github.com/axross/tap-diff) |\n| \u0026#8209;\u0026#8209;plugins,\u0026nbsp;\u0026#8209;p  | Plugins used for your tests                                                                                                                                      | string \\| [configuration](#plugins-configuration) | `\".spec.js$:baset-baseliner-json\"`                 |\n| \u0026#8209;\u0026#8209;options,\u0026nbsp;\u0026#8209;o  | Options for plugins                                                                                                                                              | TBD                                               | `{}`                                               |\n| \u0026#8209;\u0026#8209;files,\u0026nbsp;\u0026#8209;f    | Glob pattern for project files. Used by scaffolder.                                                                                                              | string                                            | `undefined`                                        |\n| \u0026#8209;\u0026#8209;isolateContext          | Run each test in isolated context. May be usefull, if your tests/code may affect other tests by mutating globals. **ATTENTION**: this will slow down your tests. | boolean                                           | `false`                                            |\n\nisolateContext\nIn your `package.json`:\n```JavaScript\n{\n    \"scripts\": {\n        \"test\": \"baset\",\n        \"accept\": \"baset accept\"\n    },\n    \"baset\": {\n        \"specs\": \"**/*.spec.js\",\n        \"bases\": \"**/*.base\",\n        \"plugins\": {\n            \".spec.js$\": [\"baset-plugin-module-name\", \"baset-baseliner-json\"]\n        },\n        \"options\": {\n            \"baset-plugin-module-name\": {\n                // List of options for baset plugin.\n                // All available should be listed at\n                // plugins README.md file.\n            }\n        }\n    }\n}\n```\nIn `.basetrc` or `.basetrc.json`:\n```JavaScript\n{\n    \"specs\": \"**/*.spec.js\",\n    \"bases\": \"**/*.base\",\n    \"plugins\": {\n        \".spec.js$\": [\"baset-plugin-module-name\", \"baset-baseliner-json\"]\n    },\n    \"options\": {\n        \"baset-plugin-module-name\": {\n            // List of options for baset plugin.\n            // All available should be listed at\n            // plugins README.md file.\n        }\n    }\n}\n```\n\n### Plugins configuration\nThe most important configuration option is `plugins`. You may configure it via command line or via configuration file or even using `baset` section in `package.json`.\n\n#### Using configuration file (same for `package.json`)\n```JSON\n{\n    \"plugins\": {\n        \"${pattern}\": \"${options}\"\n    }\n}\n```\n`${pattern}` - is regular expression for filename of your test files, so you may define different plugin options for different file types (e.g. using `baset-reader-ts` for `.ts` files and `baset-reader-babel` for `.js` files).\n`${options}` - is `string` or `string[]` or `object` with following fields:\n\n|     Field      |                                                                           Description                                                                            |        Type         |    Default value     |\n| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | -------------------- |\n| baseliner      | name or path to module, that is responsible for generating baseline                                                                                              | string **Required** | baset-baseliner-json |\n| environment    | name or path to module, that mimics desired environment (e.g. browser)                                                                                           | string              | undefined            |\n| readers        | name or path to module(s), that reads and transpiles specs and source code (e.g. babel, typescript)                                                              | string[] \\| string  | undefined            |\n| resolvers      | name or path to module(s), that is able to resolve specific values (e.g. [react](https://reactjs.org/) components or [pixi](http://www.pixijs.com/) sprites)     | string[] \\| string  | undefined            |\n| imports        | name or path to module(s), that should be imported in test context (e.g. polyfills or [reflect-metadata](https://github.com/rbuckton/reflect-metadata))          | string[] \\| string  | undefined            |\n| isolateContext | Run each test in isolated context. May be usefull, if your tests/code may affect other tests by mutating globals. **ATTENTION**: this will slow down your tests. | boolean             | false                |\n\nIf `${options}` is `string`, then it used as `baseliner` name or path.\nIf `${options}` is `string[]`, then it has to follow next agreement for its content:\n```\n[\"-env-pluginOrPath\", ...\"importPaths\", ...\"-reader-pluginsOrPaths\",  ...\"-resolver-pluginsOrPaths\", \"-baseliner-pluginOrPath\"]\n```\nWhere everything except `baseliner` is optional and `...` means that several entities are allowed.\n\u003e **NOTE:** grouping of entities is based on their names, so all plugins _MUST_ contain substring `-(env|reader|resolver|baseliner)-`, except imports (last ones don't have any naming requirements).\n\n#### Using CLI\nJust type following command in your favorite terminal:\n```\nbaset -p ${pattern}:${options}\n```\n`${pattern}` - is regular expression for filename of your test files (same as in previous paragraph).\n`${options}` - is `string[]`, where values are separated by `:` sign. This array has exactly same semantic as using `string[]` in configuration file.\n\n## Examples\nOur [tests folder](./tests) contains projects used for end-to-end tests of `baset` package (using `baset` itself, of course), so you can use them as references for integrating baset into your workflow.\n\n## Plugins\nThere are only few plugins right now:\n1. [`baset-baseliner-json`](./packages/baset-baseliner-json) - default plugin that used for creating baseline from exported values of spec\n2. [`baset-baseliner-md`](./packages/baset-baseliner-md) - plugin that used for creating baselines in Markdown format\n3. [`baset-env-browser`](./packages/baset-env-browser) - simple plugin that enables browser API in specs and sources using [jsdom](https://github.com/jsdom/jsdom) package.\n4. [`baset-reader-ts`](./packages/baset-reader-ts) - simple plugin that allows to write specs using [TypeScript](https://www.typescriptlang.org/)\n5. [`baset-reader-babel`](./packages/baset-reader-babel) - simple plugin that allows to write specs using [Babel](https://babeljs.io/)\n6. [`baset-reader-md`](./packages/baset-reader-md) - simple plugin that allows to write specs using [MarkDown](https://en.wikipedia.org/wiki/Markdown) where only code blocks are executed, and `#` headings used for tests structuring.\n7. [`baset-resolver-react`](./packages/baset-resolver-react) - simple plugin that resolves [react](https://reactjs.org/) components as `html`\n8. [`baset-resolver-pixi`](./packages/baset-resolver-pixi) - simple plugin that resolver [pixi](http://www.pixijs.com/) DisplayObject as `base64` encoded image\n\n## Roadmap\nYou may track progress for first stable release at [this milestone](https://github.com/Igmat/baset/milestone/1)\n\n## Changelog\nRecent changes can be viewed on the [CHANGELOG](CHANGELOG.md)\n\n## How to Contribute\nRead to contribute [CONTRIBUTING](docs/CONTRIBUTING.md) or\n\n[![Donate me](https://img.shields.io/badge/DONATE-ME-green.svg?longCache=true\u0026style=for-the-badge)](https://www.patreon.com/igmat)\n\n## How to Make Pull Request\nRead to contribute [PULL REQUEST TEMPLATE](.github/PULL_REQUEST_TEMPLATE.md)\n\n## License\n\nCopyright (c) Ihor Chulinda.\nThis source code is licensed under the [MIT license](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figmat%2Fbaset","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figmat%2Fbaset","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figmat%2Fbaset/lists"}