$npx -y skills add LambdaTest/agent-skills --skill karma-skillGenerates Karma test runner configurations for browser-based JavaScript testing. Works with Jasmine, Mocha, or QUnit. Use when user mentions "Karma", "karma.conf.js", "browser test runner". Triggers on: "Karma", "karma.conf", "karma test runner", "browser-based JS test".
| 1 | # Karma Testing Skill |
| 2 | |
| 3 | ## Core Patterns |
| 4 | |
| 5 | ### karma.conf.js |
| 6 | |
| 7 | ```javascript |
| 8 | module.exports = function(config) { |
| 9 | config.set({ |
| 10 | basePath: '', |
| 11 | frameworks: ['jasmine'], |
| 12 | files: [ |
| 13 | 'src/**/*.js', |
| 14 | 'test/**/*.spec.js' |
| 15 | ], |
| 16 | preprocessors: { |
| 17 | 'src/**/*.js': ['coverage'] |
| 18 | }, |
| 19 | reporters: ['progress', 'coverage'], |
| 20 | coverageReporter: { |
| 21 | type: 'html', |
| 22 | dir: 'coverage/' |
| 23 | }, |
| 24 | port: 9876, |
| 25 | colors: true, |
| 26 | logLevel: config.LOG_INFO, |
| 27 | autoWatch: true, |
| 28 | browsers: ['Chrome', 'Firefox'], |
| 29 | singleRun: false, |
| 30 | concurrency: Infinity, |
| 31 | |
| 32 | // LambdaTest cloud browsers |
| 33 | customLaunchers: { |
| 34 | ChromeLT: { |
| 35 | base: 'WebDriver', |
| 36 | config: { |
| 37 | hostname: 'hub.lambdatest.com', |
| 38 | port: 80 |
| 39 | }, |
| 40 | browserName: 'Chrome', |
| 41 | version: 'latest', |
| 42 | name: 'Karma Test', |
| 43 | tunnel: true, |
| 44 | user: process.env.LT_USERNAME, |
| 45 | accessKey: process.env.LT_ACCESS_KEY |
| 46 | } |
| 47 | } |
| 48 | }); |
| 49 | }; |
| 50 | ``` |
| 51 | |
| 52 | ### Test with Jasmine Framework |
| 53 | |
| 54 | ```javascript |
| 55 | describe('StringUtils', () => { |
| 56 | it('should capitalize first letter', () => { |
| 57 | expect(StringUtils.capitalize('hello')).toBe('Hello'); |
| 58 | }); |
| 59 | |
| 60 | it('should handle empty string', () => { |
| 61 | expect(StringUtils.capitalize('')).toBe(''); |
| 62 | }); |
| 63 | }); |
| 64 | ``` |
| 65 | |
| 66 | ### Angular Integration |
| 67 | |
| 68 | ```javascript |
| 69 | // karma.conf.js for Angular |
| 70 | frameworks: ['jasmine', '@angular-devkit/build-angular'], |
| 71 | plugins: [ |
| 72 | require('karma-jasmine'), |
| 73 | require('karma-chrome-launcher'), |
| 74 | require('karma-coverage'), |
| 75 | require('@angular-devkit/build-angular/plugins/karma') |
| 76 | ], |
| 77 | ``` |
| 78 | |
| 79 | ## Setup: `npm install karma karma-jasmine karma-chrome-launcher karma-coverage --save-dev` |
| 80 | ## Run: `npx karma start` or `npx karma start --single-run` |
| 81 | ## Init: `npx karma init karma.conf.js` |
| 82 | |
| 83 | ## Deep Patterns |
| 84 | |
| 85 | See `reference/playbook.md` for production-grade patterns: |
| 86 | |
| 87 | | Section | What You Get | |
| 88 | |---------|-------------| |
| 89 | | §1 Production Configuration | Full karma.conf.js with coverage thresholds, reporters, CI launchers | |
| 90 | | §2 Component Testing | Service mocking, DOM interaction, form validation patterns | |
| 91 | | §3 HTTP Service Testing | HttpTestingController, error handling, retry testing | |
| 92 | | §4 Directive & Pipe Testing | Host component pattern, custom pipes with edge cases | |
| 93 | | §5 RxJS & Async Patterns | debounceTime, switchMap cancellation, subscription cleanup | |
| 94 | | §6 Router & NgRx Testing | RouterTestingModule, MockStore, selector overrides | |
| 95 | | §7 LambdaTest Integration | Cloud browser configuration for cross-browser testing | |
| 96 | | §8 CI/CD Integration | GitHub Actions with coverage, test reporting | |
| 97 | | §9 Debugging Table | 12 common problems with causes and fixes | |
| 98 | | §10 Best Practices | 14-item checklist for production Angular testing | |