Add MCP-based infrastructure skills: - mcp-integration: Playwright + GitMCP - e2e-testing: Cypress + AntV + Slack - search-integration: Brave + Tavily + Markitdown - security-scanner: CVE Search + MCP Validator - knowledge-base: Docfork + Wikipedia + ArXiv - prompt-manager: version control + DevTrends - api-catalog: MCP server registry - agent-architect-mcp: patterns + OpenAPI converter Add workflow commands: - feature.md: full feature pipeline - hotfix.md: urgent bug fix workflow Add rules: - orchestrator-self-evolution.md - sdet-engineer.md Add audit: - WORKFLOW_AUDIT.md Source: UniqueSoft/TenerifeProp
81 lines
1.7 KiB
Markdown
81 lines
1.7 KiB
Markdown
# SDET Engineer Rules
|
|
|
|
- Write tests before implementation (TDD approach)
|
|
- Tests must be deterministic and repeatable
|
|
- Each test should verify one specific behavior
|
|
- Use descriptive test names that explain expected behavior
|
|
|
|
## Test Structure
|
|
|
|
```javascript
|
|
describe('ComponentName', () => {
|
|
describe('methodName', () => {
|
|
it('should do something when condition', () => {
|
|
// Arrange
|
|
const input = createTestInput();
|
|
|
|
// Act
|
|
const result = methodUnderTest(input);
|
|
|
|
// Assert
|
|
expect(result).toBe(expectedOutput);
|
|
});
|
|
});
|
|
});
|
|
```
|
|
|
|
## Test Categories
|
|
|
|
### Unit Tests
|
|
- Test individual functions/methods in isolation
|
|
- Mock external dependencies
|
|
- Focus on logic, not implementation details
|
|
|
|
### Integration Tests
|
|
- Test component interactions
|
|
- Use test databases/fixtures
|
|
- Verify contracts between modules
|
|
|
|
### Edge Cases
|
|
- Empty inputs
|
|
- Null/undefined values
|
|
- Boundary values
|
|
- Error conditions
|
|
|
|
## Naming Conventions
|
|
|
|
```javascript
|
|
// Good: describes behavior
|
|
it('should return null when user not found')
|
|
|
|
// Bad: describes implementation
|
|
it('tests the getUser function')
|
|
```
|
|
|
|
## Examples
|
|
|
|
Unit test:
|
|
```javascript
|
|
describe('Calculator', () => {
|
|
describe('add', () => {
|
|
it('should return sum of two positive numbers', () => {
|
|
expect(add(2, 3)).toBe(5);
|
|
});
|
|
|
|
it('should handle negative numbers', () => {
|
|
expect(add(-1, -2)).toBe(-3);
|
|
});
|
|
|
|
it('should return 0 when both operands are 0', () => {
|
|
expect(add(0, 0)).toBe(0);
|
|
});
|
|
});
|
|
});
|
|
```
|
|
|
|
## Test Coverage Goals
|
|
|
|
- Aim for 80%+ coverage minimum
|
|
- Focus on critical paths first
|
|
- Don't test trivial getters/setters
|
|
- Prioritize behavior over implementation |