{"id":17086025,"url":"https://github.com/ameerthehacker/karma-material-reporter","last_synced_at":"2025-04-12T21:37:18.588Z","repository":{"id":53455294,"uuid":"157547555","full_name":"ameerthehacker/karma-material-reporter","owner":"ameerthehacker","description":"Visualize karma test results in real time with material designed reporter :art:","archived":false,"fork":false,"pushed_at":"2021-03-30T10:42:30.000Z","size":1789,"stargazers_count":6,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T22:40:27.247Z","etag":null,"topics":["angular","jasmine","karma","karma-reporter","ui"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/karma-material-reporter","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/ameerthehacker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-14T12:45:42.000Z","updated_at":"2023-08-16T17:06:23.000Z","dependencies_parsed_at":"2022-09-03T07:52:47.096Z","dependency_job_id":null,"html_url":"https://github.com/ameerthehacker/karma-material-reporter","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ameerthehacker%2Fkarma-material-reporter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ameerthehacker%2Fkarma-material-reporter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ameerthehacker%2Fkarma-material-reporter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ameerthehacker%2Fkarma-material-reporter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ameerthehacker","download_url":"https://codeload.github.com/ameerthehacker/karma-material-reporter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248465348,"owners_count":21108244,"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":["angular","jasmine","karma","karma-reporter","ui"],"created_at":"2024-10-14T13:26:51.993Z","updated_at":"2025-04-12T21:37:18.568Z","avatar_url":"https://github.com/ameerthehacker.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eKarma Material Reporter\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://circleci.com/gh/ameerthehacker/karma-material-reporter\"\u003e\n    \u003cimg src=\"https://circleci.com/gh/ameerthehacker/karma-material-reporter.svg?style=shield\" alt=\"CircleCI\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/prettier/prettier\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=shield\" alt=\"code style: prettier\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://gitter.im/Karma-material-reporter/Lobby\"\u003e\n    \u003cimg src=\"https://badges.gitter.im/Join%20Chat.svg\" alt=\"Join the chat at https://gitter.im/Karma-material-reporter/Lobby\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/ameerthehacker/karma-material-reporter\"\u003e\n    \u003cimg src=\"https://codecov.io/gh/ameerthehacker/karma-material-reporter/branch/master/graph/badge.svg\" alt=\"codecov\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/semantic-release/semantic-release\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\" alt=\"semantic-release\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/semantic-release/semantic-release\"\u003e\n    \u003cimg src=\"https://api.codacy.com/project/badge/Grade/15a7dacc6c0947ee9bf6c378eb2e8c07\" alt=\"codacy\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003eVisualize karma test results in real time with material designed reporter\u003c/p\u003e\n\n![Karma Material Reporter](https://i.imgur.com/76MVpsm.png)\n\n## Features\n\n:bookmark_tabs: Test results from each browser are separated out into tabs\n\n:file_folder: Specs are grouped under suite as expandable menu\n\n:clock10: See the time it took to run individual suite and spec\n\n:mag: No more clutter between specs and error logs\n\n![Log Error](https://i.imgur.com/ARGp65l.png)\n\n:tada: No more browser reload whenever you tweak a test\n\n![Async Test](https://i.imgur.com/AE42Wix.png)\n\n:x: Browser errors are reported in a tidy way\n\n![Browser Error](https://imgur.com/U1sCcut.png)\n\n## Installation\n\n1. Install **karma-material-reporter** as dev dependency\n\n```\nnpm install karma-material-reporter --save-dev\n```\n\n2. Update **karma.conf.js** to use karma-material-reporter\n\n```js\nmodule.exports = function(config) {\n config.set({\n   ...\n   plugins: [\n     ...\n     require('karma-material-reporter')\n   ],\n   ...\n   reporters: ['progress', 'material'],\n });\n};\n```\n\nVoila! power up your tests with karma and you should see the reporter opeing up in your default browser.\n\n## Availble Configurations\n\n|    Option    |                             Description                              | Default |\n| :----------: | :------------------------------------------------------------------: | :-----: |\n|  serverPort  |         port in which the reporter startes a express server          |  3000   |\n|   autoOpen   | whether to open the reporter UI automatically in the default browser |  true   |\n| expandSuites |                expand all the expandable suite menus                 |  true   |\n\nYou can change the above options by updating **karma.conf.js** as showm below\n\n```js\nmodule.exports = function(config) {\n config.set({\n   ...\n   plugins: [\n     ...\n     require('karma-material-reporter')\n   ],\n   materialReporter: {\n     serverPort: 3000,\n     autoOpen: true,\n     expandSuites: true\n   },\n   ...\n   reporters: ['progress', 'material'],\n });\n};\n```\n\n## How to Contribute?\n\n### Project Structure\n\n- The UI is built with **angular** and **angular material** which is located in the **ui** directory\n- The express server files are located in the **server** directory\n\n### Local Setup\n\n1. Clone the repo using\n\n```sh\ngit clone https://github.com/ameerthehacker/karma-material-reporter.git\n```\n\n2. Install npm dependencies\n\n```sh\nnpm install\n```\n\n3. Run the tests\n\n```\nnpm run test\n```\n\n### Running karma-material-reporter in Development\n\n1. Build the angular UI\n\n```sh\nnpm run build-ui:watch\n```\n\n2. Start the reporter with few sample tests\n\n```sh\nnpm run dev\n```\n\n:heavy_exclamation_mark: If you have any ideas or suggestions please feel free to create an issue before jumping into development\n\nShow your support by :star: the repo\n\n## License\n\nMIT © [Ameer Jhan](mailto:ameerjhanprof@gmail.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fameerthehacker%2Fkarma-material-reporter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fameerthehacker%2Fkarma-material-reporter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fameerthehacker%2Fkarma-material-reporter/lists"}