{"id":29259518,"url":"https://github.com/kirill-kolomin/ngx-testbox","last_synced_at":"2025-10-13T21:37:48.717Z","repository":{"id":302791245,"uuid":"1010060768","full_name":"kirill-kolomin/ngx-testbox","owner":"kirill-kolomin","description":"Integration testing for Angular with black-box approach, async control, and user-centric testing concept","archived":false,"fork":false,"pushed_at":"2025-09-09T08:33:47.000Z","size":399,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-11T01:39:48.837Z","etag":null,"topics":["angular","component-testing","integration-testing","tdd","test-driven-development","testing"],"latest_commit_sha":null,"homepage":"https://kirill-kolomin.github.io/ngx-testbox-docs/","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/kirill-kolomin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2025-06-28T08:59:08.000Z","updated_at":"2025-09-10T05:06:55.000Z","dependencies_parsed_at":"2025-07-04T09:19:38.970Z","dependency_job_id":"443236ac-bc0a-4643-a922-8ff525a407ab","html_url":"https://github.com/kirill-kolomin/ngx-testbox","commit_stats":null,"previous_names":["kirill-kolomin/ngx-testbox"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kirill-kolomin/ngx-testbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirill-kolomin%2Fngx-testbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirill-kolomin%2Fngx-testbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirill-kolomin%2Fngx-testbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirill-kolomin%2Fngx-testbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kirill-kolomin","download_url":"https://codeload.github.com/kirill-kolomin/ngx-testbox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirill-kolomin%2Fngx-testbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017046,"owners_count":26085951,"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-10-13T02:00:06.723Z","response_time":61,"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":["angular","component-testing","integration-testing","tdd","test-driven-development","testing"],"created_at":"2025-07-04T07:01:02.729Z","updated_at":"2025-10-13T21:37:48.711Z","avatar_url":"https://github.com/kirill-kolomin.png","language":"TypeScript","funding_links":[],"categories":["Testing"],"sub_categories":["Helpers"],"readme":"# Ngx-Testbox\n\n[![npm version](https://img.shields.io/npm/v/ngx-testbox.svg)](https://www.npmjs.com/package/ngx-testbox)\n[![npm downloads](https://img.shields.io/npm/dm/ngx-testbox.svg)](https://www.npmjs.com/package/ngx-testbox)\n[![Main branch](https://github.com/kirill-kolomin/ngx-testbox/actions/workflows/main.yml/badge.svg)](https://github.com/kirill-kolomin/ngx-testbox/actions/workflows/main.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE.txt)\n\n**Black-box integration testing for Angular made easy.**\n\nNgx-testbox empowers developers to write integration tests with **minimal setup** and **maximum reliability**.  \nAbstract away internal implementation details and focus on what actually matters—your feature's behavior as seen by the user.\n\n📚 Full documentation: [ngx-testbox docs](https://kirill-kolomin.github.io/ngx-testbox-docs/)\n\n## Key Benefits\n\n- **Black-box by design**  \n  Focus on inputs and outputs, not the internals. Tests remain concise, maintainable, and stable.\n\n- **Deterministic async control**  \n  Leveraging Angular’s Zone, `ngx-testbox` waits for your app to stabilize—HTTP calls complete, DOM settled—before assertions continue.\n\n- **UX-centric testing**  \n  Ensure what users actually see is what matters. Internal state isn't enough if the UI doesn't reflect it.\n\n- **Test-Driven Development friendly**  \n  Write tests first using your REST API contract and UI expectations; implement logic later—boosts confidence and speed.\n\n## Getting Started\n\n```bash\n\nnpm install ngx-testbox\n\n```\n\nOr using yarn\n\n```bash\n\nyarn add ngx-testbox\n\n```\n\n## Quick Example\n\n```typescript\nimport { fakeAsync } from '@angular/core/testing';\nimport { DebugElementHarness, predefinedHttpCallInstructions, runTasksUntilStable } from 'ngx-testbox/testing';\n\ndescribe('MyComponent', () =\u003e {\n  let harness: DebugElementHarness\u003ctypeof testIds\u003e;\n\n  beforeEach(() =\u003e {\n    // setup TestBed, component, and harness\n  });\n\n  it('should display data on success', fakeAsync(() =\u003e {\n    const mockData = [{ id: 1, name: 'Item A' }];\n\n    runTasksUntilStable(fixture, {\n      httpCallInstructions: [\n        predefinedHttpCallInstructions.get.success('/api/items', mockData)\n      ]\n    });\n\n    const items = harness.elements.item.queryAll();\n    expect(items.length).toBe(1);\n    expect(harness.elements.itemText.getTextContent(items[0])).toContain('Item A');\n  }));\n});\n```\n\n## Documentation \u0026 Examples\n\n👉 Visit the full [documentation site](https://kirill-kolomin.github.io/ngx-testbox-docs/) to explore:\n- Concept overviews\n- Step-by-step tutorials\n- Full application examples (e.g., Todo flows)\n\n## Contributing \u0026 Support\n\nContributions are welcome — submit issues or PRs on GitHub.\n\nFor discussions or questions, reach out at:\n- 📧 [kkolomin.w@gmail.com](mailto:kkolomin.w@gmail.com)\n- 💼 [LinkedIn](https://www.linkedin.com/in/kirill-kolomin/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkirill-kolomin%2Fngx-testbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkirill-kolomin%2Fngx-testbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkirill-kolomin%2Fngx-testbox/lists"}