# Jasmine Core Development Notes ## Architecture - This is the main jasmine-core repository, a JavaScript BDD testing framework - **Directory structure**: - `src/` - source code - `src/core/` - environment-agnostic core functionality - `src/html/` - browser-specific code - `src/boot/` - boot files for browser setup - `spec/` - tests, mirrors the src directory structure - `lib/` - compiled distribution files (built, not checked in modified) ## Key Development Commands - `npm install` - install dependencies - `npm test` - run all tests in Node.js + lint + prettier check - `npm run test:parallel` - run tests in parallel - `npm run build` - build distribution to `/lib` - `npm run cleanup` - auto-fix prettier errors - `npm run serve` - serve tests for browser testing at http://localhost:8888 - `JASMINE_BROWSER= npm run ci` - run browser tests via Selenium ## Before submitting PR 1. Run tests in Node.js AND browsers: `npm test` and `npm run serve` 2. Fix any eslint/prettier errors: `npm run cleanup` 3. Build `lib/` with `npm run build` and re-test 4. Revert changes to built files in `lib/` - maintainers will rebuild when merging ## Testing Conventions - Jasmine self-tests: `lib/jasmine-core.js` provides `jasmine` (runner), `src/` provides `jasmineUnderTest` (code under test) - Always use `jasmineUnderTest` for objects/functions being tested ## Coding Conventions - Single quotes, semicolons required - Curly braces required for all control statements - ECMA 2022 syntax, commonjs modules - Core code must stay environment-agnostic: - Keep browser-specific code in `src/html/` - Degrade gracefully when environment-specific features aren't available ## Supported Environments - Node: 20, 22, 24 - Browsers: Safari 26+, Chrome/Firefox/Edge (evergreen)