49 lines
1.8 KiB
Markdown
49 lines
1.8 KiB
Markdown
# 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=<name> 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)
|