{"id":15408912,"url":"https://github.com/antongolub/abstractest","last_synced_at":"2026-04-04T17:30:21.959Z","repository":{"id":174052441,"uuid":"642069274","full_name":"antongolub/abstractest","owner":"antongolub","description":"Abstract testing processor","archived":false,"fork":false,"pushed_at":"2024-02-25T12:58:16.000Z","size":1419,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-25T14:43:02.405Z","etag":null,"topics":["testing"],"latest_commit_sha":null,"homepage":"","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/antongolub.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}},"created_at":"2023-05-17T18:49:27.000Z","updated_at":"2023-10-10T12:49:45.000Z","dependencies_parsed_at":"2024-10-01T16:35:59.682Z","dependency_job_id":"3983632e-49ba-41be-ac85-8b184c38e438","html_url":"https://github.com/antongolub/abstractest","commit_stats":null,"previous_names":["antongolub/abstractest"],"tags_count":64,"template":false,"template_full_name":"antongolub/blank-ts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antongolub%2Fabstractest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antongolub%2Fabstractest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antongolub%2Fabstractest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antongolub%2Fabstractest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antongolub","download_url":"https://codeload.github.com/antongolub/abstractest/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239964552,"owners_count":19725952,"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":["testing"],"created_at":"2024-10-01T16:35:51.901Z","updated_at":"2025-02-21T06:13:25.062Z","avatar_url":"https://github.com/antongolub.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# abstractest\n[![CI](https://github.com/antongolub/abstractest/actions/workflows/ci.yaml/badge.svg?branch=master)](https://github.com/antongolub/abstractest/actions/workflows/ci.yaml)\n[![Maintainability](https://api.codeclimate.com/v1/badges/5aae4759bc5da3c06ae0/maintainability)](https://codeclimate.com/github/antongolub/abstractest/maintainability)\n\u003e An abstract testing processor\n\n## Hypothesis\nFind out if it's possible to declare unit tests in  some [_generic_](./packages/types) notation,\nand execute them via any _appropriate_ provider.\n\n\nToday, [Jest dominates over all testing frameworks and libraries](https://npmtrends.com/ava-vs-jasmine-vs-jest-vs-mocha-vs-uvu-vs-vitest), \nin fact it represents the industry standard. Therefore, seems reasonable to take this notation and syntax as a basis,\nand then try to run _Jest-like_ tests on different runners. It may turn out to be faster and more resource-efficient.\n\n## Usage\nInstall:\n```shell\nyarn add -D abstractest @abstractest/jest\n```\n\nWrite a test:\n```ts\n// src/test/js/foo.test.js\n\nimport { describe, it, expect } from 'abstractest'\n\ndescribe('foo()', () =\u003e {\n  it('works as expected', () =\u003e {\n    expect(foo()).toEqual('bar')\n  })\n})\n```\nRun tests via the required runner:\n```shell\n# via jest\nabstractest --runner=jest src/test/js/**/*.test.js\n\n# via native node:test\nabstractest --runner=native src/test/js/**/*.test.js\n```\n\n## Contents\n| Package | Description | Latest |\n|---------|-------------|--------|\n| [@abstractest/core](./packages/core) | abstractest core utils | [![npm (scoped)](https://img.shields.io/npm/v/@abstractest/core)](https://www.npmjs.com/package/@abstractest/core) |\n| [@abstractest/expect](./packages/expect) | Assertion library for abstractest | [![npm (scoped)](https://img.shields.io/npm/v/@abstractest/expect)](https://www.npmjs.com/package/@abstractest/expect) |\n| [@abstractest/fixture-basic-test](./packages/fixtures/basic-test) | Testing fixtures |  |\n| [@abstractest/infra](./packages/infra) | abstractest monorepo infra assets |  |\n| [@abstractest/jest](./packages/jest) | Jest runner for abstractest | [![npm (scoped)](https://img.shields.io/npm/v/@abstractest/jest)](https://www.npmjs.com/package/@abstractest/jest) |\n| [@abstractest/mock](./packages/mock) | Mocker module for abstractest | [![npm (scoped)](https://img.shields.io/npm/v/@abstractest/mock)](https://www.npmjs.com/package/@abstractest/mock) |\n| [@abstractest/native](./packages/native) | Native node:test runner for abstractest | [![npm (scoped)](https://img.shields.io/npm/v/@abstractest/native)](https://www.npmjs.com/package/@abstractest/native) |\n| [@abstractest/types](./packages/types) | abstractest types | [![npm (scoped)](https://img.shields.io/npm/v/@abstractest/types)](https://www.npmjs.com/package/@abstractest/types) |\n| [abstractest](./packages/cli) | CLI for abstractest | [![npm (scoped)](https://img.shields.io/npm/v/abstractest)](https://www.npmjs.com/package/abstractest) |\n\n## Implementation notes\n* Does not provide whole module mocking by design. It's recommended to use some kind of DI/IoC for this purpose.\n* Enforces ESM usage. Declare explicit file extensions (`.cjs`, `.mjs`, `.mts`, etc) to get necessary module context or initialize the legacy CommonJS API in place.\n\n## License\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantongolub%2Fabstractest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantongolub%2Fabstractest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantongolub%2Fabstractest/lists"}